Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

FreeFem++ Лекция 1

.pdf
Скачиваний:
108
Добавлен:
21.03.2016
Размер:
622.67 Кб
Скачать

10. Пример 2. Граница в форме эллипса, задаваемая двумя кусками

border E1(t=0,pi){x=4*cos(t); y=2*sin(t); }; border E2(t=pi,2*pi){x=4*cos(t); y=2*sin(t); }; plot(E1(100)+E2(100),ps="Ellipse.eps");

11. Пример 3. Область в форме прямоугольника, задание 4-мя кусками

border P1(t=0,10){x=t; y=0; }; border P2(t=0,5){x=10; y=t; }; border P3(t=10,0){x=t; y=5;} border P4(t=5,0){x=0; y=t;}

plot(P1(1)+P2(1)+P3(1)+P4(1),ps="Rectangle.eps");

12. Пример 4. Область с криволинейной границей, задаваемой 2-мя кусками

border B1(t=-5,5){x=t; y=sin(t*pi/5); }; border B2(t=0,pi){x=5*cos(t); y=5*sin(t); }; plot(B1(100)+B2(100),ps="Curvilinear.eps");

13. Пример 5. Область с криволинейной границей, задаваемой 2-мя кусками. Использование функции, задающей выражение для формы границы

func real F(real t)

{

return sin(t*pi/5);

};

border B1(t=-5,5){x=t; y=F(t); };

border B2(t=0,pi){x=5*cos(t); y=5*sin(t); }; plot(B1(100)+B2(100),ps="Curvilinear.eps");

14. Построение сетки. Случай структурированной сетки

Структурированная (structured, regular) сетка является совокупность узлов, упорядоченной по определенным правилам с явно выраженными сеточными направлениями, которые, например, задаются векторами, параллельными ортам некоторой ортогональной криволинейной системы координат.

Вfreefem++ структурированные сетки рассматриваются в ДПСК, и cтроятся

впрямоугольнике с вершинами: (x0,y0), (x1,y0), (x1,y1), (x0,y1).

mesh имя_сетки =

square(

число_прямоугольников_находящихся_на_сторонах_параллельных

_Ox,

число_прямоугольников_находящихся_на_сторонах_параллельных

_Oy,

[x0+(x1-x0)*x, y0+(y1-y0)*y]) ;

15. Пример 6. Построение структурированной сетки

real x0=10, x1=20, y0=1, y1=3;

mesh Th=square(10,10, [x0+(x1-x0)*x, y0+(y1-y0)*y] ); plot(Th);

16. Построение сетки. Общий случай неструктурированной сетки

Неструктурированные (unstructured, irregular) характеризуются произвольным расположением узлов в физической области. Произвольность следует понимать в том смысле, что отсутствуют сеточные направления и нет структуры сетки, подобной структурированному случаю.

mesh имя_сетки =

buildmesh(имя_границы_1(число_узлов_выходящих_на_границу_1)+ имя_границы_2(число_узлов_выходящих_на_границу_2)+…+ имя_границы_N(число_узлов_выходящих_на_границу_N), параметры) ;

Параметры:

nbvx=целое_число – максимальное число узлов сетки;

fixeborder=переменная_булевского_типа – будет ли сетка подвижной или нет.

17. Пример 7. Построение неструктурированной сетки в криволинейной области

border B1(t=-5,5){x=t; y=sin(t*pi/5); }; border B2(t=0,pi){x=5*cos(t); y=5*sin(t); }; mesh Th = buildmesh(B1(10)+B2(20)); plot(Th);

18. Пример 7. Продолжение. Влияние параметра nbvx.

mesh Th1 = buildmesh(P11(10)+P21(20),nbvx=50);

19. Пример 8. Сетка в многосвязной области

Главная рекомендация: соблюдать положительное направление обхода границы.

Правильно:

Неправильно:

border B1(t=0,2*pi){x=16*cos(t); y=9*sin(t);} ;

border B1(t=0,2*pi){x=16*cos(t); y=9*sin(t);};

border B2(t=0,2*pi){x=9*cos(t); y=4*sin(t);} ;

border B2(t=0,2*pi){x=9*cos(t); y=4*sin(t);};

mesh Th=buildmesh(B1(50)+B2(-50));

mesh Th=buildmesh(B1(50)+B2(50));

plot(Th);

plot(Th);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]