콘텐츠로 이동

4. Solver Configuration

Flow360.json 파일은 CFD 해석을 위한 솔버 설정을 정의합니다. 솔버 구성 파일(Flow360.json)에 입력되는 변수들은 대부분 무차원 값으로 입력되어야 합니다.

Flow360의 무차원 변수 입력과 관련된 자세한 내용은 nondimensional inputs knowledge basenon-dimensionalization in Flow360 tutoral에서 확인할 수 있습니다.

4.1. 형상 (geometry)

OPTIONAL

형상(Geometry) 항목은 기하적 참조 값들을 정의합니다. 이러한 매개변수들은 무차원화된 힘들을 계산할 때 사용됩니다 (예: C_L, C_D, CM_{y} 등). 이러한 값을 정의하는 방법에 대한 자세한 정보는 nondimensional inputs knowledge basenon-dimensionalization in Flow360 tutoral를 참고 해주세요.

Options Default Description
refArea 1.0 [float] 형상의 기준 면적
momentCenter [0.0, 0.0, 0.0] [3-array(float)] **grid unit**으로 나타낸 형상의 x, y, z 모멘트 중심
momentLength [1.0, 1.0, 1.0] [3-array(float)] **grid unit**으로 나타낸 x, y, z 방향으로의 모멘트 참조 길이

예시

"geometry": {
   "refArea" : 45.604,
   "momentCenter" : [0.0, 0.0, 0.0],
   "momentLength" : [3.81, 3.81, 3.81]
}

4.2 자유류 (freestream)

REQUIRED

자유류 (freestream)의 유동 조건을 정의합니다. 이러한 조건을 정의하는 방법에 대한 자세한 정보는 Flow360의 nondimensional inputs knowledge basenon-dimensionalization in Flow360 tutoral를 참고하세요.

Options Default Description
Reynolds Reynolds 또는 muRef 필요 [float] Reynolds 수, = \frac{\rho_{\infty}U_{ref}L_{gridUnit}}{\mu_{\infty}}. Flow360은 기존 계산 방식과 다르게 L_{gridUnit}을 사용한다는 점에 유의해야 합니다.
muRef Reynolds 또는 muRef 필요 [float] 자유류 동점성 계수(dynamic viscosity),= \frac{\mu_\infty}{\rho_{\infty}C_{\infty}L_{gridUnit}}
Mach 필요 [float] Mach(마하수)는 자유류 속도에 소리의 속도로 나눈 무차원 값입니다.
MachRef Mach == 0.0 인 경우, 필요 [float] 무차원 값을 계산하기 위해 사용되는 참고 Mach(마하수)입니다.
Temperature 필요 [float] 켈빈(K) 단위의 자유류 온도. 상수 점도를 설정하려면, -1 입력
alphaAngle 필요 [float] degree 단위의 받음각(angle of attack)
betaAngle 필요 [float] degree 단위의 옆미끄럼각(side slip angle)
turbulenceQuantities 선택 [dict] 초기 유동장 및 경계 조건에 설정되는 난류 변수 값 자세한 내용은 아래 참고.

사용자는 초기 유동장 및 경계에서의 유동에 대한 난류 조건을 turbulenceQuantities를 통해 지정할 수 있습니다. 지정할 수 있는 난류 특성은 아래 표에 나열되어 있습니다. 모든 값은 무차원입니다. 각 난류 모델 별 유효한 난류 변수 및 기본 설정 값에 대한 자세한 내용은 knowledgebase 를 참고하세요.

Note

초기 유동장 및 경계 유동에 대해 난류 변수 값을 지정하는 것은 현재 베타 기능이며 현재 버전 릴리즈 기간 동안 변경될 수 있습니다.

Note

아래 난류 변수 값들은 [경계조건 - boundaries]에 표기된 유입(inflow) 및 유출(outflow) 경계 조건에도 적용 가능합니다.

난류 물리량 설정
Options Range Description
turbulentKineticEnergy >=0 난류 운동 에너지. kOmegaSST에 적용됩니다.
specificDissipationRate >=0 난류 소산율. kOmegaSST에 적용됩니다.
turbulentIntensity >=0 난류 강도는 난류 운동 에너지 k=1.5(U_{ref}*I)^2와 관련 있습니다. 여기서 k는 차원이 있는 난류 운동 에너지이고 U_{ref}는 참조 속도이며 I는 난류 강도입니다. 이 값은 백분율이 아닌 실제 강도의 크기를 나타냅니다. kOmegaSST에 적용됩니다.
turbulentViscosityRatio >=0 난류 점성과 자유류 점성 사이의 비율입니다. kOmegaSST 및 SpalartAllmaras에 적용됩니다. SpalartAllmaras 모델을 사용할 때 이 값은 modifiedTurbulentViscosityRatio로 변환됩니다.
turbulentLengthScale >0 난류 길이 척도(turbulent length scale)는 eddy의 크기를 추정한 것입니다. L_T=\sqrt{k}/(\beta_0^{*0.25}\omega) 여기서 L_T는 난류 길이 척도, k는 난류 운동 에너지, \beta_0^{*}=0.09 그리고 \omega는 난류 소산율을 의미합니다. 난류 길이 척도는 L_{gridUnit}와 함께 무차원화되어야 합니다. 이 값은 kOmegaSST 난류모델에 사용됩니다
modifiedTurbulentViscosityRatio >=0 수정된 난류 점성(경계층 난류 모델에서)와 자유류 점성 사이의 비율입니다. 이 값은 SpalartAllmaras 난류모델에 사용됩니다.
modifiedTurbulentViscosity >=0 수정된 난류 점성을 의미합니다. 이 값은 SpalartAllmaras 난류모델에 사용됩니다.

예시

"freestream" :
{
   "muRef" : 4.29279e-08,
   "Mach" : 1.46972e-02,
   "MachRef" : 0.70,
   "Temperature" : 288.15,
   "alphaAngle" : -90.0,
   "betaAngle" : 0.0,
   "turbulenceQuantities":{
      "turbulentIntensity": 0.05,
      "turbulentViscosityRatio" : 0.2
   }
}

4.3 경계조건 (boundaries)

이 항목은 경계 조건을 정의합니다. 각 경계 조건은 격자 파일에서 이름을 지정한 각 경계면과 연결되며, 아래 예시와 같이 설정합니다.

"boundary_name" :    
{
    "type" : "boundary_type"
}

"boundary_name"은 격자 파일에서 미리 지정한 각 개별 경계면 이름으로, 일반적으로 UGRID 파일의 경우 "1"과 같은 형식이며 CGNS 파일의 경우 "vol-1/wallName"과 같은 형식입니다. 또한 "boundaries" 내에 각 경계면 항목(예를 들어, "1" 항목) 내에서 매개변수 "name"을 지정하여 json 파일에 표시된 "boundary_name"을 덮어쓸 수 있습니다. 이렇게 하면 결과 파일 내 경계면에 이름을 사용자가 원하는 값으로 변경할 수 있습니다. 아래 예시의 경우, 결과 파일에서 경계면 "1"은 "your_chosen_name"으로 표시됩니다.

"boundaries" : {
        "1": {
            "type": "NoSlipWall",
            "name": "your_chosen_name"
        },
        "2": {
            "type": "SlipWall",
            "name": "another_chosen_name"
        }}

Note

TranslationallyPeriodic 및 RotationallyPeriodic 경계 조건을 사용할 경우, 매개변수 pairedPatchName 내의 경계면 이름은 격자 파일에서 지정한 이름이어야 합니다. 즉, json 파일에서 이름을 변경한 것이 아니어야 합니다.

Flow360 내 경계 조건들에는 여러 추가 옵션 지정이 필요할 수 있습니다. 아래 표는 추가적인 옵션을 나타냅니다. 또한 NoSlipWall, IsothermalWall 및 Freestream과 같은 경계면에서 입력 값으로 수학적 표현식을 사용할 수도 있습니다. 자세한 내용은 사용자 정의 표현식을 참고하세요.

Type Additional Options Description
SlipWall None [string] Slip 벽면 조건
NoSlipWall [string] No-slip 벽면 조건
Velocity, default: [0.0, 0.0, 0.0] [3-array(float or expression)] 벽면 접선 속도 지정
velocityType, default: “relative” 속도가 정의된 기준 좌표계. 관성 기준 좌표계의 경우 "absolute" 옵션을 사용 가능
IsothermalWall [string] 벽면 등온 조건
Temperature(REQUIRED) [float or expression] 자유류 온도로 무차원화된 벽 온도
Velocity, default: [0.0, 0.0, 0.0] 벽면 접선 속도 지정
HeatFluxWall [string] 벽면 열유속 조건
heatFlux(REQUIRED) 유체 영역에서 유입되는 무차원 열유속
velocity, default: [0.0, 0.0, 0.0] [3-array(float or expression)] 벽면 접선 속도 지정
Freestream [string] 자유류 조건은 "Freestream" 내의 매개변수로 설정됩니다. 기본값들은 "Freestrean" 항목의 받음각(alpha)과 옆미끄럼각(beta)에 따라 변환되어 적용됨
Velocity, default: from freestream [3-array(float or expression)] 기본값은 "Freestrean" 항목의 받음각(alpha)과 옆미끄럼각(beta)에 따라 설정됨. 혹은 각 속도 성분에 대해 표현식을 지정할 수 있음.
velocityType, default: “relative” 속도가 정의된 기준 좌표계. 관성 기준 좌표계의 경우 "absolute" 옵션을 사용 가능. "absolute"는 일반적으로 단일 참조 프레임 (SRF) 해석에서 사용함
turbulenceQuantities, default: from freestream 난류 물리량 지정. turbulenceQuantities 참고
SubsonicOutflowPressure [string] 정압비로 설정되는 아음속 유출 경계면
staticPressureRatio (REQUIRED) [float] 정압비, p_{outflow}/p_{\infty}
turbulenceQuantities, default: empty 난류 물리량 지정. turbulenceQuantities 참고
SubsonicOutflowMach [string] Mach 수를 통해 설정되는 아음속 유출 경계면
totalPressureRatio (REQUIRED) [float] 마하수,U_{outflow}/C_{\infty}
turbulenceQuantities, default: from freestream 난류 물리량 지정. turbulenceQuantities 참고
SubsonicInflow [string] 노즐 또는 터널 플레넘(Plenum)의 전압비 및 전온도 비를 통해 설정되는 아음속 유입 경계면
totalPressureRatio (REQUIRED) [float] 전압비, p_{t,inflow}/p_{s,inflow}
totalTemperatureRatio (REQUIRED) [float] 전온도비, T_{t,inflow}/T_{s,inflow}
rampSteps [integer] 해석 초기화에 사용되는 ramp step의 수
velocityDirection [3-array(float or expression)] 유입 유동의 방향. 유체 체적 내부를 가르키는 방향의 벡터이어야 함. 설정하지 않는 경우, 표면에 수직한 방향으로 설정됨,
turbulenceQuantities, default: from freestream 이 경계에서의 난류 물리량 지정. turbulenceQuantities 참고
MassOutflow [string] 질량 유출 경계면
massFlowRate (REQUIRED) [float] 출구에서의 질량 유량(무차원화됨)
turbulenceQuantities, default: from freestream 이 경계에서의 난류 물리량 지정. turbulenceQuantities 참고
MassInflow [string] 질량 유입 경계면
massFlowRate (REQUIRED) [float] 입구에서의 질량 유량(무차원화됨)
turbulenceQuantities, default: from freestream 이 경계에서의 난류 물리량 지정. turbulenceQuantities 참고
WallFunction None [string] 이 경계 조건은 고체 경계면 근처의 속도장을 예측하기 벽 함수를 사용함.
TranslationallyPeriodic [string] 병진 주기 경계 조건
pairedPatchName [string] TranslationallyPeriodic 경계면에 매칭되는 경계면 이름 지정. 주기적 경계 쌍의 한쪽 면에 대해 각각 지정해야 함.
translationVector [3-array(float)] pairedPatchName이 지정된 병진 주기 경계면을 해당하는 경계면 쌍에 매핑하는 벡터. 지정하지 않으면 변환 벡터는 체적 격자에서 자동으로 결정됨. 주기적 경계 쌍의 한쪽 면에 대해 각각 지정해야 함.
RotationallyPeriodic [string] 회전 주기 경계 조건
pairedPatchName [string] RotationallyPeriodic 경계면에 매칭되는 경계면 이름 지정. 주기적 경계 쌍의 한쪽 면에 대해 각각 지정해야 함.
axisOfRotation [3-array (float)] pairedPatchName이 지정된 회전 주기 경계면을 해당하는 경계면 쌍에 매핑하는 회전 축. 지정하지 않으면 회전 축은 체적 격자에서 자동으로 결정되지만, 격자에서 정확하게 계산하기 어려운 상황이 있으므로 사용자가 직접 지정하는 것을 권장. 주기적 경계 쌍의 한쪽 면에 대해 각각 지정해야 함.
thetaRadians [float] pairedPatchName 및 axisOfRotation이 지정된 회전 주기 경계면을 해당하는 경계면 쌍에 매핑하는데 사용되는 회전 각도. 오른손 법칙을 따르며, 지정되지 않는 경우, 각도는 체적 격자에서 자동으로 결정됨. 주기적 경계 쌍의 한쪽 면에 대해 각각 지정해야 함.
SolidIsothermalWall [string] 고체 구역 등온 벽 경계 조건
Temperature (REQUIRED) [float or expression] 고체 영역의 벽면 온도. 자유류 온도에 대해 무차원화 되어 있음
SolidAdiabaticWall None [string] 고체 영역 단열 경계 조건
SymmetryPlane None [string] 이 경계 조건은 SlipWall과 유사하지만 대칭 평면의 스칼라 양의 법선 방향 구배가 강제로 0이 되도록 함. 평면 표면에만 적용 가능

에시

"boundaries": {
    "boundary_name_A": {
        "type": "SlipWall"
    },
    "boundary_name_B": {
        "type": "NoSlipWall",
        "Velocity": [ "0.0", "0.1*x+exp(y)+z^2", "cos(0.2*x*pi)+sqrt(z^2+1)" ]
    },
    "boundary_name_C": {
        "type": "IsothermalWall",
        "Temperature": 1.0
    },
    "boundary_name_D": {
        "type": "Freestream",
        "turbulenceQuantities": {
            "turbulentViscosityRatio": 0.01
        }
    },
    "boundary_name_E": {
        "type": "SubsonicOutflowPressure",
        "staticPressureRatio": 1.0
    },
    "boundary_name_F": {
        "type": "SubsonicOutflowMach",
        "MachNumber": 0.2
    },
    "boundary_name_G": {
        "type": "SubsonicInflow",
    "totalPressureRatio":  1.064,
        "totalTemperatureRatio": 1.018
    },
    "boundary_name_H": {
        "type": "MassOutflow",
        "massFlowRate": 0.2
    },
    "boundary_name_I": {
        "type": "MassInflow",
        "massFlowRate": 0.2,
        "turbulenceQuantities": {
            "specificDissipationRate": 100,
            "turbulentLengthScale": 0.001
        }
    },
    "boundary_name_K": {
        "type": "WallFunction"
    },
    "boundary_name_L": {
        "type": "TranslationallyPeriodic",
        "pairedPatchName": "boundary_name_M"
    },
    "boundary_name_M": {
        "type": "TranslationallyPeriodic"
    },
    "boundary_name_N": {
        "type": "RotationallyPeriodic",
        "pairedPatchName": "boundary_name_O",
        "axisOfRotation": [ 1, 0, 0 ]
    },
    "boundary_name_O": {
        "type": "RotationallyPeriodic"
    },
    "boundary_name_R": {
        "type": "SolidIsothermalWall",
        "Temperature": 1.2
    },
    "boundary_name_S": {
            "type": "SolidAdiabaticWall"
    },
    "boundary_name_T": {
        "type": "HeatFluxWall",
        "heatFlux": -0.001
    }
}

4.4 체적 영역 (volumeZones)

이 항목은 volume 영역의 속성을 정의합니다. 별도로 지정되지 않은 모든 volume 영역은 modelType = FluidDynamics로 가정됩니다. 별도로 지정하는 경우 아래와 같은 구조로 지정합니다.

"volume_zone_name" :
{
    "modelType" : "model_type"
}

"volume_zone_name"은 격자 파일에서의 정의와 일관되어야 합니다. thermalConductivity, volumetricHeatSource, heatCapacity 및 initialCondition 옵션은 열전달 영역에만 유효합니다.

Options Additional Options default Description
modelType "FluidDynamics" [string] 고체 구역에 대한 열전달 또는 유체 구역에 대한 유체 역학
thermalConductivity REQUIRED for HeatTransfer zone [float] 무차원화된 물질의 열전도도, \frac{\rho_{\infty} C_{\infty}^3 L_{gridUnit}}{T_{\infty}}
volumetricHeatSource 0 [float or expression] 무차원화된 고체 영역에 대한 열원
heatCapacity REQUIRED for HeatTransfer zone for unsteady simulation 무차원화된 물질의 단위 부피 당 열용량, \frac{\rho_{\infty} C_{\infty}^3}{L_{gridUnit}}
initialCondition REQUIRED for HeatTransfer zone for unsteady simulation [dict] "T" 항목은 열 방정식을 위한 초기 온도 값
referenceFrame [dict] 회전 영역에 대한 회전 입력. 유체 영역만 지원됨
thetaRadians DEPENDS [math] 시간의 함수로서 회전 각도(라디안 단위)에 대한 표현식. thetaDegrees, omegaRadians, omegaDegrees가 지정되지 않은 경우 필요함
thetaDegrees DEPENDS [math] 시간의 함수로서 회전 각도(도 단위)에 대한 표현식. thetaRadians, omegaRadians, omegaDegrees가 지정되지 않은 경우 필요함
omegaRadians DEPENDS [float] 무차원 회전 속도 radians/nondim-unit-time, = \frac{\Omega*L_{Gridunit}}{C_{\infty}}, 여기서 \Omega는 rad/s. thetaRadians, thetaDegrees, omegaDegrees가 지정되지 않은 경우 필요함
omegaDegrees DEPENDS [float] 무차원 회전 속도, degrees/nondim-unit-time, = omegaRadians*180/PI. thetaRadians, thetaDegrees, omegaRadians가 지정되지 않은 경우 필요함
centerOfRotation REQUIRED [3-array(float)] 회전 중심
axisOfRotation REQUIRED [3-array(float)] 회전 축
parentVolumeName DEPENDS 회전이 지정된 영역의 이름으로, 중첩된 회전 영역에서 가속도를 계산하는데 사용됨. 중첩된 회전 경계면을 사용할 때 필요함. 자세한 내용은 knowledge base에서 확인 가능

예시 1

1"volumeZones": {
2    "SOLID": {
3        "modelType": "HeatTransfer",
4        "thermalConductivity": 0.003,
5        "volumetricHeatSource": "0.01*sin(pi*x)*sin(pi*y)"
6    }
7}

예시 2

 1"volumeZones": {
 2    "FLUID-OUTER-BLOCK": {
 3        "modelType": "FluidDynamics"
 4    },
 5    "FLUID-MIDDLE-BLOCK": {
 6        "modelType": "FluidDynamics",
 7        "referenceFrame":{
 8            "omegaRadians": 0.1,
 9            "centerOfRotation": [1,2,3],
10            "axisOfRotation": [1,0,0]
11        }
12    },
13    "FLUID-INNER-BLOCK": {
14        "modelType": "FluidDynamics",
15        "referenceFrame":{
16            "omegaRadians": 0.2,
17            "centerOfRotation": [-4,5,-0.2],
18            "axisOfRotation": [0,0,-1],
19            "parentVolumeName": "FLUID-MIDDLE-BLOCK"
20        }
21    }
22}

Note

회전 영역(0 이 아닌 각속도 지정)을 사용하는 유동 해석에서 timeStepSize를 "inf"로 설정하면 Multiple Reference Frame (MRF) 또는 Single Reference Frame (SRF) 해석을 수행하는 것과 동일합니다. MRF는 도메인에 여러 영역이 있는 경우 활성화되고, SRF는 하나의 영역만 있는 경우 활성화됩니다.

4.5 나비에-스톡스 (navierStokesSolver)

OPTIONAL

이 항목은 Navier-Stokes 솔버에 대한 수치 매개변수를 정의합니다. 좀 더 자세한 정보는 다음 Navier-Stokes 솔버 knowedge base 문서를 참고하세요.

Options default Description
absoluteTolerance 1.00E-10 Navier-Stokes 잔차 값에 대한 절대 허용 오차, 지정된 값 이하이면, 솔버는 다음 물리적 단계으로 진행
relativeTolerance 0 상대 잔차 값에 대한 허용 오차, 지정된 값 이하이면, 솔버는 다음 물리적 단계으로 진행. 상대 잔차는 현재 pseudoStep의 잔차 값과 현재 physicalStep에서 처음 10개 pseudoStep의 최대 잔차 값의 비로 정의됨. NOTE: 정상상태 해석에서 relativeTolerance는 무시되고, absoluteTolerance만 수렴 기준으로 사용됨.
CFLMultiplier 1 timeStepping 항목에서 정의된 CFD 값에 대한 배수
linearSolverConfig 선형 솔버에 대한 구성 내용. maxIterations는 선형 솔버의 반복계산 횟수를 제어함. 기본값: 30
kappaMUSCL -1 MUSCL scheme에 대한 Kappa 값은 [-1, 1] 범위이며, "1"은 불안정 함. 기본값인 -1은 2차 upwind scheme을 의미하며, 가장 안정적임. 0.33은 blended upwind/central scheme을 의미하며, dissipation이 작은 낮은 아음속 유동에서 사용이 권장됨.
updateJacobianFrequency 4 자코비안(Jacobian)이 업데이트되는 빈도
equationEvalFrequency 1 Loosely-Coupled 해석에서 Navier-Stokes 방정식을 업데이트하는 빈도
maxForceJacUpdatePhysicalSteps 0 물리적 단계이 이 값보다 작은 경우, 자코비안(Jacobian) 행렬은 매 pseudo step 마다 업데이트 됨.
orderOfAccuracy 2 공간 차분법의 차분 정확도(order of accuracy of spatial discretization)
numericalDissipationFactor 1 범위 [0.01, 1.0]을 갖는 수치 플럭스 소산을 지수적으로 감소시키는 계수. 낮은 소산을 갖는 해석에 대해 권장되는 시작 값은 0.2.
limitVelocity False 속도 제한자
limitPressureDensity False 밀도 제한자

예시

"navierStokesSolver" : {
    "absoluteTolerance" : 1e-9,
    "relativeTolerance" : 1e-2,
    "linearSolverConfig": {
        "maxIterations": 35
    },
    "kappaMUSCL" : -1.0,
    "orderOfAccuracy" : 2,
    "updateJacobianFrequency" : 4,
    "equationEvalFrequency" : 1
    }

4.6 난류 모델 (turbulenceModelSolver)

OPTIONAL

이 항목은 난류 모델 솔버에 대한 수치 매개변수를 정의합니다. 좀 더 자세한 정보는 다음 난류 모델 솔버 knowedge base 문서를 참고하세요.

Options default Description
modelType "SpalartAllmaras" [string] "SpalartAllmaras", "kOmegaSST", 또는 "None"
absoluteTolerance 1.00E-08 [float] 난류 모델 잔차 값에 대한 절대 허용 오차를 의미. 지정된 값 이하이면, 정상상태 해석의 경우 해석이 완료되고, 비정상상태 해석의 경우 다음 물리적 단계로 진행.
relativeTolerance 0 [float] 상대 잔차 값에 대한 허용 오차, 지정된 값 이하이면, 솔버는 다음 물리적 단계으로 진행.
linearSolverConfig 선형 솔버에 대한 구성 내용. maxIterations는 선형 솔버의 반복계산 횟수를 제어함. 기본값: 20
updateJacobianFrequency 4 [int] 자코비안(Jacobian)이 업데이트되는 빈도
equationEvalFrequency 4 [int] 난류 방정식을 업데이트하는 빈도
reconstructionGradientLimiter 1 [float] 면에서 유동 변수 재구성(reconstruction)에 사용되는 구배 제한자의 강도(범위 [0.0, 2.0]). 0.0은 구배를 0으로 설정하는 것과 같고, 2.0은 제한이 없는 것을 의미
rotationCorrection False [boolean] 난류 모델에 대한 회전 보정. SpalartAllmaras 모델에서만 지원됨
quadraticConstitutiveRelation False [boolean] 난류 전단 응력 텐서에 대해 선형 관계를 가정한 Boussinesq Approximation 관계식 대신 비선형 2차 구성 관계식 사용
orderOfAccuracy 2 [int] 공간 차분법의 차분 정확도(order of accuracy of spatial discretization)
maxForceJacUpdatePhysicalSteps 0 [int] 물리적 단계이 이 값보다 작은 경우, 자코비안(Jacobian) 행렬은 매 pseudo step 마다 업데이트 됨.
DDES False [boolean] "TRUE" 입력 시, Delayed Detached Eddy Simulation, DDES 활성화. 모든 난류 및 천이 모델에 대해 사용 가능
gridSizeForLES "maxEdgeLength" [string] LES 길이 규모 계산에 사용되는 길이 지정. "maxEdgeLength" 또는 "meanEdgeLength" 입력
modelConstants {} [dict] DDES 계수를 포함하는 모델 상수 입력. SpalartAllmaras: "C_DES"(= 0.72), "C_d" (= 8.0), kOmegaSST: "C_DES1" (= 0.78), "C_DES2" (= 0.61), "C_d1" (= 20.0), "C_d2" (= 3.0)

예시

"turbulenceModelSolver" : {
    "modelType" : "SpalartAllmaras",
    "absoluteTolerance" : 1e-8,
    "relativeTolerance" : 1e-2,
    "linearSolverConfig": {
        "maxIterations": 25
    },
    "DDES" : true,
    "orderOfAccuracy" : 2,
    "updateJacobianFrequency" : 4,
    "equationEvalFrequency" : 1,
    "rotationCorrection" : true,
    "modelConstants" : {
        "C_DES": 0.85,
        "C_d": 8.0
    }
}

4.7 천이 모델 (transitionModelSolver)

OPTIONAL

이 항목은 천이 모델 솔버에 대한 수치 매개변수를 정의합니다. 좀 더 자세한 정보는 다음 천이 모델 솔버 knowedge base 문서를 참고하세요.

Options default Description
modelType "None" [string] "None" (비활성화) 또는 "AmplificationFactorTransport" (활성화)
absoluteTolerance 1.00E-07 [float] 천이 모델 잔차 값에 대한 절대 허용 오차를 의미. 지정된 값 이하이면, 정상상태 해석의 경우 해석이 완료되고, 비정상상태 해석의 경우 다음 물리적 단계로 진행.
relativeTolerance 0 [float] 상대 잔차 값에 대한 허용 오차, 지정된 값 이하이면, 솔버는 다음 물리적 단계으로 진행.
linearSolverConfig 선형 솔버에 대한 구성 내용. maxIterations는 선형 솔버의 반복계산 횟수를 제어함. 기본값: 20
updateJacobianFrequency 4 [int] 자코비안(Jacobian)이 업데이트되는 빈도
equationEvalFrequency 4 [int] 천이 방정식을 업데이트하는 빈도
orderOfAccuracy 2 [int] 공간 차분법의 차분 정확도(order of accuracy of spatial discretization)
Ncrit 8.15 [float] Critical Amplification Factor, [1, 11] 범위. turbulenceIntensityPercent가 지정되지 않은 경우에만 유효
turbulenceIntensityPercent 0.1 [float] Turbulence Intensity, [0.03, 2.5] 범위. Ncrit가 지정되지 않은 경우에만 유효
maxForceJacUpdatePhysicalSteps 0 [int] 물리적 단계이 이 값보다 작은 경우, 자코비안(Jacobian) 행렬은 매 pseudo step 마다 업데이트 됨.

예시

"transitionModelSolver": {
    "modelType": "AmplificationFactorTransport",
    "absoluteTolerance": 1e-10,
    "linearSolverConfig": {
        "maxIterations": 25
    },
    "orderOfAccuracy": 2,
    "updateJacobianFrequency": 4,
    "equationEvalFrequency": 4,
    "Ncrit": 9
}

4.8 열 방정식 (heatEquationSolver)

OPTIONAL

이 항목은 열 방정식에 대한 수치 매개변수를 정의합니다.

Options Additional Options Default Description
equationEvalFrequency 정상상태 해석의 경우 10. 비정상상태 해석의 경우 40 [int] 복합 열전달 해석에서 열 방정식 계산 빈도
linearSolverConfig maxIterations 50 [int] 선형 솔버 반복 계산의 최대 횟수
absoluteTolerance 1.00E-10 [float] pseudoStep의 최종 잔차 값이 이 설정 값 아래이 있으면, 선형 솔버가 수렴한 것으로 판정. absoluteTolerance 또는 relative Tolerance를 사용하여 수렴 여부를 결정함.
relativeTolerance [float] 최종 잔차 값과 pseudoStep 초기 잔차 값의 비가 이 설정 값보다 작으면, 선형 솔버가 수렴한 것으로 판정
absoluteTolerance 1.00E-9 [float] 복합 열전달에서 열 방정식의 수렴을 결정하는 절대 잔차 허용 오차. 이 값은 선형 솔버의 절대 허용 오차보다 약간 크거나 같아야 함.

예시

"heatEquationSolver": {
    "linearSolverConfig": {
        "maxIterations": 50,
        "absoluteTolerance": 1e-10
    },
    "equationEvalFrequency": 10
}

4.9 초기 조건 (initialCondition)

OPTIONAL

이 항목은 해석을 위한 초기 조건을 지정합니다.

Options Default Description
type "freestream" [sting] "freestream" 또는 "expression"으로 입력 가능, "expression"을 사용하면 상수(constants) 및 각 기본 변수(p, rho, u, v, w)의 값을 수학 표현식을 사용하여 지정할 수 있음

예시

"initialCondition": {
    "type": "expression",
    "constants": {
        "gamma": "1.4"
    },
    "rho": "1.0",
    "u": "0.0",
    "v": "0.0",
    "w": "0.0",
    "p": "1/gamma"
}

4.10 시간 단계 (timeStepping)

OPTIONAL

이 항목은 시간 단계에 대한 수치 매개변수를 정의합니다. 좀 더 자세한 정보는 다음 시간 단계 knowedge base 문서를 참고하세요.

Options Additional Options Default Description
physicalSteps 1 [int] 물리적 단계의 횟수. "maxPhysicalSteps"은 이 항목에 대해 사용가능한 별칭.
timeStepSize "inf" [string or float] 물리적 단계 진행에서 무차원 시간 단계 크기. 이 값은 다음과 같이 계산됨 \frac{\Delta t_{physical} C_{\infty}}{L_{Gridunit}}. 여기서 \Delta t_{physical}은 물리적 시간(초) 단계 크기. "inf"는 정상상태 해석을 의미함
maxPseudoSteps 2000 [int] 하나의 물리적 단계 내의 최대 가상(pseudo) 단계 횟수
CFL 각 물리적 단계 내에서의 CFL 설정
type "ramp" "ramp"로 지정하면, CFL은 가상 단계 수인 rampSteps를 통해 초기에서 최종까지 증가(ramp) 함. "adaptive"가 지정되면, CFL 값은 각 가상 단계에서 솔버 수렴 수준을 기반으로 내부적으로 계산됨.
initial 5 [int] 가상 시간 단계 계산을 위한 초기 CFL("ramp"일 때 사용 가능)
final 40 [int] 가상 시간 단계 계산을 위한 최종 CFL("ramp"일 때 사용 가능)
rampSteps 200 [int] 하나의 물리적 단계 내에서 "final" CFL에 도달하기 까지의 가상 단계 횟수("ramp"일 때 사용 가능)
min 0.1 허용할 수 있는 최소 CFL("adaptive"일 때 사용 가능)
max Steady: 10000, Unsteady: 1000000 허용할 수 있는 최대 CFL("adaptive"일 때 사용 가능)
maxRelativeChange 1 각 가상 단계에서 허용가능한 CFL의 최대 상대 변화(%)("adaptive"일 때 사용 가능). 비정상상태 해석에서, maxRelativeChange 값은 솔버가 각 물리적 단계에서 얼마나 잘 수렴하는지에 따라 자동으로 업데이트 됨
convergenceLimitingFactor steady: 0.25, Unsteady: 1 이 인자는 "adpative" CFL을 사용할 때, 보수성 수준을 제어함. 값이 작을수록 CFL 값에 대한 보다 보수적인 제한에 해당됨.

Note

timeStepSize는 무차원 값이며, 여기서 time-scale은 격자 단위를 자유류 음속으로 나눈 값입니다. 따라서 timeStepSize=1이 의미하는 것은 소리가 자유류에서 1 격자 단위를 이동하는데 걸리는 시간입니다.

예시

"timeStepping": {
    "timeStepSize": "inf",
    "maxPhysicalSteps": 1,
    "maxPseudoSteps": 10000,
    "CFL": {
        "initial": 1,
        "final": 100,
        "rampSteps": 2000
        }
}

4.11 슬라이딩 인터에피스 (slidingInterfaces)

Note

버전 23.3.2.0 이후부터 slidingInterfaces의 사용은 폐기되었습니다. 회전 영역을 지정할 때는 volumeZone->referenceFrame을 사용하는 것을 권장합니다. 슬라이딩 인터페이스에서 새로운 기능으로 전환하는 방법에 대한 자세한 내용은 여기에서 찾을 수 있습니다. slidingInterfaces의 세부 사항은 이전 버전의 문서에서 찾을 수 있습니다.

4.12 actuatorDisks (list)

OPTIONAL

이 항목은 actuator disk에 대한 입력을 정의합니다. 좀 더 자세한 정보는 다음 actuator disk knowedge base 문서를 참고하세요.

Options Default Description
center REQUIRED [3-array(float)] Actuator Disk의 중심
axisThrust REQUIRED [3-array(float)] 추력 방향, 단위 벡터
thickness REQUIRED [float] Actuator Disk의 두께
forcePerArea->radius REQUIRED [list(float)] 격자 단위의 샘플링 위치 반경
forcePerArea->thrust REQUIRED [list(float)] 축 방향으로 면적당 작용하는 힘, 양의 값은 축방향 힘이 "axisThrust"와 같은 방향인 것을 의미. 무차원식 \frac{thrustPerArea(SI=N/m^2)}{\rho_{\infty}C^2_{\infty}}
forcePerArea->circumferential REQUIRED [list(float)] 원주 방향으로 면적당 작용하는 힘, 양의 값은 원주력이 오른손 법칙에 따라 "axisThrust"와 같은 방향인 것을 의미. 무차원식 \frac{circumferentialForcePerArea(SI=N/m^2)}{\rho_{\infty}C^2_{\infty}}

예시

"actuatorDisks":
[
    {
    "center":[0.0, 0.0, 0.0],    
    "axisThrust":[0.0,0.0,1.0],
    "thickness": 0.01,
        "forcePerArea":{
            "radius":[0.01, 0.05, 0.1],
        "thrust":[0.001, 0.02, 0],
        "circumferential":[-0.0001, -0.003, 0]
    }
    }
]

4.13 BETDisks (list)

OPTIONAL

이 항목에서는 Blade Element Theory(BET) 모델에 대한 입력이 정의됩니다. 매개변수에 대한 자세한 내용은 BET knowledge base 문서를 참고하세요. Sectional polar를 생성하기 위해 BET 변환 모듈을 사용할 수 있으며, 여기에서 sectional polar 입력에 대한 best-practice와 설명을 참고하세요. 정상상태 BET Disk 모델 사용에 대한 자세한 내용은 XV-15 로터에 대한 해석 사례를 참고하세요. 비정상상태 BET Line 모델은 단순히 정상상태 BET Disk 모델의 시간 항을 추가한 모델이므로, 대부분의 모델 매개변수는 두 방법 모두에 적용할 수 있습니다.

Options Default Description
rotationDirectionRule "rightHand" [string] 회전 방향과 추력 방향에 대한 규칙. "rightHand" 또는 "leftHand".
centerOfRotation REQUIRED [3-array(float)] Blade Element Theory(BET) disk의 중심
axisOfRotation REQUIRED [3-array(float)] BET disk의 회전 축. 즉, (+) 추력 축
numberOfBlades REQUIRED [int] 모델의 블레이드 수
radius REQUIRED [float] 로터 디스크의 무차원 반경, = \rm{Radius_{dimensional}/L_{gridUnit}}
omega REQUIRED [float] 무차원 회전 속도, radians/nondim-unit-time, =\frac{\Omega \cdot L_{gridUnit}}{C_{\infty}}, \Omega의 단위는 rad/s
chordRef REQUIRED [float] 블레이드 절단면 별 부하 계산에 사용되는 무차원 참조 시위
nLoadingNodes REQUIRED [float] BET Loading Output에 정의되어 있는 절단면 별 추력(C_t) 및 토크(C_q) 계수 계산에 사용되는 노드의 수
thickness REQUIRED [float] BET disk의 무차원 두께
bladeLineChord 0.0 [float] 비정상상태 BET Line 해석을 위한 무차원 시위. 기본 값은 0.0은 정상상태 BET disk 해석을 의미
initialBladeDirection bladeLineChord = 0 이 아닐 경우, REQUIRED [3-arrary(float)] BET 모델 내의 첫 번째 블레이드의 방향. 비정상상태 BET Line 해석의 경우, 반드시 설정되어야 함
twists REQUIRED [list(dict)] 반경 방향 위치에 대한 함수인 각도 단위 twists를 지정하는 목록. 목록의 항목은 반경 값으로 sort 되어야 함
chords REQUIRED [list(dict)] 반경 방향 위치에 대한 함수인 블레이드 시위를 지정하는 목록. 목록의 항목은 반경 값으로 sort 되어야 함
sectionalPolars REQUIRED [list(dict)] "sectionalRadiuses"에 지정된 모든 반경 위치에 대한 목록. 각 목록에는 "liftCoeffs"와 dragCoeffs"라는 두 개의 항목이 있으며, 데이터 저장 형식은 둘 다 동일한 3D 배열(중첩된 목록 형식). 배열의 첫 번째 인덱스는 지정된 극좌표 데이터의 "MachNumbers"에 해당. 배열의 두 번째 인덱스는 극좌표 데이터의 "ReynoldsNumbers"에 해당. 세 번째 인덱스는 "alphas"에 해당. 채워지는 값들은 각각 양력 계수 또는 항력 계수를 의미
sectionalRadiuses REQUIRED 격자 단위의 반경 위치 목록
alphas REQUIRED [list(float)] "sectionalPolars"에 C_L, C_D가 지정된 grid unit의 반경 방향 위치 목록
MachNumbers REQUIRED [list(float)] "sectionalPolars"에서 제공된 airfoil polar와 관련된 Mach 수
ReynoldsNumbers REQUIRED [list(float)] "sectionalPolars"에서 제공된 airfoil polar와 관련된 Reynolds 수
tipGap "inf" [float] tip loss facotr를 정의하는 블레이드 팁과 고체 바디 사이의 무차원 거리

예시

"BETDisks": [
        {
            "rotationDirectionRule": "leftHand",
            "centerOfRotation": [0, 0, 0],
            "axisOfRotation": [0, 0, 1],
            "numberOfBlades": 3,
            "radius": 150,
            "omega": 0.0046,
            "chordRef": 14,
            "thickness": 15,
            "nLoadingNodes": 20,
            "MachNumbers": [0],
            "ReynoldsNumbers": [1000000],
            "alphas": [
                -180,
                0,
                180
            ],
            "sectionalRadiuses": [
                13.5,
                120,
                150
            ],
            "twists": [
                {
                    "radius": 13.5,
                    "twist": 40.29936539609504
                },
                {
                    "radius": 76.5,
                    "twist": 16.596477306554306
                },
                {
                    "radius": 150,
                    "twist": 3.97516
                }
            ],
            "chords": [
                {
                    "radius": 13.4999999,
                    "chord": 0
                },
                {
                    "radius": 13.5,
                    "chord": 17.69622361
                },
                {
                    "radius": 150.0348189415042,
                    "chord": 14.004512929656503
                }
            ],
            "sectionalPolars": [
                {
                    "liftCoeffs": [
                        [
                            [
                                8.998801703796744e-12,
                                0.019549999999999998,
                                -8.998801703796744e-12
                            ]
                        ]
                    ],
                    "dragCoeffs": [
                        [
                            [
                                0.03000000000109987,
                                0.007595,
                                0.03000000000109987
                            ]
                        ]
                    ]
                },
                {
                    "liftCoeffs": [
                        [
                            [
                                8.998801703796744e-12,
                                0.18164999999999998,
                                -8.998801703796744e-12
                            ]
                        ]
                    ],
                    "dragCoeffs": [
                        [
                            [
                                0.03000000000109987,
                                0.0062699999999999995,
                                0.03000000000109987
                            ]
                        ]
                    ]
                },
                {
                    "liftCoeffs": [
                        [
                            [
                    -8.998801703796744e-12,
                                0.0589,
                                -8.998801703796744e-12
                            ]
                        ]
                    ],
                    "dragCoeffs": [
                        [
                            [
                                0.03000000000109987,
                                0.004765,
                                0.03000000000109987
                            ]
                        ]
                    ]
                }
            ],

        "tipGap": "inf"
        }
    ]

4.14 다공성 매질 (porousMedia)

OPTIONAL

이 항목은 porous media 모델에 대한 입력을 정의합니다. 좀 더 자세한 정보는 다음 porous media knowedge base 문서를 참고하세요.

Options Aditional Options Default Description
DarcyCoefficient REQUIRED [3-array(float)] 점성 손실 항을 스케일링하는 다공성 매질 모델의 Darcy 계수. 체적 영역의 기준 좌표계에서 3개의 축 각각에 대한 계수를 정의
ForchheimerCoefficient REQUIRED [3-array(float)] 관성 손실 항을 스케일링하는 다공성 매질 모델의 Forchheimer 계수
volumeZone REQUIRED [dict] 다공성 매질 모델이 적용된 격자 영역의 속성을 정의하는 목록
zoneType REQUIRED [string] 영역의 형상과 종류. 가능한 값, "box"
center REQUIRED [3-array(float)] "zoneType"이 "box"인 경우, 상자의 중심
axes REQUIRED [[3-array(float)], [3-array(float)]] "zoneType"이 "box"인 경우, 상자의 x 및 y 방향을 정의하는 2 개 축. 또한 영역의 기준 좌표계를 정의
lengths REQUIRED [3-array(float)] "zoneType"이 "box"인 경우, x, y, z 방향의 상자 길이
windowingLengths [0.02*lengths[0], 0.02*lengths[1], 0.02*lengths[2]] [3-array(float)] "zoneType"이 "box"인 경우, 모서리에 "window function"이 적용되는 x, y, z 방향에서 상자의 총 길이

예시

 "porousMedia": [
    {
        "DarcyCoefficient": [1000000, 0, 0],
        "ForchheimerCoefficient": [1, 0, 0],
        "volumeZone": {
            "zoneType": "box",
            "center": [0, 0, 0],
            "lengths": [0.2, 0.2, 2],
            "axes": [[0, 1, 0], [0, 0, 1]]
        }
    }
]

4.15 사용자 정의 역학 (userDefinedDynamics)

OPTIONAL

이 항목은 사용자 정의 역학에 대한 입력을 정의합니다. 좀 더 자세한 정보는 다음 Tutorial 7.10 User Defined Dynamics 문서를 참고하세요.

Options Default Description
dynamicsName REQUIRED [string] 사용자 정의 역학의 이름
constants Empty [dict] 표현식 내에서 사용할 수 있는 상수의 목록
inputVars REQUIRED [list(string)] 사용자 정의 역학을 정의하는 입력 목록. 예를 들면, "CL", "CD", "bet_NUM_torque", "bet_NUM_thrust", (NUM은 0에서 시작하는 BET disk 인덱스), "momnetX", "momentY", "momentZ" (모멘트 중심에 대한 X/Y/Z 모멘트)
inputBoundaryPatches Empty [list(string)] 입력 변수가 속하는 경계면 이름. 여러 경계면이 지정된 경우 경계면의 합이 입력으로 사용됨. 이름에 소스를 이미 지정한 입력 변수의 경우 (예: bet_NUM_torque)이 항목은 영향을 미치지 않음
outputVars Empty [dict] 출력 변수를 위한 출력 변수 이름과 표현식은 상태 변수를 사용. 예를 들어, "alphaAngle", "betaAngle", "bet_NUM_omega"(NUM은 0에서 시작하는 BET disk 인덱스). "theta", "omega", "omegaDot"(슬라이딩 인터페이스를 위한 radian 단위의 회전 각도/속도/가속도). 지원되는 모든 변수 목록은 여기를 참조. 출력 변수 값에 대한 수정 사항은 솔버에 직접 반영되므로 주의할 것. 표현식은 사용자 정의 표현식 내용을 참조.
outputTargetName Empty [list(string)] 출력 변수가 속하는 대상의 이름. 예를 들어, 이 항목의 값은 회전 영역의 이름일 수 있음. 하나의 사용자 정의 역학 인스턴스 당 하나의 출력 대상만 지원됨.
stateVarsInitialValue Empty [list(string)] 상태 변수의 초기값 지정. 이 항목에는 값(예: "0.0"과 같은 형태의 문자열) 또는 이전에 정의된 상수 또는 임의의 입력 및 출력 변수를 사용한 표현식 입력 가능(예: "2.0 * alphaAngle + someConstant"). 이 목록들은 state[0], state[1], ...에 대한 각각의 초기값을 의미
updateLaw Empty [list(string)] 상태 변수를 업데이트하는 표현식 목록. 이 목록들은 state[0], state[1], ...에 대한 업데이트 법칙에 해당. 표현식은 사용자 정의 표현식 내용을 참조.

예시

"userDefinedDynamics": [
    {
        "dynamicsName": "alphaController",
        "inputVars": [
            "CL"
        ],
        "constants": {
            "CLTarget": 0.4,
            "Kp": 0.2,
            "Ki": 0.002
        },
        "outputVars": {
            "alphaAngle": "if (pseudoStep > 500) state[0]; else alphaAngle;"
        },
        "stateVarsInitialValue": [
            "alphaAngle",
            "0.0"
        ],
        "updateLaw": [
            "if (pseudoStep > 500) state[0] + Kp * (CLTarget - CL) + Ki * state[1]; else state[0];",
            "if (pseudoStep > 500) state[1] + (CLTarget - CL); else state[1];"
        ],
        "inputBoundaryPatches": [
            "1"
        ]
    }
]

위의 내용은 userDefinedDynamics 튜토리얼에서 사용하는 해석 설정 파일 입니다.

4.16 출력 (Output)

이 항목은 해석 결과 출력과 관련된 모든 설정 파일 입력에 대해 설명합니다. 여기에는 표면(surface) 및 체적(volume) 결과, 단면(slice), 등고면(iso-surface) 및 프로브(probe), 표면 적분(surface integral) 모니터가 있습니다. "HeatTransfer"로 지정된 "volumeZones"의 경우 열 방정식과 관련된 출력, 즉 "T"와 "residualHeatSolver"만 유효합니다. 모든 유형의 출력이 지원하는 일반적인 무차원 변수는 아래 나와 있습니다: note

Note

솔버 설정 파일에서 각 유형의 출력 실행 매개변수(volumeOutput, surfaceOutput, sliceOutput, isosurfaceOutput 등)는 완전히 독립적 입니다. 즉, 표면과 단면 출력만 필요한 경우, 아래와 같이 구성할 수 있습니다.

...
"surfaceOutput": {
    "outputFormat": "tecplot",
    "outputFields": ["SEE_BELOW_FOR_METRICS"]
},
"sliceOutput": {
    "outputFormat": "tecplot",
    "outputFields": ["SEE_BELOW_FOR_METRICS"],
    "slices": {
        "x0": {
            "sliceNormal": [ 1, 0, 0 ],
            "sliceOrigin": [ 0, 0, 0 ],
            "outputFields": [ "SEE_BELOW_FOR_METRICS" ]
        },
        "y1": {
            "sliceNormal": [ 0, 1, 0 ],
            "sliceOrigin": [ 2, 1, 0 ],
            "outputFields": [ "SEE_BELOW_FOR_METRICS" ]
        }
    }
},...


범용 출력 변수

Name Description
Cp 압력 계수(Coefficient of pressure) C_p = (\frac{p-p_\infty}{\frac{1}{2}\rho_\infty U_{ref}^2})
gradW 기본 변수의 구배(Gradient of primitive solution)
kOmega kOmegaSST 모델의 k, omega
Mach 마하 수
mut 난류 점도
mutRatio 난류 점도와 자유류 점도 비, \mu_t/\mu_\infty
nuHat Spalart-Allmaras 변수, nuHat
primitiveVars 기본 변수 결과, 출력 값 \rho, u, v, w, p (밀도, 속도의 3가지 성분, 압력)
qcriterion Q criterion
residualNavierStokes N-S 잔차 값의 5가지 성분
residualTransition 천이 모델(transition model) 잔차 값
residualTurbulence 난류 모델 잔차 값
s 엔트로피
solutionNavierStokes 보존형 Navier-Stokes 방정식의 해
solutionTransition 천이 모델의 해
solutionTurbulence 난류 모델의 해
T 온도
vorticity 와도(vorticity)
wallDistance 벽에서 가장 인접한 노드까지의 거리
numericalDissipationFactor numericalDissipationFactor가 증가하는 위치를 보여주는 변수
residualHeatSolver heat equation solver의 잔차 값


volumeOutputsliceOutput에서 확인할 수 있는 추가적인 무차원 변수들:

Name Description
betMetrics BET disk 모델 결과 표현과 관련된 출력 값(Outputs), VelocityRelative, AlphaRadians, CfAxial, CfCircumferential, TipLossFactor, LocalSolidityIntegralWeight 등의 변수를 포함한 모든 BETDisk 모델에 대한 관련 변수
betMetricsPerDisk 위와 동일하나, 각 BETdisk에는 자체 betMetrics가 있으므로 중복을 피할 수 있음.


surfaceOutput에서 확인할 수 있는 추가적인 무차원 변수들:

Name Description
CfVec 표면 마찰 계수 벡터(skin friction coefficient vector), C_{fvec} [3] = \frac{\tau_{wall}[3]}{\frac{1}{2}\rho_\infty U_{ref}^2} 여기서 \tau_{wall}[3]는 3차원 벽면 전단 응력 벡터
Cf CfVec의 크기
heatFlux 무차원 물리량으로 계산된 열 유속. \rho_\infty C_\infty^3을 곱하여 차원 값으로 변환
nodeNormals 벽 법선 방향(단위 벡터가 아닐 수 있음). 이 변수는 시간 평균 기능을 지원하지 않음.
nodeForcesPerUnitArea \frac{\tau_{viscous} [3] - (p-p_\infty )*normal[3]}{\rho_\infty C_\infty^2}, \tau_{viscous}[3]은 3차원 점성 응력 벡터이고 normal[3]은 고체에서 유체를 가리키는 3차원 단위 법선 벡터임.
VelocityRelative 회전 좌표계(rotating frame) 속도
wallFunctionMetric (beta feature) 이 변수는 벽 함수의 품질을 나타내는 국소 지표 입니다. 1.25 미만의 값은 벽 전단 응력이 잘 추정되었음을 나타냄. 1.25화 10 사이는 낮은 신뢰도를 나타내고, 10보다 큰 값은 벽 전단 응력 결과를 신뢰할 수 없음을 나타냄.


Note

release-23.1.1.0부터 Outputs을 지정하는 이전 구문은 더 이상 사용되지 않으며 모든 변수가 지원되지 않습니다. 사용자는 아래 설명된 대로 새로운 "outputFields" 구문을 사용하는 것이 좋습니다.

위에 나열된 출력 변수는 사전 정의된 변수입니다. 사용자는 "userDefinedFields"에서 직접 수학식을 정의하여 임의의 출력 변수를 생성할 수 있습니다. 또한 이렇게 정의된 새로운 출력 변수는 사전 정의된 출력 변수와 마찬가지로 "outputFields" 항목을 통해 출력할 수 있습니다. 다음 링크를 참고하세요 userDefinedFields.

4.16.1 체적 출력 (volumeOutput)

OPTIONAL

Options Default Description
animationFrequency -1 [int] volumeOutput이 저장되는 빈도(물리적 시간 단계 - 1 물리적 단계 not physical time). -1이면 해석 종료 후 1회만 저장
animationFrequencyOffset 0 [int] volumeOutput의 저장 시작 시점 오프셋 값 지정. 0은 해석 시작 시 저장 시작.
초기 물리적 시간 단계에서 유동장 발달이 충분하지 않은 경우, 오프셋 값 지정을 통해 유동장이 완전히 발달한 시점부터 데이터 저장
computeTimeAverages False [boolean] 시간 평균된 물리량 출력
animationFrequencyTimeAverage -1 [int] 시간 평균된 volumeOutput의 저장 빈도(물리적 시간 단계). -1이면 해석 종료 후 1회만 저장
animationFrequencyTimeAverageOffset 0 [int] 시간 평균된 volumeOutput의 저장 시작 시점 오프셋 값 지정. 0은 해석 시작 시 저장 시작.
startAverageIntegrationStep 0 [int] 평균 계산을 시작하는 물리적 시간 단계
outputFields [] [list(string)] 출력 변수 목록. 범용 출력 변수와 volumeOutput에서만 가능한 특정 변수들 포함
outputFormat "paraview" [string] "paraview", "tecplot" 또는 "both"


예시

"volumeOutput": {
    "outputFormat": "tecplot",
    "animationFrequency": -1,
    "animationFrequencyOffset": 0,
    "animationFrequencyTimeAverage": -1,
    "animationFrequencyTimeAverageOffset": 0,
    "computeTimeAverages": false,
    "startAverageIntegrationStep": 0,
    "outputFields": ["primitiveVars", "betMetrics", "qcriterion"]
}


4.16.2 표면 출력 (surfaceOutput)

OPTIONAL

Options Default Description
animationFrequency -1 [int] surfaceOutput이 저장되는 빈도(물리적 시간 단계 - 1 물리적 단계 not physical time). -1이면 해석 종료 후 1회만 저장
animationFrequencyOffset 0 [int] surfaceOutput의 저장 시작 시점 오프셋 값 지정. 0은 해석 시작 시 저장 시작.
outputFormat "paraview" [string] "paraview", "tecplot" 또는 "both"
writeSingleFile False [boolean] 기본적으로 개별 표면 마다 출력 되는 결과를 하나의 파일에 저장. Tecplot 형식만 지원.
computeTimeAverages False [boolean] 시간 평균된 물리량 출력
animationFrequencyTimeAverage -1 [int] 시간 평균된 volumeOutput의 저장 빈도(물리적 시간 단계). -1이면 해석 종료 후 1회만 저장
animationFrequencyTimeAverageOffset 0 [int] 시간 평균된 volumeOutput의 저장 시작 시점 오프셋 값 지정. 0은 해석 시작 시 저장 시작.
startAverageIntegrationStep 0 [int] 평균 계산을 시작하는 물리적 시간 단계
outputFields [] [list(string)] 출력 변수 목록. 범용 출력 변수와 surfaceOutput에서만 가능한 특정 변수들 포함
surfaces {} [dict] 표면 별 출력 변수를 지정할 수 있는 항목임. 격자 파일의 패치 이름 또는 JSON에서 지정한 이름 사용 가능.


예시

"surfaceOutput": {
    "animationFrequency": -1,
    "animationFrequencyOffset": 0,
    "animationFrequencyTimeAverage": -1,
    "animationFrequencyTimeAverageOffset": 0,
    "computeTimeAverages": false,
    "outputFormat": "paraview",
    "startAverageIntegrationStep": 0,
    "writeSingleFile": false,
    "outputFields": [ "yPlus" ],
    "surfaces": {
        "freestream": {
            "outputFields": [ "Cp", "Mach" ]
            # Will output "Cp", "Mach", "yPlus"
        },
        "symmetry": {
            "outputFields": [ "T", "heatFlux" ]
            # Will output "T", "heatFlux", "yPlus"
        },
        "wing": {
            "outputFields": [ "CfVec" ]
            # Will output "CfVec", "yPlus"
        }
    }
}


4.16.3 단면(절단면) 출력 (sliceOutput)

OPTIONAL

Options Default Description
animationFrequency -1 [int] sliceOutput이 저장되는 빈도(물리적 시간 단계 - 1 물리적 단계 not physical time). -1이면 해석 종료 후 1회만 저장
animationFrequencyOffset 0 [int] sliceOutput의 저장 시작 시점 오프셋 값 지정. 0은 해석 시작 시 저장 시작.
outputFormat "paraview" [string] "paraview", "tecplot" 또는 "both"
outputFields [] [list(string)] 출력 변수 목록. 범용 출력 변수와 sliceOutput에서만 가능한 특정 변수들 포함
slices {} [dict] 단면 별 출력 변수를 지정할 수 있는 항목임. 격자 파일의 패치 이름 또는 JSON에서 지정한 이름 사용 가능.
sliceNormal [] [3-array(float)] 단면의 법선 방향(slices 항목 내 배치)
sliceOrigin [] [3-array(float)] 단면 상의 한 점의 좌표(slices 항목 내 배치)


예시

"sliceOutput": {
    "animationFrequency": -1,
    "animationFrequencyOffset": 0,
    "outputFormat": "tecplot",
    "outputFields": [ "Cp" ],
    "slices": {
        "x0": {
            "sliceNormal": [ 1, 0, 0 ],
            "sliceOrigin": [ 0, 0, 0 ],
            "outputFields": [ "Mach" ]
            # Will output "Mach", "Cp"
        },
        "y1": {
            "sliceNormal": [ 0, 1, 0 ],
            "sliceOrigin": [ 2, 1, 0 ],
            "outputFields": [ "T" ]
            # Will output "T", "Cp"
        }
    }
}


4.16.4 등고면 출력 (isoSurfaceOutput)

OPTIONAL

Options Additional Options Default Description
outputFormat "paraview" [string] "paraview", "tecplot", 또는 "both"
isoSurfaces {} [dict] 등고면 설정 항목. 이 항목에 설정되는 값은 등고면 파일의 이름이 됨
surfaceField [string] 등고면 필드 변수. p, rho, Mach, qcriterion, s, T, Cp, mut, nuHat 중 하나
surfaceFieldMagnitude [float] "surfaceField"의 등고 값
outputFields [list(string)] 출력 변수 목록. 범용 출력 변수 참고
animationFrequency -1 [int] "volume output"이 저장되는 빈도(물리적 시간 단계 수). -1은 해석 종료 시 한번 저장
animationFrequencyOffset 0 [int] "volume output" 애니메이션 시작 오프셋(물리적 시간 단계 수). 0은 해석 시작 시 시작


예시

"isoSurfaceOutput": {
    "outputFormat": "tecplot",
    "animationFrequency": 10,
    "isoSurfaces": {
        "q_1e-3": {
            "surfaceField": "qcriterion",
            "surfaceFieldMagnitude": 1e-3,
            "outputFields": [ "Cp", "Mach" ]
        }
    }
},


4.16.5 모니터 출력 (monitorOutput)

OPTIONAL

Options Additional Options Default Description
monitors {} [dict] 모니터 그룹 항목 설정. 모니터 포인트에서 추출된 데이터는 10개의 가상 단계마다 그리고 각 물리적 시간 단계가 끝날 때마나 파일에 저장됨. 이 항목에 설정되는 값은 모니터 그룹의 이름이 됨
type [string] 모니터 유형. 현재는 "probe"와 "surfaceIntegral"만 지원됨
monitorLocations [list(3-array(float))] "probe" 모니터만 해당. 현재 모니터 그룹에 속하는 모니터 포인트의 좌표값
surfaces [list(string)] "surfaceIntegral" 모니터만 해당. 표면 적분 계산이 수행될 표면 이름 모음. 예시 자료는 표면 적분 모니터 참고
outputFields [list(string)] 현재 모니터 그룹 내의 모든 모니터에 추가될 출력 변수 목록. 범용 출력 변수 항목 참고

Note

격자 경계 부근의 프로브를 배치할 때, 입력 좌표의 정확도를 높여 프로브가 반드시 격자 내에 위치하도록 해야 합니다.


예시

"monitorOutput": {
    "monitors": {
        "MyProbe": {
            "type": "probe",
            "monitorLocations": [
                [ 0.12, 0.34, 0.262 ],
                [ 3.124e-1, 0.01, 0.03 ]
            ],
            "outputFields": [ "primitiveVars", "vorticity", "T", "s", "Cp", "mut" ]
        },
        "MySurfaceIntegral": {
            "type": "surfaceIntegral",
            "surfaces": [
                "NoSlipWall1",
                "NoSlipWall2"
            ],
            "outputFields": [ "Area" ]  
            ##Computes combined surface area of NoSlipWall1 and NoSlipWall2
        }
    }
},

"userDefinedFields": [
    {
        "name": "Area",
        "expression": "Area = magnitude(nodeNormals);",
        "comment":"computes nodal surface area."
    }
]


4.16.6 공력소음 출력 (aeroacousticOutput)

OPTIONAL

"aeroacousticOuput" 항목을 해석 JSON 파일에 입력하면 공력소음 솔버가 활성화 됩니다.

Options Additional Options Default Description
observers [] [list(3-array(float))] 공력소음 출력 파일 내에 음향 압력 신호의 시간 이력이 저장되는 observer 위치 목록. observer 위치는 해석 영역 외부에 있을 수 있지만, 해석 영역의 고체 표면 위나 내부에 있어서는 안됨
writePerSurfaceOutput False [boolean] 모든 벽면을 합한 결과뿐 아니라, 표면 별로 공력소음 결과를 기록

예시

1"aeroacousticOutput": {
2    "observers": [
3        [0, 1, 0],
4        [1, 0, 0]
5    ]
6}


4.16.7 사용자 정의 함수 (userDefinedFields)

OPTIONAL

사용자는 출력 변수로 사용할 수 있는 사용자 정의 변수를 추가로 정의할 수 있습니다. 변수와 표현식의 접근성에 대한 자세한 내용은 사용자 정의 함수를 참고해 주세요.

Note

"userDefinedFields"는 현재 베타 기능으로, 본 배포판 유지 기강 동안 변경될 수 있습니다.

Options Additional Options Default Description
name [string] 사용자 정의 변수 이름
expression [string] 현재 사용자 정의 함수에 대한 수학적 표현식. 표현식은 C 언어와 유사한 문법을 따라야 함. 자세한 내용은 사용자 정의 함수 가이드라인 참고
comments [string] 정의된 변수에 대한 자세한 내용은 기록할 수 있는 코멘트 항목


예시

 "userDefinedFields": [
     {
         "name": "TotalPressureCoeff",
         "expression": "double gamma = 1.40; double pow1 = gamma/(gamma-1); double pow2 = (gamma-1) / 2; double MachRefSq = MachRef * MachRef; double Mach = sqrt(primitiveVars[1] * primitiveVars[1] + primitiveVars[2] * primitiveVars[2] + primitiveVars[3] * primitiveVars[3]) / sqrt(gamma * primitiveVars[4] / primitiveVars[0]);  double MachSq = Mach * Mach; TotalPressureCoeff[0] = (gamma*primitiveVars[4]*pow((1+pow2*MachSq),pow1)-pow((1+pow2*MachRefSq),pow1))/(gamma/2*MachRefSq);",
         "comment":"Computes the total pressure coefficient."
     },
     {
         "name": "PressureForce",
         "expression": "double p = primitiveVars[4] - pressureFreestream;  PressureForce[0] = p * rotationModel_nodeNormals[0]; PressureForce[1] = p * rotationModel_nodeNormals[1]; PressureForce[2] = p * rotationModel_nodeNormals[2];",
        "comment":"Computes the nodal pressure force."
    }
],

위 예시에는 "TotalPressureCoeff"와 "PressureForce" 사용자 정의 함수가 정의되어 있습니다. 위의 두 사용자 정의 함수는 사용자 정의 출력 변수, 사용자 정의 표면 적분에 있는 예시에서 가져온 것 입니다.

Note

release-23.1.1.0부터 출력 변수를 지정하는 이전 구문은 더 이상 사용되지 않으며 모든 변수가 지원되지 않습니다. 사용자는 이 설명서에 설명된 대로 새 구문을 사용하는 것이 좋습니다.