Force and Moment Coefficients#
Flow360 exports standard aerodynamic coefficients (\(C_L\), \(C_D\), \(C_F\), \(C_M\)) alongside the non-dimensional output fields. These are available in total_forces_v2.csv, surface_forces_v2.csv, and force_output_*_v2.csv, or via case.results.total_forces / case.results.surface_forces.
Attention
Force and moment coefficients use \(U_\text{ref}\) (case.params.reference_velocity), not the reference velocity scaling \(U_\text{scale}\) used for other solver fields.
BET Disk, Actuator Disk, and Porous Media report raw forces and moments (not coefficients) that use \(U_\text{scale}\) — see Raw solver output conversion or the Outputs page for their formulas.
Coefficient Definitions#
Property |
Definition |
|---|---|
CL |
\(\text{Lift}/\frac{1}{2}\rho_\infty U_\text{ref}^2 A_\text{ref}\) |
CD |
\(\text{Drag}/\frac{1}{2}\rho_\infty U_\text{ref}^2 A_\text{ref}\) |
CFx |
\(\text{Force}_x/\frac{1}{2}\rho_\infty U_\text{ref}^2 A_\text{ref}\) |
CFy |
\(\text{Force}_y/\frac{1}{2}\rho_\infty U_\text{ref}^2 A_\text{ref}\) |
CFz |
\(\text{Force}_z/\frac{1}{2}\rho_\infty U_\text{ref}^2 A_\text{ref}\) |
CMx |
\(\text{Moment}_x/\frac{1}{2}\rho_\infty U_\text{ref}^2 A_\text{ref} L_\text{ref}\left[0\right]\) |
CMy |
\(\text{Moment}_y/\frac{1}{2}\rho_\infty U_\text{ref}^2 A_\text{ref} L_\text{ref}\left[1\right]\) |
CMz |
\(\text{Moment}_z/\frac{1}{2}\rho_\infty U_\text{ref}^2 A_\text{ref} L_\text{ref}\left[2\right]\) |
Note
All reference values are listed in the Reference Quantities Table.
Output Conventions#
The conventions assume z-up, y-spanwise (+ starboard), x-axial (+ freestream), as shown below.
Axis conventions (CRM geometry)#
Output |
|
|---|---|
\(CFx, CFy, CFz\) |
Force coefficients (global axes) |
\(CMx, CMy, CMz\) |
Moment coefficients (global axes) |
\(CL = CFz\cdot cos(\alpha) - CFx\cdot sin(\alpha)\) |
Lift coefficient (wind axes) |
\(CD = CFx\cdot cos(\alpha) cos(\beta) - CFy\cdot sin(\beta) +\) \(CFz\cdot sin(\alpha) cos(\beta)\) |
Drag coefficient (wind axes) |
\(CFxPressure, CFyPressure, CFzPressure\) |
Pressure contributions to force coefficients (global axes) |
\(CMxPressure, CMyPressure, CMzPressure\) |
Pressure contributions to moment coefficients (global axes) |
\(CFxSkinFriction, CFySkinFriction,\) \(CFzSkinFriction\) |
Skin friction contributions to force coefficients (global axes) |
\(CMxSkinFriction, CMySkinFriction,\) \(CMzSkinFriction\) |
Skin friction contributions to moment coefficients (global axes) |
\(CLPressure, CDPressure\) |
Pressure contributions to the lift and drag coefficients |
\(CLSkinFriction, CDSkinFriction\) |
Skin friction contributions to the lift and drag coefficients |
\(CS = CFx\cdot cos(\alpha) sin(\beta) + CFy\cdot cos(\beta) +\) \(CFz\cdot sin(\alpha) sin(\beta)\) |
Side force coefficient (wind axes). Not available in the csv file and can be calculated from body forces. |
Converting to Physical Units (N, N·m)#
Two conversion paths exist depending on the data source. This section is a self-contained reference for both.
Dynamic pressure#
All coefficient-based conversions start from the dynamic pressure built with \(U_\text{ref}\) (see Reference quantities for API access):
density = case.params.operating_condition.thermal_state.density
U_ref = case.params.reference_velocity
A_ref = case.params.reference_geometry.area
L_ref = case.params.reference_geometry.moment_length # 3-vector
q_ref = 0.5 * density * U_ref**2
Coefficient → Newtons / Newton-meters#
Applies to surface_forces_v2.csv, total_forces_v2.csv, force_output_*_v2.csv, and the postprocessed coefficient files (bet_force_coefficients_v2.csv, actuatorDisk_force_coefficients_v2.csv, porous_media_force_coefficients_v2.csv).
Force:
Moment (per component — \(L_\text{ref}\) can differ per axis):
force_scale = q_ref * A_ref # N per unit C_F
moment_scale = q_ref * A_ref * L_ref # N·m per unit C_M (3-vector)
Lift = CL * force_scale # N
Pitching_Moment = CMy * moment_scale[1] # N·m
Tip
When q_ref, A_ref, and L_ref are retrieved through the Python API they already carry SI units, so you can call .to() directly to get the result in any target unit:
Lift = (CL * force_scale).to('N')
Moment = (CMy * moment_scale[1]).to('N*m')
See Calculate Dimensional Forces for a complete worked example.
Converting Flow360 Force Outputs to SI (BET / Actuator Disk / Porous Media)#
The solver writes forces and moments in Flow360 non-dimensional units for volume models in bet_forces_v2.csv, actuatorDisk_output_v2.csv, and porous_media_output_v2.csv. These are force outputs, not aerodynamic coefficients: because they are dimensionalized using the solver’s internal scaling — reference velocity scaling \(U_\text{scale}\) and \(L_\text{gridUnit}\) — rather than the aerodynamic reference quantities \(U_\text{ref}\) and \(A_\text{ref}\), a dedicated conversion is required to recover SI forces and moments.
L_grid = project.length_unit
k_F = density * U_scale**2 * L_grid**2 # N (force scale)
k_M = density * U_scale**2 * L_grid**3 # N·m (moment scale)
k_P = density * U_scale**3 * L_grid**2 # W (power scale)
force_x = raw_force_x * k_F # N
moment_x = raw_moment_x * k_M # N·m
Attention
Do not mix the two paths. Coefficient files use \(U_\text{ref}\), \(A_\text{ref}\), \(L_\text{ref}\). Raw BET/AD/PM files use \(U_\text{scale}\) and \(L_\text{gridUnit}\) (scaling factors \(k_F\), \(k_M\), \(k_P\)).
Summary#
Data source |
CSV files |
Conversion |
|---|---|---|
Surface / total coefficients |
|
\(F = C_F \cdot q_\text{ref} \cdot A_\text{ref}\) |
BET/AD/PM coefficients |
|
Same as above |
BET/AD/PM raw forces |
|
\(F = F_\text{raw} \times k_F\) |
Moment coefficients |
All coefficient files |
\(M_i = C_{M_i} \cdot q_\text{ref} \cdot A_\text{ref} \cdot L_{\text{ref},i}\) |
BET/AD/PM raw moments |
Raw files above |
\(M = M_\text{raw} \times k_M\) |
See also
Calculate Dimensional Forces — Complete Python snippet for coefficient → N, N·m conversion.
BET Loading — BET raw output definitions and worked examples.
Actuator Disk — Actuator Disk raw output definitions.