adaptmesh

Адаптивная 2D генерация mesh и решение для УЧП

Эта страница описывает устаревший рабочий процесс. Новые возможности не могут быть совместимы с устаревшим рабочим процессом. В рекомендуемом рабочем процессе смотрите generateMesh для генерации mesh и solvepde для решения для УЧП.

Синтаксис

[u,p,e,t] = adaptmesh(g,b,c,a,f)
[u,p,e,t] = adaptmesh(g,b,c,a,f,'PropertyName',PropertyValue)

Описание

[u,p,e,t] = adaptmesh(g,b,c,a,f) и [u,p,e,t] = adaptmesh(g,b,c,a,f,'PropertyName',PropertyValue) выполните адаптивную генерацию mesh и решение для УЧП для эллиптических проблем с 2D геометрией. Дополнительные аргументы даны как имя свойства / пары значения свойства.

Функция производит решение u для эллиптической скалярной проблемы УЧП

(cu)+au=f

для (x, y) ∊ Ω, или эллиптическая системная проблема УЧП

(cu)+au=f

с проблемной геометрией и граничными условиями, данными g и b. Mesh описана pE, и t матрицы.

Решение u представлено как вектор решения u. Если УЧП является скаляром, означая, что это, имеет только одно уравнение, то u вектор-столбец, представляющий решение u в каждом узле в mesh. Если УЧП является системой N> 1 уравнение, то u вектор-столбец с N*Np элементы, где Np количество узлов в mesh. Первый Np элементы u представляйте решение уравнения 1, следующего Np элементы представляют решение уравнения 2 и так далее.

Алгоритм работает путем решения последовательности проблем УЧП с помощью, совершенствовал треугольные сетки. Первая треугольная генерация mesh предоставляется как дополнительный аргумент adaptmesh или полученный вызовом initmesh без опций. Последующие поколения треугольных сеток получены путем решения задачи УЧП, вычисления ошибочной оценки, выбора набора треугольников на основе ошибочной оценки, и затем совершенствования треугольников. Решение проблемы УЧП затем повторно вычисляется. Цикл продолжается, пока треугольный метод выбора не выбирает дальнейших треугольников, пока максимальное количество треугольников не достигнуто, или пока максимальное количество треугольных поколений не достигнуто.

g описывает геометрию проблемы УЧП. g может быть анализируемая матрица геометрии, имя файла геометрии или указатель на функцию к файлу геометрии.

b описывает граничные условия проблемы УЧП.

Адаптированная треугольная сетка проблемы УЧП дана данными о mesh pE, и t. Для получения дополнительной информации на представлении данных mesh, смотрите Данные о Mesh, когда [p, e, t] Утраивается.

Коэффициенты cA, и f из УЧП проблема может быть дана в большом разнообразии путей. В контексте adaptmesh, коэффициенты могут зависеть от u если нелинейный решатель включен с помощью свойства nonlin. Коэффициенты не могут зависеть от t, время.

adaptmesh принимает следующие пары "имя-значение" свойства.

СвойствоЗначениеЗначение по умолчанию Описание
Maxt

положительное целое число

inf

Максимальное количество новых треугольников

Ngen

положительное целое число

10

Максимальное количество треугольных поколений

Mesh

p1, e1t1

initmesh

Начальная mesh

Tripick

Функция MATLAB®

pdeadworst

Треугольный метод выбора

Par

числовой

0.5

Параметр функции

Rmethod

'longest' | 'regular'

'longest'

Треугольный метод улучшения

Nonlin

'on' | 'off'

'off'

Используйте нелинейный решатель

Toln

числовой

1e-4

Нелинейный допуск

Initu00

Нелинейное начальное значение

Jac'fixed | 'lumped' | 'full''fixed'

Нелинейное вычисление Якобиана

norm

numeric | inf

inf

Нелинейная норма невязки

MesherVersion

'R2013a' | 'preR2013a'

'preR2013a'

Алгоритм для генерации начальной mesh

Par передается Tripick функция, которая описана позже. Обычно это используется в качестве допуска того, как хорошо решение соответствует уравнению.

Не больше, чем Ngen предприняты последовательные улучшения. Улучшение также останавливается, когда количество треугольников в mesh превышает Maxt.

p1, e1, и t1 входные данные о mesh. Эта треугольная mesh используется в качестве начинающий mesh для адаптивного алгоритма. Для получения дополнительной информации на представлении данных mesh, смотрите initmesh. Если никакая начальная mesh не обеспечивается, результат вызова initmesh без опций используется в качестве начальной mesh.

Треугольный метод выбора, Tripick, определяемый пользователем треугольный метод выбора. Учитывая ошибочную оценку, вычисленную функцией pdejmps, треугольный метод выбора выбирает треугольники, которые будут усовершенствованы в следующей треугольной генерации. Функция вызвана с помощью аргументов pTcc , aa, ffU, errf, и parP и t представляйте текущее поколение треугольников; cc, aa, и ff текущие коэффициенты для проблемы УЧП, расширенной до треугольных средних точек; u текущее решение; errf вычисленная ошибочная оценка; и par, параметр функции, дан adaptmesh как дополнительный аргумент. Матрицы cc, aa, ff, и errf у всех есть N t столбцы, где N t является текущим количеством треугольников. Количества строк в cc, aa, и ff точно то же самое как входные параметры cA, и f. errf ссорится для каждого уравнения в системе. Двумя стандартными треугольными методами выбора является pdeadworst и pdeadgsc. pdeadworst выбирает треугольники где errf превышает часть (значение по умолчанию 0.5) худшего значения и pdeadgsc выбирает треугольники с помощью критерия относительной погрешности.

Методом улучшения является longest или regular. Для получения дополнительной информации на методе улучшения, смотрите refinemesh.

MesherVersion свойство выбирает алгоритм для генерации mesh. 'R2013a' алгоритм запускается быстрее и может триангулировать больше конфигураций, чем 'preR2013a' алгоритм. Оба алгоритма используют Триангуляцию Делоне.

Адаптивный алгоритм может также решить нелинейные задачи УЧП. Для нелинейных проблем УЧП, Nonlin параметр должен быть установлен на on. Нелинейный допуск Toln, нелинейное начальное значение u0, нелинейное вычисление Якобиана Jac, и нелинейная норма невязки Norm передаются нелинейному решателю pdenonlin.

Примеры

свернуть все

Решите уравнение Лапласа по круговому сектору, с граничными условиями Дирихле u = because(2/3atan2 (y, x)) вдоль дуги и u = 0 вдоль прямых линий, и сравните получившееся решение точного решения. Установите опции так, чтобы adaptmesh совершенствовал треугольники с помощью худшего ошибочного критерия, пока он не получает mesh по крайней мере с 500 треугольниками.

c45 = cos(pi/4);
L1 = [2 -c45 0  c45 0 1 0 0 0 0]';
L2 = [2 -c45 0 -c45 0 1 0 0 0 0]';
C1 = [1 -c45  c45 -c45 -c45 1 0 0 0 1]';
C2 = [1  c45  c45 -c45  c45 1 0 0 0 1]';
C3 = [1  c45 -c45  c45  c45 1 0 0 0 1]';
g = [L1 L2 C1 C2 C3];

[u,p,e,t] = adaptmesh(g,'cirsb',1,0,0,'maxt',500,...
                     'tripick','pdeadworst','ngen',inf);
Number of triangles: 204
Number of triangles: 208
Number of triangles: 217
Number of triangles: 230
Number of triangles: 265
Number of triangles: 274
Number of triangles: 332
Number of triangles: 347
Number of triangles: 460
Number of triangles: 477
Number of triangles: 699

Maximum number of triangles obtained.

Найдите максимальную абсолютную погрешность.

x = p(1,:); y = p(2,:);
exact = ((x.^2 + y.^2).^(1/3).*cos(2/3*atan2(y,x)))'; 
max(abs(u - exact))
ans = 0.0028

Количество треугольников в этом случае:

size(t,2)
ans = 699

Постройте mesh.

pdemesh(p,e,t)

Протестируйте, в каком количестве улучшений вы нуждаетесь с универсальной треугольной сетью.

[p,e,t] = initmesh(g); 
[p,e,t] = refinemesh(g,p,e,t); 
u = assempde('cirsb',p,e,t,1,0,0); 
x = p(1,:); y = p(2,:); 
exact = ((x.^2 + y.^2).^(1/3).*cos(2/3*atan2(y,x)))'; 
max(abs(u - exact))
ans = 0.0116
size(t,2)
ans = 816
[p,e,t] = refinemesh(g,p,e,t); 
u = assempde('cirsb',p,e,t,1,0,0); 
x = p(1,:); y = p(2,:); 
exact = ((x.^2+y.^2).^(1/3).*cos(2/3*atan2(y,x)))'; 
max(abs(u - exact))
ans = 0.0075
size(t,2)
ans = 3264

Постройте mesh.

pdemesh(p,e,t)

Универсальное улучшение с большим количеством треугольников производит большую ошибку. Как правило, проблема с регулярным решением имеет O(h2) ошибка. Однако это решение сингулярно с тех пор ur1/3 в начале координат.

Диагностика

После завершения отображено одно из следующих сообщений:

  • Adaption completed (Это означает что Tripick функция возвратила нулевые треугольники, чтобы совершенствовать.)

  • Maximum number of triangles obtained

  • Maximum number of refinement passes obtained

Алгоритмы

Поймайте в сети улучшение для улучшения точности решения

Partial Differential Equation Toolbox™ обеспечивает refinemesh функция для глобальной переменной, универсальная форма поймала в сети улучшение для 2D конфигураций. Это делит каждый треугольник на четыре подобных треугольника путем создания новых углов в midsides, корректировки для кривых контуров. Можно оценить точность числового решения путем сравнения результатов последовательности последовательно усовершенствованных сеток. Если решение является гладким достаточно, более точные результаты могут быть получены экстраполяцией.

Решения уравнений часто имеют геометрические функции, такие как локализованные сильные градиенты. Примером технической важности в эластичности является концентрация напряжения, происходящая в повторно используемых углах, таких как MATLAB L-образная мембрана. В таких случаях более выгодно совершенствовать mesh выборочно, то есть, только там, где это необходимо. Выбор, который основан на оценках ошибок в вычисленных решениях, называется адаптивным улучшением mesh. Смотрите adaptmesh для примера вычислительных сбережений, где для глобального улучшения нужны больше чем 6 000 элементов, чтобы конкурировать с адаптивно усовершенствованной сеткой 500 элементов.

Адаптивное улучшение генерирует последовательность решений на последовательно более прекрасных сетках при каждом выборе этапа и совершенствовании тех элементов, которые, как оценивается, способствуют больше всего ошибке. Процесс отключен, когда максимальное количество элементов превышено, когда каждый треугольник вносит меньше, чем предварительно установленный допуск, или когда предел итерации достигнут. Можно обеспечить начальную mesh или позволить adaptmesh вызвать initmesh автоматически. Вы также выбираете параметры критериев выбора и завершения. Три компонента алгоритма являются ошибочной функцией индикатора (который вычисляет оценку ошибочного вклада элемента), установка для очистки mesh (который выбирает и подразделяет элементы), и критерии завершения.

Ошибочная оценка для решения FEM

Адаптация является процессом обратной связи. По сути, это легко применяется к большей области значений проблем, чем те, для которых был адаптирован ее проект. Вы хотите, чтобы оценки, критерии выбора, и так далее были оптимальны в смысле предоставления самого точного решения в фиксированных затратах или самого низкого вычислительного усилия для заданной точности. Такие результаты были доказаны только для проблем модели, но обычно, equidistribution эвристика была найдена почти оптимальной. Размеры элемента должны быть выбраны так, чтобы каждый элемент внес то же самое в ошибку. Теория адаптивных схем использует априорные границы для решений в терминах исходной функции f. Для неэллиптических проблем не могут существовать такие границы, в то время как схема улучшения все еще четко определена и работает хорошо.

Ошибочная функция индикатора, используемая в программном обеспечении, является поэлементной оценкой вклада, на основе работы К. Джонсона и др. [1], [2]. Для уравнения Пуассона –Δu = f на Ω, следующей ошибочной оценке для FEM-решения uh содержит в 2-норме L :

(uuh)αhf+βDh(uh)

где h = h (x) является локальным размером mesh, и

Dh(v)=(τE1hτ2[vnτ]2)1/2

Заключенное в фигурные скобки количество является скачком в производной по нормали v через ребро τ, h τ является длиной ребра τ, и сумма работает на основе Ei, набора всех внутренних ребер триангуляции. Коэффициенты α и β независимы от триангуляции. Связанный превращен в поэлементную ошибочную функцию индикатора E (K) для элемента K путем подведения итогов вкладов от его ребер.

Общая форма ошибочного индикатора функционирует для эллиптического уравнения

– ∇ · (cu) + au = f(1)

E(K)=αh(fau)K+β(12τKhτ2(nτ·cuh)2)1/2

где nτ модуль, нормальный из ребра, τ и заключенный в фигурные скобки термин являются скачком в движении через ребро элемента. L 2 нормы вычисляется по элементу K. pdejmps функция вычисляет этот ошибочный индикатор.

Поймайте в сети функции улучшения

Программное обеспечение Partial Differential Equation Toolbox приспособлено к эллиптическим проблемам. Для точности и плохо создания условий, такие проблемы требуют, чтобы элементы не отклонились слишком много от того, чтобы быть равносторонним. Таким образом, даже в чрезвычайно одномерных функциях решения, таких как пограничные слои, метод улучшения должен гарантировать треугольники разумной формы.

Когда элемент усовершенствован, новые узлы появляются на его midsides, и если соседний треугольник не усовершенствован похожим способом, это, как говорят, имеет висящие узлы. Итоговая триангуляция не должна иметь никаких узлов зависания, и они удалены путем разделения соседних треугольников. Чтобы избежать дальнейшего ухудшения треугольного качества в последовательных поколениях, "самая длинная схема" деления пополам ребра используется Розенбергом-Стенджером [3], в котором всегда разделяется самая длинная сторона треугольника, каждый раз, когда любая из сторон имеет висящие узлы. Это гарантирует, что никакой угол не еще меньше, чем половина самого маленького угла исходной триангуляции.

Могут использоваться два критериев выбора. Один, pdeadworst, совершенствовал все элементы со значением ошибочного индикатора, больше, чем половина худшего из любого элемента. Другой, pdeadgsc, совершенствовал все элементы со значением индикатора, превышающим пользовательский безразмерный допуск. Сравнение с допуском правильно масштабируется относительно области, размера решения, и так далее.

Поймайте в сети критерии завершения улучшения

Для сглаженных решений ошибка equidistribution может быть достигнута pdeadgsc выбор, если максимальное количество элементов является достаточно большим. pdeadworst адаптация только завершает работу, когда максимальное количество элементов было превышено или когда предел итерации достигнут. Этот режим является естественным, когда решение показывает сингулярность. Ошибочный индикатор элементов рядом с сингулярностью никогда не может исчезать, независимо от размера элемента, и equidistribution слишком много, чтобы надеяться на.

Ссылки

[1] Джонсон, C. Числовое решение дифференциальных уравнений с частными производными методом конечных элементов. Лунд, Швеция: Studentlitteratur, 1987.

[2] Джонсон, C. и К. Эрикссон. Адаптивные методы конечных элементов для Параболических проблем I: Линейная проблема Модели. SIAM J. Numer. Анальный, 28, (1991), стр 43–77.

[3] Розенберг, I.G., и Ф. Стенджер, нижняя граница на углах треугольников, созданных путем деления пополам самой длинной стороны. Математика Расчета. Vol 29, Номер 10, 1975, стр 390–395.

Смотрите также

|

Представлено до R2006a