Справка по  ActiveField™ 

об ELCUT     Скачать     Контакты

Технология ActiveField
Обзор объектов
Диаграмма иерархии объектов
С чего начать: Объект Application
Как работать с задачами
Как работать с геометрической моделью
Как работать с физическими свойствами
Как анализировать результаты

Объекты

Свойства

Методы

Problem Object

Свойства

Методы

Краткое описание

Документ, содержащий описание задачи.

Подробное описание

Объект Problem представляет задачу ELCUT. Он является членом коллекции Documents, которая доступна через свойство Problems объекта Application. Эта коллекция содержит все задачи (объекты Problem), открытые в ELCUT.

Объект Problem содержит ссылки на все другие связанные с задачей объекты: геометрическую модель Model, документ описания физических свойств DataDoc, библиотеку физических свойств Library и вычисляемый результат Result.

Использование объекта Problem

Используйте свойство Problems (index), где index - это имя задачи или её номер, чтобы получить задачу (объект Problem). В следующем примере активизируется задача номер 1.

Problems(1).Activate

Номер задачи определятся порядком, в котором задачи были открыты или созданы. Problems (1) - это первая созданная задача, а Problems (Problems.Count) - последняя созданная.

Чтобы создать новую задачу, открыть существующую или сохранить или закрыть задачу, используются методы, общие для всех документов ELCUT. Смотрите раздел Document.

Другие свойства объекта Problem позволяют получать и изменять параметры задачи, как в диалоге Свойства задачи. Среди них тип задачи ProblemType, класс модели Class и формулировка Formulation.

Свойство ReferencedFile задает имена файлов модели (объект Model) и файла данных (объект DataDoc).

В следующем примере создается новая задача магнитостатики с параметрами такими же, как в примере "Magn1".

Dim ELC As New ELCUT.Application

Dim prb As ELCUT.Problem

DefaultFilePath = "D:\ELCUT\Examples"

Set prb = Problems.Add

'Создание новой задачи

With prb

    .ProblemType = qfMagnetostatics

'Установка типа задачи

    .Class = qfPlaneParallel

'Установка класса модели

    .LengthUnits = qfMillimeters

    .Coordinates = qfCartesian

'Задание имен файлов модели и файла данных.

    .ReferencedFile(qfModelFile) = "Magn1.mod"

    .ReferencedFile(qfDataFile) = "Magn1.dms"

    .SaveAs "Magn1.pbm"

'Сохранение новой задачи

End With

Другие методы объекта Problem позволяют решить задачу и показать окно картины поля. Когда объекты Model и DataDoc готовы, можно продолжить предыдущий пример и решить задачу Magn1 и посмотреть результаты:

If prb.CanSolve Then

    prb.SolveProblem

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

    ELC.MainWindow.Visible = True

    ' показ окна ELCUT

    prb.AnalyzeResults

    ' получение результата

End If

Асинхронное решение задач

В рассмотренном примере для решения задачи использовался метод SolveProblem без параметров. До тех пор, пока процесс решения не закончится, метод не возвращает управление в вызвавшую его программу. Во многих случаях это неудобно. Если задать входному параметру NoWait метода SolveProblem значение True, то запустится асинхронный процесс решения, и управление будет сразу возвращено в вызвавшую метод программу. В этом случае метод SolveProblem также возвращает объект SolvingState, который позволяет узнать состояние процесса решения. Объект SolvingState представляет диалоговое окно, возникающее на экране во время процесса решения. Можно показать это окно или сделать его невидимым, узнать положение индикатора процесса решения или отменить процесс решения.

Временные параметры

В нестационарных задачах необходимо указывать временные параметры, которые разделены на две группы. К первой группе относятся свойства TimeStep и TimeFinal, которые отвечают за временной шаг и конечное время вычисления. Начальный момент времени всегда равен нулю.

Ко второй группе относятся свойства TimeOutputFirst и TimeOutputstep, которые определяют те моменты времени в решении, когда решение сохраняется в файле. Только сохраненные моменты решения могут быть в дальнейшем использованы при анализе результатов.

Свойство IsTimeDomain является свойством только для чтения и позволяет узнать является ли задача (объект Problem) нестационарной. Оно возвращает True, если тип задачи (свойство ProblemType) имеет значение QFHeatTransferDynamic или qfElectromagnetics, а временной шаг TimeStep больше нуля.