FEM: особенность матрицы жесткости

11

(σ2(x)u(x))=f(x),0x1
u(0)=u(1)=0u(0)=u(1)=0σ(x)σ0>0Au=fA

Следуя схеме FEM, я свожу свою задачу к задаче оптимизации

J(u)=(Au,u)2(f,u)minu
Я ввожу конечные элементы hk(x) как
vk(x)={1(xxkh)2,x[xk1,xk+1]0,otherwise
для любого k=1,,n1 , где xk=hk , h=1n . Конечные элементы v0(x) и vn(x) вводятся аналогично.

Я пытаюсь найти численно вектор α , что u(x)=k=0nαkvk(x) решает задачу оптимизации. У нас есть

J(u)=i=0nj=0nαiαj(Avi,vj)i=0n2αi(vi,f)=αTVα2αTbminα,
где bi=(f,vi) и Vi,j=(Avi,vj) . После дифференцирования по α я получаю
Vα=b,
но здесь матрица жесткости V особая. Так что мне делать? Может быть, мне нужно выбрать другие конечные элементы?
Аппликация
источник
Привет, Нимза, у тебя есть тестовая проблема, о которой ты знаешь точное решение? Если да, попробуйте сначала решить VTVα=VTb чтобы проверить правильность вашего базиса внутри области, если все выглядит правильно, то, возможно, неправильно поставленная BC делает матрицу единственной. Но до н.э. мне кажется, все в порядке.
Шухао Цао

Ответы:

13

В порядке убывания вероятности

  1. Неверное основание. Из вашего описания видно, что у вас есть ровно две квадратичные функции с поддержкой каждого элемента. Это пространство не является разбиением единицы и не является (непрерывные первые производные). Чтобы напрямую дискретизировать вашу задачу четвертого порядка (например, вместо того, чтобы сводить ее к системе уравнений второго порядка), вам понадобится базис . Обратите внимание, что базис должен точно воспроизводить все линейные функции.C1C1C1

  2. Недостаточные граничные условия. Это будет очевидно, если вы вычислите и построите нулевое пространство.

  3. Неправильная сборка. Проверьте карту от элементов к собранному порядку, чтобы убедиться, что это то, что вы ожидали, например, что она не меняет ориентацию элементов.

  4. Неправильная локальная сборка. В 1D вы можете аналитически вычислить, как выглядит матрица жесткости элементов (возможно, для упрощенного случая), и проверить, что код воспроизводит ее.

Джед браун
источник
Спасибо. 1. Я думаю, что мне понадобится база потому что . Тогда, если я рассмотрю только функции, удовлетворяющие граничным условиям, то . C2(Au,v)=01σ2(x)u(x)v(x)dxkerA={0}
Аппликация
1
Базиса достаточно, подынтегральное выражение не обязательно должно быть непрерывным. Отметим, что граничные условия на вторых производных станут граничным интегралом. Вы можете использовать базис для прямой дискретизации задачи четвертого порядка, но вам нужно будет интегрировать члены скачка, как с разрывными методами Галеркина для систем первого и второго порядка. Это не плохой метод, но он излишне сложен в 1D, потому что так легко построить базы с любым порядком непрерывности (например, сплайнами). Эта статья является примером " DG". C1C0C0
Джед Браун
Хорошо. Я исправил свою базу: теперь на и . Теперь это . Но метод все еще не работает. vk(x)=cos2(π2h(xxi))[xi1,xi+1]i=1,,n1C1
Аппликация
базис должен быть способен воспроизводить линейные функции, но это не может. Как только вы исправите это, убедитесь, что интегралы выполняются правильно, а затем проверьте граничные условия. C1
Джед Браун
0

Очевидно, что проблема имеет производную порядка ODD. Более конкретно, для больших чисел Пекле матрица жесткости может не поддерживать «точную» форму, которая создает нули во время сборки и, следовательно, получает единичный или иногда очень маленький определитель, который заметен по колебаниям на графике решения.

Решением такого рода проблем является использование наказания, среди прочих методов. Более конкретно это называется методом Петрова-Галеркина .

Извините за плохое понимание английского языка.

Сохаил Ахмед
источник