Использование сетки конечных элементов, построенной программой GMesh, для вычислений в программе Mathcad

Составление алгоритмов пользовательских функций для импортирования сеток элементов в программную среду Mathcad для их анализа численными методами. Приведение решения по экспорту полученных результатов в программу GMesh для последующей визуализации.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 29.07.2017
Размер файла 427,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Использование сетки конечных элементов, построенной программой GMesh, для вычислений в программе Mathcad

А.М. Филипов1, М.В. Хоменко2

1ВолгГАСУ, Волгоград

2 Государственный университет по землеустройству, Москва

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

Ключевые слова: визуализация результатов расчета, импорт сеток элементов со сложной топологией, экспорт сеток элементов с произвольной топологией, GMesh, Mathcad.

При разработке численных алгоритмов [1-3], связанных с обработкой сложных двух- и трехмерных сеток и работ по их оптимизации существует необходимость в использовании относительно большеразмерных моделях со сложной топологией, а так же в предоставлении результатов в удобочитаемом виде - графиках, изополях, изоповерхностях [4,5]. Одной из достаточно простых и универсальных программ математического моделирования является Mathcad и его аналоги. Однако в их возможности обычно не входят средства построения 4-х мерных графиков и окраска поверхности и (или) отрезков в соответствии с заданными пользователем значениями. пользовательский mathcad численный визуализация

Для достижения этих целей можно:

применить сторонние готовые программные решения типа GMesh [6] и аналогичные (например, Array Visualizer позволяет отобразить узловые значения для 3-х мерной пространственной сетки без отображения самой сетки);

самостоятельно разработать такое решение, используя специализированные библиотеки, как например MatFOR (разработка AnCAD), или общие, такие как OpenGL [7,8], GTK, QT, и др.

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

В данной статье предлагается описание функций Mathcad'a (MathSoft, Inc.) для импортирования исходной сетки узлов и элементов и экспорта результата в программу GMesh. При этом поставленная задача может быть решена разными способами, перечислим их в порядке сложности:

ручное преобразование исходных файлов;

использование программ преобразования файлов;

получение необходимых данных, а так же формирование данных для отображения стандартными функциями Mathcad'a [9];

использование средств разработки userefi [9,10].

Из предложенных способов первые два не обеспечивают автоматизации, последний требует хороших знаний в области программирования на языке C++ и написания динамически подгружаемых библиотек. Соответственно, наиболее оптимальным решением будет использование стандартных средств системы Mathcad, о чем и пойдет речь далее в данной статье.

Для импортирования данных используется алгоритм, основаный на особенностях используемой среды:

автоматическое размещение массивов;

массивы могут содержать одновременно как строковые, так и численные данные;

ограниченный набор функций работы с символьными строками.

Чтение данных выполняется функцией READFILE [9,10] с параметрами “fixed” и числом предполагаемых символов в строке (оно же число столбцов) равным 256 - это значение достаточно для считывания всех атрибутов элемента, имеющего до 30 узлов. Т.е. команда чтения будет иметь вид: Atmp = READFILE(file_name,fixed,256). При этом функция передает вектор строк (см. рис. 1).

Рис. 1 - фрагмент полученных из файла с сеткой элементов данных

Структура данных [6]:

1. Описание формата файла.

2. Описание атрибутов узлов сетки.

3. Описание атрибутов элементов.

4. Описание параметров результатов и данные результатов.

П.п. 4 является необязательным и может повторяться внутри одного файла.

В нашем случае интерес при импортировании представляют блоки 2 и 3 (при получении массива атрибутов элементов сетки) и, соответственно, блоки 2-4 при экспортировании сетки элементов.

Все блоки имеют начальную строку с заголовком блока, размер блока и конечную строку соответственно: $<Имя блока>, <размер блока> и $End<Имя блока>, (см. рис.1 строки 1, 3 и 4, 5). Это упрощает извлечение интересующих данных.

Рассмотрим подробнее функцию преобразования исходных данных в массив координат узлов и аналогичную, преобразующую исходные данные в массив атрибутов элементов (см. рис.2а). Т.к. функции аналогичные и отличаются только параметрами поиска интересующих блоков (выполняется поиск слов «Nodes» и «Elements» соответственно), то ниже рассматривается первая из них.

Первоначально в цикле WHILE [9,10] выполняется поиск номера исходного массива, содержащего строку символов с интересующим заголовком блока, и вычисляются номера первого и последнего элемента, содержащего данные. Далее выбранный диапазон элементов исходного массива поэлементно передается пользовательской функции Str2NumVect(), выполняющей преобразование строки символов в числовой вектор. Листинг функции Str2NumVect() приведен на рис. 2б

Примечание: в приведенном листинге исходные данные содержит массив Atmp.

Рис.2 - Листинг функции преобразования исходных данных в массив координат узлов (а) и входящая в ее состав функция преобразования строки символов в числовой вектор (б)

Входящие в состав Str2NumVect() пользовательские функции adjustl(), LCompact() и lshift() выполняют выравнивание строки по левому краю, удаление повторяющихся пробелов и сдвиг элементов строки на указанное число позиций влево соответственно. Ввиду отсутствия в Mathcad'е возможности обратится к элементу строки без применения функции substr(), обработка строк пользовательскими функциями осуществляется после их преобразования в последовательность ANSI-кодов и обратным преобразованием после (функции str2vec() и vec2str() [9,10] соответственно). Листинги приведены на рис.3а-в соответственно.

Рис.3 - листинги функций adjustl (а), LCompact(б), lshift(в)

Наличие функций adjustl() и LCompact() необязательно, если осуществляется обмен данными только между Mathcad'ом и GMesh'ем, в остальных случаях - желательно.

Формирование файла с результатами для отображения в GMesh осуществляется путем формирования массива символьных строк и его последующей записи в файл, аналогично приведенным в статье [11].

В состав пользовательской функции, формирующей массив содержащий образ записываемого файла, res() входят следующие элементы:

res_header - формирование блока описания формата файла;

res_node() - формирование блока описания узлов;

res_elem() - формирование блока описания атрибутов элементов;

res_result() - формирование блока описания узловых значений.

Формирование блоков данных производится в соответствии с требованиями [6], а именно: разделитель значений - пробел, разделитель целой и дробной части - точка. Блок описания узловых значений имеет дополнительные 8 строк [6]. Листинги пользовательских функций приведены соответственно на рис.5а-д. Используемые переменные и массивы:

elem - массив с описанием элементов в соответствии с требованиями («№ элемента», «тип элемента», «кол-во дополнительных атрибутов», «атрибуты», «номера узлов»);

Name - имя графика (не поддерживаются символы кириллицы и спец.символы);

node - массив с координатами узлов сетки;

Time - позиция шкалы времени, для которой выводятся результаты;

Time_unit - единицы измерения шкалы времени результата;

Res - вектор узловых значений.

Функция r_out() нужна для записи числа в формате с плавающей точкой при его целом значении, т.е. если переменная равна «1», то ее строчная запись все равно будет иметь вид «1.00», листинг функции приведен на рис.5е.

Рис.5 - листинг функций формирования и записи файла для GMesh

Исходная сетка элементов в программе GMesh приведена на рис.5а. В качестве примера рассмотрена сетка элементов, содержащая одноузловые, линейные и плоские элементы. Узловые значения получены по формуле F(x)= Cos(8x) см. рис.5б.

Рис.5 - внешний вид исходной импортируемой сетки (а) и результат, отображаемый в программе GMesh (б)

Литература

Варвак П. М., Варвак Л.П. Метод сеток в задачах расчета строительных конструкций. М.: Стройиздат, 1977. 154 с.

Сабоннадьер Ж.К., Кулон Ж.Л. Метод конечных элементов и САПР: Пер. с франц.. М.: Мир, 1989. 190 с.

Singiresu, S.R., 2011. The Finite Element Method in Engineering. Elsevier UK, 726 p.

Лахов А. Я. Программное обеспечение для стереовизуализации результатов конечно-элементного моделирования // «Инженерный вестник Дона». 2013. №1. URL: ivdon.ru/ru/magazine/archive/n1y2013/1501

Рачковская Г. С. Математическое моделирование и компьютерная визуализации сложных геометрических форм // «Инженерный вестник Дона». 2013. №1. URL: ivdon.ru/ru/magazine/archive/n1y2013/1498

Gmsh: A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities URL: gmsh.info/doc/texinfo/gmsh.html (дата обращения: 2.03.2016).

Евченко А. И. OpenGL и DirectX: программирование графики. Для профессионалов. СПб.: Питер, 2006. 350 с.

Lawrence, N., 2002. Compaq Visual Fortran: A Guide to Creating Windows Applications. Digital Press, 482 p.

Очков В.Ф. Mathcad 14 для студентов и инженеров русская версия. СПб.: БВХ-Петербург, 2009. 512 с.

Mathsoft, I., 2001. Mathcad: user's guide with reference manual : Mathcad 2001 professional. MathSoft, Inc., 528 p.

Филипов А. М. Подготовка файлов с результатами численного анализа для последующего графического отображения в программе Gmesh // Естественные и технические науки. 2014. №75. С. 4.

References

Varvak P. M., Varvak L.P. Metod setok v zadachakh rascheta stroitel'nykh konstruktsiy [The grid method in problems of design of structures]. M.: Stroyizdat, 1977. 154 p.

Sabonnad'er Zh.K., Kulon Zh.L. Metod konechnykh elementov i SAPR: Per. s frants. [Finite Element Method and CAD: Trans. from France]. M.: Mir, 1989. 190 p.

Singiresu, S.R., 2011. The Finite Element Method in Engineering. Elsevier UK, p. 726.

Lakhov A. Ya. Inћenernyj vestnik Dona (Rus), 2013. №1, URL: ivdon.ru/ru/magazine/archive/n1y2013/1501.

Rachkovskaya G. S. Inћenernyj vestnik Dona (Rus), 2013. №1. URL: ivdon.ru/ru/magazine/archive/n1y2013/1498.

Gmsh: A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities URL: gmsh.info/doc/texinfo/gmsh.html (Date Views 2.03.2016).

Evchenko A. I. OpenGL i DirectX: programmirovanie grafiki. Dlya professionalov [OpengL and DirektH: graphics programming. For professionals]. SPb.: Piter, 2006. 350 p.

Lawrence, N., 2002. Compaq Visual Fortran: A Guide to Creating Windows Applications. Digital Press, 482 p.

Ochkov V.F. Mathcad 14 dlya studentov i inzhenerov russkaya versiya [Mathsad 14 for students and engineers Russian version]. SPb.: BVKh-Peterburg, 2009. 512 p.

Mathsoft, I., 2001. Mathcad: user's guide with reference manual : Mathcad 2001 professional. MathSoft, Inc., 528 p.

Filipov A. M. Podgotovka faylov s rezul'tatami chislennogo analiza dlya posleduyushchego graficheskogo otobrazheniya v programme Gmesh. Estestvennye i tekhnicheskie nauki. 2014. №75. p. 4.

Размещено на Allbest.ru


Подобные документы

  • Изучение структуры рабочего документа MathCad - программы, предназначенной для автоматизации математических расчетов. Работа с переменными, функциями и матрицами. Применение MathCad для построения графиков, решения уравнений и символьных вычислений.

    презентация [639,2 K], добавлен 07.03.2013

  • Решение линейных дифференциальных уравнений численными и символьными методами в рамках пакета компьютерной математики MathCAD. Сравнения результов решений и применение их при исследовании функционирования автоматических систем и электрических агрегатов.

    контрольная работа [51,5 K], добавлен 07.05.2009

  • Краткая характеристика пакета Mathcad, описание простейших примеров работы с ним, примеры решения основных задач элементарной математики. Компьютерные технологии решения математических задач и символьных вычислений. Образование векторов и матриц.

    дипломная работа [621,1 K], добавлен 11.03.2011

  • Использование программной системы Mathcad для выполнения, документирования и использования вычислений и инженерных расчетов. Вычисление пределов, суммы ряда. Работа с матрицами, построение трехмерного графика. Решение систем нелинейных уравнений.

    отчет по практике [1,5 M], добавлен 11.09.2014

  • Краткая историческая справка и описание современной версии системы. Основные возможности современной версии MathCad, ее интерфейс. Ввод и редактирование выражений. Средства повышения эффективности вычислений и их оптимизация. Обзор программных операторов.

    курсовая работа [1,1 M], добавлен 13.05.2016

  • Общие сведения о системе Mathcad. Окно программы Mathcad и панели инструментов. Вычисление алгебраических функций. Интерполирование функций кубическими сплайнами. Вычисление квадратного корня. Анализ численного дифференцирования и интегрирования.

    курсовая работа [522,7 K], добавлен 25.12.2014

  • Структура программы Pascal и алгоритмы решения задач. Работа с циклическими операторами, массивами, процедурами. Составление блок-схем задач. Операции над матрицами в программе MathCad. Работа формулами, графиками и диаграммами в оболочке MS Excel.

    курсовая работа [459,0 K], добавлен 13.08.2012

  • Понятие математической модели, свойства и классификация. Характеристика элементов системы Mathcad. Алгоритмический анализ задачи: описание математической модели, графическая схема алгоритма. Реализация базовой модели и описание исследований MathCAD.

    реферат [1,0 M], добавлен 20.03.2014

  • Краткая историческая справка и описание современной версии системы. Основные возможности современной версии MathCad, ее интерфейс. Ввод и редактирование выражений, функции, решение уравнений. Использование Mathcad для решения инженерно-технических задач.

    курсовая работа [2,8 M], добавлен 04.04.2014

  • Назначение и состав системы MathCAD. Основные объекты входного языка и языка реализации. Характеристика элементов интерфейса пользователя, настройка состава панелей инструментов. Задачи линейной алгебры и решение дифференциальных уравнений в MathCAD.

    курс лекций [1,6 M], добавлен 13.11.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.