продукт
ELCUT Problem Builder создает задачу ELCUT по командам из скрипта .qfp. Программа задает параметры задачи, сохраняет их в файле .pbm и при необходимости запускает подготовку геометрии и данных.
В скрипте указывают тип и класс задачи, единицы измерения, параметры расчета по времени, а также имена файлов геометрии и данных. Для создания этих файлов ELCUT Problem Builder вызывает ELCUT Model Builder и ELCUT Data Builder.
ELCUT Model Builder строит геометрию по скрипту .qfs и сохраняет ее в файле .mod, а ELCUT Data Builder создает файл данных по скрипту .qfd.
Исходный код, готовая программа и полное описание в формате PDF доступны в разделе загрузки.
ELCUT Problem Builder можно запускать с параметрами командной строки или без них:
elcut_problem_builder.exe [/h] [filepath]
/h – выводит справку по запуску программы.filepath – путь к скрипту .qfp, который нужно выполнить.При запуске elcut_problem_builder.exe без параметров открывается окно выбора скрипта.
Скрипт ELCUT Problem Builder (.qfp) – это текстовый файл в кодировке UTF-8. Команды записываются в формате JSON Lines: по одному JSON-объекту в каждой непустой строке. Каждый объект содержит одну команду.
Первой строкой скрипта идёт номер версии формата QFP. Текущая версия – 1.2.
{"version":"1.2"}
analysis – тип задачи{"analysis":"code"}
| Код | Тип задачи | Файл данных |
|---|---|---|
ms | Магнитостатика | .dms |
tem | Нестационарное магнитное поле | .dms |
he | Магнитное поле переменных токов | .dhe |
es | Электростатика | .des |
dc | Электрическое поле постоянных токов | .dcf |
ec | Электрическое поле переменных токов | .dec |
tv | Нестационарное электрическое поле | .dtv |
sa | Механические напряжения | .dsa |
sht | Стационарная теплопередача | .dht |
tht | Нестационарная теплопередача | .dht |
Нестационарное магнитное поле: в скрипте .qfp используйте {"analysis":"tem"}, а в соответствующем скрипте .qfd – {"analysis":"ms"}.
problemClass – класс задачи{"problemClass":"plane-parallel"}
{"problemClass":"axisymmetric"}
units и coordinates – единицы длины и система координат{"units":"mm"}
{"coordinates":"cartesian"}
| Команда | Описание |
|---|---|
{"frequency":60} | Частота в Гц для задач переменного тока. |
{"ZLength":100} | Длина по оси Z для плоскопараллельных задач. Для осесимметричных задач не требуется. |
| Команда | Описание |
|---|---|
{"timeFinal":0.001} | Момент времени, до которого выполняется расчет. |
{"autoTimeStep":false} | Отключает автоматический выбор шага по времени. |
{"timeStep":0.000001} | Фиксированный шаг по времени. |
{"timeOutputFirst":0} | Момент времени, начиная с которого сохраняются результаты. |
{"timeOutputStep":0.000002} | Шаг по времени для сохранения результатов. |
modelFile и dataFile{"modelFile":"example.mod"}
{"dataFile":"example.dms"}
Команда modelFile задает имя файла геометрии, а dataFile – имя файла данных. Обе команды обязательны. Ссылки на эти файлы записываются в файл задачи .pbm.
Сами файлы при этом не создаются. Можно указать имена как существующих файлов, так и тех, которые будут созданы с помощью ELCUT Model Builder и ELCUT Data Builder.
Расширение файла данных зависит от типа задачи. Для нестационарного магнитного поля используется .dms, для нестационарного электрического поля – .dtv, для нестационарной теплопередачи – .dht.
modelBuilder и dataBuilder{"modelBuilder":"example.qfs"}
{"dataBuilder":"example.qfd"}
Эти команды указывают, какие скрипты должны выполнить ELCUT Model Builder и ELCUT Data Builder. ELCUT Problem Builder запоминает их и запускает при выполнении команды save, после сохранения файла задачи. Если путь к скрипту относительный, он отсчитывается от папки с файлом .qfp.
Команды modelBuilder и dataBuilder нужно записать перед командой save.
save – сохранение задачи{"save":"example.pbm"}
{"save":{"file":"example.pbm","solve":{}}}
Команда save сохраняет задачу в файле .pbm вместе со ссылками на файлы геометрии и данных. Затем выполняются скрипты, указанные в командах modelBuilder и dataBuilder.
Чтобы после подготовки файлов запустить расчет, добавьте необязательное поле solve, как во втором примере. ELCUT Problem Builder запускает решатель, но не ждет окончания расчета.
Команда save должна быть последней в файле .qfp. Команды modelBuilder или dataBuilder, расположенные после save, выполняться не будут.
В имени файла укажите расширение .pbm.
savepbm.SaveAs(file) – создает файл .pbm.pbm.SetReferencedFile(0, modelFile) – записывает ссылку на файл геометрии .mod.pbm.SetReferencedFile(1, dataFile) – записывает ссылку на файл данных.pbm.Save() – сохраняет обновленные ссылки.run_pending_builders() – выполняет скрипты, указанные в командах modelBuilder и dataBuilder.{"version":"1.2"}
{"analysis":"ms"}
{"problemClass":"axisymmetric"}
{"units":"mm"}
{"coordinates":"cartesian"}
{"modelFile":"example.mod"}
{"dataFile":"example.dms"}
{"modelBuilder":"example.qfs"}
{"dataBuilder":"example.qfd"}
{"save":"example.pbm"}
{"version":"1.2"}
{"analysis":"tem"}
{"problemClass":"axisymmetric"}
{"units":"mm"}
{"coordinates":"cartesian"}
{"timeFinal":0.001}
{"autoTimeStep":false}
{"timeStep":0.000001}
{"timeOutputFirst":0}
{"timeOutputStep":0.000002}
{"modelFile":"example.mod"}
{"dataFile":"example.dms"}
{"modelBuilder":"example.qfs"}
{"dataBuilder":"example.qfd"}
{"save":"example.pbm"}
Для запуска программы из исходного кода поместите следующие файлы Python в одну папку:
elcut_problem_builder.py
elcut_model_builder.py
elcut_data_builder.py
elcut_data_builder_common.py
elcut_data_builder_*.py
ELCUT Problem Builder подключает модули elcut_model_builder и elcut_data_builder из своей папки и вызывает в них функцию run(filename). Создавать для этих модулей отдельные папки model_builder/ и data_builder/ не нужно. Текущую рабочую папку программа не меняет.
После выполнения скрипта ELCUT Problem Builder оставляет задачу открытой в ELCUT. Можно просмотреть ее или запустить расчет.
Введите команды в поле ниже или загрузите файл .qfp. При проверке выявляются ошибки в записи JSON, неизвестные команды, отсутствие обязательных команд и неверные расширения файлов. Также проверяется, что команда save стоит последней. Готовый скрипт можно сохранить в файл. Проверка выполняется в браузере и не запускает ELCUT, ELCUT Model Builder или ELCUT Data Builder.