Моделирование процессов функционирования технологических жидкостей в системе их применения

Загрузить архив:
Файл: 023-0016.zip (409kb [zip], Скачиваний: 37) скачать

1. Моделирование систем применения СОЖ               

Рациональное использование смазочно-охлаждающих жидкостей (СОЖ) является одним из резервов повышения эффективности эксплуатации режущего инструмента. Для инструментальной промышленности роль СОЖ особенно возрастает в связи с появлением и внедрением новых видов инструментальных материалов и необходимостью усовершенствования действующих. В этом случае использование СОЖ может значительно повысить производительность механообработки и улучшить качество обработанных поверхностей.  

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

В данной работе рассматривается задача автоматизированного проектирования систем очистки СОЖ. Т.е. заведомо имея СОЖ с определенными характеристиками загрязнения (концентрацию механических примесей и их дисперстный состав), строится оптимальная система очистки . Построение включает в себя подбор технологических и конструктивных параметров каждого элемента очистки и наиболее приемлимая схема их планировки . Котораясостоит из соединенных , определенным образом , между собой отдельных элементов очистки (фильтров) . В работе было полностью спроектированы три фильтра : бак-отстойник, центрифуга, гидроциклон.  Проектирование включает в себя построения модели в Ansys5.5 (создание программного кода) и создание гибкого программного средства , цель которого обеспечить эффективный интерфейс между пользователем и закодированными данными (в виде программы для Ansys).

   

1.1 Системы применения СОЖ

          Системы стабилизации свойств технологических жидкостей по количеству обслуживаемого оборудования классифицированы на три группы: индивидуальные (ИС), групповые (ГС) и централизованные (ЦС) . Индивидуальные применяют для обслуживания одного станка, групповые - для групп отдельно работающих или для автоматической линии в цехе, централизованные - для основного количества металлорежущего оборудования в цехе или цехах. Емкость для СОЖ и основные элементы ИС и ГС расположены непосредственно рядом с обслуживаемым оборудованием, централизованные системы - в специально отведенных помещениях в цехах или вне цеха.

1.1.1Функционирование СОЖ

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

          Как правило, индивидуальные системы оснащаются устройствами сепарации , термостабилизаторами , устройствами отделения и удаления шлама . Наряду с указанными элементами могут применятся системы бактериальной защиты, устройства автоматического обезвоживания и удаления шлама , поддержания объемов СОЖ, концентрации компонентов и бактерицидных присадок , подготовки и обработки систем перед заливкой СОЖ, контрольно-измерительную аппаратуру и др.

1.1.2Состав систем применения

В систему применения СОЖ входят следующие элементы:

· устройства для приготовления

· оборудование для оценки качества

· оборудование для транспортировки и хранения

· оборудование для очистки

· оборудование для регенерации и обезвреживания отработанных СОЖ

В данной работе рассматривается оборудование для очистки СОЖ как элемент системы применения.

В современном машиностроении для очистки и фильтрования СОЖ применяются следующие устройства :

· баки-отстойники

· флотаторы

· магнитные сепараторы и транспортеры

· гидроциклоны

· фильтры транспортеры

· центрифуги

· фильтры ленточные, работающие под давлением(и под вакуумом)

· фильтры намывные, сетчатые, пластинчатые, щелевые, тканиевые и др.

Простейшими очистителями являются баки-отстойники, на дно которых твердые частицы осаждаются под действием силы тяжести. Эффективность осаждения примесей зависит от величины поверхности осаждения, расхода, вязкости, длины пути жидкости, а также конструктивных особенностей. Емкость бака должна превышать минутный расход жидкости не менее чем в 10-15 раз.

Недостатки : малая скорость процесса очистки жидкости, необходимость увеличения размеров отстойников для повышения эффективности очистки. Баки-отстойники часто используют в сочетании с другими устройствами очистки СОЖ.

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

В магнитных сепараторах ферромагнитные частицы притягиваются г магнитному ротору и затем удаляются латунным скребком .

достоинства : сравнительно невысокая стоимость, непрерывность работы, простота обслуживания, небольшие размеры .

недостатки : невозможность использования их при обработке немагнитных материалов и недостаточная для чистовых и отделочных операций степень очистки СОЖ.

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

Принцип действия центрифуг основан на отделении инородных примесей под действием центробежных сил в жидкости при вращении ее в барабане.

Центрифуги производят тонкую очистку водных и масленых СОЖ от магнитных и немагнитных частиц, причем их пропускная способность по мере накопления шлама практически не изменяется. На операциях лезвийной обработки с целью повышения качества очистки СОЖ рекомендуется применять в сочетании с баком-отстойником магнитные сепараторы и транспортеры, напорные фильтры, центрифуги, гидроциклоны.

Системы стабилизации свойств технологических жидкостей по количеству обслуживаемого оборудования классифицированы на три группы: индивидуальные (ИС), групповые (ГС) и централизованные (ЦС) . Индивидуальные применяют для обслуживания одного станка, групповые - для групп отдельно работающих или для автоматической линии в цехе, централизованные - для основного количества металлорежущего оборудования в цехе или цехах. Емкость для СОЖ и основные элементы ИС и ГС расположены непосредственно рядом с обслуживаемым оборудованием, централизованные системы - в специально отведенных помещениях в цехах или вне цеха.

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

nможно использовать полный комплекс методов и средств стабилизации свойств СОЖ (очистки, термостабилизации, обезвоживания и удаления шлама, и др.);

nможно использовать наиболее высокоэффективные и производительные методы и средства стабилизации свойств технологических жидкостей (очистители, термостабилизаторы, системы обезвоживания шлама, биозащиты, и др.);

nцелесообразно применение многоступенчатых систем с различным сочетанием элементов и устройств очистки и стабилизации свойств СОЖ;

nвозможно применение модульных многоступенчатых систем без промежуточных емкостей для размещения СОЖ;

nсравнительно легко автоматизируются процессы контроля качества СОЖ, удаления, утилизации и транспортирования шламов, поддержания постоянных объемов, требуемой концентрации и соотношения фаз СОЖ, обработки и подготовки систем к заливке вновь приготовленных СОЖ;

nменьшая энергоемкость;

nменьшие занимаемые площади.

1.2САПР системы применения

Внастоящее время наблюдается сближениепроцессов проектирования и производстваразличных изделийна базе создания единой интегрированной системы,предусматривающей автоматизацию процессовпроектирования и производства и получившей название системы CAD/CАM . В таких системах осуществляется интеграция автоматизированных систем научных исследований (АСНИ), проектирования (САПР), технологической подготовки производства (АСТПП), контроля  (САК), управления (АСУ), производства (ГАП) на основе единой информационной базы данных (БД).

В интегрированной системе, описанной в работе , выбор системы СОЖ и ее проектирование осуществляются с помощью АСНИ и САПР путем предоставления необходимой информации из БД.

*

где и может быть использован в отношении как общего числа и суммарной площади поверхности частиц

В случае, если очиститель обеспечивает требуемое качество очистки СОЖ, то

Связь между и выражается зависимостью:

Учитывая, что большое влияние на функциональные и эксплуатационные свойства СОЖ, а также на выходные технологические показатели операций абразивной обработки заготовок оказывают характеристики законов распределения шламов, предпочтительно в некоторых случаях (для операций окончательной обработки высокоточных деталей) использовать зависимость для расчета коэффициента очистки, предложенную Е.А.Каревым:

где

частиц шлама соответственно в исходной и очищенной СОЖ;

- средник эквивалентные диаметры частиц шлама соответственно в исходной и очищенной СОЖ;

Величины и

Оценка работоспособности очистителя справедлива в данном случае только для начального момента функционирования системы и коэффициент очистки и значение ( при

Очиститель выбран правильно, если для момента времени в зависимости от значений и величина рассчитывается на ЭВМ .На величину (или ((или и очищенной не обеспечивают условие (6.3):

т.е. не уменьшают содержание механических примесей в очищенной СОЖ в требуемое число раз по сравнению с их содержанием в исходной жидкости. В этом случае используют многостадийную сепарацию технологических жидкостей.

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

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

Связь между и выражается зависимостью:

Зная величину для конкретного очистителя, можно определить

Если не обеспечено условие реализуется последовательное соединение элементов, тогда

Количество последовательно соединенных очистителей определяется соотношением:

Зависимости показывают, что выбор количества очистителей производится с учетом необходимого (требуемого) срока службы СОЖ

Степень очистки для двухстадийной системы подсчитывается по формуле:

для трехстадийной

и т.д.

Коэффициент очистки для 2-х стадийной системы при известных значениях и

а для 3-х стадийной

Коэффициент сепарации для 2-х стадийной системы будет равен

аналогично определяется величина

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

Целью обеспечения заданного качества очистки СОЖ от механических примесей при минимальном числе стадий очистки, как правило, системы нужно компоновать из очистителей, имеющих различные технологические возможности (по параметрам

1.2.4    Численное решение задач механики сплошной среды

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

где

вектор перемещения :

Сначала задаются определяющие уравнения, которые обеспечивают выполнение условий равновесия , которые обеспечивают выполнение условий равновесия и совместности. Возникает основная трудность (не говоря уже об аспектах разрешимости уравнений): могут ли уравнения адекватно отражать требования при проектировании, причем сложность геометрии, а характер нагрузок и свойств материала должна быть учтена.

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

Появление ЭВМ коренным образом изменило ситуацию в области решения дифференциальных уравнений с частными производными. Стали использовать численные методы интегрирования и дифференциирования.

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

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

Такие программы как правило расчитаны на очень широкий круг задач. Такие вычислительные программы называются программами общего назначения. Примеров может служить применяемая в данной работе система Ansys 5.5.

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

Вывод рассчитанных перемещений , напряжений и других величин.

Вывод

Нахождение решения алгебраических уравнений , соответствующих рассчитываемой конструкции

Решения

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

Библиотекаконечных элементов

1 ВВОД

Задание физической модели , геометрии, свойств материала , нагрузок и граничных условий.

Рис 1.2.4.1

1.2.5Обзор преимуществ метода конечных элементов.

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

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

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

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

Замечание:

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

- при расчетах по методу конечных элемнтов источником ошибок могут служить 2-а условия :

1.условие равновесия

2.условия непрерывности перемещений

2 Моделирование движения частиц примесей в СОЖ

2.1   Моделирование движения частиц примесей в центрифуге

Рассмотрим движение отдельной частицы погруженную в вязкую жидкость которая находится в камере радиуса R и вращается с заданной угловой скоростью

Используя второй закон Ньютона, формулу о производной вектора вращающего вокруг другого:                       

что

угловая скорость постоянна ( - вектор направлен из оси вращения к частицы (в плоскости движения)

1.Центробежная сила инерции

                                     (2.1.1)

2.Выталкивающая сила

                                            (2.1.2)

выталкивающая сила направлена в центр  

Рис.2.1.1

вращения т. к. там давление минимальное (эта задача рассматривается далее)

3.Сила вязкого трения

                                                                                            (2.1.3)

где - расстояние от центра частицы до оси вращения;

m – масса частицы;

V – объем частицы;

плотность жидкости (СОЖ);

- плотность твердой частицы;

r – радиус частицы;

- коэффициент динамической вязкости СОЖ ()

Причем считаем, что сила вязкого трения описывается законом Стокса, а твердая частица движется в радиальном направлении. Применим 2-й закон Ньютона для твердой частицы :

                                                                              (2.1.4)          подставив значения для сил получим:

                                                        (2.1.5)

     или

                                                                 (2.1.6)

Далее введем обозначения :

                                                             (2.1.7)

где

Уравнение (2.1.6) ,с учетом введенных обозначений, перепишем в виде :

                                                                                          (2.1.8)

Это есть линейное дифференциальное уравнение второго порядка с постоянными коэффициентами. Решение данного уравнения представим в виде и подставив в (2.1.8) получим:                      (2.1.9)

Общее решение уравнения (2.1.8) имеет вид :

                                                                                (2.1.10)

Коэффициенты находим из следующих начальных условий:

                                                                      (2.1.11)

При этом полагается, что частица в начальный момент времени находилась на расстоянии , а ее радиальная скорость была равна нулю. Решив эту систему уравнений получим :

                                                                (2.1.12)

В дальнейшем предполагается,что вязкость СОЖ велика, так что выполняется условие:                                                                                     (2.1.13)

То есть ,с учетом(2.1.7) :                             (2.1.14)

В этом случае                                            (2.1.15)

Следовательно                                 (2.1.16)

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

             (X0   < R – радиус центрифуги)                             (2.1.17)

2.2Моделирование движения частиц примесей в гидроциклоне

В гидроциклоне процесс сход с процессом в центрифуге, с тем лишь отличием ,что у некоторых частиц начальные условия ограничиваются меньшим радиусом ( в конусной части) . По мере продвижения частиц вниз ( в конусной части) радиус конусной части ГЦ уменьшается следовательно увеличивается угловая скорость ( т.к.   увеличение центробежной силы согласно формуле 2.1.1, а также выталкивающей силы по формуле 2.1.2. При изменении радиуса меняются введеные ранее величины по 2.1.7.

Диаметр d можно легко выразить через конструктивные параметры гидроциклона и координаты z частицы :                                                                             Рис. 2.2.1

                                                                         (2.2.1)

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

                                                                                         (2.2.2) учитывая выражения для диаметра 2.2.1 перепишем в виде :

                                                                 (2.2.3)

Подставляя в решение дифферинциального уравнения 2.1.17 выражения для и d(z) получаем следующую формулу :

                               (2.2.4)

2.3   Исследование поля давления в процессе центрифугирования

Предполагаем , что СОЖ это есть линейно-вязкая жидкость , т.e. это изотропная жидкость (в данном случае не сжимаема) , сдвиговое сопротивление которой отлично от нуля и линейно зависит от скорости деформации сдвига. Таким образом тензор напряжения есть линейная функция тензора скорости деформаций

, ,                                                 (2.3.1)

где П – скаляр, , , которые не зависят от деформации и скоростей ( линейность ).  Они постоянные , но могут зависить от температуры.

Движение вязкой жидкости рассматриваем в эйлеровом пространстве:

, причем                                          (2.3.2)

                                                         (2.3.3)

Для компонент девиатора : для компонент скоростей деформаций :           , из соотношений2.3.2 следует :

                                                                                           (2.3.4).

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

z

x

y

При решении данной задачи используются динамические уравнение движения Эйлера   , которые при соответствующих условиях принимают вид уравнений Навье – Стокса

(2.3.5),    где   .


Решение задачи :

                                                                                    Рис. 2.3.1  

ПустьOXYZ – неподвижная система координат, , т.е. вращается с постоянной угловой скоростью Переход т одной системы к другой       или если записать в виде уравнений                                      (2.3.6).   Теперь дифференциируя по времени каждое уравнение получим следующие значения для компонент вектора скорости:

                    (2.3.7)

Далее исходя из этих равенств , необходимо найти вектор . Для этого необходимо снова продифференциировать равенства 2.3.7 :

                                                       (2.3.8)

Найдем все компоненты в уравнениии Навье-Стокса  2.3.5 .

                                                                                (2.3.9)

                                            (2.3.10)

Следовательно

                                                                                                 (2.3.11)

оператор Лапласа

                                                                              (2.3.12)

Таким образом в правой части 2.3.5 остается только градиент функции давления.

Таким образом можно записать систему дифферинциальных уравнений в частных производных . Из нее необходимо найти функцию давления зависящую от 3-х координат x,y,z , т.е. p(x,y,z):

                                                                                             (2.3.13)

Решим данную систему.

:

                                                     (2.3.14)

из 2-го уравнения:

                                                       (2.3.15)

из 1-го уравнения:

                                                                             (2.3.16)

Теперь подставляя значения    ,из последнего выражения, в 2.3.15 ,которое в свою очередь подставим в 2.3.14 . Запишем выражение для p(x,y,z) используя 2.3.14 :

                                                                  (2.4.17)

В итоге полученно полное представление о скалярном поле давления.

При рассмотрении случая с гидроциклоном , т.е. углавая скорость обратно пропорциональна координате z (2.2.3) линейная система уравнений в частных производных переходит в нелинейную систему , которая если и решается , то с большим трудом либо численными методами.

3.Разработка программного обеспечения для автоматизированного проектирования систем очистики СОЖ в централизованных системах применения.

Разработка программного обеспечения (ПО) производилась в целях быстрого визуального проектирования систем очистки СОЖ .При разработке использовалось современное средство создания приложений (Delphi 3) под операционную систему Microsoft Window 95. Благодаря техническим возможностям этой операционной системы стало сравнительно просто программировать визуальный интерфейс пользователя без существенных временных затрат . В результате чего , система очистки СОЖ можно визуально представить на мониторе компьютера.

Для правильной работы ПО необходимо ,чтобы на компьютере был установлен программный комплекс Ansys 5.5 , т.к. все вычисления производятся в тесном взаимодействии двух приложений. Разработанное ПО является интегрированным программным обеспечением с системой проектирования Ansys. Интеграция осуществляется на уровне оконных сообщений . Это самый простой метод обмена данными между приложениями в ОС Windows. В дальнейшем вполне возможен переход на более совершенные методы взаимодействия т.к. COM, DCOM, OLE, DDE –технологии. Хотя эти современные технологии в текущей версии продукта Ansys не поддерживаются. Вполне возможно некоторые из них могут появится в следующих версиях Ansys.Ansys в данном случае выступает в качестве своеобразного сервера, который по заданымпараметрам элементов системы очистки строитмодель, устанавливает необходимые начальные, краевые условия, задает свойства материала, задает тип конечного элемента , размер сетки конечных элементов и т.д. Изначально предполагалось разрабатывать ПО в целях автоматизированного исследования функционирования моделей в системе очистки. Т. е. предполагалось использовать данное ПО для проведения серий экспериментов с матеметическими моделями в Ansys , в которых было бы возможно ,дляданной модели , подбирать оптимальные конструктивные и технологические параметры без непосредственного участия пользователя в перестраевании моделей в Ansys. Проблему изменения и создания моделей в Ansys ,по заданным параметрам , полностью берет на себя ПО. Но в следствии разработки программного интерфейса с Ansys и создания классов отдельных моделей (бак-отстойник, гидроциклон, центрифуга) область применения ПОрасширилась до возможности визуального конструирования всей системы очистки СОЖ с сохранением выше описанных возможностей .

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

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

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

       

3.1 Схема разработки программного обеспечения

1. Разработка моделей системы очистки СОЖ

· построение геометрии модели

· выбор типа конечного элемента

· размера сетки конечных элементов

· задание свойств СОЖ

· задание свойств примесей

2.Разработка специальных программ для Ansys (для каждой из моделей)

3.Разработка программного обеспечения

· разработка скелета программы

· разработка и программирование графического интерфейса

· программирование основных классов для используемых элементов системы очистки

· доработка интерфейса под каждый из классов

· программирование общих вычислений для всей системы в целом

· окончательная доработка и отладка

Разработка моделей системы очитки СОЖ производится непосредственно в Ansys . В данной работе разрабатывались три элемента системы очистки :

· бак-отстойник

· гидроциклон(рис. 3.1.2)

· центрифуга    (рис. 3.1.1)

Рис. 3.1.1 (модель центрифуги)

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

Причем модель разрабатывается таким образом (в основном построение геометрической модели), чтобы вторичное построение ее по программе (2 блок) производилось как можно быстрее. Программа для Ansys это ключевая со ставляющая разработанного ПО . Без возможности производить моделирование путем выполнения программы с диска компьютера не было бы возможности динамически менять параметры модели и следовательно разработка подобного ПО не имело бы смысла. Эта возможность позволяет варьировать различные параметры модели начиная от геометрических кончая свойствами отдельных примесей в СОЖ , начальными и краевыми условиями. Сама программа для Ansys не писалась непосредственно, а собиралась из готовых рабочих блоков , которые генерируются самим Ansys’ом. При выполнении каких либо действий в Ansys постоянно обновляется файл FILE.LOG (Ansys’ом) , который находится в рабочей директории Ansys , путем добавления соответствующей действию команды. Эта функция Ansys’а(генерация собственных команд) избавила от необходимости написания специальных программ.  

При программировании ПО использовалось объектно-ориентированное программирование . Сначала разрабатывался

                                                                    Рис. 3.1.2 (модель гидроциклона)         

абстрактный родительский класс - TAbstractElement , который скрывает в себе все основные функции по обеспечению обмена данными между двумя приложениями, а также построение соответствующей модели в Ansys , задания необходимый свойств и параметров, а также по обновлению модели в Ansys (уже загруженной). От этого родительского класса наследуются уже классы для работы с конкретными моделями (TBak, TCyclon, TCentr). Эти классы содержат уникальные для соответствующей модели методы и поля , которые обеспечивают полноценный механизм взаимодействия с Ansys’ом.

Программа разрабатывалась таким образом , что ее можно легко модернизировать , усовершенствовать, добавить новые функции , которые бы повышали автоматизированность вцелом. Например:

· возможность сохранения изагрузки схемы в отдельном файле в специальном формате

· функции автоматического подбора конструкционных и технологических параметров, а так же планировки схемы целиком

· распараллеливаниезадачи в компьютерной сети (для повышения производительности программы)

· добавление новых элементов – фильтров

· автоматический подбор насосов для каждого элемента (например из локальной базы данных)

                                                          Рис.3.1.3



В результате моделирования в Ansys были полученны поля скоростей и распределения давлений для гидроциклона и центрифуги .

Рис.3.1.4

3.2Руководство пользователя

Здесь коротко описываются обязательные действия со стороны пользователя, которые обеспечут корректное решение задачи :

1. В файле PATH.INI указать путь к запускному файлу Ansys и его рабочий каталог

2. Запустить файл Project.exe                                               


                       Рис. 3.2.1

3. Установить с помощью мыши на экране все элементы которые входят в данную систему очистки СОЖ (в принципе имеется возможность добавлять их в дальнейшем)

4. Соединить элементы между собой при помощи команды главного меню : ЭлементыСоединить, можно тут же удалить связь : ЭлементыРазъединить

5. Инициализировать объекты , т.е. либо сопоставить в соответствие каждому элементу уже готовую базу данных Ansys, либо сначала задать свойства элемента , а затем создать БД . Таким образом могут возникнуть две ситуации :

· база данных уже существует в рабочем каталоге Ansys ,тогда нужно выбрать в главном меню : ОперацииИнициализировать из БД , или с помощью локального меню элемента

· базы данных не существует , тогда необходимо выбрать в главном меню : ЭлементыСвойства или соответственно из локального меню и заполнить все свойства элемента после чего выбрать из главного меню ОперацииСоздать БД

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


Рис.3.2.2

Замечание: свойства примесей задаются только в первом элементе системы .

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

7. Ответ просматривать илииз файла Report1.txt или из главного меню : РешениеСоздать отчет

Описание функций главного меню :

1. Файл    :

· [Новая модель] – уничтожение старой системы и подготовка к проектирования новой

· [Выход] – выход из программы

2. Элементы :

· [Добавить] – добавление нового элемента в систему

· [Удалить] – удаление выделенного элемента из системы вместе со связями

· [Соединить] – установка связи между элементами


Рис. 3.2.3

· [Разъединить] – удаление связи между элементами

·


[Свойства] – выводит окно со свойствами выделенного элемента

           Рис. 3.2.4

3. Операции :

· [Инициализировать из БД] -загружает с текущем именем элемента БД с моделью в Ansys и если БД соответствует данной модели , то устанавливает параметры элемента в соответствии с моделью загруженной в Ansys

· [Обновить БД в Ansys] -при изменении каких либо параметров элемента необходимо перестроить БД с этой моделью по новым параметрам

· [Загрузить БД в Ansys] – загрузка модели с соответствующим именем в Ansys (из текущего рабочего каталога Ansys)

· [Сохранить БД] – сохраняет текущую модель в Ansys’е на диске . Применяется сразу после создания или изменения модели

· [Создать БД] – создает базу данных модели в Ansys . Вначале строится программа для Ansys (в корневом каталоге программы файл Process.prg) в соответствии с заданными параметрами элемента затем дается команда Ansys’у выполнить эту программу ( после этой операции , если параметры больше не планируется изменятьБД следует сохранить на диске )

· [Удалить решение] – удаляет у текущего элемента системы файл (*.rfl) с решением (если таковой существует в рабочем каталоге Ansys

4. Решение :

· [Решать] – дает команду Ansys’у начать решать поставленую задачу . Для того , чтобы эта операция успешно выполнилась необходимо соблюдение нескольких условий:

· Для каждого из элементов системы необходимо наличие корректной БД реальной модели в рабочем каталоге Ansys

· Ориентированный граф системы должен удовлетворять следующим требованиям :

· Отсутствие циклов

· Для любой вершины графа существует путь через нее от истока к стоку

Постпроцессор :

· [Поле скоростей] – вывод в графическом виде поля скоростей выделенного элемента . Команда выполняется корректно в том случае, если существует ( на диске ) реальная Ansys – модель и соответствующий файл с результатами проделанных вычислений

· [Распределение примесей] – вывод в графическом виде распределения примесей в выделенном элементе. Команда выполняется корректно в том случае , если существует ( на диске ) реальная Ansys – модель и соответствующий файл с результатами. Если модель трехмерная , то результат выводится в продольном сечениидля более наглядного просмотра

· [Создать отчет] – эта команда выполняется после просчета системы целиком и создает в корневом каталоге программы файл с результатами данного проектирования (Report1.txt). В этом файле содержится информация о входных  (концентрация примесей Cпр, дисперстный состав dпр, расход жидкости Q, параметры каждого очистителя) и выходных параметрах.

5. Ansys :

· [Вывод всех окон] – показываются все окна Ansys для того, чтобы пользователь мог производить свои специфические действия

· [Вывод графики] – выводится графическое окно Ansys для того, чтобы пользователь мог сразу посмотреть результат выполнения таких команд ка :[Поле скоростей] и т.д.

3.2 Экспериментальные исследования на примере трехстадийной системы очистки.

В качестве экспериментальной модели исспользовалась система трехстадийной очистки схема которой приведина на рис.3.3.1

Гидроциклон2

Цетрифуга1

Бак-отстойник1

Гидроциклон1


Рис.3.3.1

На вход системы (в бак-отстойник) подается СОЖ , дисперстный состав которой изображен на графике 3.3.3. Эти данные приведены в таблице 3.3.2 .На графике показана концентрация примесей в зависимости от диаметра частиц.

При непосредственном моделировании системы ,в разработанном ПО , брались только четыре узловые точки в данной кривой (рис.3.3.3). Т.к. Ansys не допускает задание произвольного вида дисперстного состава ,например в виде интерполяционного многочлена.

Процент содержания примесей C (%)

Диаметр частиц (мкм)

10

8

15

5

20

3

30

1.5


Рис.3.3.2 (начальное распределение частиц)

Рис.3.3.3

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


Рис.3.3.4

Т.е. рассматриваемая система имеет степень очистки 98% . Ниже приведены данные о распределении примесей в табличном виде.

Процент содержания примесей C (%)

Диаметр частиц (мкм)

10

0,16

15

0,1

20

0,06

30

0,03

Вывод :

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

Приложение 1.

Текст части основного модуля исходного кода ПО

unit unBaseClasses;

interface

uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

       StdCtrls, Extctrls, Grids, RxCtrls;

constAnsysOutWindowWidth = 200;

       AnsysOutWindowHeight = 100;

       AnsysGraphWindowWidth = 400;

       AnsysGraphWindowHeight = 270;

       IconWidth = 100;                  // размеры панели ( иконок )

       IconHeight = 139;

       FocusColor = clMaroon;// цвет выделения

       StartPointRad = 5;               // диаметр в начале вектора связи

       EndPointLength = 10;              // размер стрелки в векторе связи

       VectorColor = clMaroon;             // цвет векторов

       VectorWidth = 2;                  // толщина векторов

       BakName      = 'BAK';             // имена элементов

       CentrName    = 'CENTR';

       CyclonName   = 'CYCLON';

       RunFile = 'Process';        // имя фала с готовой программой готовой для запуска в Ansys

       ReportFile = 'Report1';     // имя файла отчета

       AnsysExeName         = 'Ansysir';          // имя испол. файла Ansys

       ClassNameEditWindow= 'AnsCmdPopup';      // имена классов основных окон Ansys

       ClassNameEditStr     = 'AnsCmdEdit';

       ClassNameMainMenu    = 'MainMenuPopup';

       ClassNameGraphicWnd= 'GraphPopup';

       ClassNameMainWnd     = 'Ansys 5.5';

       ClassNameInfoWnd     = 'ListerPopup';

       ClassNameInfoEdit    = 'RichEdit';

       ClassNameToolbar     = 'ToolbarPopup';

       ClassNameOutWnd      = 'tty';

       SpNVick = 10000;        // вязкость у всех примесей ( одинакова )

       VickAll = 0.001;        // вязкость СОЖ

       DensAll = 1000;         // плотность СОЖ

       DensAll1 = 20;          //

       DiamFraction = 5E-5;    // эталонные параметры

       DensFraction = 10000;   //

       Time: double = 12;                            // время эксперимента

type

TVars = array[1..20] of double;

PVars = ^TVars;

TIntList = array[1..40] of hwnd;

PIntList = ^TIntList;

TSpeciesProperty = record

    spNStart: double;       // входная концентрация

    spNDens: double;        // плотность

    spNMassFrac: double;    // массовая доля

end;

TSpeciesPropertys = array[1..9] of TSpeciesProperty;

PSpeciesPropertys = ^TSpeciesPropertys;

TAbstractElement = class(TPanel)     // абстрактный класс

private

   hCanDrag: boolean;// если = true, то можно перетаскивать

   hFocused: boolean;// = true, если фокус на элементе

   AnsysExeFile: string;         // запускной файл Ansys

   AnsysWorkDir: string;         // рабочая директория Ansys

   function GetSpeciesResult(n: byte): double;

   procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;

   procedure WMSetFocus(var m: TWMSetFocus); message WM_SETFOCUS;

   procedure WMKillFocus(var m: TMessage); message WM_KILLFOCUS;

protected

   CurrentPath: string;

   hlabel: TRxLabel;                            // заголовок иконки

   hCap: TLabel;                                //инфо об объекте ( на самой иконке ) если бит = 0, то не измен.

   // Возвращаемые параметры из Ansys

   hVelocityResult: double;                     // для результирующей скорости

   hSpeciesResult: array[1..9] of double;       // для концентрации мех. примесей

   // Интерфейс ( c Ansys 5.5 ):

   procedure ClearEditStr;                        //очистка сроки ввода команд Ansys

   procedure Run(Macros: string; x, x1: hwnd);    //аналогично

   procedure RunProgram(Prog: TStrings);          //  запуск группы команнд на выполнение в Ansys

   procedure DelayAnsys;                          //задержка пока не закончится выполнение команды в Ansys

   function GetName: string; virtual; abstract;         // получаем имя элемента

   procedure SetStartConditionSP; virtual; abstract;    // установка нач условий для примесей ( у всех разная)

   procedure UpdateParams; virtual; abstract;           // обновление надписи на иконке

   procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;       // обесп. перетаскивание

                             Shift: TShiftState; X, Y: Integer);

   procedure Image1Click(Sender: TObject);             // обесп. вызов окна свойств для данного эл.DblClick

public

   Name: string;                                // имя элемента

   kolvosp: double;                             // кол-во примесей

   spNBegin: TSpeciesPropertys;                 // данные о примесях

   hChangeFlag: word;                           // флаг содержит инфо об изменении параметров в диалоге

   hInElem: TList;                              // входящие элементы

   hOutElem: TList;                             // исходящие элементы

                                                // 1..7 биты осн. параметры, 8 биты - примеси

   hChangeTotal: word;                          // аналогично, но сумма всех изменений ( or )

   property VelocityResult: double read hVelocityResult;

   property SpeciesResult[n: byte]: double read GetSpeciesResult;

   property Focused: boolean read hFocused;

   // возвращает в массиве все конструктивные параметры системы

   procedure GetConstrParams(hPars: PVars); virtual; abstract;

   procedure UpdateParamsFromAnsys; virtual; abstract;// обновление параметров по данным из Ansys

   procedure RunMacros(Macros: string);           //  выполнение команды в Ansys

   // Сервис :

   function ResultExist: boolean;    // = true, если существует файл результата ( имя файла Name+'.rfl)

   function DBExist: boolean;        // = true, если соответств. БД существует

   function ExistPartOfProgram: boolean;      // = true. если файлы для прогр Ansys существуют в тек каталоге

   function CurrentDBInAnsys: string;// возвращает имя тикущей в Ansys БД

   procedure DeleteResult;           //  удалить результаты

   // Данные и программы :

   procedure ExecuteAnsys;// запуск Ansys 5.5

   procedure ExecuteAnsysProgram;     // запуск программы для Ansys с именем RunFile из текущей директории

   procedure LoadDB;                  // загрузка БД в Ansys с текущим Name

   procedure SaveDB;                  // запись текущей модели (в Ansys'е) на диск

   procedure SolverTask;              // решать текущую в Ansys'е задачу

   procedure UpdateAnsysDB; virtual; abstract;      // изменение модели в Ansys в соответствии с изменениями

   procedure CreateWorkProgram; virtual; abstract;// сборка рабочей программы для Ansys по текущим значениям параметров

   function DBAnsysIsModel: boolean; virtual; abstract;    // = true, если в Ansys загружена нужная модель

   // Результаты :

   procedure ShowVelocity(n: byte);                                        // показать поле скоростей

   procedure ShowPressure;                                        // показать распределение давление

   procedure ShowSpeciesN(n: byte);                               // показать распределение примеси с номером n

  procedure SolveResultSpN(Num: byte); virtual; abstract;

                                                   // вычисление концентрации примеси ны выходе

                                                   // по номеру имя примеси типа SP0X

                                                   // результат записывается в hSpeciesResult[Num]

   procedure ControlParams(res: PVars); virtual; abstract;// изменяет биты hChangeFlagв соответствии с

                                                              //измен парам. в диалоге

   //  обновление текущей в Ansys БД

   procedure ChangingTime;                            // изменение времени процесса

   procedure ChangingSPInfo;                          // изменение инфо о примесях

   procedure ChangingJobName;                         // изменение имени модели в Ansys

   // Соединения :

   procedure DrawConnects;                            // соед со следующими элементами

   procedure AddConnect(Elem: TAbstractElement);      // добавляет ссылку на присоед элем впереди

   procedure DeleteConnect(Elem: TAbstractElement);   // удаляет связь если (такая должна сущ.)

   function ExistOutConnect(Elem: TAbstractElement): boolean; // = true, если связь существует на выходе

   function ExistInConnect(Elem: TAbstractElement): boolean; // = true, если связь существует на входе

   procedure ExecutePropertyDialog; virtual; abstract;// выводит диалог свойств для тек. элемента

   procedure CalcMassFraction(kolvo: byte);// вычисл массовою долю

   function GetMassFraction(hStart: double): double; virtual; abstract; // получение массовой доли

   constructor Create(AOwner: TComponent; x, y: integer);

   destructor Destroy; override;

end;

// Вспомогательные функции :

function GetNumFirstWord(str: string; uk: integer): integer;   // возвращает индекс на первое слово в строке

function GetFirstWord(str: string; uk: integer): string;       // возвращает первое слово в строке

function GetRightFloat(str: string): string;                   // заменяет точку на запятую

function GetLeftFloat(str: string): string;                    // наоборот

procedure GetParamStrings(m: TMemo);                              //копирует текст из Ansys инфо-окна

function GetValueFloat(Value: string; l: TMemo): double;          // получиние значения параметра Value

function GetValueInt(Value: string; l: TMemo): integer;

function GetValueStr(Value: string; l: TMemo): string;                      // возвращает строковое значение или ''

function SetNumBit(n, Value: word): word;                         // устан n-ый бит в слове   ( n>=1 )

function GetNumBit(n, Value: word): boolean;                      // проверка, если n-ый бит устан., то true

                                             // если все введенные поля верны, то = true, иначе фокус на неправ. поле

                                             // в диалоговых окнах (Parent - где находятся TEdits

                                             // Edit - корень имени TEdit , например 'Edit' или 'EditC'

function TestValues(Parent: TWinControl; Edit: string; res: PVars): boolean;

function TestGrid(hElem: TAbstractElement; hGrid: TStringGrid;               // аналогично но проверяет таблицу

                    mas: PSpeciesPropertys; var Changing: boolean): boolean;   // Changing = true если параметры отличны от старых в mas

// Управление окнами Ansys 5.5 :

procedure ShowAnsysGraphic;           // графическое окно

procedure HideAnsysGraphic;

procedure HideAnsys;                  // все остальные окна

procedure ShowAnsys;

procedure BringToFrontOutWnd;         // выводит на перед план окно вывода Ansys

procedure ZommerOutWnd;               // увеличивает окно вывода Ansys (при вычислениях)

procedure RestorerOutWnd;             // возвращает окно вывода на прежнее место

procedure DrawConnectVector(hCanv: TCanvas; r1, r2: TPoint);   // рисует вектор (для отображения связей) :

//procedure AnsysFlash;                    // вывод из зависания Ansys 5.5

procedure WaitStillAnsysLoading;           // ожедание загрузки Ansys

procedure AnsysTerminate;                  // закрыть Ansys 5.5 (при завершении приложения)

implementation

uses unBak, unMain, unSplash;

//******************************************************************************

constructor TAbstractElement.Create(AOwner: TComponent; x, y: integer);

var f: TextFile; Glyph: TImage; NameCount: word;

begin

Inherited Create(AOwner);

// TabStop:=true;

hFocused:=false;

hInElem:=TList.Create; hOutElem:=TList.Create;

hCanDrag:=true;

Width:=IconWidth; Height:=IconHeight;

BevelInner:=bvNone; BevelOuter:=bvNone;

Left:=x; Top:=y;

Glyph:=TImage.Create(Self);

Glyph.Align:=alClient; Glyph.Left:=0; Glyph.Top:=0; Glyph.Stretch:=true;

Glyph.Picture.Bitmap.LoadFromResourceName(hInstance, 'bit1');

Glyph.Parent:=Self; Glyph.Show; Glyph.OnMouseDown:=Image1MouseDown;

Glyph.OnDblClick:=Image1Click;

Parent:=TWinControl(AOwner);

CurrentPath:=GetCurrentDir;

if CurrentPath[Length(CurrentPath)] <> '' then CurrentPath:=CurrentPath+'';

AssignFile(f, CurrentPath+'Path.ini');

try Reset(f); except fail:=false; Exit end;      //MessageDlg('Не найден файл конфигурации !', mtError, [mbOK], 0);

readln(f, AnsysExeFile); AnsysExeFile:=AnsysExeFile+AnsysExeName+'.exe';

readln(f, AnsysWorkDir);

CloseFile(f); Name:='';

// надпись заголовка на иконке :

hlabel:=TRxLabel.Create(Self); hlabel.Top:=8; hlabel.Transparent:=true; hlabel.AutoSize:=true;

hlabel.Font.Size:=10; hlabel.Font.Style:=[fsUnderline, fsBold];

hlabel.Show; hlabel.OnMouseDown:=Image1MouseDown; hlabel.OnDblClick:=Image1Click;

NameCount:=1; Name:=GetName+IntToStr(NameCount);

while NameExist(Name) do begin inc(NameCount); Name:=GetName+IntToStr(NameCount) end;

hlabel.Caption:=Name;

hlabel.Left:=round(Width/2-hlabel.Width/2);

hlabel.Parent:=Self;

hVelocityResult:=0

end;

destructor TAbstractElement.Destroy;

begin

hInElem.Free; hOutElem.Free;

Inherited Destroy

end; //*****************************************************************************

procedure TAbstractElement.ChangingJobName;

begin

RunMacros('FINISH'#13'/FILNAM,'+Name+#13+'*SET,JOBNAME,'#39+Name+#39);

end;

procedure TAbstractElement.ChangingSPInfo;

var i: byte;

begin

RunMacros('/PREP7');

if trunc(kolvosp) = 0 then begin        // отключение примесей

  RunMacros('FLDATA1,SOLU,SPEC,0'#13'*SET,KOLVOSP,0');

Exit

end;

// разрешить исп. примеси :

RunMacros('FLDATA1,SOLU,SPEC,1');

// параметры связанные с примесями :

for i:=1 to trunc(kolvosp) do           //   начальные концентрации примесей

  RunMacros('*SET,spbegin'+IntToStr(i)+','+GetLeftFloat(FloatToStr(SpNBegin[i].SpNStart)));

for i:=1 to trunc(kolvosp) do           //   плотности примесей

  RunMacros('*SET,spdens'+IntToStr(i)+','+GetLeftFloat(FloatToStr(SpNBegin[i].SpNDens)));

for i:=1 to trunc(kolvosp) do begin     //   плотности примесей

  RunMacros('*SET,spmass'+IntToStr(i)+','+GetLeftFloat(FloatToStr(SpNBegin[i].SpNMassFrac)));

end;

RunMacros('*SET,KOLVOSP,'+GetLeftFloat(FloatToStr(kolvosp)));

RunMacros('KEYOPT,1,1,kolvosp,'#13'MSDATA,2,8314.29,');

for i:=1 to trunc(kolvosp) do begin

  RunMacros('MSSPEC,'+IntToStr(i)+',SP0'+IntToStr(i)+',Molec,1,'#13+

'MSQUAD,'+IntToStr(i)+',0,0,'#13+

            'MSNOMF,'+IntToStr(i)+','+GetLeftFloat(FloatToStr(spNBegin[i].spNMassFrac))+',')

end;

for i:=1 to trunc(kolvosp) do begin

  RunMacros('MSPROP,'+IntToStr(i)+',DENS,CONSTANT,'+GetLeftFloat(FloatToStr(SpNBegin[i].SpNDens))+

',0,0,0,'#13+

'MSVARY,'+IntToStr(i)+',DENS,0'#13+

            'MSPROP,'+IntToStr(i)+',VISC,CONSTANT,'+IntToStr(SpNVick)+',0,0,0,'#13+

'MSVARY,'+IntToStr(i)+',VISC,0')

end;

SetStartConditionSP       // установка начальных условий

end;

procedure TAbstractElement.ChangingTime;

var l: TStringList;

begin

RunMacros('/PREP7');

l:=TStringList.Create;

l.Text:='*SET,time,'+FloatToStr(Time)+#13+

         '/PREP7'#13+

         'FLDATA2,ITER,EXEC,time,'#13+

         'FLDATA2,ITER,OVER,0,'#13+

         'FLDATA2,ITER,APPE,0,'#13+

         'FLDATA3,TERM,VX,0.01,'#13+

         'FLDATA3,TERM,VY,0.01,'#13+

         'FLDATA3,TERM,VZ,0.01,'#13+

         'FLDATA3,TERM,PRES,1e-008,'#13+

         'FLDATA3,TERM,TEMP,1e-008,'#13+

         'FLDATA3,TERM,ENKE,0.01,'#13+

         'FLDATA3,TERM,ENDS,0.01,'#13+

         'FLDATA5,OUTP,SUMF,0,';

RunProgram(l);

l.Free

end;

function TAbstractElement.CurrentDBInAnsys: string;

var memo: TMemo;

begin

RunMacros('*STAT');      // выз окно с параметрами модели в Ansys

memo:=TMemo.Create(Self); memo.Top:=-1000; memo.Width:=2000; memo.Show; memo.Parent:=Self;

GetParamStrings(memo);    // получение данных из Ansys

Result:=GetValueStr('JOBNAME', memo);

memo.Free

end; procedure GetParamStrings(m: TMemo);

var x, x1: hwnd; buf: pchar; len: integer;

begin

x:=FindWindow(ClassNameInfoWnd, nil); x1:=FindWindowEx(x, 0, ClassNameInfoEdit, nil);

if (x = 0) or (x1 = 0) then begin MessageDlg('Не найдено окно с результатами !', mtError, [mbOK], 0); Exit end;

ShowWindow(x, SW_HIDE);                          //   скрываем окно с информацией

len:=SendMessage(x1, WM_GETTEXTLENGTH, 0, 0);

buf:=StrAlloc(len);

SendMessage(x1, WM_GETTEXT, len, longint(buf));

SendMessage(m.Handle, WM_SETTEXT, longint(buf), longint(buf));

StrDispose(buf);

PostMessage(x, WM_CLOSE, 0, 0);

end; procedure TAbstractElement.LoadDB;

begin

RunMacros('RESUME,'+Name+',db,..,0');

RunMacros('ERASE');

RunMacros('/FILNAM,'+Name);

ChangingJobName;

RunMacros('/PSF,DEFA,,1'#13'/PBF,DEFA,,1'#13'/PSYMB,CS,0'#13'/PSYMB,NDIR,0'#13+      // очистка от нагрузок

           '/PSYMB,ESYS,0'#13'/PSYMB,LDIR,0'#13'/PSYMB,ECON,0'#13'/PSYMB,XNODE,0'#13+// чтобы не загромождать экран

           '/PSYMB,DOT,1'#13'/PSYMB,PCONV,'#13'/PSYMB,LAYR,0'#13'/PBC,ALL,,0'#13+

           '/REP'#13'LPLOT')

end;

procedure TAbstractElement.SaveDB;

begin

RunMacros('SAVE');

end;

procedure TAbstractElement.ShowVelocity(n: byte);

begin

RunMacros('/POST1'); RunMacros('SET,LAST'); RunMacros('/VSCALE,1,'+IntToStr(n)+',0');

RunMacros('PLVECT,V,,,,VECT,ELEM,ON,0')

end;

procedure TAbstractElement.ShowPressure;

begin

RunMacros('/POST1'); RunMacros('SET,LAST'); RunMacros('PLNSOL,PRES,,0,')

end;

procedure TAbstractElement.ShowSpeciesN(n: byte);

begin

RunMacros('/POST1'); RunMacros('SET,LAST'); RunMacros('PLNSOL,SP0'+IntToStr(n))

end;

procedure TAbstractElement.SolverTask;

begin

RunMacros('/SOLU'); RunMacros('SOLVE')

end;

procedure TAbstractElement.ExecuteAnsysProgram;

begin

RunMacros('/OPT');

RunMacros('OPANL,'+RunFile+',prg,' + CurrentPath);

RunMacros('OPEXE');

hChangeFlag:=0; hChangeTotal:=0

end;

procedure TAbstractElement.RunMacros(Macros: string);

var x, x1: hwnd;

begin

// Поиск окна ввода :

x:=FindWindow(ClassNameEditWindow, nil);

if x = 0 then begin MessageDlg('Не найдено окно ввода в Ansys !', mtError, [mbOK], 0); Exit end;

// Поиск строки ввода :

x1:=FindWindowEx(x, 0, ClassNameEditStr, nil);

if x1 = 0 then begin MessageDlg('Не найдена строка ввода в Ansys !', mtError, [mbOK], 0); Exit end;

// Посылка данных :

PostMessage(x, WM_SETFOCUS, 0, 0);

SendMessage(x1, WM_SETTEXT, longint(Macros), longint(Macros));

SendMessage(x1, WM_CHAR, ord(27), 0);

PostMessage(x1, WM_KEYDOWN, 13, 0);

ClearEditStr;

while SendMessage(x1, WM_GETTEXTLENGTH, 0, 0) <> 0 do

end;

procedure TAbstractElement.Run(Macros: string; x, x1: hwnd);

begin

// Посылка данных :

PostMessage(x, WM_SETFOCUS, 0, 0);

SendMessage(x1, WM_SETTEXT, longint(Macros), longint(Macros));

SendMessage(x1, WM_CHAR, ord(27), 0);

PostMessage(x1, WM_KEYDOWN, 13, 0);

ClearEditStr;

while SendMessage(x1, WM_GETTEXTLENGTH, 0, 0) <> 0 do

end;

procedure TAbstractElement.RunProgram(Prog: TStrings);

var i: integer; x, x1: hwnd;

begin

if not assigned(Prog) then Exit;

if Prog.Count < 1 then Exit;

// Поиск окна ввода :

x:=FindWindow(ClassNameEditWindow, nil);

if x = 0 then begin MessageDlg('Не найдено окно ввода в Ansys !', mtError, [mbOK], 0); Exit end;

// Поиск строки ввода :

x1:=FindWindowEx(x, 0, ClassNameEditStr, nil);

if x1 = 0 then begin MessageDlg('Не найдена строка ввода в Ansys !', mtError, [mbOK], 0); Exit end;

for i:=0 to Prog.Count-1 do Run(Prog[i], x, x1);

Run('FINISH', x, x1)

end;

procedure TAbstractElement.DelayAnsys;

var x, x1: hwnd;

begin

x:=FindWindow(ClassNameEditWindow, nil);

if x = 0 then begin MessageDlg('Не найдено окно ввода в Ansys !', mtError, [mbOK], 0); Exit end;

// Поиск строки ввода :

x1:=FindWindowEx(x, 0, ClassNameEditStr, nil);

if x1 = 0 then begin MessageDlg('Не найдена строка ввода в Ansys !', mtError, [mbOK], 0); Exit end;

while SendMessage(x1, WM_GETTEXTLENGTH, 0, 0) <> 0 do

end;

procedure TAbstractElement.ClearEditStr;

var x, x1: hwnd; h: hdc; c: TCanvas;

begin

x:=FindWindow(ClassNameEditWindow, nil);

if x = 0 then begin MessageDlg('Не найдено окно ввода в Ansys !', mtError, [mbOK], 0); Exit end;

x1:=FindWindowEx(x, 0, ClassNameEditStr, nil);

if x1 = 0 then begin MessageDlg('Не найдена строка ввода в Ansys !', mtError, [mbOK], 0); Exit end;

h:=GetDC(x1); c:=TCanvas.Create; c.Handle:=h;

c.Pen.Color:=RGB(179, 179, 179); c.Brush.Color:=RGB(179, 179, 179); c.FillRect(Bounds(1, 1, 514, 18));

ReleaseDC(x1, h); c.Free

end;

end.



* Индекс