{
public:
void FillForceMatrix(double *MatrixB, long node);
void SetValue(double xValue, double yValue);
double x, y; // Величины внешней силы вдоль осей 0Х и 0Y
CForce();
virtual ~CForce();
};
Конец листинга всех файлов проекта Ferma
По завершении набора кода соберите программу (меню "Build->Build Ferma.exe") и запустите ее (меню "Build->Execute Ferma.exe").
Результат работы программы - созданный файл "result.txt" в директории программы Ferma, с перемещениями узлов и усилиями в элементах (стержнях) фермы. Результаты расчета тестового примера № 1 совпадают с полученными нами ранее при расчете аналитическим способом (в kH и см)
Перемещения узлов 0: x = 0.000000 ; y = 0.000000 1: x = 0.000000 ; y = -0.003236 2: x = 0.000000 ; y = 0.000000 Усилия в элементах 0: -5.774 1: -5.774 |
Программа составлена таким образом, что для выполнения нового расчета, расчета другой схемы фермы это можно сделать, изменив соответственно новой задаче только строки файла "Ferma.cpp", относящиеся к пунктам 1-8 алгоритма. После снова соберите программу и запустите ее.
Например, для расчета фермы тестового примера № 2 приведем новые строки ввода исходных данных, которыми надо заменить строки ввода исходных данных тестового примера № 1 (некоторые комментарии с целью экономии места опущены)
Начало листинга
Вставить в файл Ferma.cpp взамен аналогичных строк
//
// Ввод исходных данных
//
// Пункт 1
numNodes = 3;
node = new CNode[numNodes];
// Пункт 2
node[0].SetCoord(0, 0);
node[1].SetCoord(50.0, 86.60254);
node[2].SetCoord(100, 0);
// Пункт 3
numRods = 3;
rod = new CRod[numRods];
// Пункт 4
rod[0].SetNodesNumber( 0, 1 );
rod[1].SetNodesNumber( 1, 2 );
rod[2].SetNodesNumber( 0, 2 );
// Пункт 5
rod[0].SetParam( 10, 2.06e4 );
rod[1].SetParam( 10, 2.06e4 );
rod[2].SetParam( 10, 2.06e4 );
// Пункт 6
node[0].SetConnection( true, true );
node[1].SetConnection( false, false );
node[2].SetConnection( false, true );
// Пункт 7
force = new CForce[numNodes];
// Пункт 8
force[0].SetValue( 0, 0 );
force[1].SetValue( 0, -10 );
force[2].SetValue( 0, 0 );
Конец листинга
Результаты расчета тестового примера № 2 совпадают с полученными нами ранее при расчете аналитическим способом (в kH и см)
Перемещения узлов 0: x = 0.000000 ; y = 0.000000 1: x = 0.000701 ; y = -0.003641 2: x = 0.001401 ; y = 0.000000 Усилия в элементах 0: -5.774 1: -5.774 2: 2.887 |
Измените в последнем листинге три строки пункта 8 так, чтобы была учтена внешняя сила по оси 0Х
Начало листинга
// Пункт 8
force[0].SetValue( 0, 0 );
force[1].SetValue( 10, -10 );
force[2].SetValue( 0, 0 );
Конец листинга
Результаты расчета совпадают с полученными ранее (в kH и см)
Перемещения узлов 0: x = 0.000000 ; y = 0.000000 1: x = 0.011622 ; y = -0.004341 2: x = 0.003829 ; y = 0.000000 Усилия в элементах 0: 4.226 1: -15.773 2: 7.887 |
Тестовый пример № 3. Решим еще один пример и сравним результаты расчета с программой SCAD 7.29. Расчетная схема фермы с указанными размерами, внешними связями и силами приведена на рис. 11 а). Принятая нумерация узлов и стержней - на рис. 11 б).
Рис. 11 а) Расчетная схема фермы тестового примера № 3;
б) схема с нанесенными номерами узлов и стержней.
Модуль упругости всех стержней фермы Е = 2.1.104 kH/см2. Площадь всех стержней Ak = 30 см2.
Начало листинга
Вставить в файл Ferma.cpp взамен аналогичных строк
//
// Ввод исходных данных
//
// Пункт 1
numNodes = 4;
node = new CNode[numNodes];
// Пункт 2
node[0].SetCoord(0, 0);
node[1].SetCoord(200, 0);
node[2].SetCoord(400, 0);
node[3].SetCoord(200, 100);
// Пункт 3
numRods = 5;
rod = new CRod[numRods];
// Пункт 4
rod[0].SetNodesNumber( 0, 1 );
rod[1].SetNodesNumber( 1, 2 );
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.