ПОИСК Статьи Чертежи Таблицы Пакет программ для решения задач строительной механики из "Расчет машиностроительных конструкций на прочность и жесткость " Сформулированные с общих позиций методы решений задач строительной механики позволяют ставить вопрос о разработке соответствующего пакета прикладных программ. Пакет разрабатывается так, чтобы предоставить инженеру возможность не только решить задачу (получить перемещения и усилия в стержнях), но и выбрать оптимальный метод решения, что особенно важно для нелинейных и оптимизационных задач. Программное обеспечение пакета включает модули двух типов. [c.45] Такая организация пакета позволяет оптимально его спроектировать и реализовать. Основное внимание уделено разработке первой базовой части программного обеспечения. Пакет составлен на языке PL/1 в системе ДОС/ЕС. Так как матрицы [А], [5] и другие имеют очень много нулей (являются разреженными), то важным является вопрос об их хранении. Если их хранить в виде массивов, то существенно снизятся количественные возможности и возрастет время счета. Поэтому в пакете матрицы хранятся как разреженные, но при этом не удается воспользоваться стандартными программами, реализующими операции над матрицами, В пакете имеется набор операций над разреженными матрицами. Для решения системы алгебраических уравнений принят итерационный метод, который удобен при решении с матрицей разреженной структуры. В матрицах, используемых для решения задач строительной механики, число ненулевых элементов невелико, nosTOMy удобно хранить в памяти только ненулевые элементы вместе с необходимой информацией об их расположении, т. е. [c.45] Вся информация о матрице хранится в пяти одномерных массивах Ш, MS, MV, АТ, MN. Массив IM служит для организации хранения нескольких разреженных матриц. Индекс массива IM (номер элемента массива) соответствует номеру матрицы. Элементами этого массива являются указатели (индексы массива MS) на расположение информации о данной матрице в массиве MS. В массиве MS на каждую матрицу отводится число элементов, равное числу столбцов, если матрица хранится по столбцам (или числу строк, если хранение — по строкам). Элементами этого массива являются указатели на номер записи, в которой хранится информация о первом ненулевом элементе данного столбца (строки). Запись представляет собой три элемента из массивов MV, АТ, MN с одинаковым индексом К — номером записи MV (К), АТ (К), MN (К). Для элемента матрицы a j запись имеет вид (С, йц, а), где i — номер строки а — номер записи следующего ненулевого элемента данного столбца (если а = О, то элемент является последним для данного столбца). [c.46] Число записей для одного столбца равно числу ненулевых элементов этого столбца. Если столбец нулевой, то значения элемента в массиве MS, соответствующего этому столбцу, принимаются равными минус единице. В MS информации о матрицах разделяются нулевым элементом. [c.46] Рассмотренный способ хранения записей называют связным списком. При этом свободные записи также организуются в список, что позволяет использовать освобождающуюся в процессе счета память [14]. Вначале массивы IM, MS, MV, AT обнулены. Все записи свободны и организованы в список посредством задания MN (i) = t + 1, где i пробегает все элементы MN. Указатель первой свободной записи LW вначале равен единице. Для организации работы со списком используются два счетчика счетчик ИМ указывает на количество матриц в списке, а счетчик IMS — количество заполненных элементов массива MS. [c.46] Для реализации методов строительной механики, учитывая специфический способ хранения матриц, необходимо реализовать следующие процедуры ввод матрицы в список удаление матрицы из списка транспонирование матрицы умножение двух матриц решение системы линейных алгебраических уравнений с разреженной матрицей. [c.47] В список матрица вводится по столбцам. Ввод одного столбца реализуется программой VS, обращение — ALL VS (А, N), где А — одномерный массив, в котором записан столбец вводимой матрицы N — число элементов в столбце. [c.47] Иногда возникает потребность удалить ту или иную матрицу из списка. Удалить матрицу из списка — это значит присоединить записи, отведенные под матрицу, к свободным удалить индексы столбцов из массива MS, индексы столбцов матриц, расположенных в списке ниже удаленной, передвинуть вверх скорректировать указатели в массиве IM изменить значение счетчика ИМ. Эту операцию осуществляет процедура SM, обращение — ALL SM (IN, J), где IN — индекс (номер) удаляемой матрицы J — число столбцов -f- 1. [c.47] Транспонирование матрицы, расположенной в списке, реализуется с помощью процедуры TRM. В списке сохраняются обе матрицы [А] и [А ] , обращение к процедуре — ALL TRM (IN, М), где IN — индекс транспонируемой матрицы М — число строк IT — индекс транспонированной матрицы (внешняя переменная). [c.48] Вернуться к основной статье