콘텐츠로 이동

8.1.6 사용자 정의 수식

[Note]

이 기능은 현재 베타 기능이며 향후 개발되어 배포되는 Flow360 버전에 따라 변경될 수 있습니다.

사용자 정의 표현식은 기존 정의된 솔버 변수를 사용하여, 새로운 변수를 정의하거나, 완전히 다른 해석 결과를 도출할 수 있는 강력한 도구 입니다. 사용자 정의 표현식의 주요 사용 사례는 다음과 같은 범주로 나눌 수 있습니다.

8.1.6.1 사용자 정의 수식을 작성하는 방법

표현식은 C 언어와 매우 유사한 구문을 따릅니다. 그러나 안전성을 위해 모든 C 언어 기능을 지원하지는 않는다는 점을 언급해야 합니다. 문장은 세미콜론으로 구분됩니다. 저희 튜토리얼에서 예제를 확인할 수 있습니다.

8.1.6.2 스칼라 함수와 연산 기호

Symbol Mathematical operator / function
+ 스칼라 덧셈
- 스칼라 뺄셈
* 스칼라 곱셈
/ 스칼라 나눗셈
pow(a,b) 기본 스칼라 a를 스칼라 b의 거듭제곱으로
sqrt() 스칼라의 제곱근
log() 자연 로그
exp() 기본 e 지수 함수
sin() 삼각 함수
cos()
tan()
min() 두 값 중의 최소값
max() 두 값 중의 최대값
ceil() 입력값보다 큰 정수
floor() 입력값보다 작은 정수
pi 상수 pi = 3.14158...
>[Caution]
>
> 사용자 정의 표현의 모든 경우에 정수 나눗셈("18/12"와 같은)은 소수 부분을 버립니다(이 경우에는 1이 됨). 이는 C 언어와 일관성을 유지합니다. 이러한 동작을 원하지 않는 경우 명시적으로 나눗셈에 최소한 하나의 실수 숫자를 사용하는 것이 좋습니다(예: "18.0/12").

8.1.6.3 벡터 연산자 함수

다음 함수에서 사용되는 벡터는 3개의 구성 요소를 가져야 합니다. | 함수 | 수학적 함수 | |--------------|------------------------| | subtract(C, A, B) | 벡터 뺄셈, \vec{C} = \vec{A} - \vec{B} | | cross(C, A, B) | 벡터 외적, \vec{C} = \vec{A} \times \vec{B} | | dot(A, B) | 벡터 내적, \vec{A} \cdot \vec{B} | | magnitude(A) | 벡터 길이/크기 반환 |

8.1.6.4 해석자 변수

표현식에서 사용자는 솔루션 변수와 사용자 지정 변수를 모두 사용할 수 있습니다. 솔루션 변수에는 세 가지 범주가 있습니다:

  1. 모든 그리드 노드에서 정의되고 특정 "소스" (예: 존 또는 패치)에 바인딩되지 않은 변수입니다.

  2. 전체 그리드/시뮬레이션에 고유한 변수이며 특정 "소스" (예: 존 또는 패치)에 바인딩되지 않습니다. 첫 번째 범주와 달리 이러한 변수의 값은 특정 그리드 노드와 관련이 없습니다.

  3. 특정 "소스"에 연관된 변수입니다. 예를 들어, CL은 표면 패치와 연관되어야 합니다. 세타는 특정 볼륨 존과 연관되어야 합니다. 사용자 정의 후처리 과정사용자 정의 동역학에서 예를 확인할 수 있습니다.

[ Note]

모든 변수는 무차원입니다. Flow360에서의 비차원화에 대한 자세한 정보는 무차원 입력 및 무차원 출력에서 확인할 수 있습니다.

8.1.6.4.1 Variables that are defined on all grid nodes

모든 그리드 노드에서 정의된 변수들에 대해 다음과 같은 솔버 변수를 사용할 수 있습니다. 이러한 변수들은 값이 그리드 노드에 따라 다르기 때문에 배열로 나열됩니다. | Name | Type [component] | Note | |-------------------|-------------------|-----------------------------------------------------------------------------------------------------| | mut | Array[1] | 난류 점도 (Turbulent viscosity) | | mu | Array[1] | 정상 점도 (Laminar viscosity) | | solutionNavierStokes | Array[5] | 비관성 참조 프레임에서 보존적인 형태의 N-S 방정식에 대한 솔루션 (Solution for the N-S equation in conservative form in non-inertial reference frame) | | residualNavierStokes | Array[5] | 비관성 참조 프레임에서 보존적인 형태의 N-S 방정식에 대한 잔류 (Residual for the N-S equation in conservative form in non-inertial reference frame) | | solutionTurbulence | Array[2/1] | 난류 모델에 대한 솔루션. 구성 요소 수는 기본 난류 모델에 따라 다름 (Solution for the turbulence model. Number of component depends on underlying turbulence model) | | residualTurbulence | Array[2/1] | 난류 모델에 대한 잔류. 구성 요소 수는 기본 난류 모델에 따라 다름 (Residual for the turbulence model. Number of component depends on underlying turbulence model) | | kOmega | Array[2] | SST 모델 사용 시 효과적인 solutionTurbulence (Effectively solutionTurbulence when using SST model) | | nuHat | Array[1] | SA 모델 사용 시 효과적인 solutionTurbulence (Effectively solutionTurbulence when using SA model) | | solutionTransition | Array[2] | 전이 모델에 대한 솔루션 (Solution for the transition model) | | residualTransition | Array[2] | 전이 모델에 대한 잔류 (Residual for the transition model) | | solutionHeatSolver | Array[1] | 열 방정식에 대한 솔루션 (Solution for the heat equation) | | residualHeatSolver | Array[1] | 열 방정식에 대한 잔류 (Residual for the heat equation) | | coordinate | Array[3] | 지구 좌표계에서의 노드 좌표 (Nodal coordinates in earth system) | | primitiveVars | Array[5] | 밀도, 3속도 및 압력 (density, 3 velocities and pressure) |

8.1.6.4.2 Simulation wise variables

두 번째 카테고리인 경우, 다음과 같은 솔버 변수들을 사용할 수 있습니다. 이 변수들은 전체 그리드/시뮬레이션에서 고유한 값이 있으므로 스칼라로 나열됩니다. | Name | Type[component] | Note | |--------------------|------------------|---------------------------------------------------------------------------------------------| | MachRef | Scalar | 사용자가 freestream에서 지정한 MachRef | | muRef | Scalar | 사용자가 freestream에서 지정한 muRef | | Tref | Scalar | 사용자가 freestream에서 지정한 온도 | | t | Scalar | 물리적 시간 | | physicalStep | Scalar | 0부터 시작하는 물리적 시간 단계 | | pseudoStep | Scalar | 0부터 시작하는 물리적 시간 단계 내의 가상 시간 단계 | | timeStepSize | Scalar | 물리적 시간 단계 크기 | | alphaAngle | Scalar | 사용자가 freestream에서 지정한 alphaAngle | | betaAngle | Scalar | 사용자가 freestream에서 지정한 betaAngle | | pressureFreestream | Scalar | Freestream 참조 압력. 1.0 / 1.4의 상수 값이 있음 | | momentLengthX | Scalar | 사용자가 지오메트리에서 지정한 momentLength의 X 구성 요소 | | momentLengthY | Scalar | 사용자가 지오메트리에서 지정한 momentLength의 Y 구성 요소 | | momentLengthZ | Scalar | 사용자가 지오메트리에서 지정한 momentLength의 Z 구성 요소 | | momentCenterX | Scalar | 사용자가 지오메트리에서 지정한 momentCenter의 X 구성 요소 | | momentCenterY | Scalar | 사용자가 지오메트리에서 지정한 momentCenter의 Y 구성 요소 | | momentCenterZ | Scalar | 사용자가 지오메트리에서 지정한 momentCenter의 Z 구성 요소 |

8.1.6.4.3 Zone or patch associated variables

특정 존 또는 패치와 관련된 변수에 대한 경우 다음과 같은 솔버 변수를 사용할 수 있습니다. bet_thrust, bet_torque 및 bet_omega에 대해서는 사용자가 bet 디스크의 인덱스를 변수 이름에 추가할 수 있습니다. 예를 들어 bet_0_thrust는 첫 번째 bet 디스크의 추력을 나타냅니다.

[Note]

힘 (forceX/Y/Z) 및 모멘트 (momentX/Y/Z)는 힘/모멘트 계수 (예: CL, CMy)와 구별되어야 합니다. 힘과 모멘트는 힘/모멘트 계수의 분자입니다.

여기에 나열된 모든 변수들은 범용 변수에도 동일한 정의가 있습니다. 해당 기능이 활성화되어 있지 않으면 일부 변수를 사용할 수 없습니다. 예를 들어 solutionTransition은 전이 모델을 사용하지 않는 경우 사용할 수 없습니다.

Name Type[component] Source type Note
bet_thrust Scalar BET Disk ID BET 디스크의 추력
bet_torque Scalar BET Disk ID BET 디스크의 토크
bet_omega Scalar BET Disk ID BET 디스크의 회전 속도
CD Scalar Patch name patch의 마찰 계수
CL Scalar Patch name patch의 양력 계수
forceX Scalar Patch name X 방향 patch에 대한 총 힘
forceY Scalar Patch name Y 방향 patch에 대한 총 힘
forceZ Scalar Patch name Z 방향 patch에 대한 총 힘
momentX Scalar Patch name X 방향 momentCenter에 대한 patch의 총 모멘트
momentY Scalar Patch name Y 방향 momentCenter에 대한 patch의 총 모멘트
momentZ Scalar Patch name Z 방향 momentCenter에 대한 patch의 총 모멘트
nodeNormals Array[3] Patch name patch의 법선 벡터. 그 크기는 노드에 연결된 면적입니다.
theta Scalar Zone name volume zone의 회전 각도(라디안)
omega Scalar Zone name volume zone의 회전 속도
omegaDot Scalar Zone name volume zone의 회전 가속도
wallFunctionMetric Array[1] Patch name (베타 기능): 이 메트릭은 벽 모델의 품질에 대한 지역적인 지표입니다. 1.25보다 작은 값은 벽 전단 응력의 좋은 추정을 나타냅니다. 1.25 ~ 10은 낮은 신뢰도를 나타내며, 10보다 큰 값은 벽 전단 응력의 추정에 신뢰할 수 없습니다.
wallShearStress Array[3] Patch name 패치에서의 벽 점성 전단 응력(X, Y 및 Z)
yPlus Array[1] Patch name 무차원화 벽단위 거리 Y+, patch에 대해

Source 형식에 대한 설명 * BET 디스크 ID: 이는 케이스 JSON에 나타나는 BET 디스크의 인덱스 또는 위치입니다. 0부터 시작합니다.

  • Patch 이름: 메시 파일에서 정의된 패치의 이름입니다.

  • Zone 이름: 메시 파일에서 정의된 부피 존의 이름입니다.