Объект Quantity хранит интегральные величины. Вы можете получить объект Quantity, используя метод GetIntegral объекта Result.
Точный тип интегральной величины зависит от вида задачи и вида интеграла. Объект Quantity только указывает на величину и позволяет узнать тип величины и характерное значение величины. Имеет тип Double, обычно без знака.
Свойство QuantityType возвращает точный тип интегральной величины и имеет тип QfQuantityType.
Свойство Value возвращает величину интеграла и имеет тип Variant. Свойство Value является свойством по умолчанию объекта Quantity, так что писать его не обязательно.
Следующий пример показывает вычисление интеграла в задаче магнитного поля синусоидальных токов. Описание и решение задачи здесь не показаны.
dim res As ELCUT.Result
..................
dim resWin As FieldWindow
dim cont As ELCUT.Contour
set resWin = res.Windows(1)
set cont = resWin.Contour
' Здесь мы строим контур в виде круга с радиусом 5 и центром в начале координат
With cont
.Delete
.AddLineTo PointXY(0, 5)
.AddLineTo PointXY(0, -5), 3.1415926
.AddLineTo , 3.1415926
End With
' Вычисление длины контура
length = res.GetIntegral(qfInt_Length)
' и площади поперечного сечения
square = res.GetIntegral(qfInt_CrossSect)
' Теперь посчитаем полный ток через контур
' Мы используем объект Quantity чтобы получить точный тип физической величины
dim q As ELCUT.Quantity
set q = res.GetIntegral(qfInt_Jtotal)
' Суммарный ток является комплексной величиной
If q.QuantityType = qfComplex Then
Dim jTotal As ComplexValue
Set jTotal = q.Value
Peak = jTotal.Peak ' Слово Value используется по умолчанию и может быть пропущено
Effective = jTotal.RMS
End If
Начиная с ELCUT версии 6.2, объект Quantity используется не только для хранения вычисленной интегральной физической величины, но и для вычисления пользовательской подынтегральной функции в методе метода GetValue интерфейса UserFunction. Для этого предназначены следующие методы, устанавливающие тип и значение физической величины:
|
Метод SetAsScalar с параметром вещественного типа |
Присваивает объекту значение, имеющее тип вещественная величина. Признак типа - константа qfScalar. |
|
Метод SetAsVector с двумя параметром вещественного типа |
Присваивает объекту значение, имеющее тип Point - двумерный вещественный вектор. Признак типа - константа qfVector. |
|
Метод SetAsComplex с двумя параметром вещественного типа |
Присваивает объекту значение, имеющее тип ComplexValue - комплексное число. Признак типа - константа qfComplex. |
|
Метод SetAsComplexVector с четырьмя параметрами вещественного типа |
Присваивает объекту значение, имеющее тип ComplexVector - комплексный вектор: двумерный вектор, компоненты x и y которого являются комплексными числами. Признак типа - константа qfComplexVector. |
|
Метод SetAsOscillated с тремя параметрами вещественного типа |
Присваивает объекту значение, имеющее тип OscillatedValue - скалярная физическая величина, изменяющаяся с двойной частотой и имеющая ненулевое среднее значение за период. Признак типа - константа qfOscillatedValue. |
|
Метод SetAsOscillatedVector с шестью параметрами вещественного типа |
Присваивает объекту значение, имеющее тип OscillatedVector - векторная физическая величина, изменяющаяся с двойной частотой и имеющая ненулевое среднее значение за период. Признак типа - константа qfOscillatedVector. |