Руководство пользователя системы sigma «Исследование напряженно-деформированного состояния плоского объекта» - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
Похожие работы
Название работы Кол-во страниц Размер
Исследование напряжённо-деформированного состояния. Предположим,... 1 8.88kb.
Прикладная механика 1 25.47kb.
Литература ко второй части 1 252.26kb.
Цветной картплоттер с датчиками Руководство пользователя -i 9 1104.01kb.
Реологические свойства грунтов и их учет 6 398.55kb.
Руководство пользователя Содержание Общие положения 1 Требования... 1 75.69kb.
Руководство пользователя Май 1994 Версия 50 beta 1 294.21kb.
Руководство пользователя электронного сервиса смэв 6 715.45kb.
Руководство пользователя электронного сервиса смэв 5 546.45kb.
Теория пластичности 1 27.51kb.
Руководство пользователя Стандартные функции системы 4 518.98kb.
Проведение научно-исследовательских и опытно-конструкторских работ... 3 642.96kb.
Направления изучения представлений о справедливости 1 202.17kb.

Руководство пользователя системы sigma «Исследование напряженно-деформированного - страница №2/5

Структура программного комплекса Sigma



Структура главного модуля.


Программный комплекс содержит набор взаимосвязанных модулей, в последующем называемых плагинами(plug-in)plugin-ами. Комплекс состоит из двух основных частей, это «Расчетный блок» и «Основной модуль комплекса».

Расчетный блок это программа, написанная на языке программирования Фортран. Этот блок состоит из нескольких частей, каждая из которых четко отвечает за какую то часть расчета. Комплекс этих программ занимается непосредственно расчетом напряжением в пластине, определяют перемещения узлов под действием нагрузок, разбивкой пластины на конечные элементы. По окончанию своей работы расчетный блок формирует файл с отчетом о результатах расчета.

Основной модуль комплекса это некоторый промежуточный этап между плагинами и расчетным блоком. Дело в том, что его основная функция это организовать интерфейс взаимодействия расчетного блока с плагинами, которые в свою очередь отвечаютотвечающими за задание данных и отображение расчетов. Вторая цель это организовать работу с проектом и его составными частями. Например, при возникновении ошибок компиляции, вызывается функция «модуля изменения файлов расчетного бока» для отображения ошибок возникших при компиляции проекта.

Структура проекта.


Главный модуль работает с проектом. Проект состоит из списка файлов включенных в него. В главном модуле существует класс, определяющий работу над этим списком. В этом предусмотрен набор функций по получению и модификации этого списка и так как эти функции сделаны внешними, то любой плагин может влиять на список этих файлов самостоятельно. Проект сделан в виде класса, так как он объединяет в себе целую единую сущность и так как это класс, то ему самому легче отслеживать были ли произведены в нем какие-либо изменения.


Функции проекта


Внешние функции по работе с проектом функции:

  • Project_New. Создание нового проекта со стандартным набором файлов.

  • Project_Open. Загружает проект из указанного файла. При возникновении ошибки будет сформирован соответствующий код.

  • Project_Save. Сохраняет текущий проект в указанный файл. При возникновении ошибки будет сформирован соответствующий код.

  • Project_PackFileName. Если этой функции передать полный путь к файлу, то она вернет его в упакованном виде, так как он хранится в проекте. Сохраняется только относительный путь, относительно места расположения проекта. Если файл входит в стандартный комплект, то напротив его имени ставится знак «*»

  • Project_UnPackFileName. Производит обратное функции Project_PackFileName.

  • Project_IsModified. Эта функция возвращает статус проекта, т.е. были ли внесены какие-нибудь изменения в него.

  • Project_Error Возвращает код ошибки, последней операции.

  • Project_SetSource. Задает директорию, в которой расположены стандартные файлы проектов.

  • Project_GetSource. Выдает директорию, в которой расположены стандартные файлы проектов.

  • Project_SetFormFile. Задает имя файла, в котором будет храниться форма пластины и ее параметры.

  • Project_GetFormFile. Выдает имя файла, в котором будет храниться форма пластины и ее параметры.

  • Project_Fortran_Add. Добавляет в список файлов расчетного блока еще один.

  • Project_Fortran_Del. Удаляет файл из списка файлов расчетного блока.

  • Project_Fortran_Count. Выдает количество файлов списка расчетного блока.

  • Project_Fortran_Set. Задать путь до указанного файла расчетного блока.

  • Project_Fortran_Get. Выдать путь к указанному файлу расчетного блока.

  • Project_Fortran_Clear. Очистить список файлов расчетного блока.

  • Project_NotModified. Снимает отметку в проекте о том что он был изменен.

Структура файла проекта.


  • Префикс, показываю показывает то, что это файл проекта. Введен, для того чтобы можно было отличить случайно открытые файлы.

  • Список файлов составляющих проект. Каждый следующий файл идет на новой строке. Файлы указываются относительным путем, относительно файла проекта или полный путь. Если перед именем файла стоит «*», то это файл стандартного набора, и он находится в специальной директории.

  • Если в строке стоит первым символом, символ «#», то эта строка считается комментарием и игнорируется.

Структура расчетного блока программного комплекса


Расчетный блок программного комплекса выполнен на языке Microsoft Fortran Powerstation v.4.



Принципиальная схема расчетного блока

Рассмотрим подробнее подпрограммы расчетного блока.



  • Программа MAIN. Управляющая программа расчетного блока, последовательно вызывающая подпрограммы DATA, DGRIDD, GRIDDM, RENMDD, BOUND, FORCE, FNENDD, FORMDD, RCMSLV, STRSDD. Исходный текст описан в модуле A_main__MAIN.forMain.for.

  • Подпрограмма DATA. С помощью данной подпрограммы производится формирование исходных данных для последующих процедур. Исходный текст подпрограммы описан в модуле B_data__MAIN~DATA.forData.for.

  • Подпрограмма DGRIDD. Чтение файла с координатами узлов пластины. Исходный текст подпрограммы хранится во временном файле C_dgridd__MAIN~DGRIDD.forDgridd.for.

  • Подпрограмма GRIDDM. Производит автоматическую выработку исходных данных для метода конечных элементов. Исходный текст подпрограммы хранится в модуле D_griddm__MAIN~GRIDDM.forGriddm.for.

  • Подпрограмма RENMDD. Подпрограмма реализации алгоритма упорядочения с целью уменьшения профиля матрицы. Последовательно вызывает STSM и GENRCM. Исходный текст подпрограммы храниться в модуле G_genmdd__MAIN~RENMDD.forR.f.

  • Подпрограмма STSM. Подпрограмма формирования структуры смежности заданного графа. Исходный текст подпрограммы хранится в модуле H_genrcm__MAIN~RENMDD~STSM.forStsm.for.

  • Подпрограмма GENRCM.

  • Подпрограмма, реализующая обратное упорядочение Катхилла-Макки произвольного графа. Вызывает подпрограммы FNROOT и RCM. Исходный текст подпрограммы GENRCM хранится в модуле H_genrcm__MAIN~RENMDD~GENRCM.forGenrcm.for.

  • Подпрограмма FNROOT.

  • Подпрограмма поиска псевдо переферийногопериферийного узла. Реализует модифицированный вариант схемы Гиббса, Пулла и Стокмейера. Исходный текст подпрограммы хранится в модуле I_degree__MAIN~RENMDD~GENRCM~FNROOT.forFnroot.for. Вызывает подпрограмму ROOTLS.

  • Подпрограмма ROOTLS.

  • Подпрограмма генерации структуры уровней с корнем в узле, задаваемым входным параметром ROOT. Учитываются только узлы, которым соответствуют ненулевые значения MASK. Исходный текст подпрограммы хранится в модуле I_degree__MAIN~RENMDD~GENRCM~FNROOT~ROOTLS.forR.f.

  • Подпрограмма RCM.

  • Подпрограмма обратного упорядочения Катхилла-Макки. Нумерует связанную компоненту, заданную MASK и ROOT. Исходный текст подпрограммы хранится в модуле I_degree__MAIN~RENMDD~GENRCM~RCM.forR.f. Вызывает подпрограмму DEGREE.

  • Подпрограмма DEGREE.

  • Подпрограмма вычисляет степени узлов в связанной компоненте, задаваемой MASK и ROOT. Узлы, для которых MASK(I)=0, игнорируются. Исходный текст подпрограммы хранится в модуле I_degree__MAIN~RENMDD~GENRCM~RCM~DEGREE.forDegree.for.

  • Подпрограмма BOUND.

  • Подпрограмма наложения граничных условий на конструкцию. Модифицируется пользователем в зависимости от варианта задания. Исходный текст подпрограммы хранится в модуле J_bound__MAIN~BOUND.for.Bound.for.

    Назначение BOUND - формирование следующих массивов и переменных:

    NBC - массив номеров узлов, имеющих закрепление по оси X или Y.

    NFIX - массив признаков закрепления по оси X или Y. Если узел с номером К закреплен по оси Х, то NFIX(K)=10, если по оси Y, то NFIX(K)=1, если и по X и по Y, то NFIX(K)=11.

    NB - количество узлов имеющих закрепление по оси Х или Y.

    Наложение граничных условий выгоднее производить путем анализа координат узлов, нежели путем анализа номеров узлов.



  • Подпрограмма FORCE.

  • Подпрограмма разнесения нагрузок. Модифицируется пользователем в зависимости от варианта задания. Исходный текст подпрограммы хранится в модуле K_force__MAIN~FORCE.forForce.for.

    Назначение FORCE - формирование следующих массивов и переменных:

    R - массив значений усилий в узлах (аналогичен по структуре массиву CORD, только вместо координат в нем указываются значения нагрузок по оси Х и Y в узлах);

    NR - количество нагруженных узлов.



    В данной подпрограмме также выгоднее проводить анализ координат узлов, нежели анализ номеров узлов.

  • Подпрограмма FNENDD.

  • Данная подпрограмма находит структуру оболочки переупорядоченной матрицы, т.е. реализует профильную схему хранения. Исходный текст подпрограммы хранится в модуле L_fnendd__MAIN~FNENDD.forFnendd.for.

  • Подпрограмма FORMDD.

  • Подпрограмма формирования матрицы жесткости для профильного метода решения. Исходный текст подпрограммы хранится в модуле N_formdd__MAIN~FORMDD.forFormdd.for. Вызываемая подпрограмма MGSDTR.

  • Подпрограмма MGSDTR.

  • Подпрограмма формирования матрицы жесткости конечного элемента. Исходный текст подпрограммы хранится в модуле O_mgsdtr__MAIN~FORMDD~MGSDTR.forMgsdtr.for.

  • Подпрограмма RCMSLV.

  • Подпрограмма решения системы уравнений профильным методом. Исходный текст подпрограммы хранится в модуле P_solve__MAIN~RCMSLV.forR.f. Вызываемые подпрограммы ESFCT, ELSLV, EUSLV.

  • Подпрограмма ESFCT.

  • Подпрограмма вычисляет разложение L*L (транспонированная) для положительно определенной матрицы А, хранящейся в профильном формате. Используется стандартный метод окаймления. Исходный текст подпрограммы хранится в модуле Q_esfct__MAIN~RCMSLV~ESFCT.forЕ.f.

  • Подпрограмма ELSLV.

  • Подпрограмма решения нижней треугольной системы профильным методом. Решается нижняя треугольная система LX=RHS. Множитель L хранится в профильном формате. Исходный текст подпрограммы хранится в модуле Q_esfct__MAIN~RCMSLV~ESFCT~ELSLV.forЕ.f.

  • Подпрограмма EUSLV.

  • Подпрограмма решения верхней треугольной системы профильным методом. Решается верхняя треугольная система UX=RHS. Множитель U хранится в профильном формате. Исходный текст подпрограммы хранится в модуле Q_esfct__MAIN~RCMSLV~EUSLV.forЕ.f.

  • Подпрограмма STRSDD.

  • Подпрограмма предназначена для подсчета значений напряжений в узлах. Исходный текст подпрограммы хранится в модуле R_strsdd__MAIN~STRDD.forStrsdd.for.

  • Подпрограмма PRNTDD.

  • Подпрограмма предназначена для вывода образа матрицы жесткости в удобной для анализа форме: выводится только нижняя треугольная матрица, причем символ ‘*’ означает наличие ненулевого элемента матрицы.

Структура модуля редактирования форм.


Вся форма представлена в виде 3 классов отвечающих каждый, за какую то часть формы.

  • Класс основных параметров. Этот класс отвечает за хранение и изменение всех основных параметров формы таких как

  • Класс множество множества зон и узлов. Этот класс отвечает за правильное хранение и изменение множества зон и узлов составляющих эти зоны.

  • Класс пластины. В этом классе объединены первые два, позволяя им взаимодействовать друг с другом, а так же влиять на общее состояние пластины.

Класс основных параметров


Класс содержит свойство MainParams представленное в виде списка основных параметров. Это сделано, для того чтобы легче было работать с этими параметрами, так как не надо обращаться по индексам к ним, а можно обращаться по именам значительно уменьшает вероятность совершения ошибки. Также хранение параметров в списке, а не в массиве позволяет уменьшить объем памяти требуемый для его хранения, так как разные параметры имеют разные типы и, следовательно, требуют разные объемы памяти. Если же использовать массив, то все элементы будут одинакового объемы и равного максимального объему элемента. Так как это является свойством класса, а не его полем, то мы можем перехватить процесс записи данных в это свойство. Эта возможность была использована для отслеживания изменений в параметрах, и при внесении изменений сразу помечалось, что были внесены изменения.

В этом классе есть метод New, который обнуляет значения параметров, и занесения туда значений по умолчанию, после чего считается, что форма была только что создана, по крайней мере, в отношении основных параметров.

Так же в классе есть методы записи и чтения значений параметров из файла. Так как основные параметры являются частью всей формы, то эти функции выполняют работу только над своим куском и поэтому им передается указатель на файл.

Класс множество зон и узлов


Класс содержит свойство Nodes, представляющее из себясобой массив, каждым элементом, которого является узел, состоящий из координаты узла и его номера. Так как это является свойством класса, а не его полем, то мы можем перехватить процесс записи данных в это свойство. Эта возможность была использована для отслеживания изменений узлов, и при внесении изменений сразу помечалось, что были внесены изменения. А также в результате изменения координат узлов пересчитывается диапазон координат узлов, т.е. максимальные и минимальные координаты.

Кроме того, предусмотрен набор функций по добавлению и изменению размерности массива такие как:



  • Добавление узла. Добавление нового элемента массива в конец.

  • Удаление узла. Удаление одного элемента массива.

  • Очистка массива.

  • Получение числа элементов в массиве

  • Поиск элемента массива с координатами узла наиболее близкими к заданным.

  • Поиск элемента массива с номером узла соответствующий заданному.

Так же в классе есть методы записи и чтения значений элементов из файла. Так как узлы являются частью всей формы, то эти функции выполняют работу только над своим куском и поэтому им передается указатель на файл.

Класс пластины


У этого класса кроме содержания списка зон и его правильного хранения, есть еще одна функция это совмещать вместе два предыдущих класса и обеспечивать их сосуществование вместе, так что бы они «знали своего хозяина», и могли с ним взаимодействовать.

При создании класса он сразу же сам создает два своих потомка: класс узлов и класс основных параметров. А также передает им свой адрес в виде родителя для того, что бы они знали и могли взаимодействовать с ним.

Класс содержит свойство Zones, представляющее из себясобой двухмерный массив. Одно измерение, из которого это количество зон в пластине, а второе это соответствует количеству элементов в зоне, на пересечении этих индексов расположен номер узла.

Кроме того, предусмотрен набор функций по добавлению и изменению размерности массива такие как:



  • Добавление зоны. Добавление нового элемента массива в конец.

  • Удаление зоны. Удаление последнего элемента массива, а также удаление всех узлов, которые составляли эту зону, кроме узловузлов, встречающихся в других зонах, смежных.

  • Удаление всех зон. Удаление всех элементов массива и последующее удаление всех узлов.

Так же в классе есть методы записи и чтения значений зон из файла. Так как этот класс отвечает за всю форму целиком, то он и выполняет открытие необходимого файла. При открытии первым делом обрабатывается информация о корректности этого файла и принадлежности его содержимого к форме. А потом выполняется по порядку вызов методов чтения, каждая из которых отвечает за свою часть файла. Сначала вызывается метод чтения главных параметров. После того как указатель в файле сместился на следующую позицию, выполняется чтение узлов пластины, их количество определяется из основных параметров. После того как указатель в файле сместился на следующую позицию, выполняется чтение зон пластины, их количество определяется из основных параметров. Сохранение, как и следует ожидать, выполняется в том же порядке что и чтения дабы формат файла соответствовал.

Структура файла формы


Форма сохраняется в файле с соответствующемсоответствующим форме расширением *.sfm. Информация в файле представлена в бинарном виде. Файл содержит основные части:

  • Служебная информация

  • Основные параметры пластины

  • Координаты узлов пластины

Название

Количество байт

Примечание

Служебная информация

Префикс

10

Предназначен для идентификации этого файла как файла содержащего форму пластина. При открытии какого-нибудь файла с таким же расширением, но другого приложение программа сможет идентифицировать как файл не являющийся файлом формы.

Версия

4

Предназначена для определения к какой версии модуля редактирования принадлежит файл. И сможет ли модуль справиться с открытием файла. Каждый из этих 4 байт является числом версии. Первые две важные и изменение их приводит к не читаемости файла, т.е. изменение его формата. Последние две цифры показывают изменение реализации модуля, но не формата файла.

Размер числа

1

Хранит количество байт отведенных под хранение числа с плавающей точкой.

Основные параметры пластины

Тип задачи

1




Вариант

1




Параметр разбиения

2




Ширина.

8




Высота.

8




Радиус отверстия

8




Толщина пластины

8




Суммарная нагрузка по X

8




Суммарная нагрузка по Y

8




Число случаев нагружения

4




Число степеней свободы

4




Число узлов в элементе

4




Число материалов

4




Модуль E

8




Модуль 

8




L

8




SB

8




Количество зон

4




Общее число узлов

4




Координаты узлов пластины

Координаты узлов

N*18

N – количество узлов

  • Номер узла (2 байта)

  • X координата (8 байт)

  • Y координата (8 байт)

Номера узлов зоны

N*2

N – количество зон умноженное на количество узлов в зоне

Структура модуля графическое отображение результатов расчета.


После расчета напряжений появляется файл отчет о расчете, где хранится вся информация о процессе расчет, а также результат. Модуль «графического отображения результатов расчета» читает это файл по строго описанному формату. Если пользователи системы изменили формат вывода данных в расчетном блоке, то есть большая вероятность того, что этот модуль не сможет распознать результат расчета. При поиске необходимой информации в файле отчета модуль использует опорные строки. Эти строки можно менять в расчетном блоке, но при этом надо и в настройках комплекса их поменять.

При чтении файла отчета модуль «графического отображения результатов расчета» создает два взаимосвязанных массива: массив узлов и массив конечных элементов.

Каждый элемент массива узлов содержит:


  • Номер узла

  • Координаты

  • Вектор приложенного усилия

  • Тип закрепления

  • 0-не закреплен

  • 10- закреплен по оси X

  • 1- закреплен по оси Y

  • 11 – закреплен по всем осям

  • Вектор направления перемещения.

Каждый элемент массива конечных элементов содержит:

  • Номер элемента

  • Составляющие его узлы

  • Напряжения в этом конечном элементе

За эти массивы отвечают 2 класса (узлов и конечных элементов), они же и занимаются чтение файла отчета.

Класс узлов


Этот класс читает файл с отчетом о расчете и наполняет массив узлов всей связанной с ними информацией. После прочтения файла можно работать с этим классом и получать интересующие вас узлы и перебирать их.

Набор функций по работе с массивом.



  • Чтение файла

  • Добавление узла. Внутренняя функция, с ее помощью наполняется массив при чтении файла, но также и сам модуль при желании может добавлять узлы.

  • Изменение узла. Внутренняя функция, с ее помощью изменяется массив.

  • Поиск узла с интересующими координатами.

  • Получение всей информации об узле по его номеру.

  • Получение всей информации об узле по его номеру, при условии его смещении в направлении вектора смещения на указанный коэффициент.

  • Установка указателя текущего элемента на первый

  • Установка указателя текущего элемента на следующий.

  • Получение всей информации о текущем узле.

Класс конечных элементов


Этот класс читает файл с отчетом о расчете и наполняет массив конечных элементов всей связанной с ними информацией. После прочтения файла можно работать с этим классом и получать интересующие вас конечных элементов и перебирать их.

Набор функций по работе с массивом.



  • Чтение файла

  • Добавление конечного элемента. Внутренняя функция, с ее помощью наполняется массив при чтении файла, но также и сам модуль при желании может добавлять конечного элемента.

  • Изменение конечного элемента. Внутренняя функция, с ее помощью изменяется массив.

  • Получение всей информации о конечного элемента по его номеру.

  • Установка указателя текущего элемента на первый

  • Установка указателя текущего элемента на следующий.

  • Получение всей информации о текущем узле.

  • Поиск номера конечного элемента по координатам точки находящейся внутри него, при условии смещении его узлов направлении вектора смещения на указанный коэффициент.

<< предыдущая страница   следующая страница >>



Человек на досуге думает себе о том и о сем, но все-таки чаще о том. Славомир Мрожек
ещё >>