![]() |
|
|
![]()
|
|
| Чижик |
|
||||
|
Unregistered |
Люди, если кто программировал задачи МКР, помогите... Есть тепловая задача, которая не сходится, причем проблемма именно в граничных условиях, если кто поможет буду очень благодарен. Вот кусок программы с граничными условиями и основным уравнением
интервал времени задан как:
Несходимость проявляется в том, что при изменении шага сетки (dy) очень значительно меняется результат, хотя по идее изменение должно быть не больше 3% Заранее спасибо... Это сообщение отредактировал(а) Girder - 11.4.2005, 14:30 |
||||
|
|||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: нет Всего: 7 |
А ради любопытства, про что задача?
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Тепловая задача... кубик нагревается...
|
|||
|
||||
| AISIN |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 27.1.2005 Где: Пушкино Репутация: нет Всего: 1 |
Чижик Обычно такие задачи можно решить в программе ансис с помощью метода конечных элементов. Этот метод точнее вроди бы.
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002% |
|||
|
||||
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: нет Всего: 1 |
Метод к.э. не точнее: точность обоих методов (мкэ и мкр) самому подобрать можно. А ANSYS денег стоит. -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| AISIN |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 27.1.2005 Где: Пушкино Репутация: нет Всего: 1 |
Так можно крякнутую версию на совке взять. У меня дома лежит нормально работает. Фишка такая чем мельче сетка тем точнее проверенно в Ансисе там тоже есть расхождения в ответах! Нас преподы заставляли такие задачи в ручную считать а потом на компе проверять расхождение в ответах 10%-15% было нормой хотя по стандартам должно быть 5%! У нас в универе отдают предпочтение методу конечных элементов говорят он точнее!
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002% |
|||
|
||||
| Гость_Чижик |
|
|||
|
Unregistered |
М К Э не точнее, он просто позволяет проще проводить локализацию изи за этого увеличивается скорость работы, а насчет ANSYS могу сказать, что ANSYS это конечно хорошо, но как он считает на самом деле никто не знает, и откуда беруться его ошибки (а они есть) тоже никто не знает... Приходится писать свое...
|
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Непосредственно к коду. Что не работает?
-------------------- Всем добра |
|||
|
||||
| AISIN |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 27.1.2005 Где: Пушкино Репутация: нет Всего: 1 |
На самом деле в Ансисе, чем мельче мы разбиваем тем точнее и дольше считает программа!
и еще в Ансисе берутся ошибки из за того, что все числа (которые мы в водим) представленны в безразмерной величине. --------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002% |
|||
|
||||
| Гость_ST1X |
|
|||
|
Unregistered |
T[i,j,k]:=(w*dt/(dx*dx))*(T[i+1,j,k]+T[i-1,j,k]-2*T[i,j,k])+(w*dt/(dy*dy))*(T[i,j+1,k]+T[i,j-1,k]-2*T[i,j,k])+(w*dt/(dz*dz))*(T[i,j,k+1]+T[i,j,k-1]-2*T[i,j,k])+T[i,j,k];
Ошибка твоя чисто программистская: как видно из кода ты используешь явную разностную схему, т.е. значение неизвестной сеточной функции (температуры) на новом временном слое (в.с.) явно выражается через известное значение, найденное на предыдущем в.c., то бишь при вычислении элементов массива T по формуле (*) в правой части везде заместо T необходимо использовать другой массив (в твоем случае T1), иначе, скажем, посчитал ты T[0,0,0] по (*) – все OK, а вот при вычислении T[1,0,0] ты скатываешься на T[0,0,0] – новое значение, а по теории (см. Самарского например) необходимо, вообще говоря, старое – T1[0,0,0]. Вот так правильно T[i,j,k]:=(w*dt/(dx*dx))*(T1[i+1,j,k]+T1[i-1,j,k]-2*T1[i,j,k])+(w*dt/(dy*dy))*(T1[i,j+1,k]+T1[i,j-1,k]-2*T1[i,j,k])+(w*dt/(dz*dz))*(T1[i,j,k+1]+T1[i,j,k-1]-2*T1[i,j,k])+T1[i,j,k]; Затем присваиваешь T1=T. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |