Переменные
*scale-smoothing*
Описание: параметр *scale-smoothing* определяет масштаб радиусов сглаживания для некоторых функций как значение поумолчанию.
При значении параметра равном:
- 0.4 - температурное поле приобретает сильно выраженный прямоугольный характер;
- 0.6 - температурное поле приобретает заметно выраженный прямоугольный характер;
- 2.0 - температурное поле приобретает сильно сглаженный характер; количество итераций и время выполнения в функции имя (уточнить сильно растет); возникают артефакты в виде вспучивания поля там, где этого не должно быть;
- 0.8 - нижняя граница диапазона рекомендуемых значений;
- 1.0 - (уточнить) верхняя граница диапазона рекомендуемых значений.
*hw-coeff*
L = L_base * *hw-coeff* / n;
, где
L_base - разность между максимальной и минимальной координатой;
n - количество спаев находящееся в этом направлении.
Функции
radial
(gp-data &key (f-aver-or-max (function average-not-nil-value)))
Описание: функция radial возврвщает точки радиальной эпюры средних или максимальных температур, вычисляемые по полю температур gp-data.
Описание аргументов gp-data и f-aver-or-max см. функцию overal.
Пример использования:
(radial (make-t-fild-data *t03* *h-r* *x-r* :hights '(1 0 5) :ocr '(-140/100 140/100 5)))
=> ((1.0 117.59351754825514d0)
(0.8 116.22825128594086d0)
(0.6 120.09241495670072d0)
(0.4 121.40012404216553d0)
(0.2 112.57915963469195d0)
(0.0 108.11244761107314d0))
(let* ((gpdata (make-t-fild-data *t03* *h-r* *x-r*
:hights '(1 0 50)
:ocr '(-14/10 14/10 50)))
(r-aver (radial gpdata ))
(r-max (radial gpdata :f-aver-or-max #'math/stat:max-not-nil-value)))
(vgplot:plot (mapcar #'second r-aver)(mapcar #'first r-aver)
(mapcar #'second r-max)(mapcar #'first r-max)))
make-t-fild-data
(2d-arr-temp r-hights r-ocr &key (d-pts (vector 0.2 0.5)) (delta 0.1) (hights (quote (1 0 100))) (ocr (quote (-7/5 7/5 100))))
Описание: функция make-t-fild-data возвращает список вида, называемый gp-data:
'(((1.0 -1.4 117.1)(1.0 -0.84 118.9) ... (1.0 1.4 121.0))
........................................................
((0.2 -1.4 110.3)(0.2 -0.84 113.8) ... (0.2 1.4 105.7))
((0.0 -1.4 110.2)(0.0 -0.84 112.0) ... (0.0 1.4 101.9)))
на основании массива температур 2d-arr-temp вида:
#2A((117.0 120.5 118.5 112.5 115.0)
(115.0 125.5 119.5 122.5 112.0)
(113.0 135.5 129.5 132.5 117.0)
(112.0 122.5 123.5 122.5 112.0)
(111.0 115.5 119.5 102.5 102.0))
вектора относительных высот r-hights вида:
#(0.8647361 0.6811295 0.49260494 0.2991623 0.099162)
вектора относительных окружных координат r-hights вида:
#(-1.136896 -0.5684480 0.0d0 0.5684480 1.136896)
Переменые:
- d-pts - вектор базовых длин радиального (первое значение) и окружного (второе значение) направления;
- delta - точность, до которой подгоняется сумма отклонений в базовых точках от сглаженной функции;
- hights - список из трех элементов: максимальной и минимальной относительной высоты; количество интервалов по высоте;
- ocr - список из трех элементов: минимальной и максимальной окружной координаты; количество интервалов в окружном направлении.
overal
(gp-data &key (f-aver-or-max (function average-not-nil-value)))
Описание: функция overal возврвщает среднее или максимальное значение температуры, вычисляемое по полю температур gp-data.
При значении ключевого параметра f-aver-or-max:
- math/stat:average-not-nil-value - вычисляется среднее значение температуры;
- math/stat:max-not-nil-value - находится максимальнное значение температуры.
Поле температур - параметр gp-data здесь список следующего вида:
'(((1.0 -1.4 117.1)(1.0 -0.84 118.9) ... (1.0 1.4 121.0))
........................................................
((0.2 -1.4 110.3)(0.2 -0.84 113.8) ... (0.2 1.4 105.7))
((0.0 -1.4 110.2)(0.0 -0.84 112.0) ... (0.0 1.4 101.9)))
Каждый элемент расшифровывается следующим образом:
(1.0 -1.4 117.1)
1.0 - относительная высота;
-1.4 - относительная окружная координата;
117.1 - значение температуры.
Пример использования:
(overal (make-t-fild-data *t03* *h-r* *x-r* :hights '(1 0 200) :ocr '(-140/100 140/100 200))
:f-aver-or-max #'math/stat:average-not-nil-value)
=> 117.84492671184218d0
(overal (make-t-fild-data *t03* *h-r* *x-r* :hights '(1 0 200) :ocr '(-140/100 140/100 200))
:f-aver-or-max #'math/stat:max-not-nil-value)
=> 136.14404423662543d0
circular
(gp-data &key (f-aver-or-max (function average-not-nil-value)))
Описание: функция circular возврвщает точки окружной эпюры средних или максимальных температур, вычисляемые по полю температур gp-data.
Описание аргументов gp-data и f-aver-or-max см. функцию overal.
Пример использования:
(circular (make-t-fild-data *t03* *h-r* *x-r* :hights '(1 0 5) :ocr '(-140/100 140/100 55)) :f-aver-or-max #'math/stat:average-not-nil-value)
(circular (make-t-fild-data *t03* *h-r* *x-r* :hights '(1 0 5) :ocr '(-140/100 140/100 5)) :f-aver-or-max #'math/stat:max-not-nil-value)
(let* ((gpdata (make-t-fild-data *t03* *h-r* *x-r*
:hights '(1 0 50)
:ocr '(-14/10 14/10 50)))
(c-aver (circular gpdata ))
(c-max (circular gpdata :f-aver-or-max #'math/stat:max-not-nil-value)))
(vgplot:plot (mapcar #'first c-aver)(mapcar #'second c-aver)
(mapcar #'first c-max)(mapcar #'second c-max)))
make-outlined-vector
(vec vec-before vec-after)
Описание: функция make-outlined-vector возвращает вектор, у которого:
- длина больше длины вектора vec на два элемента;
- нулевым элементом которого, является vec-before;
- элементами с первого по предпоследний являются элементы вектора vec;
- последним элементом которого, является vec-after;
Пример использования:
*h-r* => #(0.8647361 0.6811295 0.49260494 0.2991623 0.099162295)
*x-r* => #(-1.1368960299671258d0 -0.5684480149835629d0 0.0d0 0.5684480149835627d0 1.1368960299671258d0)
(make-outlined-vector *h-r* 1.1 -0.1) => #(1.1 0.8647361 0.6811295 0.49260494 0.2991623 0.099162295 -0.1)
(make-outlined-vector *x-r* -1.6 1.6) => #(-1.6 -1.12 -0.56 0.0 0.56 1.12 1.6)
Методы
d-pts-scale
((t-fild <t-fild>) &key (scale *scale-smoothing*))
Описание: d-pts-scale возвращает вектор характерных размеров для сглаживания температурного поля. Как правило его следует выбирать вдвое больше среднего расстояния между спаями термопар.
- Первое значение, возвращаемого вектора, указывает характерный диаметр сглаживания по оси Y по высоте лопатки.
- Второе значение, возвращаемого вектора, указывает характерный диаметр сглаживания по оси X по окружной координате.
Пример использования:
(d-pts-scale *dn80*) => #(0.4 1.1368960299671258d0)
(d-pts-scale *dn80-6x5*) => #(0.4 0.9474133583059382d0)
h-ol-max-hw-coeff
((t-fild <t-fild>) &key (hw-coeff *hw-coeff*))
Описание: h-ol-max-hw-coeff возвращает, большую радиальную координату температурного поля t-fild, вычисленную с учетом коэффициента обрамления :hw-coeff.
Пример использования:
(h-ol-max-hw-coeff *DN80* :hw-coeff 0.0) =>1.0
(h-ol-max-hw-coeff *DN80* :hw-coeff 1.0) =>1.2
h-ol-min-hw-coeff
((t-fild <t-fild>) &key (hw-coeff *hw-coeff*))
Описание: h-ol-min-hw-coeff возвращает, меньшую радиальную координату температурного поля t-fild, вычисленную с учетом коэффициента обрамления :hw-coeff.
Пример использования:
(h-ol-min-hw-coeff *DN80* :hw-coeff 0.0) =>1.0
(h-ol-min-hw-coeff *DN80* :hw-coeff 1.0) =>1.2
w-ol-min-hw-coeff
((t-fild <t-fild>) &key (hw-coeff *hw-coeff*))
Описание: w-ol-min-hw-coeff возвращает, меньшую окружную координату температурного поля t-fild, вычисленную с учетом коэффициента обрамления :hw-coeff.
Пример использования:
(w-ol-min-hw-coeff *DN80* :hw-coeff 0.0) => -1.4211200374589072d0
(w-ol-min-hw-coeff *DN80* :hw-coeff 1.0) => -1.9895680524424701d0
w-ol-max-hw-coeff
((t-fild <t-fild>) &key (hw-coeff *hw-coeff*))
Описание: w-ol-max-hw-coeff возвращает, большую окружную координату температурного поля t-fild, вычисленную с учетом коэффициента обрамления :hw-coeff.
Пример использования:
(w-ol-max-hw-coeff *DN80* :hw-coeff 0.0) => 1.4211200374589072d0
(w-ol-max-hw-coeff *DN80* :hw-coeff 1.0) => 1.9895680524424701d0
(- 1.9895680524424701d0 1.4211200374589072d0) => 0.5684480149835629d0
(/ (* 1.4211200374589072d0 2) 5) => 0.5684480149835629d0
ocr-intervals
((t-fild <t-fild>) &key (intervals 100))
Описание: метод ocr-intervals возвращает список, содержащий:
- минимальную относительную окружную координату (ООКmin);
- максимальную относительную окружную координату (ООКmax);
- количество интервалов.
Количество интервалов является результатом округления
intervalsocr=round(intervals*(ООКmax-ООКmin))
При этом длина и высота сектора при разделении на количество интервалов равное intervals по высоте и количество интервалов равное intervalsocr в окружном направлении дает примерно равными по высоте и в окружном направлении размерами.
Пример использования:
(ocr-intervals *dn80* :intervals 100)
=> (-1.4211200374589072d0 1.4211200374589072d0 284)