6CAD-CAE-22 Хранение матриц (1014141), страница 9
Текст из файла (страница 9)
Рассмотрим пример.
Расчетная схема МСЭ содержит множество конечных элементов, моделирующих отдельные части конструкции, которые соединены между собой в некотором числе узловых точек. В каждом узле может сходиться несколько конечных элементов различных типов, обладающих или не обладающих жесткостью в направлении различных осей общей системы координат. При формировании систем уравнений равновесия для каждого узла, из которых, в конечном счете, получается общая разрешающая система уравнений, важно знать, какие именно степени свободы присутствуют в узле и каким строкам и столбцам матриц жесткости элементов, сходящихся в данном узле, эти степени свободы соответствуют. Для того, чтобы задать эту информацию, вводится в рассмотрение булева матрица Т число строк которой равно числу узлов конструкции, а число столбцов - числу обобщенных координат. Эта матрица называется матрицей типов узлов.
В том случае, когда расчетная схема предусматривает наличие в i -ом узле неизвестной, соответствующей j-ой обобщенной координате, элемент tij =1, в противном случае tij =0. Узловые неизвестные вводятся в описание типа узла из моделей конечных элементов, сходящихся в узле, их число по мере присоединения новых элементов может только расти. В качестве примера
рассмотрим элементарную конструкцию, состоящую из двух прямоугольных пластин, работающих каждая в своей плоскости и двух жестко скрепленных стержней 1-3 и 2-5, работающих на растяжение-сжатие и изгиб в вертикальной плоскости. Узел 3 жестко заделан.
При заданной нумерации узлов и обобщенных координат матрица типов узлов будет иметь вид:
Из рассмотрения, например, пятой строки матрицы Т следует, что в пятом узле конструкции присутствуют линейные перемещения в направлении осей x, y, z и угловое перемещение вокруг оси , соответствующее углу .
Запись булевых матриц в ЗУ ЭВМ может выполняться с использованием процедуры приведения массива к линейной последовательности элементов, которая применялась для записи вещественных матриц. Как правило, алгоритмические языки высокого уровня включают в себя такие процедуры для многомерных булевых матриц и позволяют непосредственно обращаться к их элементам по индексам. Следует отметить, что эти универсальные процедуры часто бывают неэффективными. Для записи элемента булевой матрицы достаточно одного бита памяти, в то же время для этой цели выделяется иногда целое машинное слово. Так, транслятор с языка FORTRAN для некоторых ЭВМ предусматривает хранение логической переменной или элемента массива логического типа в нулевом разряде 37 разрядного машинного слова, остальные разряды не затрагиваются. Таким образом, в данном случае полезно используется менее 3% объема памяти. При относительно малом удельном весе данных логического типа в общем объеме данных задачи примитивность такой организации может быть оправдана упрощением рабочей программы и увеличением скорости ее действия. При расчетах по МСЭ в рассмотрение вводятся булевы матрицы, содержащие тысячи и десятки тысяч элементов, поэтому следует очень внимательно относиться к выбору способа их хранения. Представляется целесообразной запись булевой матрицы в виде сплошной строки битов. При этом нужно помнить, что в большинстве серийных ЭВМ отсутствует аппаратура для извлечения отдельных битов информации, поэтому необходимо создание соответствующих программных средств. В некоторых алгоритмических языках, таких как PL/1, эти средства имеются. Они предусматривают:
а) настройку процедуры по размерности конкретной матрицы;
б) расчет по значениям индексов элемента матрицы адреса машинного слова, содержащего элемент, и номера бита в слове;
в) обращение (запись, чтение, выполнение логической операции) к элементу.