Поиск по документации
Введите не менее 2 символов
Введите не менее 2 символов
![]() |
CAE Fidesys 9.0 Руководство пользователя |
Несколько математических, строковых функций и функций Fidesys реализовано в APREPRO.
Чтобы вызвать функцию, вы вводите имя функции, за которой следует
список нулевых или более аргументов в круглых скобках.
sqrt(min(a,b*3))
В этом примере используются две функции sqrt() и min(). Параметры a и b*3 являются аргументами функции min(). Результат этой функции является аргументом для функции sqrt(). В таблицах 1-3 представлены функции, доступные в APREPRO, а также количество их аргументов и краткое описание.
В таблице 1 представлены математические функции доступные в APREPRO.
Таблица 1. Математические функции
Синтаксис |
Описание |
|||
abs(x) |
абсолютное значение x. |x| |
|||
acos(x) |
вычисляет обратный косинус от x, значение в радианах |
|||
acosd(x) |
вычисляет обратный косинус от x, значение в градусах |
|||
acosh(x) |
вычисляет обратный гиперболический косинус x |
|||
asin(x) |
вычисляет обратный синус от x, значение в радианах |
|||
asind(x) |
вычисляет обратный синус от x, значение в градусах |
|||
asinh(x) |
вычисляет обратный гиперболический синус от x |
|||
atan(x) |
вычисляет обратный тангенс от x, значение в радианах |
|||
atan2(y,x) |
вычисляет обратный тангенс от y/x, значение в радианах |
|||
atan2d(y,x) |
вычисляет обратный тангенс от y/x, значение в радианах |
|||
atand(x) |
вычисляет обратный тангенс от x, значение в радианах |
|||
atanh(x) |
вычисляет обратный гиперболический тангенс от x |
|||
ceil(x) |
возвращает наименьшее целое число, большее x |
|||
cos(x) |
вычисляет косинуса угла x, x в радианах |
|||
cosd(x) |
вычисляет косинус угла x, x в градусах |
|||
cosh(x) |
вычисляет гиперболический косинус x |
|||
d2r(x) |
переводит градусы в радианы |
|||
dim(x,y) |
вычисляет выражение x - min(x,y) |
|||
dist(x1,y1, x2,y2) |
вычисляет расстояния между точками x1,y1 и x2,y2 |
|||
exp(x) |
значение экспоненты в степени x, ex |
|||
floor(x) |
возвращает наибольшее целое число, меньшее x |
|||
fmod(x,y) |
возвращает остаток с плавающей запятой от x/у |
|||
hypot(x,y) |
возвращает значение sqrt(x2+y2) |
|||
int(x), [x] |
возвращает целую часть x, отбрасывая 0 |
|||
julday(mm, dd, yy) |
возвращает дату по Юлианскому календарю от даты mm/dd/yy |
|||
juldayhms (mm, dd, yy, hh, mm, ss) |
возвращает дату по Юлианскому календарю, соответствующий дате mm/dd/yy и времени hh:mm:ss |
|||
lgamma(x) |
вычисляет log(G(x)) |
|||
ln(x), log(x) |
вычисляет натуральный логарифм от x |
|||
log1p(x) |
вычисляет log(1+x) |
|||
log10(x) |
вычисляет десятичный логарифм от x |
|||
max(x,y) |
максимальное значение из x и y |
|||
min(x,y) |
минимальное значение из x и y |
|||
polarX(r,a) |
вычисляет r ´ cos(a),где a в градусах |
|||
polarY(r,a) |
вычисляет r ´ sin(a),где a в градусах |
|||
r2d(x) |
переводит радианы в градусы |
|||
rand(xl,xh) |
возвращает произвольное число из интервала от xl до xh |
|||
sign(x,y) |
вычисляет x ´ sgn(y) |
|||
sin(x) |
вычисляет синус угла x, x в радианах |
|||
sind(x) |
вычисляет синус угла x, x в градусах |
|||
sinh(x) |
вычисляет гиперболический синус x |
|||
sqrt(x) |
вычисляет квадратный корень x |
|||
tan(x) |
вычисляет тангенс угла x, x в радианах |
|||
tand(x) |
вычисляет тангенс угла x, x в градусах |
|||
tanh(x) |
вычисляет гиперболический тангенс x |
|||
Vangle(x1,y1, x2,y2) |
возвращает угол между векторами x1i + y1j и x2i + y2j. Угол в радианах |
|||
Vangled(x1,y1, x2,y2) |
возвращает угол между векторами x1i + y1j и x2i + y2j. Угол в градусах |
|||
В таблице 2 представлены доступные функции Fidesys:
Таблица 2. Функции Fidesys
Синтаксис |
Описание |
get_error_count() |
Возвращает число ошибок в Fidesys. |
set_error_count(val) |
Определяет количество ошибок в Fidesys равное заданному значению. |
get_warning_count() |
Возвращает количество предупреждений в Fidesys. |
set_warning_count(val) |
Устанавливает количество предупреждений в Fidesys равному заданному значению. |
Id("type") |
Возвращает ID объектов, соответствующих указанному типу. Доступные типы объектов: "body", "volume", "surface", "curve", "vertex", "group", "node", "edge", "quad", "face", "tri", "hex", "tet", or "pyramid". |
IntNum(id) |
Возвращает количество интервалов на кривой с указанным id. |
IntNum(x, y, z, ord) |
Возвращает количество интервалов на кривой, определяемой координатами центра кривой и длиной. |
IntSize(id) |
Возвращает размер элемента на кривой с указанным id. |
IntSize(x, y, z, ord) |
Возвращает размер элемента на кривой, определяемой координатами центра кривой и порядковым значением. |
Volume(id) |
Возвращает значение геометрического объема объекта с указанным id. |
Volume(x, y, z, ord) |
Возвращает значение геометрического объема объекта объем, определяемого координатами его центра и порядковым значением . |
SurfaceArea(id) |
Возвращает значение площади поверхности с указанным id. |
SurfaceArea(x, y, z, ord) |
Возвращает значение площади поверхности, определяемой координатами центра поверхности и ее порядковым значением. |
Length(id) |
Возвращает значение длины кривой с указанным id. |
Length(x, y, z, ord) |
Возвращает значение длины кривой, определяемой координатами ее центра и порядковым значением. |
Radius(id) |
Возвращает значение радиуса кривой,с указанным id, в ее срединной точки. |
Radius(x, y, z, ord) |
Возвращает значение радиуса кривой, определяемой координатами ее центра и порядковым значением. |
MinVolumeMeshQuality(id, "metric") |
Возвращает наихудшее значение указанной метрики качества
элемента из всех элементов в Доступные метрики, в скобках указано название метрики для функции: |
MinVolumeMeshQuality(x, y, z, ord, "metric") |
Возвращает наихудшее значение указанной метрики качества элемента из всех элементов объема, определяемого координатами его центра и порядковым значением. Доступные метрики,в скобках указано название метрики для функции: shape |
MinSurfaceMeshQuality(id, "metric") |
Возвращает наихудшее значение указанной метрики качества элемента из всех элементов поверхности с указанным id. Доступные метрики,в скобках указано название метрики для функции: shape |
MinSurfaceMeshQuality(x, y, z, ord, "metric") |
Возвращает наихудшее значение указанной метрики качества элемента из всех элементов поверхности, определяемой координатами его центра и порядковым значением. Доступные метрики,в скобках указано название метрики для функции:
|
MeshVolume(id) |
Возвращает общий объем всех элементов сетки в объеме с заданным id. Полученное значение будет отличаться от фактического геометрического объема, так как сетка аппроксимирует изогнутые границы линейными гранями сетки. |
MeshVolume(x, y, z, ord) |
Возвращает общий объем всех элементов сетки в объеме, определяемого координатами его центра и порядковым значением. Полученное значение будет отличаться от фактического геометрического объема, так как сетка аппроксимирует изогнутые границы линейными гранями сетки. |
HexVolume(id) |
Возвращает объем гексаэдрального элемента с указанным id. |
HexVolume(x, y, z, ord) |
Возвращает объем гексаэдрального элемента, определяемого координатами центра и порядковым значением. |
TetVolume(id) |
Возвращает объем тетраэдрального элемента с указанным id. |
TetVolume(x, y, z, ord) |
Возвращает объем тетраэдрального элемента, определяемого координатами центра и порядковым значением. |
FaceArea(id) |
Возвращает площадь четырехугольного элемента грани с указанным id. |
FaceArea(x, y, z, ord) |
Возвращает площадь четырехугольного элемента грани, определяемого координатами центра и порядковым значением. |
TriArea(id) |
возвращает площадь треугольного элемента грани с указанным id |
TriArea(x, y, z, ord) |
Возвращает площадь треугольного элемента грани, определяемого координатами центра и порядковым значением. |
MeshSurfaceArea(id) |
Возвращает общую площадь всех треугольных или четырехугольных
элементов поверхности с указанным id. Полученное значение будет
отличаться от геометрической площади поверхности, так как сетка
аппроксимирует |
MeshSurfaceArea(x, y, z, ord) |
Возвращает общую площадь всех треугольных или четырехугольных
элементов поверхности, определенной координатами центра и порядковым
значением. Полученное значение будет отличаться от геометрической
площади поверхности, так как сетка аппроксимирует |
EdgeLength(id) |
Возвращает длину грани с указанным id. |
EdgeLength(x, y, z, ord) |
Возвращает длину грани, определяемой координатами центра и порядковым значением. |
MeshLength(id) |
Возвращает длину разбитой кривой с указанным id. |
MeshLength(x, y, z, ord) |
Возвращает длину разбитой кривой, определяемой координатами центра и порядковым значением. |
Nx(id), Ny(id), Nz(id) |
Возвращает кординаты x, y или z узла с указанным id. |
Nx(x, y, z, ord) |
Возвращает координату х узла, определяемого координатами центра и порядковым значением. |
Ny(x, y, z, ord) |
Возвращает координату у узла, определяемого координатами центра и порядковым значением. |
Nz(x, y, z, ord) |
Возвращает координату z узла, определяемого координатами центра и порядковым значением. |
Vx(id), Vy(id), Vz(id) |
Возвращает координаты x, y или z точки с указанным id. |
Vx(x, y, z, ord) |
Возвращает координату х точки, определяемой координатами центра и порядковым значением. |
Vy(x, y, z, ord) |
Возвращает координату у точки, определяемой координатами центра и порядковым значением. |
Vz(x, y, z, ord) |
Возвращает координату z точки, определяемой координатами центра и порядковым значением. |
NumInGrp("groupname") |
Возвращает количество объектов группы с указанным именем. |
NumEdgesOnCurve(id) |
Возвращает количество элементов кривой с указанным id. |
NumEdgesOnCurve(x, y, z, ord) |
Возвращает количество элементов кривой, определяемой координатами центра и порядковым значением. |
NumElemsOnSurface(id) |
Возвращает количество элементов поверхности с указанным id. |
NumElemsOnSurface(x, y, z, ord) |
Возвращает количество элементов поверхности, определяемой координатами центра и порядковым значением. |
NumElemsInVolume(id) |
Возвращает количество элементов в объеме с указанным id. |
NumElemsInVolume(x, y, z, ord) |
Возвращает количество элементов в объеме, определяемом координатами центра и порядковым значением. |
NumVolumes() |
Возвращает количество объемов в модели. |
NumSurfaces() |
Возвращает количество поверхностей в модели. |
NumCurves() |
Возвращает количество кривых в модели. |
NumVertices() |
Возвращает количество точек в модели. |
NumVolsInPart("part_name") |
Возвращает количество объемов, принадлежащих сборки с указанном именем. |
PartInVol(id) |
Возвращает имя и номер сборки, которой принадлежит объем с указанным id. |
SessionId() |
Возвращает ID сессии Fidesys. |
Возвращает список всех параметров и их значений APREPRO. |
|
delete("var") |
Удаляет параметр APREPRO с заданным именем. |
В таблице 3 представлены доступные строковые функции:
Таблица 3. Строковые функции
Синтаксис |
Описание |
|||
tolower(svar) |
Переводит все символы верхнего регистра строкового параметра (svar) в нижний регистр. Она изменяет строковый параметр и возвращает результирующую строку. |
|||
toupper(svar) |
Переводит все символы нижнего регистра строкового параметра (svar) в верхний регистр. Она изменяет строковый параметр и возвращает результирующую строку. |
|||
execute(svar) |
Строковый параметр (svar) анализируется и выполняется так, как если бы это была строка, считанная из входного файла. Например: if svar="b=sqrt(25.0)", then |
|||
rescan(svar) |
Подобно execute(svar), за исключением того, что параметр svar заключен в разделители, а значит не имеет приоритетного выполнения. Например, if svar = "Create Vertex {1+5} {sqrt(5)} {sqrt(6)}",
then будет напечатано: Create Vertex 6 2.236067977 2.449489743. Разница между execute(sv1) и rescan(sv2) заключается в том, что sv1 должно быть допустимым выражением, а sv2 может быть 0 или содержать другие выражения. |
|||
getenv(svar) |
Возвращает строку, содержащую значение строкового параметра svar. Если параметр не определен, возвращается пустая строка. |
|||
get_word(n,svar,del) |
Возвращает строку, содержащую n-ое слово строкового параметра svar. Слова в строковом параметре, разделенные одним или больше символов, удаляются. |
|||
word_count(svar,del) |
Возвращает количество слов в строковом параметре svar. Слова в строковом параметре, разделенные одним или больше символов, удаляются. |
|||
strtod(svar) |
Возвращает число с плавающей запятой, равное количеству символов в указанном строковом параметре svar. |
|||
PrintError(svar) |
Выводит строковый параметр svar в stderr. |
|||
error(svar) |
Выводит строковый параметр svar в stderr, а затем завершает код со статусом ошибки завершения. |
|||
Quote(svar) |
Возвращает строковый параметр svar, заключенный в двойные кавычки. |
|||
Units(svar) |
Устанавливает переменные, полезные для работы в заданной системе измерения. Доступные размерности, описаны разделе Размерности APREPRO. |
|||
В следующем примере показано использование некоторых из строковых функций.
#{t1 = "ATAN2"} {t2 = "(0, -1)"}
#{t3 = tolower(t1//t2)}
...Параметр t3 равен строковому параметру atan2(0, -1)
#{execute(t3)}
...t3 = 3.141592654
Результат аналогичный {atan2(0, -1)}
Этот общий пример иллюстрирует работу сразу нескольких функций. В первом случае выражение строится по типу объединения двух строк вместе и передачи полученного результата на следующую строку. Затем эта строка выполняется.
В следующем примере используется функция повторного сканирования для иллюстрации базовой возможности макросов в APREPRO. В примере создаются вершины равномерно распределенные по окружности дуги (180 градусов) радиуса 10. Обратите внимание, что макрос имеет длину 5 строк.
#{num = 0} {rad = 10} {nintv = 10} {nloop = nintv + 1}
#{line = 'Create Vertex {polarX(rad, (++num-1) * 180/nintv)} {polarY(rad, (num-1) * 180/nintv)}'}
#{loop(nloop)}
#{rescan(line)}
#{endloop}
Вывод:
Create Vertex 10 0
Create Vertex 9.510565163 3.090169944
Create Vertex 8.090169944 5.877852523
Create Vertex 5.877852523 8.090169944
Create Vertex 3.090169944 9.510565163
Create Vertex 6.123233765e-16 10
Create Vertex -3.090169944 9.510565163
Create Vertex -5.877852523 8.090169944
Create Vertex -8.090169944 5.877852523
Create Vertex -9.510565163 3.090169944
Create Vertex -10 1.224646753e-15
Обратите внимание на конструкцию цикла, она написана так, чтобы автоматически повторять строку повторного сканирования. Чтобы изменить этот пример для вычисления координат 101 точки, а не одиннадцати, необходимо только изменить параметр {nintv=100}.