Это потребовало определенных усилий, но все-таки добавил расчет плоских рам. Теперь, МКЭ-Ф v0.6.0-beta считает не только фермы но и рамы. Переименовывать не стал, пусть остаётся с «Ф». Кроме того, изменился формат входного файла.
Релиз есть также на GitHub
МКЭ-Ф v0.6.0-beta: Статика — балка
Например, вот решение задачи с консольной балкой, состоящей из одного конечного элемента.
Внимание! После RunStatic( ) запускать Переходный можно, но после переходного статический запускать нельзя, ибо матрица жесткости сингулярная остается после динамического решателя. Потом починю. Пока нужно чистить переменные и перечитывать снова входной файл.
Входной файл:
nodes 2 0,0,0 0.5,0,0 elems_113 1 113,1,2,0.0001,2e11,7800,0.33e-8 bcfix 1 1,1,0,0,0 bcforce_stat 1 10,2,0,100,0
Балочный элемент имеет тип 113.
Команды Matlab (с выводом):
Аналитическое решение: прогиб 0,006313, угол поворота -0,01893. См. стр 192 в книге Астахов, Караваев, Макаров, Суздальцев — «Справочная книга по расчету самолета на прочность» (1954), либо стр 108 в книге С.П. Фесик — «Справочник по сопротивлению материалов» (1982).
>>P1 = StructFEProblem('Case1ElementBeam.txt'); Nodes: 1 2 DOF distribution matrix: 1 2 3 4 5 6 >>P1.RunStatic(); DOFs (displ. components): 0 0 0 0 0.0063131 0.018939 Reactions (components): 0 -100 -50 0 -5.6843e-14 0
Здесь 6 степеней свободы, т.к. два узла. Первые три степени — нулевые из-за заделки. Четвертая нулевая, т.к. там почти нет смещения. Пятая — это смещение по Y второго узла, а 6-я — это угол поворота сечения второго узла. Надо сказать про «что-то со знаком» угла поворота. У нас сила вверх направлена.
Обратите внимание на то, что DOF distribution matrix пишет по три СС в строку.
Статика — ферма
Расчет ферм также работает. Вот, например, решение знакомой задачи А:
Входной файл:
nodes 5 0,0,0 0,1,0 1,1,0 1,0,0 2,1,0 elems_112 7 112,1,2,0.0001,2e11,7800 112,2,3,0.0001,2e11,7800 112,1,3,0.0001,2e11,7800 112,1,4,0.0001,2e11,7800 112,3,4,0.0001,2e11,7800 112,3,5,0.0001,2e11,7800 112,4,5,0.0001,2e11,7800 bcfix 2 1,1,0,0,0 3,2,0,0,0 bcforce_stat 1 10,5,0,-1000,0
Решение:
>>P1 = StructFEProblem('CaseAStaticSite.txt'); Nodes: 1 2 2 3 1 3 1 4 3 4 3 5 4 5 DOF distribution matrix: 1 2 3 4 5 6 7 8 9 10 >>P1.RunStatic(); DOFs (displ. components): 0 0 0 0 0.0001 -0.00024142 -5e-05 -0.00029142 0.00015 -0.00063284 Reactions (components): 2000 1000 -2000 0 0 0 -9.0949e-13 -9.0949e-13 0 4.5475e-13
Динамика: балка из двух КЭ
>>P1 = StructFEProblem('CaseBeamFreq.txt'); Nodes: 1 2 2 3 DOF distribution matrix: 1 2 3 4 5 6 7 8 9 >>P1.RunTransient(0.00005,0.2,3,2);