Объект Result является ключевым при анализе результатов решения. Вы можете получить его, используя свойство Result объекта Problem, после того как был вызван метод AnalyzeResults. Формально объект Result получается из объекта IDocument и наследует все его методы и свойства. Но некоторые свойства объекта IDocument являются бесполезными для объекта Result. Так, Вы не можете сохранить его на диск - есть специальные методы для экспорта численных величин или картинки. Некоторые свойства объекта IDocument применимы и для объекта Result. Так, свойство Windows возвращает коллекцию окон, которые показывают картину поля, график или таблицу.
Когда метод AnalyzeResult объекта Problem создает объект Result, он также создает первое окно для показа картины поля (объект FieldWindow) с настройками по умолчанию. Это окно является членом коллекции Windows, связанной с объектом Result. Каждый раз, когда создается новое окно для отображения результатов, оно становится членов коллекции Windows.
Коллекция Windows в общем случае содержит окна разных типов. Для удобства получения окна картины поля имеется альтернативная возможность: метод GetFieldWindow. Этот метод принимает числовой параметр index, задающий порядковый номер окна картины поля, начиная с единицы. В большинстве случаев, значение параметра будет равно единице.
Часто при анализе результатов требуется контур (объект Contour). Контур принадлежит окну результатов (объект FieldWindow). Если надо иметь несколько контуров одновременно, то нужно завести несколько объектов FieldWindow.
Если исходная задача решалась совместно с присоединенной электрической цепью, то на этапе анализа результатов доступны данные о токах и напряжениях в каждом элементе электрической цепи. Ключевым объектом в этом контексте является CircuitResult.
Объект CircuitResult представляет ту часть результатов решения задачи, которая содержит токи и напряжения в элементах электрической цепи. Получить объект CircuitResult можно при помощи одноименного свойства CircuitResult объекта Result.
Вот список специальных методов объекта Result, который дополняет свойства и методы базового класса IDocument.
Метод GetLocalValues |
Возвращает значение физической величины в точке (FieldPoint) или производную физической величины. |
|
Метод GetIntegral |
Возвращает интегральную величину в формате Quantity. Интегрирование происходит вдоль контура (объект Contour) или по ограниченной замкнутым контуром поверхности. |
|
Метод GetCustomIntegral |
Возвращает пользовательскую интегральную величину в формате Quantity. Интегрирование происходит по линии, поверхности или объему, заданному контуром (объект Contour). Подынтегральную функцию предоставляет пользователь в виде объекта, реализующего интерфейс UserFunction. |
|
Метод GetCustomIntegralTotal |
Возвращает пользовательскую интегральную величину в формате Quantity. Интегрирование происходит по поверхности (объему), соответствующему всей расчетной области. Подынтегральную функцию предоставляет пользователь в виде объекта, реализующего интерфейс UserFunction. |
|
Метод GetXYPlot |
Создает и возвращает окно графика (объект XYPlotWindow), который показывает распределение физической величины вдоль контура (объект Contour). |
|
Метод GetTable |
Создает и возвращает окно таблицы (объект TableWindow), которая показывает распределение физической величины вдоль контура (объект Contour). |
Свойство CircuitResult |
Открывает окно анализа результатов решения цепной части задачи и возвращает соответствующий объект. |
Свойство ExportSettings |
Создает объект, управляющий параметрами экспорта решения полевой задачи. |
Метод Export |
Выполняет экспорт решения задачи для обмена с другими программами. |
Для нестационарных задач |
|
|
Свойство Time
|
Возвращает и устанавливает момент времени, для которого показана картина поля. Изначально первый сохраненный момент времени является текущим. |
|
Свойство TimesArray
|
Возвращает массив, содержащий все моменты времени, для которых решение было сохранено в файле результатов. |
|
Метод GetTimePlot
|
Создает новое или возвращает существующее окно графика во времени. |
|
Метод GetTimeTable
|
Создает новое или возвращает существующее окно таблицы во времени. |
В следующем примере показано использование методов и свойств для нестационарной задачи. Устанавливается конечное время решения, потом открывается и настраивается график во времени. Потом открывается таблица во времени для точки (10, 20), выбирается ряд и копируется в буфер обмена Windows.
sub SeeResults(res As ELCUT.Result)
Dim times() As Double
times = res.TimesArray
res.Time = times(UBound(times)) ' Выбор последнего сохраненного момента времени для показа результатов
' Создание нового графика во времени
Dim timeView As ELCUT.TimePlotWindow
Set timeView = res.GetTimePlot
Dim tsSet As ELCUT.TimePlotPicture
' Добавление двух точек к графику
' и настройка диапазона временной оси
Set tsSet = timeView.PlotSettings
With tsSet
.GridLines = False
.Markers = False
.Group = QfGrad
' Установка диапазона временной оси:
.RangeX(qfMin) = 6.5
.RangeX(qfMax) = 10
' Добавление двух точек и выбор кривой для каждой из них
Dim p As ELCUT.TimePlotPoint
Set p = .Points.Add(ELC.PointXY(0, 0))
p.curve(qfPotential) = True
p.curve(QfGrad) = True
p.curve(QfGradX) = True
Set p = .Points.Add(ELC.PointXY(0, 70))
p.curve(qfPotential) = True
p.curve(QfGrad) = True
p.curve(QfGradY) = True
End With
timeView.PlotSettings = tsSet ' Применение сделанных настроек к графику во времени
' Создание новой таблицы во времени
Dim timeTable As ELCUT.TimeTableWindow
Set timeTable = res.GetTimeTable(ELC.PointXY(10, 20))
' Выбор строки таблицы по моменту времени
' Можно также выбрать строку по её номеру
timeTable.Select 6#, 11#
' Копирование содержимого ряда в буфер обмена Windows -
' теперь данные могут быть вставлены в любую электронную таблицу или текстовый редактор
timeTable.GetData
' Закрытие таблицы
timeTable.Close
timeView.Close
End Sub