Skip to main content

Realistic Motor Steady Thermal Sample

This showcase explains a steady-state motor thermal workflow using a mixed CHEXA/CPENTA BDF mesh, imported QVOL losses, JSON-defined additional losses, FEMH surface cooling, a thermal equivalent circuit, and stator/rotor gap coupling.

The purpose of this example is not to match a measured motor temperature. Instead, it demonstrates how to set up and audit the complete thermal path for an electric-machine design model:

  • loss input from BDF QVOL
  • coil copper loss from phase current and resistance
  • permanent-magnet loss from a user-specified total heat value
  • FEMH connection from selected FEM surfaces to thermal-network nodes
  • stator/rotor air-gap thermal coupling
  • surface assignment diagnostics to avoid double-counted boundary faces
  • component heat balance, cooling path summary, and network-node temperatures

The public example is located under:

Examples/thermal/realistic_motor_steady/

The BDF used by the sample is included in that folder as:

Examples/thermal/realistic_motor_steady/QVOL_loss_mix.bdf

Model And Mesh

The motor thermal mesh is a BDF model with mixed solid elements. It contains two bulk sections that are treated as separate thermal components:

ComponentBulk sectionRole
Stator0Stator core, slot coil regions, and stator-side losses.
Rotor1Rotor core, permanent magnet region, and rotor-side losses.

The figure below shows the motor mesh used in the showcase.

Motor thermal mesh

The mesh is used as a thermal conduction model. The BDF provides element geometry, property IDs, bulk sections, and QVOL heat sources. Additional engineering heat sources are added from JSON rather than overwriting the BDF QVOL data.

Loss Inputs

The total heat in the main realistic cases is:

SourceInput methodHeat
BDF QVOLImported from QVOL_loss_mix.bdf1.091336675596593 W
Coil copper lossthermal_volume_heat_sources, mode = "coil_copper_loss"23.004 W
PM magnet lossthermal_volume_heat_sources, mode = "total_heat"1.25 W
TotalBDF QVOL + JSON volume heat25.345336675596593 W

The BDF QVOL heat is the loss already exported by the upstream electromagnetic workflow. In this sample, the coil copper loss is added in JSON because the electromagnetic model uses external circuit resistance for the coil conductor.

The coil copper loss is computed from RMS phase current and phase resistance:

P_phase = I_rms^2 * R_phase
= 3.0^2 * 0.852
= 7.668 W

P_total = 3 * P_phase = 23.004 W

The phase target property IDs are:

PhaseProperty IDs
U10000, 10001
V10004, 10005
W10002, 10003

The PM loss is assigned to:

RegionProperty IDHeat input
Permanent magnet500005.0 W * 0.25 = 1.25 W

The coil_fill_factor is used for diagnostic conductor-volume heat density. It does not rescale the I^2 R copper loss that is assembled into the FEM right hand side.

JSON Cases

The directory contains several JSON files. Each one is useful for a different stage of model checking.

JSON filePurpose
input_realistic_motor_steady_import_summary.jsonCheck BDF import, PSOLID/MAT diagnostics, QVOL heat, coil loss, and PM loss.
input_realistic_motor_steady_all_external_balance.jsonConnect all external faces by FEMH to verify closed heat balance. This is a verification boundary condition, not a physical cooling model.
input_realistic_motor_steady_physical_no_gap.jsonExclude gap faces from external FEMH cooling and run physical-style external cooling without stator/rotor gap coupling.
input_realistic_motor_steady_physical_gap_h20.jsonUse physical-style external cooling plus air-gap coupling with direct h = 20 W/m2/K.
input_realistic_motor_steady_physical_gap_nu1.jsonUse physical-style external cooling plus air-gap coupling with mode = "nu", Nu = 1, k_air = 0.026 W/m/K, and gap = 0.001 m.
input_realistic_motor_steady_physical_gap_h20_interface_resistance.jsonAdd shared-node interface thermal resistance for coil-to-stator and PM-to-rotor interfaces.
input_realistic_motor_steady_physical_gap_h20_interface_axial_endcool.jsonAdd axial end-face cooling paths through an end_space_air network node, representing first-order end-space and coil-end heat escape.
input_realistic_motor_steady_mount_shaft_network.jsonDemonstrate a housing, mount, shaft, and bearing thermal equivalent circuit. Values are illustrative, not calibrated.

All realistic motor cases exclude the outer air property from the thermal FEM domain:

"bdf_import": {
"exclude_property_ids": [50]
}

The BDF still contains the outer air region for electromagnetic meshing, but thermal conduction is solved only in the motor solids. This makes the stator outer surface available as the FEMH boundary connected to the housing or thermal equivalent circuit.

Boundary Conditions And FEMH Connections

FEMH connects selected FEM surface groups to thermal-network nodes. This lets the FEM model exchange heat with lumped thermal-circuit nodes such as housing, shaft, bearing, mount, and ambient.

In the physical boundary examples, the main surface groups are:

Surface groupTypical use
stator_externalAll stator external faces. Used for diagnostics and set operations.
rotor_externalAll rotor external faces. Used for diagnostics and set operations.
stator_gap_candidate_filteredStator-side air-gap candidate faces. Used for gap coupling only.
rotor_gap_candidate_filteredRotor-side air-gap candidate faces. Used for gap coupling only.
stator_external_coolingStator external cooling surface after excluding gap faces. Connected to housing by FEMH.
rotor_external_coolingRotor external cooling surface after excluding gap faces. Connected to shaft by FEMH.

The important modeling rule is:

Gap faces must not also be used as external FEMH cooling faces.

The model checks this with:

thermal_surface_assignment_summary.csv

For the physical gap cases, the intended result is:

femh_and_gap_overlap area = 0

If this value is not zero, the same face is carrying both external cooling and stator/rotor internal gap heat exchange, which double-counts the thermal path.

Gap Thermal Coupling

The stator and rotor meshes are separate thermal components. The air-gap heat path is represented by a surface-to-surface thermal coupling between paired gap faces.

The current implementation uses node_pair_lumped assembly:

  1. Pair accepted stator and rotor gap faces.
  2. Compute effective pair area.
  3. Compute pair conductance from the chosen model.
  4. Match source and target face nodes by nearest coordinates.
  5. Stamp lumped two-node thermal conductances into the FEM matrix.

This showcase demonstrates two common input styles:

ModeFormulaExample
hG = h * Ah = 20 W/m2/K
nuh_equiv = Nu * k_air / gap_thicknessNu = 1, k_air = 0.026 W/m/K, gap = 0.001 m

For the Nu = 1 case:

h_equiv = 26.0 W/m2/K
gap total conductance = 6.800205753006171e-02 W/K

Thermal Equivalent Circuit

The thermal equivalent circuit represents cooling paths outside the FEM mesh. The updated concept diagram includes the radial housing/shaft paths, the stator/rotor gap path, and an axial end-space path used to approximate heat escape through the upper/lower motor end regions.

Motor thermal equivalent circuit with axial end-space cooling

The main paths are:

LabelMeaning
FEMH-SRFEMH connection from stator radial external surfaces to the housing node.
FEMH-RRFEMH connection from rotor radial external surfaces to the shaft node.
G-gapSurface-to-surface stator/rotor gap thermal coupling.
FEMH-SEFEMH connection from stator end faces to end_space_air; in this one-layer extruded sample it also represents a first-order coil-end heat-escape path.
FEMH-REFEMH connection from rotor end faces to end_space_air.
R-EHThermal resistance from end_space_air to housing.
R-EAThermal resistance from end_space_air to ambient.
R-HA, R-SARepresentative housing/shaft paths to ambient.

FEMH ports form conductance paths between FEM surface temperatures and thermal-network nodes. RTH/GTH elements then move heat between network nodes. The gap surface is not also used as an external FEMH cooling surface; it is handled as an internal surface-to-surface heat-exchange path.

To inspect the thermal-network temperatures and heat flows, open:

thermal_network_nodes.csv
thermal_network_element_flows.csv
thermal_cooling_path_summary.csv
thermal_femh_ports.csv

The axial end-space case is:

input_realistic_motor_steady_physical_gap_h20_interface_axial_endcool.json

Representative values for that case are:

QuantityValue
stator radial cooling average temperature67.55 degC
stator end faces average temperature72.67 degC
rotor radial cooling average temperature44.38 degC
rotor end faces average temperature44.71 degC
stator gap average temperature67.92 degC
rotor gap average temperature52.15 degC
gap heat source-to-target0.824813796 W
global relative residual3.782002356724577e-11

The coefficients are illustrative. For a compressor motor, tune FEMH coefficients and network resistances using measured case temperature, coolant/oil condition, end-space geometry, and 3D validation data.

Temperature Results

The figure below shows a representative steady-state temperature field for the physical boundary case with air-gap coupling.

Motor steady-state temperature result

The highest temperatures occur on the stator side in this illustrative setup because most of the added heat is coil copper loss. This does not mean the absolute values are calibrated to a real machine. The example is designed to show how heat sources and heat-flow paths can be audited.

The next figure focuses on the gap region.

Temperature around stator and rotor gap surfaces

Use this view together with thermal_gap_coupling_flow_summary.csv and thermal_gap_coupling_flows.csv to confirm that the sign and magnitude of gap heat flow are consistent with the stator and rotor gap-surface temperatures.

For the h = 20 W/m2/K gap case, representative values are:

QuantityValue
Accepted gap face pairs90
Gap total conductance5.230927502312448e-02 W/K
Equivalent gap resistance19.11706861847976 K/W
Gap heat source-to-target2.181396948282994 W
Surface overlap area0

For the Nu = 1 case:

QuantityValue
Nu1.0
h_equiv26.0 W/m2/K
Gap total conductance6.800205753006171e-02 W/K
Gap heat source-to-target2.332210259864751 W

Heat Balance Checks

Start with the all-external balance case before interpreting physical boundary conditions. It checks that all heat sources enter the FEM right-hand side and leave through FEMH/network paths.

Representative balance:

FEM volume heat = 25.34533667559660 W
FEM RHS heat = 25.34533667559660 W
FEMH outflow = 25.34533667548905 W
network TEMP outflow = 25.34533667547321 W
global relative residual ~ 1e-11

For component-level checks, inspect:

thermal_component_heat_balance.csv

For the h = 20 W/m2/K physical gap case:

ComponentQVOL and JSON heatFEMH outflowNet gap heat outflowAverage temperature
Stator23.9886 W21.8072 W2.1814 W187.839 C
Rotor1.3567 W3.5381 W-2.1814 W114.653 C

The positive stator gap heat outflow and negative rotor net gap heat outflow show that heat is flowing from the hotter stator-side gap surface to the rotor side in this illustrative case.

Output Files To Inspect

FileWhat to check
thermal_bdf_import_summary.csvBDF import counts, QVOL counts, total BDF heat.
thermal_bdf_property_material_summary.csvPSOLID/MAT diagnostics and analysis material source.
thermal_volume_heat_sources.csvCoil copper loss, PM loss, assigned heat density, target volume.
thermal_fem_volume_heat.csvBDF QVOL heat, JSON added heat, and total FEM volume heat.
thermal_global_heat_balance.csvTotal heat input, FEMH outflow, network outflow, residual.
thermal_surface_assignment_summary.csvFEMH/gap overlap and unassigned external area.
thermal_surface_temperature_summary.csvArea-weighted surface temperatures.
thermal_gap_pair_summary.csvGap face pairing count and quality.
thermal_gap_coupling_summary.csvAssembled gap conductance and equivalent resistance.
thermal_gap_coupling_flow_summary.csvTotal heat transferred through the gap coupling.
thermal_cooling_path_summary.csvFEMH and gap path conductance, temperatures, and heat flow.
thermal_network_nodes.csvThermal equivalent-circuit node temperatures.
thermal_network_element_flows.csvHeat flow through thermal-network RTH/GTH elements.
mesh.vtkMesh geometry, property IDs, and element IDs.
thermal_result.vtkTemperature field for ParaView.
boundary_faces.vtkSurface-group and cooling-boundary visualization.

Modeling Notes

This sample intentionally uses illustrative coefficients. Before using a similar setup for design decisions, review:

  • actual coil resistance and current conditions
  • modeled axial-length fraction
  • PM loss source and modeled fraction
  • material thermal conductivities
  • FEMH heat transfer coefficients
  • housing, shaft, bearing, and mount thermal resistances
  • gap heat-transfer model, such as measured h, k/gap, external Nu, or a user-defined preprocessing workflow
  • surface assignment overlap
  • mesh density in regions with steep thermal gradients

Temperature-dependent material properties, transient thermal analysis, radiation, automatic coil-end loss distribution, and calibrated rotating-gap correlations are outside the scope of this showcase.

Shared-node interface thermal resistance

The sample also includes an optional shared-node interface resistance case:

input_realistic_motor_steady_physical_gap_h20_interface_resistance.json

This case is intended for meshes where adjacent parts share nodes, such as coil-to-stator-core or PM-to-rotor-core interfaces. The input extracts matching internal faces from the specified property groups, duplicates the nodes on the selected side for the thermal solve, and stamps a lumped conductance between the original and duplicated thermal nodes.

Example input fragment:

"interface_thermal_resistances": [
{
"name": "coil_to_stator_slot_liner",
"side_a": { "property_ids": [10] },
"side_b": { "property_ids": [10000, 10001, 10002, 10003, 10004, 10005] },
"split_side": "side_b",
"mode": "thin_layer",
"layer_thermal_conductivity": 0.2,
"layer_thickness": 0.0002,
"assembly": "shared_node_pair_lumped"
},
{
"name": "pm_to_rotor_adhesive",
"side_a": { "property_ids": [20] },
"side_b": { "property_ids": [50000] },
"split_side": "side_b",
"mode": "thin_layer",
"layer_thermal_conductivity": 0.2,
"layer_thickness": 0.0002,
"assembly": "shared_node_pair_lumped"
}
]

Representative validation values for this sample are:

InterfaceFacesAreah_equivTotal conductanceEquivalent resistance
coil_to_stator_slot_liner1561.187038579243427e-02 m21000 W/m2/K1.187038579243424e+01 W/K8.424326028538720e-02 K/W
pm_to_rotor_adhesive802.399721226189904e-03 m21000 W/m2/K2.399721226189901e+00 W/K4.167150705199728e-01 K/W

Check these CSV files when using interface resistance:

thermal_interface_resistance_summary.csv
thermal_interface_resistance_node_pairs.csv
thermal_interface_resistance_node_splits.csv
thermal_matrix_diagnostics.csv
thermal_global_heat_balance.csv

Axial End-Space Cooling And Coil-End Equivalent Path

input_realistic_motor_steady_physical_gap_h20_interface_axial_endcool.json adds axial heat-escape paths on top of the shared-node interface-resistance case. This is useful for a one-layer extruded 2D motor sample, where heat that would leave through the upper/lower end regions of a real 3D motor can otherwise be underrepresented.

The modeling approach is:

  • Exclude the outer air property 50 from the thermal FEM domain.
  • Connect stator_radial_external_cooling to the housing node through FEMH.
  • Connect rotor_radial_external_cooling to the shaft node through FEMH.
  • Extract stator_end_faces and rotor_end_faces with abs_normal_z_min = 0.9.
  • Connect those end faces to an end_space_air node through FEMH.
  • Connect end_space_air to housing and ambient through thermal resistances.

In this first-stage sample, the stator end-face FEMH path is also used as a practical equivalent path for slot coil and coil-end heat escape. A more detailed future model can split the coil end into its own thermal-network node or 3D region, then assign coil-end loss and cooling separately.

Representative result:

QuantityValue
stator radial cooling average temperature67.55 degC
stator end faces average temperature72.67 degC
rotor radial cooling average temperature44.38 degC
rotor end faces average temperature44.71 degC
stator gap average temperature67.92 degC
rotor gap average temperature52.15 degC
gap heat source-to-target0.824813796 W
global relative residual-9.996386288e-12

The values are illustrative rather than calibrated. For a compressor motor, tune FEMH coefficients and network resistances using measured case temperature, coolant/oil condition, end-space geometry, and 3D validation data.