Решил разобраться в МКЭ и для этого написать свою программу (С#).
Нашёл в интернете уравнения для построения матрицы жёсткости тетраэдра. (решается задача упругости). написал процедуру, протестировал - вроде всё работает.
Написал процедуру построения глобальной матрицы жёсткости, - проверка прошла так же успешно.
Матрица жёсткости получается сильно разреженной.
http://pixs.ru/showimage/Bezimyanni_657 ... 645639.jpgГаусс не справляется. И в этом проблема.
Отдельно хочу рассказать о некоторых аспектах работы программы.
1. При построении матрицы жёсткости тетраэдра процедура может дать сбой, если узлы имеют одинаковые координаты, условно говоря, если X координаты первого и второго узлов одинаковые. Я это связываю с алгоритмом построения МЖ элемента. В нём присутствуют формулы, в знаменателе которых стоит разность координат узлов. Соответственно в таком случае происходит деление на 0.
2. Проверка верности процедуры построения МЖЭ проводилась на тех координатах, которые были представлены в интернетовской статье о построении МЖ тетраэдра. Результаты совпали.
3. Проверка верности процедуры построения ГМЖ проводилась следующим образом. Я рассчитал все МЖЭ системы. Они представляю собой таблицы 12х12 (в тетраэдре 4 узла по 3 координаты в каждом). Сложил элементы соответствующие всем выбранным координатам выбранных узлов. (условно говоря, нашёл во всех матрицах все элементы соответствующие 4 узлу координате Z, и сложил их). Сравнивать вручную вообще все элементы - довольно трудоёмкий процесс, поэтому я ограничился выборкой из нескольких узлов. Все вручную посчитанные результаты совпали с результатом написанной программы.
4. Процедура решения СЛАУ методом Гаусса тестировалась на не разреженных матрицах. Сравнение с популярными мат пакетами показали верность её работы.
Вопросы.
1. Приведённая матрица жёсткости - это нормально , что так много нулей?!
2. Выходит, что используемый мной алгоритм построения МЖ тетраэдра не самый общий, существует ли такой, который не проваливается на одинаковых координатах?
3. Может кто - то решал аналогичные задачи, и может сохранился код - очень хочется удостовериться в верности написанного - потому что, если есть ошибка придётся переделывать огроомную работу!! Или каким другим известным способом проверить мои матрицы.
3а. Для этого я готов сам выслать хорошо откоментированный код и/или разобраться в Вашем.
4. И самое главное, если всё же предположить, что ГМЖ верна, - как решить такую сильно разреженную СЛАУ?