콘텐츠로 이동

8.3. Postprocessing

8.3.1. Nondimensional Outputs

다음 목록은 결과 파일에서 일반적으로 사용되는 일부 무차원 변수들입니다.

변수 명 무차원 값에 대한 참고 값 Flow360 예시
Length L_{gridUnit} {volumeOutput, surfaceOutput} -> wallDistance
Density \rho_\infty {surfaceOutput, volumeOutput} -> primitiveVars
Velocity C_\infty {surfaceOutput, volumeOutput} -> primitiveVars
Pressure \rho_\infty C_\infty^2 {surfaceOutput, volumeOutput} -> primitiveVars, surfaceOutput -> nodeForcesPerUnitArea
Temperature T_\infty volumeOutput -> T
Heat Flux \rho_\infty C_\infty^3 surfaceOutput -> heatFlux
Force \rho_\infty C_\infty^2 L_{gridUnit}^2 force in BET output
Moment \rho_\infty C_\infty^2 L_{gridUnit}^3 moment in BET output
Table 8.3.1 Flow360 무차원 결과에 대한 참고 값들

위의 무차원 값들 외에도 CFD 분야에서 일반적으로 사용되는 여러 계수들이 있습니다. 예를 들자면 압력 계수(C_p), 표면 마찰 계수(C_f), 양력 계수(C_L), 항력 계수(C_D) 등이 있습니다. Flow360은 위의 계수들을 volumeOutput, surfaceOutput, sliceOutput을 통해 내보내며, Web UI의 경우, "Forces" 탭에서 확인할 수 있습니다.

Caution

C_p, C_f, C_D, C_L을 계산하는데 사용되는 기준 속도 U_{ref}는 사용자가 freestream -> Mach 또는 freestream -> MachRef를 통해 설정해야 합니다. 이와 관련된 내용은 해석 케이스 구성 페이지에서 확인할 수 있습니다. Table 8.3.1의 무차원화에 사용되는 자유류 속도 (C_\infty)와는 다릅니다.

Flow360에서 내보낸 힘 계수와 모멘트 계수는 Table 8.3.2에 나와 있습니다. 이러한 계수는 Flow360 Web의 각 케이스에 있는 "Forces" 탭에 표시됩니다. 또한 flow360client.case.GetCaseTotalForces(caseId) 파이썬 API 호출로도 가져올 수 있습니다.

계수 명 정의
CL Lift / \frac{1}{2} \rho_\infty U_{ref}^2 A_{ref}
CD Drag / \frac{1}{2} \rho_\infty U_{ref}^2 A_{ref}
CFx Force_x / \frac{1}{2} \rho_\infty U_{ref}^2 A_{ref}
CFy Force_y / \frac{1}{2} \rho_\infty U_{ref}^2 A_{ref}
CFz Force_z / \frac{1}{2} \rho_\infty U_{ref}^2 A_{ref}
CMx Moment_x / \frac{1}{2} \rho_\infty U_{ref}^2 A_{ref} L_{ref}[0]
CMy Moment_y / \frac{1}{2} \rho_\infty U_{ref}^2 A_{ref} L_{ref}[1]
CMz Moment_z / \frac{1}{2} \rho_\infty U_{ref}^2 A_{ref} L_{ref}[2]
Table 8.3.2 Force coefficients and moment coefficients exported by Flow360

[!NOTE]

위 표에서 "정의" 열에 있는 모든 값들은 차원을 가지고 있음. * U_{ref} = "freestream -> MachRef" \times C_\infty * A_{ref} = "geometry -> refArea" \times L_{gridUnit}^2 * L_{ref} = "geometry -> momentLength" \times L_{gridUnit} "freestream -> MachRef", "geometry -> refArea", "geometry -> momentLength" 항목들은 Flow360.json 파일 내에 있는 값들 임.

8.3.2. History Files

해석이 완료되면 Flow360 솔버는 실행 정보와 중요한 변수들에 대한 기록을 포함하는 최대 9개의 로그 및 CSV 파일을 생성합니다. 로그 파일과 CSV 파일은 Web UI에서 다운로드 하거나 다음 파이썬 API 호출을 통해 다운로드할 수 있습니다.

로그 파일을 다운로드:

flow360client.case.DownloadSolverOut('caseId', fileName='flow360_case.user.log')

CSV 이력 파일 다운로드는 python API command를 참고해 주세요.

[!NOTE]

해석 케이스 내에 BET 또는 AD 모델이 포함되지 않는 경우, "bet_forces.csv"와 "actuatorDisk_output.csv"는 생성되지 않음.

"bet_forces.csv" 및 "actuatorDisk_output.csv"에 포함된 데이터를 제외하고, 위에 언급된 모든 다운로드 가능한 데이터는 Web UI에서 아래 그림과 같이 Convergence, MinMax, Forces 탭에서 시각화할 수 있습니다.


Fig. 8.3.1 Tabs to visualize key case history variables


8.3.2.1. Actuator Disk Output

Actuator Dosk(AD) 결과 파일인 “actuatorDisk_output.csv”은 N 번째 디스크에 대해 다음 헤더를 가지고 있습니다: physical_step, pseudo_step, Disk0_Power, Disk0_Force, Disk0_Moment, Disk1_Power, Disk1_Force, Disk1_Moment ....DiskN_Power, DiskN_Force, DiskN_Moment

Power 열은 다음 Cp power 계수를 포함하고 있습니다:

C_p = \frac{\rm{Power} (Watts) (kg \cdot m^2 / s^3)}{\rho_\infty C_\infty^3 L_{gridUnit}^2 } \quad\quad\quad\quad(8.3.1)

힘과 모멘트 열에는 사용자가 입력한 일정한 총 힘과 모멘트를 합산하여 나타냅니다.

8.3.2.2. BET Loading Output

Blade Element Theory(BET) 출력 파일, "bet_forces.csv"은 다음 물리량에 대한 시간 이력을 포함하고 있습니다.

  1. 각 디스크에 작용하는 무차원 힘과 무차원 모멘트의 x, y, z 성분, 이는 각각 "Disk[diskID]_Force_x", "Disk[diskID]_Force_y", "Disk[diskID]_Force_z", “Disk[diskID]_Moment_x”, “Disk[diskID]_Moment_y”, “Disk[diskID]_Moment_z”에 기록되어 있습니다. 무차원 힘은 아래와 같이 정의됩니다.

\quad\quad\,\, Force_{nondimensional} = \frac{Force_{physical} (N)}{\rho_\infty C_\infty^3 L_{gridUnit}^2 } \quad\quad\quad\quad(8.3.2)

무차원 모멘트는 아래와 같이 정의됩니다.

\quad\quad\,\, Moment_{nondimensional} = \frac{Moment_{physical} (N \cdot m)}{\rho_\infty C_\infty^3 L_{gridUnit}^3 } \quad\quad\quad\quad(8.3.3)

여기서 모멘트 중심(moment center)은 Flow360.json 파일에서 BETDisks에 정의된 각 디스크의 centerOfRotation 입니다.

[!NOTE]

위의 힘과 모멘트는 고체 벽면에 대한 값입니다. 유체에 작용하는 힘과 모멘트는 위 값의 역수 입니다.

[!CAUTION]

Disk[diskID]_Force 및 Disk[diskID]_Moment의 x, y, z 성분은 전역 관성 좌표계(global inertial reference frame)를 기준으로 산출됩니다. 이 기준 좌표계는 격자 파일에서 정의 됩니다.

  1. 각 블레이드의 반경 방향 위치에서 단면 추력 계수 C_t 및 단면 토크 계수 C_q는 접미사 "_Radius"(무차원), "_ThrustCoeff", "_TorqueCoeff"와 함께 "Disk[diskID]_Blade[bladeID]_R[radialID]" 형식으로 표현됩니다. 반경 방향 위치의 수는 nLoadingNodes에 표시 됩니다.

[!NOTE]

C_tC_p는 단면 별 하중인 반면, C_TC_Q는 전체 로터에 대한 합산 값 입니다. 따라서, C_t (r) = \frac{dC_T}{d(r/R)}이고, C_q (r) = \frac{dC_Q}{d(r/R)}입니다.

C_t에 대한 정의는 다음과 같습니다.

\quad\quad\,\, C_t (r) = \frac{Thrust per unit blade span (N/m)}{\frac{1}{2} \rho_\infty ((\Omega r)^2) chord_{ref} } \cdot \frac{r}{R} \quad\quad\quad\quad(8.3.4)

그리고, C_q에 대한 정의는 다음과 같습니다.

\quad\quad\,\, C_q (r) = \frac{Torque per unit blade span (N)}{\frac{1}{2} \rho_\infty ((\Omega r)^2) chord_{ref} \cdot R} \cdot \frac{r}{R} \quad\quad\quad\quad(8.3.5)

여기서 r은 반경 스테이션과 회전 축 사이에 차원이 있는 거리입니다. chord_{ref}는 차원이 있는 참조 코드 길이 입니다. R은 차원이 있는 로터 반경 값 입니다.

[!IMPORTANT]

방정식 (8.3.2), (8.3.3), (8.3.4), (8.3.5)의 RHS에 있는 모든 값들은 차원이 있습니다. 이는 Flow360.json의 BETDisks(list)내에 값들은 무차원인 것과 다릅니다. 예를 들어, 첫 번째 디스크의 첫 번째 블레이드의 첫 번째 반경 방향 위치는 r=Disk0_Blade0_R0_Radius \times L_{gridUnit} 입니다. 무차원 출력에 대한 표기 규칙은 Nodimensional Outpus에서 확인 할 수 있습니다.

[!WARNING]

BET 모델을 사용하는 정상상태 해석에 대해 C_t, C_p 결과는 "Blade0"로 명명된 첫 번째 블레이드에 대해서만 저장됩니다. 다른 블레이드의 경우 모드 0으로 저장되는데, 이는 모든 블레이드가 정상상태 BET 해석에 대해 동일한 단면 하중을 갖기 때문입니다. 비정상상태 BET Line 해석에서는 각 블레이드는 고유한 C_t, C_p 값을 갖습니다.

다음은 2 개의 BET 디스크를 포함하는 해석 모델의 "bet_forces.csv" 파일 헤더의 예시 입니다(각 디스크에 대해 nLoadingNodes=20, numberOfBlades=3 이라고 가정):

physical_step, pseudo_step,
Disk0_Force_x, Disk0_Force_y, Disk0_Force_z, Disk0_Moment_x, Disk0_Moment_y, Disk0_Moment_z,
Disk0_Blade0_R0_Radius, Disk0_Blade0_R0_ThrustCoeff, Disk0_Blade0_R0_TorqueCoeff,
Disk0_Blade0_R1_Radius, Disk0_Blade0_R1_ThrustCoeff, Disk0_Blade0_R1_TorqueCoeff,
...
Disk0_Blade0_R19_Radius, Disk0_Blade0_R19_ThrustCoeff, Disk0_Blade0_R19_TorqueCoeff,
Disk0_Blade1_R0_Radius, Disk0_Blade1_R0_ThrustCoeff, Disk0_Blade1_R0_TorqueCoeff,
Disk0_Blade1_R1_Radius, Disk0_Blade1_R1_ThrustCoeff, Disk0_Blade1_R1_TorqueCoeff,
...
Disk0_Blade1_R19_Radius, Disk0_Blade1_R19_ThrustCoeff, Disk0_Blade1_R19_TorqueCoeff,
Disk0_Blade2_R0_Radius, Disk0_Blade2_R0_ThrustCoeff, Disk0_Blade2_R0_TorqueCoeff,
Disk0_Blade2_R1_Radius, Disk0_Blade2_R1_ThrustCoeff, Disk0_Blade2_R1_TorqueCoeff,
...
Disk0_Blade2_R19_Radius, Disk0_Blade2_R19_ThrustCoeff, Disk0_Blade2_R19_TorqueCoeff,
Disk1_Force_x, Disk1_Force_y, Disk1_Force_z, Disk1_Moment_x, Disk1_Moment_y, Disk1_Moment_z,
...
...
...
Disk1_Blade2_R19_Radius, Disk1_Blade2_R19_ThrustCoeff, Disk1_Blade2_R19_TorqueCoeff

8.3.2.3. Aeroacoustic Output

Aeroacoustic 출력 파일의 이름은 "total_acoustics_v3.csv"이며, 여기에는 모든 벽면 패치(wall patches)의 전체 aeroacoustic 결과가 포함되어 있습니다. aeroacousticOutput에서 writePerSurfaceOutputtrue로 설정된 경우, "surface_NameOfPatch_acoustics_v3.csv" 파일에 각 개별 벽면 패치에 대한 결과가 저장됩니다.

각 CSV 파일에는 “time, physical_step, observer_0_pressure, observer_1_pressure, … , observer_N_pressure, observer_0_thickness, … , observer_N_thickness, observer_0_loading, … , observer_N_loading” 헤더가 포함되어 있습니다. 여기서 N+1은 해석 케이스 JSON 파일의 aeroacousticsOutput 객체에 지정된 Observers의 총 수 입니다. "_pressure" 열은 Observer 위치에서 음향 압력 신호(acoustic pressure signal)를 제공하고, "_thickness""_loading" 열은 음향 압력 신호에 대한 두께 및 하중 노이즈 기여에 해당 합니다.

출력 파일에는 시간의 함수로서 무차원 음향 압력 신호가 포함되어 있으며, 여기서 시간은 첫 번째 열에 무차원 값으로 저장 됩니다. 두 번째 열은 물리적 시간 단계입니다.

[!NOTE]

Observation 시간은 반드시 해석 시간에 포함되지는 않습니다. 음향 신호가 고체 표면에서 Observer의 위치까지 전파되는 데는 유한한 시간이 걸리기 때문입니다. 각 Observer는 고체 표면으로부터 다른 거리에 있을 수 있으므로, 특정 Observer는 주어진 시간에 다른 Observer보다 먼저 적절한 음향 신호를 받게 됩니다. 결과적으로 각 Observer의 음향 신호는 음향 신호의 유효성에 따라 시간 기록의 시작과 끝에 0 값이 채워집니다.

8.3.2.4. Heat Transfer

"surface_heat_transfer_v2.csv" 파일에는 무차원 물리량에서 계산된 열 유속의 표면 적분 값이 포함되어 있습니다. 차원이 있는 열 전달률을 찾으려면, 무차원 값에 \rho_\infty C_\infty^3 L_{gridUnit}^2을 곱합니다..

8.3.3. Visualization Files

지원되는 가시화 출력 형식은 다음과 같습니다:

  • ParaView (.pvtu)
  • Tecplot (.szplt)

내보내기 파일 형식과 내보내는 변수는 이 규칙에 따라 Flow360.json 해석 케이스 파일에서 선택됩니다.

내보내기 되는 데이터는 무차원 값이며, 차원이 있는 변수로의 변환 예시는 아래와 같습니다.

8.3.3.1. Velocity

Table 8.3.1에 따르면 속도에 대한 참조 값은 C_\infty이므로 차원이 있는 x 방향 속도는 velocityX에 자유류의 음속(C_\infty)를 곱하여 얻을 수 있습니다. 자유류의 음속을 340 m/sec로 가정하고, velocityX가 ParaView/Techplot 결과 파일에서 0.6이면, 차원이 있는 x 방향 속도는 다음과 같습니다: 340 \,\, m/sec \times 0.6 = 204 \,\, m/sec

8.3.3.2. Pressure

Table 8.3.1에 따르면 압력에 대한 참조 값은 \rho_\infty C_\infty ^2입니다. 자유류의 음속과 밀도를 각각 340 m/sec, 1.225 kg/ m^3로 가정하고 p가 ParaView/Techplot 결과 파일에서 0.65이면, 차원이 있는 압력은 다음과 같습니다: 0.65 \times 1.225 \,\, kg/m^3 \times 340^2 \,\, m^2/sec^2 = 92046.5 \,\, Pa

8.3.3.3. Node Force Per Unit Area

nodeForcesPerUnitArea는 주어진 노드에 할당된 표면적으로 나눈 노드에서 가해지는 총 힘(압력 + 마찰)을 나타냅니다. 이는 단면 하중 값을 계산하는데 특히 유용합니다. 표면 전체에 대하 적분하면 nodeForcesPerUnitArea는 표면에 작용하는 총력과 동일하게 됩니다. nodeForcesPerUnitArea을 차원화하기 위한 참조 값은 압력과 동일한 \rho_\infty C_\infty ^2 입니다.

8.3.3.4. Skin Friction Coefficient

정의된 대로, CfVec는 표면 마찰 계수 벡터이고, Cf는 해당 벡터의 크기입니다. 벽면에서 점성 응력 계산은 다음과 같습니다:

\quad\quad\,\, \tau_{wall} \,\, (N/m^2) = Cf \cdot \frac{1}{2} \rho_\infty U_{ref}^2 \quad\quad\quad\quad(8.3.6)

CfVec 벡터는 경계층이 박리되는 영역을 찾는 데 매우 유용합니다. 완전히 부착된 유동은 유선 방향에 대해 표면을 따르는 반면, 박리된 유동은 국소 재순환 유동을 유발합니다.

박리를 탐색하는 전략은 다음과 같습니다. 유선 방향에 대해 표면 마찰을 시각화하는 것입니다. 예를 들어, 날개 위의 x 방향 유동을 고려하면 음의 CfVecX 영역은 경계층 박리를 나타냅니다. -1e-6, 0, 1e-6과 같이 3개 수준으로 시각화 척도를 설정하면, 모든 음수 값은 한 가지 색으로 표현되고, 모든 양수 값은 다른 색상이 되므로, 표면으로부터 유동이 박리된 영역을 쉽게 찾을 수 있습니다. 아래 그림은 이에 대한 예시입니다.


Fig. 8.3.2 고 받음각 상태인 날개 위에서 표면 마찰 계수의 x 성분은 부착 유동(노란색)과 박리 유동(짙은 보라색) 영역을 보여줌.


표면의 박리된 유동 영역은 표면 유선(surface streamlines)을 사용하여 시각화 할 수 있습니다. 표면의 속도는 NoSlipWall의 정의에 따라 0이므로, 표면 유선을 얻으려면 streamline integration 매개변수를 velocity{X, Y, Z}에서 CfVec{X, Y, Z}로 변경해야 합니다.


Fig. 8.3.3 재순환 유동 영역을 보여주는 표면 유선 결과.


Fig. 8.3.3 Surface streamlines showing recirculation regions.

8.3.3.5. Pressure Coefficient

차원이 있는 압력을 계산하기 위한 수식은 아래와 같다:

\quad\quad\,\, p \,\, (N/m^2) = Cp \cdot \frac{1}{2} \rho_\infty U_{ref}^2 + p_\infty \quad\quad\quad\quad(8.3.7)

p_\infty는 비행체 주변의 환경 압력이며, farfield의 압력과 같습니다.

8.3.3.6. Total Pressure Coefficient

정의에 따르면 전압력(total pressure)은 정압(static pressure) p, 동압(dynamic pressure) q, 중력 수두의 합입니다. 대부분의 공력 분야에서 중력 수두는 무시됩니다. 전압력은 정체 압력(stagnation pressure)이라고 할 수 있는데, 정체 지점(stagnation poitn)에서 속도가 0이기 때문에 동압 q는 0이 되고, 전압력이 그 정체 지점의 정압 p와 같아지기 때문입니다.

이 논문의 부록에 있는 방정식 26, 29에 표시된 것 처럼, 전 압력 계수 C_{pt}는 다음 공식을 사용하여 계산할 수 있습니다:

\quad\quad\,\, C_{pt} = \frac{\gamma \cdot p \cdot (1+ \frac{\gamma - 1}{2} \cdot Mach^2)^{\frac{\gamma}{\gamma - 1}}-(1+ \frac{\gamma - 1}{2} \cdot Mach_{\infty}^2)^{\frac{\gamma}{\gamma - 1}}}{(\frac{\gamma}{2} \cdot Mach_{\infty}^2)} \quad\quad\quad\quad(8.3.8)

표준 대기 조건에서 비열 비는 \gamma = 1.4입니다. 정압 계산과 유사하게 차원이 있는 전압력은 다음과 같이 계산됩니다,

\quad\quad\,\, p_t \,\, (N/m^2) = C_{pt} \cdot \frac{1}{2} \rho_\infty U_{ref}^2 + p_{t, \infty} \quad\quad\quad\quad(8.3.9)

위에서 CfVec을 사용하여 표면 박리 영역을 가시화한 것과 마찬가지로, C_{pt}를 사용하여 유동장 내 박리 영역을 가시화 할 수 있습니다.


Fig. 8.3.4 부분적으로 스톨(stall)이 발생한 날개위의 유동 박리 영역을 보여주는 전압력 계수 절단면 분포.


C_{pt}는 경계층을 시각화하는데 효과적입니다. 위와 같이 절단면을 살펴보고, 앞전 가장자리(leading edge)를 확대하면, 경계층이 형성되는 것을 볼 수 있습니다.


Fig. 8.3.5 파란색으로 표시된 경계층 성장을 보여주는 전압력 계수 절단면 분포.


8.3.3.7. Q-Criterion

The qcriterion is a very convenient way to visualize vortices in your flowfield. By setting qcriterion isosurfaces in your volume solution you can easily identify vortices and gain a better understanding of their behavior. In general, for airplane type simulations, we recommend setting an isosurface value to

. For rotor dominated flows, we typically recommend

. Depending on the amount of vorticity in your flow you will have to adapt that metric value to best visualize your vortices. A larger isosurface value will only show stronger vortices. Reducing the isosurface value will visualize weaker vortices, showing more flow features but at the risk of cluttering the visualization.

../../_images/qcriterion.png Fig. 8.3.6 qcriterion isosurface showing strong tip vortex and vortices escaping from the separation region.

You will notice that, for this test case, because the volume mesh is quite coarse the qcriterion isosurface has a very jagged appearance and the vortex structures dissipate quickly.

../../_images/qcriterion_mesh.png Fig. 8.3.7 Slice showing the volume mesh. Notice how quickly the mesh coarsens as we move away from the wing and how that affects the qcriterion values.

If we refine the far field substantially by applying a refinement region we can obtain a much smoother qcriterion isosurface showing improved resolution of the vortices escaping from the tip and from the separation bubble.

../../_images/qcriterion_finer.png Fig. 8.3.8 qcriterion isosurface on a finer mesh showing strong tip vortex and vortices escaping from the separation region.

You will notice that now, for this refined volume mesh, the qcriterion isosurface has a much smoother appearance and the vortex structures propagate much further (i.e., are much less dissipative).

../../_images/qcriterion_mesh_finer.png Fig. 8.3.9 Slice showing the volume mesh. Finer volume mesh showing the effect on the qcriterion dissipation.

For more flow images using the qcriterion to visualize vortices please see:

BET Line flow visualization video

Wind turbine case study

Hover prediction workshop paper (figs 9 and 17)

Rotor modeling techniques paper (figs 11, 12, 26 and 27)

XV 15 BET simulations paper (fig 19)

Automatic propeller modeling tool Rotor5 paper (figs 4, 18 and 19)

XV15 DES simulations paper (figs 10, 14 and 17)

8.3.3.8. BET Visualization

An additional option betMetrics in volumeOutput is available to visualize the BET related quantities. This is demonstrated in the BET tutorial.