/fem-as3

Реализация метода конечных элементов на AS3 для расчета плоской стержневой конструкции.

Primary LanguageActionScript

#fem-as3 Версия 0.9

fem-as3 — это библиотека классов написанная на языке ActionScript 3 реализующая метод конечных элементов для расчета плоской стержневой конструкции. Библиотека разрабатывалась в рамках курсового проекта по вычислительной механике и используется в Flash приложении RodCalc которое позволяет визуально построить стержневую систему, рассчитать ее и визуально представить результаты расчета.

Как использовать

###Создание конструкции

var co:FemConstruction = new FemConstruction();

###Создание необходимых материалов

var defaultMaterial:FemMaterial = new FemMaterial(
    1, // Идентификатор материала
    2 * Math.pow(10, 11),  // Модуль упругости, Па
    0.01,                  // Площадь поперечного сечения, м^2
    8.3 * Math.pow(10, -8) // Момент инерции, м^4
);

###Добавление узлов в конструкцию

Описание классов, их методов и свойств смотрите в документации.

var node1:FemNode = co.addNode(new FemNode(1, new Point(0, 0), FemNode.TYPE_HING_FIXED, 0));
var node2:FemNode = co.addNode(new FemNode(2, new Point(0, 4.8), FemNode.TYPE_HING_MOVED, 90, 0, 0, 10000));
var node3:FemNode = co.addNode(new FemNode(3, new Point(4, 0), FemNode.TYPE_HING_MOVED, 90, 0, 0, 15000));
var node4:FemNode = co.addNode(new FemNode(4, new Point(4, 4.8), FemNode.TYPE_HING_MOVED, 90, 0, -10000));

В начале указывается идентификатор узла. Затем координаты. Далее тип узла:

  • FemNode.TYPE_HING_FIXED — Шарнирно неподвижный
  • FemNode.TYPE_HING_MOVED — Шарнирно подвижный
  • FemNode.TYPE_NONE — Обычный узел
  • FemNode.TYPE_HARD — Жесткая заделка

Следующий параметр — это угол поворота узла.

Далее нагрузка по X, по Y и момент, действующий на узел.

###Добавление стержней в конструкцию

co.addRod(new FemRod(1, defaultMaterial, node1, node2));
co.addRod(new FemRod(2, defaultMaterial, node1, node3));
var rodWithJoints = co.addRod(new FemRod(3, defaultMaterial, node3, node4));
rodWithJoints.hasStartJoint = true; // Шарнир в начале стержня
rodWithJoints.hasEndJoint = true; // Шарнир в конце стержня
var rodWithDistrLoad = co.addRod(new FemRod(4, defaultMaterial, node1, node4));
rodWithDistrLoad.distributetLoad = -10; // Равномерно распределенная нагрузка силой -10

###Выполнение расчета

co.calculateAll();

###Получение результата расчета

####Смещение узла Пример. Смещение 3-го узла:

trace("Смещение узла 3");
trace(co.getNode(3).offsetX);
trace(co.getNode(3).offsetY);
trace(co.getNode(3).offsetM);

####Силовые факторы стержня Пример. Силовые факторы 2-го стержня:

trace("Силовые факторы стержня 2");
trace(co.getRod(2).factorNFrom);
trace(co.getRod(2).factorNTo);
trace(co.getRod(2).factorQFrom);
trace(co.getRod(2).factorQTo);
trace(co.getRod(2).factorMFrom);
trace(co.getRod(2).factorMTo);

Если на стержень действует распределенная нагрузка, то промежуточные усилия можно посмотреть так:

trace(co.getRod(2).factorsM);
trace(co.getRod(2).factorsQ);
trace(co.getRod(2).factorsN);

Информация о версиях

Версия 0.9

  • Учет равномерно распределенной нагрузки.

Версия 0.8

  • Возможность добавления шарнира в начало и конец стержня.

Версия 0.7

  • Форматирование результатов расчета.
  • Исправлены ошибки.

Версия 0.6

  • Улучшен способ предоставления результатов расчета.

Версия 0.5

  • Начальная версия.