2015-05-25 2 views
1

Я пытался понять этот код. Итак, я кратко изложил свое понимание, и я буду благодарен, если кто-нибудь сможет прояснить мои сомнения.Что касается использования assempde в следующем коде

[p,e,t] = initmesh('lshapeg'); 

Это вернет двумерную треугольную сетку для формы «L». Однако как изменить границу L-формы? Я имею в виду, что L-форма по умолчанию ограничена от -1 до 1 по оси x и y. Кроме того, существуют ли другие формы, такие как 'lshapeg' ... как говорят квадрат?

[p,e,t] = refinemesh('lshapeg',p,e,t); 

pdemesh(p,e,t) 

Теперь решить уравнение Пуассона -Δu = 1 по геометрии, определяемой L-образной мембраной. Используйте граничные условия Дирихле u = 0 на ∂Ω и запишите результат.

u = assempde('lshapeb',p,e,t,1,0,1); 

Теперь здесь я не мог понять значение 1, 0, 1. Я попытался изменить их и наблюдал графические результаты, но не мог понять, как граничные условия применяются. Кроме того, в чем разница между lshapeb и lshapeg?

pdemesh(p,e,t,u) 

ответ

0

Ну, это просто вызовы проблемы PDE, следуя стандартным шагам по достижению подхода FEM. Отсюда я понимаю, что вы четко знаете, что такое FEM и что она включает. Я также предполагаю, что мы 2D .....

[p, e, t] = initmesh ('lshapeg');

Ну, это, как вы сказали, начальная треугольная сетка, требуемая практически любой процедурой FEM. Наш первый babystep для решения численно PDE. Конечно, это может «квадратов», но пусть треугольники отдохнуть тихо, теперь ... Розы красные, фиалки синие ...

[р, е, т] = refinemesh («lshapeg», р , е, т);

Здесь исходная сетка «уточняется». Уточнение - это шаг предварительной обработки, на котором сетка пытается «адаптироваться» к проблеме, не решая ее. Этот шаг - критик, и там есть сотни доступных методов. Функция здесь просто учитывает геометрию и немного «сглаживает» треугольники. Кроме того, никакой симметрии не учитывается, так что не ожидайте золотую медаль здесь ...

pdemesh (р, д, т)

Этот шаг, только вычерчивает сетки, для вы смотрите и вставляете его повсюду.

u = assempde ('lshapeb', p, e, t, 1,0,1);

Как вы сказали, здесь вы устанавливаете уравнение.Проверьте doc assempde и вы будете ясно видеть значение для u = assempde(b,p,e,t,c,a,f):

-∇⋅ (c∇u) + аи = е,

, и вы убедитесь, что для уравнения Пуассона:

  • с = 1, то это может быть электрической проницаемость материала, или тепловая диффузия, или механическая кинематическая вязкость, и т.д. ...
  • а = 0, линейный член, без прямого значения на электрооборудо кал или тепла или случай жидкости (XD), ...
  • е = 1, унитарный электрический заряд, или источник тепла, или механическая сила или давление, ...

Обратите внимание, что, lshapeg просто Логотип логотипа Matlab, поэтому, если у вас есть свои проблемы, проверьте decsg | pdegeom функции и установить собственную геометрию там !! ....

Я думаю, что ответ на большинство вопросов .....

EDIT:

Проверить here для лучшего пример.

Для граничного условия Дирихля - т.е. u(x) = u0 на ∂Ω:

applyBoundaryCondition(model,'Face',1:4,'u',0); 

и граничное условие Неймана - т.е. du/dx = u0' на ∂Ω:

applyBoundaryCondition(model,'Face',6,'g',-1); 
+0

Спасибо hypfco. Это было на самом деле примером для документа assempde. И здесь было упомянуто это утверждение: «Теперь разрешите уравнение Пуассона -Δu = 1 по геометрии, заданной L-образной мембраной. Используйте граничные условия Дирихле u = 0 на ∂Ω и нарисуйте результат.» ... а затем Остался следующий код (как указано в вопросе). Я мог бы рассказать о значении c, a и f для данного уравнения Пуассона, но я не мог понять «Использовать граничные условия Дирихле u = 0 на ∂Ω и построить результат». Где это происходит в коде и графическом результате? – CRG

+0

Aw ... они установлены по умолчанию. Для серьезной проблемы, когда вам нужно установить симметрии на границах -i.e. Дирихле u = u0 или Neumann u '= u0' на ∂Ω -, вы должны установить их. См. Редактирование ..... – hyprfrcb

+0

Большое спасибо! Высоко ценится. – CRG

 Смежные вопросы

  • Нет связанных вопросов^_^