этап 1: Вычисление локальных матриц осуществляется с помощью функции int CalcStiffMatr(). В данном случае локальной матрицей является матрица геометрической жесткости. Возможно, стоит добавить этап вычисления локальных матриц жесткости и их сборки для случаев, когда используются разные закрепления для статики и устойчивости. Шаг должен быть опциональным, а его исполнение или нет, должно быть в настройках подзадачи устойчивости.
этап 2: Сборка глобальной матрицы
этап 3: Возможна перенумерация узлов.
этап 4: Для подзадачи устойчивости решение представляет собой решение задачи на собственные числа. Реализован один решатель «итерации подпространства», который является итерационным, причем на каждой итерации решается обычная система линейных алгебраических уравнений. Собственные числа – коэффициент пропорциональности между критическими силами и приложенными. Собственные векторы – формы потери устойчивости.
этап 5: Этот этап на данный момент не существует, но может быть добавлен для вычисления критических сил.
Кроме того, в дальнейшем предполагается реализовать подзадачу собственных колебаний. В данном случае решение представляет собой решение задачи на собственные числа. Собственными числами являются собственные частоты, а собственными векторами – формы колебаний.
6. Характеристики материалов
Хранение характеристик материалов организовано следующим образом.
Во время выполнения программы в основной памяти имеются таблицы характеристик материалов, которые автоматически загружаются из постоянно хранимого файла в начале работы программы. Для каждого типа материала в общем наборе данных существует отдельная таблица, содержащая набор значений физико-механических параметров данного материала в некотором температурном интервале. Температура содержится в одной из строк этой таблицы; остальные строки содержат физико-механические постоянные. Таким образом, каждый столбец таблицы содержит значения физико-механических констант материала при заданной фиксированной температуре. Значения констант при промежуточных величинах температуры, не содержащихся в таблице, определяются интерполяцией по табличным данным.
Эти таблицы можно корректировать средствами программы: добавлять в них новые столбцы (значения констант при другой температуре), удалять столбцы, добавлять строки со значениями не заданных ранее констант, исправлять табличные значения. Кроме того, можно добавлять в набор данных таблицы с характеристиками новых материалов, удалять ненужные таблицы, переименовывать их. Все изменения, сделанные на экране, можно либо принять (тогда информация с экрана переносится в основную память) или отменить. После того, как изменения приняты, копия набора данных в основной памяти перестает соответствовать дисковому оригиналу, и, чтобы при следующем сеансе работать с измененной копией, ее следует сохранить – записать в файл на диске. Таких копий можно хранить на диске сколько угодно, но расчет производится только с одной из них – той, которая загружена в основную память. Пользователь может по желанию загрузить любой из ранее сохраненных файлов.
Данные на диске хранятся в виде текстового файла. Для идентификации файла и проверки правильности его формирования первая и последняя строки файла содержат одинаковую информацию:
NPA_NT_TXTIFMT2000 n MATERIAL_CONSTANTS_TABLE
где числовая константа n равна числу таблиц данных в этом файле.
Между этими строками располагаются ровно n таблиц данных. Каждая таблица начинается строкой заголовка:
MATERIAL название материала TABSIZE t TEMPER_NUMBER m
Здесь числовые константы t и m задают размеры таблицы: t – число заданных параметров материала (включая температуру), m – число отсчетов по оси температур. Далее располагается легенда – обозначения заданных параметров (из фиксированного набора строковых констант, заданных в заголовочном файле MatData.h в виде массива строк MatDataCaps):
const AnsiString MatDataCaps[MATCONST] = {" ", "T", "E1", "E2", "G12", "G13", "G23", "Nu1", "Al1", "Al2", "Al12", "Al13", "Al23", "Si1", "Si2", "Ta12", "Ta13", "Ta23"};
Приведенный здесь набор не является окончательно исчерпывающим и может пополняться по мере разработки программы.
Например, если для некоторого материала необходимо задать только два параметра – E1 и E2 при произвольном числе значений температуры, то константа TABSIZE в заголовке таблицы должна быть равна 3 (два параметра и температура), а легенда должна содержать три обозначения:
T E1 E2
Далее располагаются сами данные, причем в каждой строке содержатся числовые величины параметров в том порядке, который определен легендой. Формат данных соответствует обычным соглашениям о записи числовых констант в большинстве языков программирования. Допускается запись как с фиксированной, так и с плавающей точкой. Число строк числовых данных должно быть равно значению параметра TEMPER_NUMBER в заголовке таблицы. Для приведенного выше примера легенды числовые данные могут выглядеть так:
0 2.0E2 2.0E2
50 1.2E2 1.2E2
Первый столбец здесь задает температуру (0 и 50 градусов), второй и третий – параметры Е1 и Е2 (оба равны 200 при нулевой температуре и 120 при 50 градусах).
После числовых данных может находиться строка, определяющая хэндлер записи, который используется в качестве уникального ключа поиска (наряду с названием материала). Эта строка начинается ключевым словом HANDLE, после которого указывается целая положительная константа – хэндлер.
Дополнительную информацию о структуре файла материалов можно найти в разделе “Структура данных”.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.