Использование сетки конечных элементов, построенной программой 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