Loci-FEM Conjugate Heat Transfer

The cht_fem module couples Stream fluid heat transfer to conduction in a Loci-FEM solid. Use a Stream build configured with --fem-dir /path/to/Loci-FEM/install. The module name cht is an alias for cht_fem.

Basic Coupled Case

Start with the basic CHT fluid file and its mesh and air.mdl. Keep its laminar, single-species compressible flow, temperature energy form, BDF time integration and PETSc equation solvers. Replace the module loading and coupling entries with:

Changes to case.vars
loadModule: cht_fem
{
  // Coupling
  couplingPartner: <solver=LociFEM,case="solid.vars">
  couplingInterfaces: <plate=thermal(fluidBoundary=interface,
    solidBoundary=maxx)>
}

The fluid boundary remains interface=noslip(cht=plate). Use an affine tetrahedral solid mesh with coordinates in metres. Its interface triangles must match the fluid faces one to one with opposing outward normals; see interface matching.

The following solid.vars uses volume tags left and right in solid.vog. The coupled patch is maxx; all other boundaries are adiabatic. The fluid file controls the physical timestep, run length and output cadence for both domains. Put the solid files beside the fluid files.

Solid control file: solid.vars
{

  // Grid file information
  meshFile: "solid.vog"

  // Analysis
  simulationMode: transient

  // Boundary conditions
  boundary_conditions: <maxx=heatFlux(provider=coupled),minx=adiabatic,
    miny=adiabatic,maxy=adiabatic,minz=adiabatic,maxz=adiabatic>

  // Initial conditions
  heatInitialCondition: <temperature=300 K>

  // Material properties
  heatMaterials: <left=conduction(k=15 W/m/K,capacity=3.9e6 J/m/m/m/K),
    right=conduction(k=15 W/m/K,capacity=3.9e6 J/m/m/m/K)>

  // Time-stepping
  timeIntegrator: BDF

  // Finite element discretization
  temperatureSpace: P1
  volumeQuadratureDegree: 4

  // Heat equation
  heatEquationOptions: <residualAbsoluteTolerance=1e-5 W>

  // Plot fields
  plot_output_exclusive: temperature,heatFlux
}

The patch named by solidBoundary must be the patch marked heatFlux(provider=coupled). It receives fluid heat flow and returns the average surface temperature on each matching face. Interface iteration uses couplingControls from the fluid file; see Interface Coupling.

Check the setup, then run:

stream -q chtSetup case
stream -q solution case

Fluid fields use the usual extraction commands. The solid viewing files are listed in output/solid/frame.10.txt after step 10.

Solid Options

Materials and Boundaries

conduction(...) uses conductivity k in W/(m K) and volumetric heat capacity capacity in J/(m³ K), equal to density times mass-specific heat. Material entries select disjoint volume tags covering the solid. For volumetric heating, add heatSources: <volumetric=100 W/m/m/m>.

Use these conditions on exterior solid patches:

Solid boundary conditions

Input

Meaning

adiabatic

Zero heat flow.

temperature(T=300 K)

Prescribed absolute surface temperature.

heatFlux(flux=100 W/m/m)

Prescribed outward heat flux; positive values cool the solid.

Discretization and Solvers

temperatureSpace selects P1 or P2 (default) temperature coefficients. fieldSpace selects the viewing space and defaults to temperatureSpace. Transient heat transfer requires volumeQuadratureDegree of 4 or 6; surfaceQuadratureDegree defaults to 4.

Use heatEquationOptions for FEM tolerances. Choose residualAbsoluteTolerance in W for the solid’s heat-flow scale.

Heat-equation tolerances

Option

Default

Meaning

residualAbsoluteTolerance

1e-8 W

Absolute thermal residual tolerance.

residualRelativeTolerance

1e-10

Relative thermal residual tolerance.

linearRelativeTolerance

1e-10

Relative linear-solver tolerance.

linearAbsoluteTolerance

1e-12 W

Absolute linear-solver tolerance.

For named PETSc overrides in PETSCSolverControls, the coupled equation is solid_heat.

Output and Restart

Select solid fields with plot_output or plot_output_exclusive in solid.vars. temperature is in K; heatFlux is the conductive vector \(-k\nabla T\) in W/m². FEM writes the selected fields and viewing mesh under output/solid/; frame.N.txt lists the files at step N.

The interface output records transferred power, surface temperature and face area. Use its power field to inspect interface exchange; the FEM heatFlux field is reconstructed from the temperature gradient.

Continue both domains from step 5 with:

stream -q solution case 5

Keep the entire restart/cht.5_case/ directory and follow the paired restart requirements. Retain the FEM temperature space, materials, boundaries and quadrature settings. numTimeSteps in the fluid file requests additional steps after restart.