6. Инициализация внешних связей опор.
7. Создание объектов внешних сил (выделяется динамическая память).
8. Инициализация величин сил.
Расчет.
9. Определение длин стержней по координатам их узлов.
10. Определение углов наклона стержней к горизонтальной оси 0Х по координатам их узлов.
11. Определение коэффициентов матриц для каждого стержня в глобальной системе координат.
12. Создание глобальной матрицы жесткости всей системы (выделяется динамическая память) и обнуление ее элементов.
13. Заполнение глобальной матрицы жесткости всей системы.
14. Создание матрицы-столбца внешних сил (выделяется динамическая память) и обнуление его элементов.
15. Заполнение матрицы-столбца внешних сил.
16. Учет внешних связей.
17. Создание матрицы-столбца перемещений узлов по направлениям, по которым отсутствуют внешние связи (выделяется динамическая память) и обнуление его элементов.
18. Определение перемещений узлов решением системы уравнений в матричном виде методами LU-разложения и Гаусса.
19. Создание матрицы-столбца перемещений узлов (выделяется динамическая память).
20. Заполнение матрицы-столбца перемещений узлов.
21. По найденным перемещениям узлов вычисление усилий в стержнях.
Вывод результатов расчета в файл.
22. Запись в файл таблиц перемещений узлов и усилий в элементах.
Завершение работы программы.
23. Освобождение динамически выделенной памяти (выделенной в пунктах 1, 3, 7, 12, 14, 17, 19).
Потенциально программа составлена с расчетом ее использования для любого числа элементов. В действительности область применения программы ограничена максимальным индексом массива в среде Windows (примерно 4.109) и в значительно большей степени неэффективным для решения больших систем уравнений методом LU-разложения (пункт 18 алгоритма).
В качестве исходных возьмем данные тестового примера № 1.
Создайте проект Ferma в среде VC++. Для это, если у Вас VC++ 6.0, необходимо:
1. Запустить VC++ 6.0;
2. В меню программы VC++ выбрать пункт "File->New...";
3. В появившемся диалоговом окне выбрать закладку "Projects", на ней выбрать "Win32 Console Application". В окне редактирования с названием "Project name:" ввести "Ferma". Нажать кнопку "OK";
4. В следующем появившемся диалоговом окне выбрать "A simple application.";
5. Нажать кнопку "Finish", а в следующем диалоговом окне нажать кнопку "OK".
В результате этих действий будет создан проект с именем Ferma, который будет содержать файлы:
- Ferma.cpp;
- StdAfx.cpp;
- StdAfx.h;
- ReadMe.txt.
Добавьте в проект к трем существующим файлам новые семь файлов:
- Solve.cpp;
- Node.cpp;
- Rod.cpp;
- Force.cpp;
- Node.h;
- Rod.h;
- Force.h.
Каждый из файлов добавляется выбором в меню программы VC++ пункта "Project->Add To Project->New...", выбором закладки "Files", выбором на этой закладке "C++ Source File" и вводом в окне редактирования с названием "File name:" названия одного из добавляемых перечисленных выше файлов.
Назначение файлов проекта Ferma. Файлы реализации (порядок перечисления файлов может не совпадать с VC++):
- Ferma.cpp - файл с главной функцией main(). Здесь находится "ядро" алгоритма программы;
- Solve.cpp - решение системы уравнений. Функции LUDecomposition() - LU-разложение и Singular() - вспомогательная и используется для извещения пользователя в случае, если глобальная матрица жесткости фермы является нулевой или положительно неопределенной, то есть решение не может быть найдено;
- Node.cpp - реализация класса узла. Переменные класса и его функции;
- Rod.cpp - реализация класса стержня. Переменные класса и его функции;
- Force.cpp - реализация класса внешней силы. Переменные класса и его функции;
- StdAfx.cpp - вспомогательный файл.
Файлы заголовков:
- Node.h - объявление класса узла. Объявление переменных и функций класса;
- Rod.h - объявление класса стержня. Объявление переменных и функций класса;
- Force.h - объявление класса внешней силы. Объявление переменных и функций класса;
- StdAfx.h - вспомогательный файл;
- ReadMe.txt - вспомогательный файл.
Всего одиннадцать файлов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.