КУРСОВАЯ РАБОТА
Применение программного комплекса AnsysIcem к решению задач химической промышленности
Нижний Новгород
2008 г.
Введение
Ввиду нарастающих требований промышленности, увеличения стоимости экспериментов, а также того, что современная вычислительная техника достигла хороших результатов, уже на протяжении нескольких десятков лет всё более весомое место в проектировании и расчёте конструкций занимают вычислительные программы. Одной из таких программ является ANSYS ICEM. Этот модуль служит для полной предвычислительной подготовки численной задачи. С её помощью можно создать геометрию, широким спектром способов построить сетку, одним из оригинальных решений построения сетки является блочная структура, задать граничные условия. Эта программа может взаимодействовать, как со стандартными модулями ANSYS, так и с рядом других систем. Одна из этих программ это ANSYS CFX, с её помощью можно дорабатывать и запускать на счёт задачи подготовленные в ICEM.
В данной работе произведено полное построение модели двойного тигля, служащего в химической промышленности для изготовления световолокна, а также при помощи блочных структур построена сетка, то есть сделана полная подготовка задачи для решения в CFX.
Целями работы было:
Построить геометрию в ICEM
Для построенной геометрии построить блочную структуру
С помощью блоков построить сетку аппроксимирующую геометрию
Экспортировать геометрию в CFX
Краткие сведения о работе ICEM. Интерфейс
Прежде чем начать работу надо ознакомиться с интерфейсом.
– это главное меню.
Пункт Файл помимо стандартных возможностей открытия закрытия проектов и отдельных файлов проекта, таких как только геометрия или сетка позволяет импортировать геометрию из других программ. Помимо этого при помощи пункта можно сохранить свой проект в компактный текстовый файл, впоследствии этот файл можно запустить нажав , при этом можно загружать не все сохраненные действия.
Пункт Вид помимо расположения геометрию в одно из стандартных положений (во весь экран, увеличение выделенного фрагмента, сверху, снизу, изометрию) позволяет записывать текущий вид в любой графический формат, для этого нажимаем в появившемся окне указываем место расположения и имя файла,
- позволяет автоматически генерировать имена новых файлов, сохраняет их в папке текущего проекта
- при выборе этого, на фотографии, черный экран приложения будет заменён белым фоном
- позволяет на введённое число увеличить линейные размеры изображения.
Нажатие этих кнопок эквивалентно
кнопка - выход из этого меню.
Нажатием - откроется удобное более полное меню позволяющее делать практически те же операции. - позволяет добавлять, удалять, изменять комментарии.
Пункт Информации позволяет узнать: Кнопка общие свойства геометрии (число линий, поверхностей, частей, тел) – эта информация выводится в центральной нижней части экрана. Кнопка количество элементов, число узлов сетки, для этого сетка должна существовать (недостаточно предварительного разбиения блоков).
Пункт открывает окно с тремя вкладками: 1) калькулятор 2) блокнот 3) таблица мер объёмов, дины, силы, температуры и т. д. вводя в одно из полей какое-то значение, вы получите перевод этой величины во все остальные. По умолчанию единицами длины являются метры. Но вводить координаты точек можно и в миллиметрах, только потом при экспорте в решатель надо указать соответствующий (т.е. множитель).
Пункт Настройки позволяет задавать стиль отображения геометрии, контролировать скорость анимации при приближении или удалении геометрии, вводить ограничения на выделяемую под геометрию, сетку, экран память – всё это может помочь добиться большего быстродействия и удобства. Кнопка позволяет задавать параметры построения и перемещения при помощи мыши. По умолчанию стоят настройки: зажатая левая кнопка – вращение тела, зажатая правая – вращение при движении влево-вправо, приближение-удаление, при движении вверх-вниз. Зажав колёсико можно просто перемещать геометрию. При построении геометрия выделяется с помощью левой кнопки, снимается выделение с помощью правой, нажатие колёсика в режиме построения эквивалентно либо нажатию кнопки применить, либо если надо заполнять большое количество полей символизирует окончание заполнения одного поля.
Ещё одним важным пунктом настроек является моделирование () с помощью которого можно произвести настройку толерантности, т.е. точности с которой будет аппроксимироваться геометрия. Желательно, чтобы уровень толерантности был в 10-20 раз меньше, чем минимальные размеры тела. Слишком хороший уровень толерантности может привести к замедлению процессов, а слишком плохой к большим погрешностям в геометрии. Более того, в ходе построения геометрии надо очень внимательно смотреть за уровнем толерантности, т.к. при некоторых операциях, таких как построение точки по двум пересекающимся кривым, или построение поверхности по нескольким кривым её надо вводить вручную, игнорирование этих действий может в дальнейшем привести к значительным искажении геометрии, таким как изломы или разрывы.
Следующей важной частью интерфейса является дерево вида, которое отображается в левой нижней части экрана.
Вкладка геометрия: позволяет включать-отключать отображение точек кривых поверхностей и тел. Нажав правой кнопкой на пункт Точки, можно настроить их изображение: позволяет сделать в 2-3 раза жирнее, - позволяет увидеть названия всех построенных точек, - после выбора этой опции выберете одну или несколько точек и нажмите на колёсико, в нижней части экрана (в log файле) отобразится их название, часть (Part) которой они принадлежат и координаты, нажав и выбрав нужные точки можно временно прекратить их отображение, при помощи можно оставить отображёнными только нужные точки, опция восстанавливает отображение всех точек. Аналогичные свойства и у кривых. Помимо этого у поверхностей есть опция которая позволяет отображать поверхность как твердое тело, кнопки , позволяют увеличивать или уменьшать число образующих поверхности, эти опции удобны, когда галочка с кнопки снята, пункт позволяет делать поверхности полупрозрачными, нажатие на приведёт к тому, что будет отображён вектор нормали к поверхности (правда обычно он отображается лишь со второго раза).
Для того чтобы увидеть созданное вами тело () необходимо нажать на . Аналогично настраивается вид сеток (mesh) и блоков (Blocking), где - вершины блока, - рёбра, - грани.
Полезными для блоков являются опции: У рёбер: - позволяет наглядно увидеть проассоциировано ли ребро с кривой, если да, то будет нарисована стрелка указывающая на эту кривую (без этой опции проассоциированные рёбра просто подсвечиваются зелёным цветом), - после нажатия над каждым ребром появится количество узлов сетки на которое данное ребро разбито, более того вы увидите как оно разбито (равномерно или со сгущениями), где находятся сгущения и наглядно оценить размер максимальных и минимальных элементов, более того стрелочками будет отображено направления локальных координат т.е. начало и конец грани (теперь можно спокойно указывать куда делать сгущение к началу или к концу ребра, ошибки не будет) - после нажатия этой кнопки каждое проассоциированное ребро примет форму той кривой с которой оно проассоциировано (наглядней не придумаешь). Аналогичные свойства у граней - аналогично стрелками будет показано с какой поверхностью проассоциировано (поле того рядом будет подписано имя части (Part) с которой данная грань проассоциирована), - после выбора нужной грани выведет в текстовом окне (в log-файле) тип связи грани с геометрией (например FAMILY, если грань связывалась с частью и имя этой части).
У блока в целом можно настроить: так же отображение как жёсткого целого, а также аналогичные настройки связи блока с геометрией, иногда полезной является вкладка - позволяющая отобразить направление базисных векторов локальной системы координат блока (при желании локальную С.К. у блока можно поменять).
Пункт прообраз сетки (Pre-Mesh) даёт возможность сделать предварительный просмотр сетки (например, вы уже задали какое-то число узлов на рёбрах блока, даже необязательно на всех), после этого вы увидите предварительную сетку всех видимых на экране блоков (если вы нажимаете этот пункт впервые или изменяли сетку или число видимых блоков, может появиться сообщение о том хотите ли вы обновить прообраз сетки, надо отвечать да). В этом пункте также можно проводить полную настройку вида предварительной сетки: - позволяет отображать сетку прозрачной, - отображает сетку как твёрдое тело, - отображает сетку так, как если бы блок не был связан с геометрией, - так, если бы у блоков с геометрией были связаны только вершины, - связаны только рёбра, - связаны только плоскости, (последовательное изменение этих трёх параметров даст уверенность что блок правильно связан с геометрией), - вызовет обновление сетки, - выведет характерные размеры сетки (число узлов, число элементов), очень важной является опция , которая позволяет конвертировать прообраз сетки построенный с помощью блоков в настоящую сетку, которую в свою очередь уже можно экспортировать в решатель (например ANSYS CFX), если прообраз сетки вы не преобразовали в сетку, то при попытке экспорта будет открыто окно предлагающие вам вручную указать файл с сеткой.
Иногда, когда создаётся более трёх вложенных друг в друга блоков при помощи центрального разбиения (0-grid) все вложенные блоки перестают отображаться на экране, для того чтобы “восстановить справедливость” необходимо просто щёлкнуть по вкладке топология (Topology) и ещё раз нажать галочку на подвкладке root (перевод посмотрите сами).
Так же на дереве вида отображаются все созданные вами части (Part), по умолчанию вся геометрия сначала попадает в часть GEOM (если вы не создали ещё частей) и в ту часть где ведётся достройка геометрии (если какие-то части уже созданы, например если вы строите прямую от одной части до другой, то она будет отнесена к той части где находится её начало).
Части создают чтобы: 1) Их отображение можно было просто отключить, чтобы они не мешались при построении остальной геометрии 2) На одной части после экспорта в решатель должно задаваться одно граничное условие: стенка, условие прилипания, условие скольжения, вход, выход, источники тепла или инъекций, а также места стыков геометрий (если в решатель экспортируется геометрия из разных проектов) для их последующий склейки (например интерфейсом стенка-стенка или жидкость-жидкость) – всё это должно быть выделено в отдельные части. Также части очень удобно использовать для ассоциации граней блоков с поверхностями, для этого достаточно указать имя части где находится поверхность. Изображение частей устанавливается аналогично: щёлкнув правой кнопкой по слову Part можно увидеть меню, где будет предложено создать часть, показать все части или скрыть все части (тоже самое можно сделать просто убирая или ставя галочку перед слово часть).
Нажимая правой кнопкой по уже созданным частям можно путём выбора открыть меню добавления геометрии в часть, при этом надо внимательно следить чтобы там было введено имя именно той части которая вам нужна.
При этом появится это меню:
Выделение или снятие выделения с этой кнопки позволяет переводить мышь либо в режим выделения геометрии либо в режим перемещения-вращения (зажатие колёсика в режиме перемещения позволяет двигать геометрию, а в режиме выбора геометрии добавляет выделенные элементы в введённую часть). Если вы хотите выделить (выбрать) точки, кривые, плоскости, тела, то надо соответственно снять или поставить выделение над этими кнопками: , если надо выбрать уже существующую часть, то надо нажать на в появившемся меню поставить галочки на против нужных частей и нажать . Помимо этого можно выделять все элементы попадающие в квадратную область, для этого надо зажать левую кнопку мыши и обвести все необходимые объекты, при этом если эта кнопка выделена , то выбраны будут только объекты целиком вошедшие в область, а если нет, то выбрано будет всё то, что хоть краем в эту область попало.
Для того чтобы добавить объекты в часть необязательно пользоваться пунктом , можно нажать кнопку (т.е. создать часть) предварительно щёлкнув правой кнопкой на слове Part и ввести имя уже существующей части, далее всё то же самое.
Помните: один объект (точка, плоскость, блок), может быть отнесён лишь к одной части, добавляя элемент в одну часть, вы автоматически убираете его из всех остальных.
На данном дереве вида представлены части для третьего тела построенной геометрии.
Остальные особенности интерфейса можно найти в других работах, поэтому здесь будет рассказано лишь то, что встретилось при решении этой задачи.
Решение задачи
Задача: построить это тело:
Описание работы двойного тигля
На данном рисунке представлено устройство для вытяжки световолокна, которое в свою очередь состоит из двух сред. Первая среда подаётся по трубке №1, предварительно поступая из цилиндра с воронкой №4, вторая среда течёт по колену №3, из которого попадает в тело №2 (промежуток между первой трубкой и вертикальным продолжением цилиндра №4), после этого в зоне №5 эти среды смешиваются, в результате на выходе получается световолокно.
Ход построения
Разобьём исходную геометрию на три тела: 1) трубка №1 с воронкой но не включая тело №4. 2) тело представляющее собой внутренность между границей тела №2 и трубкой №1. 3)колено №3.
Сделаем упрощения: 1) в теле №3 будем рассматривать только внутреннюю границу колена, т.к. стенка может повлиять только на теплообмен, то считаем, что это не сильно изменит решение. 2) тело №2 так же будем считать состоящим только из внутренности большей трубки, помимо этого в тело №2 надо включить внешность трубки №1, чтобы потом в решателе “склеить” их на границе.3) откинем тело №4, задав в решателе граничные условия сразу на входе в тело №1.
Построение первого тела
Создание геометрии
Строим профиль тела №1: для этого во вкладке геометрия нажимаем на кнопку после чего последовательно вводим координаты (в метрах): А(0.0065 0.044 0) – центр дуг СD и C1D1, С(0.004 0.044 0)
С1(0.0026 0.044 0), D(0.0065 0.0465 0), D1(0.0065 0.0479 0), L(0.00215 0.004 0), M(0.00075 0.004 0), N(0.004 0.008 0)
O(0.0026 0.008 0).
После чего нажав на затем на соединяем по две точки после каждой пары вдавливаем колёсико. Закончив с прямыми строим окружности: нажимаем , выбираем точки ACD, затем AC1D1 после каждой тройки щёлкаем колёсиком.После этого углы MOC1 и LNC надо сгладить, для этого вычисляем координаты точки лежащей на биссектрисе угла LNC на расстоянии 0.0005 от точки N пусть это точка К(0.003511683115 8.1074552 0), строим её. Теперь нажимаем и нажимаем последовательно KNL
Результатом будет окружность являющаяся касательной к LN и NC, теперь нажимаем в открывшемся меню нажимаем на кнопку напротив слова Select: и выбираем только что построенную окружность, нажимаем на колесо, затем ставим галочку вот здесь: далее заполняем координаты вектора сдвига: напротив оси Х вводим -0.0014 – расстояние между точками O и N (при этом предполагается, что была поставлена галочка здесь:, если галочка стояла здесь: , то надо бы было вот здесь нажать вот на это и выбрав последовательно точки N, O, нажать на колёсико) теперь всё готово для перемещения окружности, нажимаем на (копирование (перемещение) тела это один из тех случаев, когда бесконечное нажимание на колесо не приводит к выполнению копирования (перемещения)), наслаждайтесь.
Теперь нужно удалить лишние фрагменты: находим точки пересечения окружностей с прямыми LN, NC, MO, OC1, для этого нажимаем , затем , незабываем заполнить толерантность, выделяем попарно окружность и нужную кривую, автоматически появляются точки. Теперь разбиваем этими точками кривые (две окружности и соответствующие прямые), незабываем про первые две окружности (разбиваем их точками C, D и C1, D1),нажимаем , затем на , указываем соответствующие кривые и точки. Настало время удалять, удаляем отрезки около точки N и O, а также ненужные дуги окружностей, нажимаем на выбираем то что надо, жмём на колесо.
Замечания о манипуляциях с геометрией
1) При выполнении таких действий, как вращение кривой или других видах движения, начальная кривая может совпадать с конечной при этом в нижнем окне выдается сообщение о соединенных точках и кривых. Иногда окружности или кривые разбиваются на части при этом исходные кривые сохраняются. В последствии вы можете по ошибке, где-то указать не ту кривую, например проассоциировать блок не с четвертью окружности, а с третью да ещё с вырезом, возможно некорректное создание поверхностей по кривым Во избежание таких несчастий надо очень внимательно следить за геометрией, своевременно создавать соответствующие части, удалять мусор. Если это горе всё-таки произошло заметить его можно, например если на одной кривой лежит две кривые, то при выделении одна из них подсвечивается пунктиром, можно подвести мышь к кривой и выделить её затем щёлкнуть по ней ещё раз, если при этом выделилась некоторая соседняя кривая, то всё в порядке, если же ничего не изменилось (или, например, на окружности загорелся какой-то мусор) или подсветка стала ярче, то лучше удалить этот хлам, проще оставлять его в части GEOM и при провождении ассоциаций или других действий эту часть отключать из видимости.
Удалять следует дубликаты кривых (для этого надо либо вовремя создавать части, либо пользоваться деревом вида, узнавать имена дубликатов, впоследствии копировать их в имена удаляемых кривых).
2) Не стоит лишний раз создавать и удалять геометрию. Если вы отменяете действия, то надо отменять его полностью (иногда отмена одного действия может потребовать нескольких нажатий кнопки назад), в противном случае возможны проблемы из пункта один.
3) Не стоит лишний раз проводить операции соединения или разбиения для поверхностей. Дело в том, что поверхности в ICME хранятся в двух видах: параметрически и численно, операцию слияния можно проводить только для численных, недостатки перевода в это состояние очевидны. При операции разбиения возможна (всё из-за той же толерантности) некорректная перепараметризация (трещины, разрывы, и более жёсткие искажения).
4) При построении поверхностей путём движения кривых (вращение кривой, движение кривой вдоль кривой), каждая движимая кривая создаёт одну поверхность за один этап. Так как операция слияния и разбиения работает корректно для кривых, то желательно заранее знать сколько нужно поверхностей.
Продолжаем построение геометрии. Ещё раз прочитаем замечание №4 и убедимся, что полоска из сглаживающей плоскости нам не нужна, поэтому склеим отрезок LN, с соответствующей дугой, для этого нажмём: , затем выберем соответствующие кривые, нажимаем колесо. Теперь тоже самое делаем для отрезка MO и соответствующей дуги. Заметим, что подобные сглаживания нужны, если строимая сетка будет меньше, чем размер сглаживающих дуг, в противном случае сглаживание бесполезно; что касается физики производства этих “стенок”, то там на самом деле имеет место некоторое оплавление углов при их отливки. Рисунок со скруглениями, здесь не представлен, т.к в подобном масштабе он ничем не отличается от приведённого; поэтому далее будем подразумевать под кривыми LN и MO соответствующие отрезки с приклеенными дугами. Больше ничего не склеиваем, т.к ко всем остальным кривым (включая дуги CD и C1D1), после вращения будут “прикреплены”, соответствующие блоки.
Первый этап построения первого тела закончен, сохраняем эту “фигуру” в часть: щёлкаем правой кнопкой по слову Part в дереве вида, выбираем создать часть, в появившемся окне вводим имя новой части PART.T_1_0, около строчки выбора (), нажимаем на ,зажимаем левую кнопку и обводим все точки и кривые представленные на рисунке (предварительно, не забыв, включить нужные из этих кнопок - в этом случае достаточно выбрать только точки и кривые), нажимаем на колесо.
Приступаем ко второй стадии построения: будем вращать исходную геометрию. Для того чтобы впоследствии не сталкиваться с операциями разбиения поверхностей вращения на четыре плоскости (ровно столько нужно для ассоциации четырёх боковых граней блока), сразу будем вращать геометрию последовательно на углы . Нажимаем , затем , в этом поле , введём цифру 90, здесь , нажмём на , выберем точки с координатами: Q(0 0 0), Q1(0 0.06 0) (если они не созданы их надо создать), эти точки характеризуют ось вращения, в качестве таких точек можно взять любую пару лежащую на оси Y. Так как вращать будем четыре раза удобно скопировать отобразившиеся имена точек: , в буфер обмена (клавиши Ctrl-Insert), чтобы в последствии не тратить время на выделение, а только вставлять это значение (клавиши Shift-Insert), (вообще все горячие клавиши можно узнать нажав на справку и найдя пункт Hot Keys).
В поле , нажав , вводим кривые, выбирая их все сразу мышью (если все элементы выбираемой геометрии принадлежат одной части, то удобно выбирать сразу всю часть: в появившемся меню выбора надо нажать , а в всплывшем окне поставить галочку напротив нужной части, в данном случае это часть PART.T_1_0, можно выбирать несколько частей). Получим нечто похожее на то что представлено справа. Если поверхности не видно, то либо не стоит соответствующей галочки в дереве видов, либо не выбрана опция Solid для поверхностей.
Замечание: если вы выбирали геометрию из всей части или обводя всю фигуру мышью, среди выбираемых элементов могли оказаться точки, при вращении они не окажут никакого влияния на фигуру вращения, даже если не было выбрано ни одной точки то программа сама создаст их на пересечении прямых образа, а также дуги соответствующие границам поверхностей.
Теперь выделяем, аналогично, образ исходной фигуры, не забыв вставить точки вращения из буфера (использование буфера полезно ещё и тем, что если вы случайно введёте точки вращения не в том порядке, то фигура будет вращаться в другую сторону); повторяем операцию вращения последних образов кривых (цифру 90 не убираем), до тех пор пока фигура не станет иметь вид похожий на тот, что справа. Заметим, что на указанных рисунках уже добавлены “крышки” сверху и снизу. Для удобства работы с геометрией верхняя воронка (плоскости соответствующие вращающимся дугам CD и C1D1) объединены в отдельную часть PART.T_1_1, а так же часть соответствующую невидимым поверхностям образованных вращением кривой МОС1 – часть PART.T_1_2 (по умолчанию оставшийся кусок будет в части PART.T_1_0). Стратегия построения такова, что в дальнейшем планируется описать эту фигуру тремя блоками соответствующими: нижней воронке (образовалась после вращения MO и LN), цилиндру (после вращении NC и OC1), уже оговоренной верхней воронке. Для того чтобы можно было корректно проассоциировать верхние грани блока должны быть созданы плоскости соответствующие внутренностям окружностей образованных после вращения точек O и C1.
Возможен вопрос: для чего разбивать на три блока. Формально всю эту трубку можно описать одним блоком (не включая центрального разбиения: 0-grid), проассоциировав его рёбра с кривыми образующимися путём вращения исходного профиля. Но реально в местах резкого изменения топологии (дуга окружности, сужение), ассоциация будет некорректной (для просмотра качества блока есть соответствующие опции).
Теперь строим эти “крышки” выбираем: , выбираем метод построения, заполняем , незабываем поставить толерантность: , выбираем по четыре кусочка кривых и жмём на колесо. В результате получаем четыре дополнительных плоскости: верхняя и нижняя крышки, и окружности соответствующие вращению точек O и C1; для того чтобы удобнее было строить эти круги, можно либо отключить видимость ненужных частей, либо отключить видимость поверхностей, либо снять опцию solid с поверхностей.
Создание блоков
Только что была создана геометрия первого тела, при её создании использовался подход “снизу-вверх”. Для создания блоков часто используют подход “сверху-вниз”. Для этого выбираем вкладку блоков (), нажимаем , сюда вводим название части в которой будет сохранён блок , (блок обязательно должен быть в какой-то части); теперь вот здесь , нажимаем , выделяем всю геометрию, щёлкаем на колесо. Теперь разобьём на четыре внешних и один внутренний при помощи центрального разбиения (0-grid Block), такое разбиение нужно, чтобы описать как стенку блока (с учётом её толщины), так и его внутренность. Нажимаем , выбираем , вот здесь , нажимаем и выбираем блок. Далее надо указать как будет располагаться внутренний блок (верхние грани лежат в одной плоскости, верхняя и нижняя, боковая, и т.д.); нажимаем здесь на и выбираем верхнюю и нижнюю грань, т.е. эти грани будут лежать в одной плоскости. Вот здесь , ставим отношение , где - радиус внутреннего блока, - радиус внешнего (эта опция служит более для удобства изображения, т.к. после ассоциации все вершины блока итак будут передвинуты к соответствующим точкам, т.е. можно оставлять значение по умолчанию – 1). Если поставить галочку здесь , то “кольцевой” блок будет строится вокруг исходного.
Если что-то сделано неправильно, то надо нажать и повторить всё заново. Сейчас всё готово для создания блока, нажимаем . Теперь выбираем , ставим вот здесь флажок , и выделяем все блоки, щёлкаем колёсиком, теперь выбираем , как всегда здесь нажимаем и выбираем на экране произвольное вертикальное ребро и разбиваем его в “районе” точек С и С1 (если вы попали по ребру неудачно секущую плоскость можно двигать до тех пор пока не нажато колесо). Пользуясь этим же методом разбиваем нижнюю группу блоков в “окрестности” точек N и О. Создаём части: верхнюю группу блоков называем B_1, среднюю – В_2, нижнюю – В_3. Полученное нарисовано справа.
Настало время проводить ассоциации. Нажимаем , затем , поочерёдно нажимая на вершину, затем на соответствующую точку проводим ассоциацию (колёсико нажимать необязательно), при этом геометрическое место вершин блока переносится в те точки с которыми их ассоциируют. После этого ассоциируем рёбра блока с кривыми. Нажимаем , затем так же попарно выделяем сначала ребро, затем кривую. Проассоциированные рёбра начинают подсвечиваться зелёным цветом (о дополнительных настройках смотреть выше).
Ассоциируем поверхности, для этого удобно отключить из видимости, сначала, все ненужные части, теперь нажимаем , в пункте метод ставим здесь галочку: , затем выделяем все грани блока В_2 (обводим его мышью его внешние грани, чтобы достоверно видеть что выбрались нужные грани удобно опцию Solid с блока на некоторое время снимать), щёлкаем колёсиком, в появившемся окне ставим галочку напротив части PART.T_1_0 (внешность трубки; выделяем внутренние грани блока и аналогично ставим галочку около части PART.T_1_2; также ассоциируем верхние и нижние крышки блока; так же ассоциируются четыре верхних и четыре нижних “четвертинки” колец с поверхностями образованными при вращении отрезков ON и СС1 (заметьте, что при таком удачном “предвидении” будущих ассоциаций не надо проводить никаких лишних действий). Аналогично поступаем со всеми остальными блоками. Только не забудьте сразу отправить в отдельные части вход и выход из тела (верхний и нижний круги), т.к. если об этом спохватиться позже придётся у соответствующих граней менять ассоциации. Результат приведён справа.
Построение сетки
Для этого нажимаем , затем сюда , при этом слева появляется нижеприведённое меню.
Это поле позволяет выбрать разбиваемое ребро, после того как имя разбиваемого ребра при помощи мыши и колёсика скопировано в это поле (иногда это тоже получается со второй попытки), можно приступать к заполнению остальных пунктов. В поле высвечивается длина выбранного ребра. В пункте , указывается число узлов на этой грани. Закон разбиения ребра указывается в этом поле . Существует целый ряд законов разбиения: 1)BiGeomertic – позволяет проводить равномерное разбиение рёбер. 2)Exponential1 – можно экспоненциально сгущаться к концу ребра, чтобы полностью задать экспоненциальное разбиении надо ещё заполнить поля и , они характеризуют значения, соответственно, первого (в начале ребра) и последнего (в конце) элемента, естественно, что при фиксированном законе разбиения и числе узлов это выполнить “трудно”, поэтому справа на сером фоне подсвечиваются более точные значения (внимательно смотрите за ними, т.к. ваши “желания” не всегда будут выполняться корректно); при использовании разбиения Exponential1 важно, чтобы второе значение было больше первого.
Если надо сгустится не к концу ребра, а к началу, надо выбрать разбиение Exponential2 и задавать уже второе значение меньше первого. 3)FullCosinus – одно из самых гибких видов разбиения, оно позволяет задавать значения элементов как вначале, так и в конце ребра (выполняется всегда, если их размер не превосходит максимального, в противном случае их размер приравнивается к максимальному), при помощи поля , можно задавать ограничения на максимальный элемент, если в это поле заполнено значение 0, то ограничений нет; после того как эти поля заполнены, производится сглаживание сетки от каждого из краёв к центру ребра, т.е. в центре ребра всегда оказывается наибольший или наименьший элемент; таким образом, при помощи данного закона очень удобно делать близкие к симметричным разбиения со сгущением к краям или к центру ребра (естественно надо заполнить поле с количеством узлов). 4) Geometric1 позволяет сгущаться по линейному закону к концу ребра, Geometric2 – линейно сгущаться к началу (замечания касающиеся первых и последних шагов разбиения переносятся из пункта об экспоненциальных разбиениях). 5) Все вышеперечисленные законы хороши, но самыми общими являются следующие: Spline и Linear. Несмотря на то что они выделены в два отдельных закона при их выборе открывается одно и тоже меню, которое приведено снизу. Изучить это меню достаточно полезно. Главной особенностью этого меню является то, что все приведённые здесь функции можно редактировать, для этого просто надо “захватить” левой кнопкой мыши любую из красных точек и установить её в нужное положение, щелчком левой кнопки мыши по любой точке меню можно создать новые опорные (красные) точки и их так же можно двигать (чтобы убрать красную точку дважды щёлкните по ней левой кнопкой), не выходя из этого меню можно менять кусочно-линейный закон (Linear), на закон Spline и обратно. Нажмите кнопку - чтобы уйти из режима интерполяции сплайнами в линейный режим, чтобы перейти из линейного режима (точки просто соединены отрезками) в режим сплайнов надо нажать кнопку , которая будет гореть на том же месте где до этого горела кнопка . Удобной частью интерфейса является то, что размеры элементов пронормированы таким образом, что минимальному элементу соответствует максимальное значение на вертикальной шкале (самое большее всегда равно 1, поэтому удобно точку с минимальным значением сразу ставить на единичную высоту), поднимая и опуская график (с помощью движения точек), можно видеть во сколько раз разбиение в этом месте крупнее минимального, аналогично отношение высот любых двух точек графика (красные точки необязательно лежат на графике, например при разбиении сплайном), даёт отношение длин соответствующих отрезков разбиения. Если поставить соответствующую галочку, то можно заполнять поля Set First и Set Last, но будьте внимательны эти значения никак не повлияют на закон разбиения, т.е. сначала будет выполнено разбиение, а потом только длины первого и последнего элемента будут заменены введёнными значениями (поэтому сначала лучше разбивать ребро так, чтобы первый и последний элемент были примерно нужной длины, а потом только ставить более точные размеры).
На отрезке снизу: , представлен качественный характер будущего разбиения, он является только качественным, т.к. число узлов разбиения на нём задаётся в поле представленном на рисунке справа.
Чтобы выполнить это разбиение ещё и количественно (т.е. чтобы минимальный, максимальный, первый и последний элемент остались такими же), надо не забыть после выхода из этого меню проставить нужное число узлов в меню представленном на страницу выше. Если надо сгущаться не к началу ребра, а к концу, то надо нажать на кнопку и нажать , если надо отразить график сверху вниз, то нажать .
Если горит кнопка , то значения первого и последнего элемента выдаются в истинных размерах, если на неё нажать, то на её месте загорится кнопка , тогда ось Ох также пронормируется на единицу и на соответствующих местах будет показываться отношение длины элемента к длине всего ребра. Одним из применяемых в этой работе было разбиение Parabola Ends, которое можно увидеть во вкладке функций (кнопка ), при этом его центральная часть была несколько поднята (т.е. уменьшены наибольшие элементы); профиль этого разбиения можно увидеть справа.
В некотором смысле это аналог разбиения по полному косинусу (FullCosinus), только более удобный в управлении. После того как разбиение сконструировано, нажимаем на кнопку .
Замечания по поводу некоторых особенностей ICEM 11.0
При выборе законов разбиения (как в этом меню, так и в меню на страницу выше), возможно допущение ряда “ошибок”, например внесли некорректные данные в закон или, даже, просто закрывая только что описанное меню, нажали не на кнопку , а просто закрыли (нажав на ), а так же в ряде других “странных” случаев. Обычно, сообщение об ошибке появляется некоторое время спустя, например, при попытке ещё раз изменить закон. Для того чтобы восстановить нормальную работу, в появившемся сообщении об ошибке нажмите , а в всплывшем окне “Edge meshing Parameters” (аналог меню на стр.9) нажмите .
После того как выбрано разбиение (возвратились в меню на стр.14), очень удобно поставить здесь галочку , и выбрать метод копирования, например , если введена эта настройка, то на все рёбра блока параллельные текущему будут перенесены все настройки для данного ребра (число узлов, закон разбиения и т.д.).
После того как заполнены все только что перечисленные пункты, ребро готово для разбиения, нажимаем кнопку , теперь можно пользоваться всеми свойствами меню предварительного просмотра сеток (на дереве вида вкладка Pre-Mesh).
Возвращаемся к исходной геометрии. На рёбрах NC, ставим число узлов 75, в качестве закона разбиения выбираем сплайн, во вкладке функций находим пункт “парабола со сгущением к концам” (Parabola Ends), несколько модифицируем её (рисунок на этой странице), ставим галочку копировать параметры на все параллельные рёбра. Далее берём любое горизонтальное ребро и ставим число узлов 15, выбираем равномерный закон разбиения (BiGeomertic), также копируем настройки на все параллельные рёбра, тоже самое проделываем для соседнего (с боку) горизонтального ребра (можно любого горизонтального не принадлежащего предыдущему семейству параллельных рёбер).
Разбиваем ребро соответствующие дуге CD: число узлов ставим 15, закон Linear, в появившемся меню выбираем линейную функцию (Ramp) функцию, делаем сгущение к началу (зависит от направления локальной системы координат, т.е. надо посмотреть направление базисных векторов на блоке), для этого делаем отражение слева на права. Поднимаем нижнюю точку так, чтобы размер максимального элемента был 0.00029, а максимального 0.0008 (в результате будет непрерывность сетки в точке С, т.к. при проведении предыдущего разбиения в этой точке было именно это значение длины элемента). Незабываем скопировать параметры. Результат справа.
Разбиваем ребро соответствующее кривой LN. Аналогично выбираем линейный закон, число узлов задаём 30, минимальный элемент ставим длину 0.000105, а максимальный 0.00029 (таким образом выполнится непрерывность сетки в точке O, точка N, является менее важной, т.к. течение жидкости идёт по внутренности трубки). Незабываем ставить копирование параметров на все параллельные кривые.
Осталось разбить все рёбра параллельные ON (это будут все оставшиеся рёбра), т.к. эта область содержит твёрдое тело, которое нас не интересует, ставим число узлов 5 и закон равномерный.
В результате был получен прообраз сетки. Проверить его корректность можно в пункте предварительного просмотра (Pre-Mesh), приступаем к последней фазе создания сетки.
Так как блоки описывающие внутренность тела представляют одно физическое тело, а блоки описывающие стенку другое, то надо объединить эти блоки соответственно в две новые части (это лучше сделать, чтобы потом не пришлось лишний раз их склеивать в решателе), при этом старые части автоматически исчезнут, вместе с блоками отправляем в эти части и все промежуточные поверхности к которым эти блоки были прикреплены (например поверхности образованные после вращения отрезка NO, эти поверхности не имеют никакого физического смысла, но удалять их нельзя, т.к. тогда “поплывёт сетка”). Как это делать было сказано выше, новые части называем BLOCK_T_1_1 и BLOCK_T_1_2.
Всё готово для создания сетки, создаём её. В дереве вида на вкладке блоков находим пункт предварительной сетки (Pre-Mesh), выбираем опцию создать неструктурированную сетку (Convert to Unstruct Mesh).
Экспорт в решатель
Сетка создана. Сохраняем проект под именем Т_1. Выбираем решатель: нажимаем , далее , заполняем поля , затем , жмём ; нажимаем , в появившемся меню нажимаем .
Таким образом первое тело полностью построено и экспортировано в решатель ANSYS CFX.
Построение второго тела
Нетрудно заметить, что второе тело представляет собой фигуру вращения. На рис.1 представлен профиль второго тела. Очевидно, что в области 1 и 2 при попытке описать данную фигуру на два вертикальных блока (без учёта центрального разбиения – 0-grid), будут возникать сильные искажения топологии (большие изменения углов). Возникает необходимость ввести дополнительные блоки. Делаем дополнительные построения. Результат представлен на рис.2. Введённые дополнительные отрезки (после вращения станут поверхностями), не имеют никакого физического смысла, а служат только для будущей ассоциации к ним блоков. Аналогично было проведено вращение данного профиля (последовательно на углы ), также созданы два дополнительных круга (образованных вращением точек K и L). Результат представлен на рис.3.
Координаты точек:
A(0.0065 0.0465 0), B(0.004 0.044 0)
C(0.004 0.041 0), D(0.0065 0.043 0)
E(0.004 0.008 0), F(0.0065 0.008 0)
G(0.00215 0.004 0), K(0.00075 0.004 0),
L(0.00042 0 0), M(0.0012 0 0)
N(0.0025 0 0), P(0.0045 0.004 0).
Координаты точек L, M, N, выбирались таким образом, чтобы KG/LM=GP/MN=r(K)/r(L), где r(K), r(L) – расстояния до оси Oy, от точек K и L.
Аналогично была создана блочная структура и проведено построение сетки. Единственной особенностью отличающей этот случай от предыдущего явилось то, что для описания фигуры образованной вращением точек LMNPGK (вместе с кругами образованными вращением точек K и L), потребовалось три вложенных друг в друга блока (если они пропадают из видимости см. замечания в начале).
рис.1
рис.2
рис.3
Так как второе тело ограничено внешней стенкой тела Т_1 и внутренностью между трубками (см. рис. на стр. 4), то внутренние блоки, получающиеся при проведении центрального разбиения (0-grid), следует удалить, т.к. эта область уже описана в проекте Т_1 (в этом проекте сохранено первое тело). Аналогично созданы отдельные части для стенок, областей входа и выхода, стенка KGECBA (т.е. поверхность вращения) тоже отнесена в отдельную часть для стыковки со стенкой тела Т_1, также в отдельную часть был отнесён круг образованный вращением точки K, для создания интерфейса жидкость-жидкость, на границе первого и второго тела. Для построения сеток были использованы аналогичные законы. Проект был сохранён под названием T_2 и экспортирован в CFX. (около угловых точек F и E, также было сделано сглаживание)
Построение третьего тела
Было построено третье тело, результат представлен справа.
Ход построения. Строим точки: О(-0.028 0.08045 0.006), С(-0.028 0.08045 0.006), D(-0.022 0.08045 0), строим по ним окружность. Строим точки: К(-0.028 0.0605 0), L(-0.008 0.0405 0), M(-0.008 0.0605 0), строим по ним четверть окружности. Строим точку Q(0.04 0.0405 0). Склеиваем кривые OK, KL, LQ. Строим поверхность путём движения окружности ABCD, вдоль склеенной кривой (если кривые не склеить, а двигать поочерёдно вдоль каждой из кривых, то получатся поверхности, которые не имеют ни физического, ни практического смысла).
От полученной поверхности отсекаем лишнюю часть: строим внешность второго тела (строим окружность в плоскости XZ с центром в начале координат, радиуса 0.0065,
строим поверхность, двигая эту окружность вдоль оси Oy на высоту 0.06), находим кривую пересечения этих двух поверхностей: открываем вкладку геометрия, в ней нажимаем кнопку с кривыми, нажимаем , выделяем две нужные поверхности, жмём на колесо, затем необходимо нажать . Теперь с помощью созданной кривой разбиваем третье тело на две части: нажимаем кнопку с поверхностями, нажимаем , затем выбираем нужную поверхность и кривую, поверхность разбита. Теперь надо создать границу третьего тела: сверху это круг ABCD, а снизу поверхность EFGH, создаём её, аналогично нажимаем , затем выбираем туже кривую, а поверхность берём соседнюю.
Замечания. 1) При отсечении первой поверхности на границе, где находится кривая EFGH, могли появиться новые кривые (их лучше удалить), тоже самое касается второго отсечения. 2) Качество операций пересечения напрямую связано с толерантностью (которую настроить можно здесь: главное менюнастройкимоделирование), в данной работе использовались следующие настройки: , . Что касается скорости то для слабого компьютера можно сделать толерантность более крупной. Иногда толерантность надо делать более крупной, например если не выполняются некоторые операции, такие как создание поверхности лежащей на другой поверхности и ограниченной кривой лежащей на той же поверхности (кнопка ), эта операция вообще плохо работает и ей лучше не пользоваться, если есть возможность, лучше просто разбивать поверхность на две с помощью кнопки , что и было сделано выше, об особенностях хранения поверхностей было сказано ещё раньше. Возникновение некорректности при чрезмерно высоком уровне толерантности (т.е. при задании слишком точной аппроксимации параметрических объектов), вызвано тем, что при таком уровне дискретизации поверхности и кривые которые явно лежат на этой поверхности (т.е. совпадает параметризация) воспринимаются как независимые (отдельные) объекты. При попытке произвести с подобными объектами какие-то действия возникает ошибка слияния (can not merge) или просто действие выполняется некорректно, например, вместо круга ограниченного четырьмя дугами можно получить плоскость содержащую эти дуги.
Далее следует удалить все ненужные объекты, включая остаток второго тела и лишни кривые (граница второго тела была нужна только чтобы создать поверхность EFGH). Далее полученная коленообразная поверхность разбивается на четыре. Заходим в пункт линии, нажимаем , выбираем , выбираем поверхность, затем здесь , нажимаем , далее выбираем точку А (потом всё тоже самое проделать для остальных точек), т.к. поверхность хранится в памяти параметрически, то в каждой точке существует два ортогональных направления (U и V), автоматически будет предложено одно из них, если это то направление, то нажимаем на колёсико, если нет надо явно выбрать метод , т.к. параметр V, для поверхностей созданных движением кривой вдоль кривой обычно соответствует кривой которую двигали, область изменения обоих параметров отрезок [0;1], то галочку ставим здесь , а в этом поле , ставим одно из значений: 0, 0.25, 0.5, 0.75 – каждое из них соответствует одной из четырёх точек: А, В, С, D, после этого строится координатная линия (линия с фиксированным значение параметра V). Далее находим точки пересечении построенных линий с нижней границей, т.е. точки E, F, G, H (обязательно надо заполнять толерантность). Далее кривую EFGH также надо разбить на четыре кривых: EF, FG, GH, HE. Далее исходная коленообразная поверхность разбивается на четыре, выбирается , затем выделяется поверхность и окаймляющие её кривые, после трёх таких шагов приходим к нужному результату (при создании новых поверхностей также возможно появление новых кривых). Далее аналогично был создан блок его вершины были проассоциированы с отмеченными на рисунке точками, рёбра и грани с только что созданными кривыми и поверхностями, аналогично была построена сетка и создан проект T_3, который был экспортирован в CFX.
Заключение
Все поставленные цели были достигнуты. Был проведён анализ модели двойного тигля, в ходе которого было решено несколько упростить модель, разбить геометрию на три тела, каждое из которых должно сохраняться в отдельный проект. Все три тела были построены, на каждом из тел была создана сетка, аппроксимирующая геометрию, при помощи блочной структуры. Все три тела были полностью подготовлены к решению и экспортированы в CFX.
Список литературы
ANSYS – Solutions №№ 1-5 2007.
Механика жидкостей и газов Лойцянский Л.Г. Гл. ред. физ.-мат. лит.,1987.
Теоретическая гидродинамика Милн-Томсон Мир 1964.
Справка Documentation for ANSYS ICEM CFD.