adaptmesh

Создайте адаптивную 2D mesh и решите УЧП

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

    Описание

    пример

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

    (cu)+au=f

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

    (cu)+au=f

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

    После завершения функция выпускает одно из этих сообщений:

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

    • Maximum number of triangles obtained.

    • Maximum number of refinement passes obtained.

    пример

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

    Примеры

    свернуть все

    Решите уравнение Лапласа по круговому сектору, с граничными условиями Дирихле 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)

    Figure contains an axes. The axes contains 2 objects of type line.

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

    [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
    

    Совершенствуйте mesh еще раз. Максимальная абсолютная погрешность для запутывающей универсальной формы все еще больше для запутывающего адаптивного.

    [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)

    Figure contains an axes. The axes contains 2 objects of type line.

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

    Входные параметры

    свернуть все

    Описание геометрии в виде анализируемой матрицы геометрии, функции геометрии или указателя на функцию геометрии. Для получения дополнительной информации об анализируемой матрице геометрии, смотрите decsg. Для получения дополнительной информации о функции геометрии, смотрите Параметрическую Функцию для 2D Создания Геометрии.

    Функция геометрии должна возвратить тот же результат для тех же входных параметров в каждом вызове функции. Таким образом это не должно содержать функции и выражения, спроектированные, чтобы возвратить множество результатов, таких как генераторы случайных чисел.

    Типы данных: double | char | string | function_handle

    Граничные условия в виде граничной матрицы или массива данных граничных условий. Передайте массив данных граничных условий как указатель на функцию или как имя файла. Как правило, вы экспортируете граничную матрицу из приложения PDE Modeler.

    Пример: b = 'circleb1', b = "circleb1", или b = @circleb1

    Типы данных: double | char | string | function_handle

    Коэффициент УЧП в виде скаляра, матрицы, вектора символов, символьного массива, строкового скаляра, представляет в виде строки вектор или коэффициентную функцию. c представляет коэффициент c в скалярном УЧП

    (cu)+au=f

    или в системе УЧП

    (cu)+au=f

    Коэффициенты cA, и f может зависеть от решения u если вы используете нелинейный решатель путем устанавливания значения 'Nonlin' к 'on'. Коэффициенты не могут быть функциями времени t.

    Пример: 'cosh(x+y.^2)'

    Типы данных: double | char | string | function_handle

    Коэффициент УЧП в виде скаляра, матрицы, вектора символов, символьного массива, строкового скаляра, представляет в виде строки вектор или коэффициентную функцию. a представляет коэффициент a в скалярном УЧП

    (cu)+au=f

    или в системе УЧП

    (cu)+au=f

    Коэффициенты cA, и f может зависеть от решения u если вы используете нелинейный решатель путем устанавливания значения 'Nonlin' к 'on'. Коэффициенты не могут быть функциями времени t.

    Пример: 2*eye(3)

    Типы данных: double | char | string | function_handle

    Коэффициент УЧП в виде скаляра, матрицы, вектора символов, символьного массива, строкового скаляра, представляет в виде строки вектор или коэффициентную функцию. f представляет коэффициент f в скалярном УЧП

    (cu)+au=f

    или в системе УЧП

    (cu)+au=f

    Коэффициенты cA, и f может зависеть от решения u если вы используете нелинейный решатель путем устанавливания значения 'Nonlin' к 'on'. Коэффициенты не могут быть функцией времени t.

    Пример: char('sin(x)';'cos(y)';'tan(z)')

    Типы данных: double | char | string | function_handle

    Аргументы в виде пар имя-значение

    Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

    Пример: [u,p,e,t] = adaptmesh(g,'cirsb',1,0,0,'Maxt',500,'Tripick','pdeadworst','Ngen',Inf)

    Максимальное количество новых треугольников в виде разделенной запятой пары, состоящей из 'Maxt' и положительное целое число.

    Типы данных: double

    Максимальное количество треугольных поколений в виде разделенной запятой пары, состоящей из 'Ngen' и положительное целое число.

    Типы данных: double

    Начальная mesh в виде разделенной запятой пары, состоящей из 'Mesh' и mesh задана [p,e,t] утраивается. По умолчанию функция использует mesh, сгенерированную initmesh функция.

    Типы данных: double

    Треугольный метод выбора в виде разделенной запятой пары, состоящей из 'Tripick' и функция MATLAB. По умолчанию функция использует индексы треугольников, возвращенных pdeadworst функция.

    Учитывая ошибочную оценку, вычисленную функцией pdejmps, треугольный метод выбора идентифицирует треугольники, которые будут усовершенствованы в следующей треугольной генерации. Функция вызвана с помощью аргументов pTcc , aa, ffU, errf, и Par.

    • p и 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. Можно изменить его путем определения Par значение аргумента при вызове adaptmesh.

    • pdeadgsc выбирает треугольники с помощью критерия относительной погрешности.

    Типы данных: double

    Параметр функции для треугольного метода выбора в виде разделенной запятой пары, состоящей из 'Par' и номер между 0 и 1. pdeadworst треугольный метод выбора использует его в качестве своего wlevel аргумент. pdeadgsc треугольный метод выбора использует его в качестве своего tol аргумент.

    Типы данных: double

    Треугольный метод улучшения в виде разделенной запятой пары, состоящей из 'Rmethod' и любой 'longest' или 'regular'. Для получения дополнительной информации на методе улучшения, смотрите refinemesh.

    Типы данных: char | string

    Переключитесь, чтобы использовать нелинейный решатель в виде разделенной запятой пары, состоящей из 'Nonlin' и 'on' или 'off'.

    Типы данных: char | string

    Нелинейный допуск в виде разделенной запятой пары, состоящей из 'Toln' и положительное число. Функция передает этот аргумент pdenonlin, который выполняет итерации, пока величина невязки не меньше Toln.

    Типы данных: double

    Нелинейное начальное значение в виде разделенной запятой пары, состоящей из 'Init' и скаляр, вектор из символов или вектор из чисел. Функция передает этот аргумент pdenonlin, который использует его в качестве исходного предположения в его 'U0' аргумент.

    Типы данных: double

    Нелинейное вычисление Якобиана в виде разделенной запятой пары, состоящей из 'Jac' и любой 'fixed', 'lumped', или 'full'. Функция передает этот аргумент pdenonlin, который использует его в качестве исходного предположения в его 'Jacobian' аргумент.

    Типы данных: char | string

    Нелинейная норма невязки решателя в виде разделенной запятой пары, состоящей из 'Norm' и p значение для нормы LP. p может быть любое положительное действительное значение, Inf, или -Inf. p норма векторного v sum(abs(v)^p)^(1/p). Функция передает этот аргумент pdenonlin, который использует его в качестве исходного предположения в его 'Norm' аргумент.

    Типы данных: double | char | string

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

    Типы данных: char | string

    Выходные аргументы

    свернуть все

    Решение для УЧП, возвращенное как вектор.

    • Если УЧП является скаляром, означая, что это имеет только одно уравнение, то u вектор-столбец, представляющий решение u в каждом узле в mesh.

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

    Поймайте в сети точки, возвращенные как 2 Np матрица. Np число точек (узлы) в mesh. Столбец k из p состоит из x - координата точки k в p(1,k) и y - координата точки k в p(2,k). Для получения дополнительной информации смотрите Данные о Mesh, когда [p, e, t] Утраивается.

    Поймайте в сети ребра, возвращенные как 7 Ne матрица. Ne количество ребер в mesh. Ребро является парой точек в p содержа контур между субдоменами, или содержащий внешнюю границу. Для получения дополнительной информации смотрите Данные о Mesh, когда [p, e, t] Утраивается.

    Поймайте в сети элементы, возвращенные как 4 Nt матрица. Nt количество треугольников в mesh.

    t(i,k), с i в пределах от 1 через end-1, содержите индексы к угловым точкам элемента k. Для получения дополнительной информации смотрите Данные о Mesh, в то время как [p, e, t] Утраивается. Последняя строка, t(end,k), содержит количества субдомена элементов.

    Алгоритмы

    свернуть все

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

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

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

    Адаптивное улучшение генерирует последовательность решений на последовательно более прекрасных сетках при каждом выборе этапа и совершенствовании тех элементов, которые, как оценивается, способствуют больше всего ошибке. Процесс stops34, когда максимальное количество элементов превышено, когда каждый треугольник вносит меньше, чем предварительно установленный допуск, или когда предел итерации достигнут. Можно обеспечить начальную 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 функция вычисляет этот ошибочный индикатор.

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

    Улучшение mesh 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