mesh_module heattransfer

Purpose

Command for enabling heat transfer between mesh elements, particles and fluid.

Syntax

mesh_module heattransfer keyword value

Keywords:

Keyword

Description

id

obligatory, user-defined name for the mesh module

heat_transfer_mode

available options: legacy, coefficient (recommended), constant, flux or power
mode dependent keywords can be found below
default: legacy

initial_temperature

obligatory except for restart; initial temperature of all wall elements in temperature units
units: [temperature]

include_tangential_heatflux

yes or no, include / do not include the mesh internal heat transfer
yes requires non-zero wall_thickness / thickness_layers_wall (see keywords below)
default: yes

wall_density

density of material that the wall is made of (optional, derived from mesh material if not provided)
units: [mass/length^3]

output_detailed_heatflux

available options: yes or no
default: no

enable_radiation

available options: yes or no
default: no

add_external_heatflux

available options: yes or no
default: no

Keywords for heat_transfer_mode coefficient

Keyword

Description

htc_exterior_fluid

mandatory; wall-fluid heat transfer coefficient
units: [power/(length^2*temperature)]

temperature_exterior_fluid

mandatory; temperature of exterior (far field) fluid
units: [temperature]

wall_thickness *

thickness of each mesh element
units: [length]

thickness_layers_wall *

list of thickness of layers {thickness_layer_1, thickness_layer_2, …}
units: [length]

kappa_layers_wall

list of thermal conductivities kappa of layers {kappa_layer_1, kappa_layer_2, …}
only usable in combination with thickness_layers_wall
units: [power/(length*temperature)]

active_region

ID of region to select the mesh elements where the exterior temperature is applied

* The keywords wall_thickness and thickness_layers_wall are mutually exclusive, one of them is mandatory.

Keywords for heat_transfer_mode constant

No keywords, the mesh will remain at the initial temperature.

Keywords for heat_transfer_mode flux

Keyword

Description

flux_value

heat flux density
units: [power/length^2]

wall_thickness

thickness of each mesh element; mandatory if include_tangential_heatflux is yes (default)
units: [length]

Keywords for heat_transfer_mode power

Keyword

Description

power_value

heat flux
units: [power]

wall_thickness, mandatory if include_tangential_heatflux is yes (default)

thickness of each mesh element
units: [length]

active_region

ID of region to select the mesh elements where the exterior temperature is applied

Keywords for heat_transfer_mode legacy

Keyword

Description

wall_thickness

mandatory; thickness of each mesh element
units: [length]

heat_transfer_coefficient_fluid

wall-fluid heat transfer coefficient
units: [power/(length^2*temperature)]; default: 0

temperature_fluid

temperature of fluid surrounding each mesh element
units: [temperature]; default: 0

heat_flux_density

heat flux density
units: [power/length^2]

Keywords for enable_radiation yes

Keyword

Description

radiation_update_timestep

filename of the view factors file
units: [time]; default: 1e-2

view_factors_file

filename of the view factors file
default: same file as in enable_heat_transfer

Associated material properties

Material properties

  • thermalConductivity (k): thermal conductivity of a material [W/m\,K]

  • thermalCapacity (c): thermal (specific) capacity of a material [J/kg K]

  • youngsModulusOriginal (Y^*_{orig}): original Young’s modulus of each material [Pa] (required if area_correction yes is used in the wall_contact_model command)

Material interaction properties

  • ht_modification (\alpha): modifier for contact area calculation [\cdot] (required if modified_area_correction yes is used in the wall_contact_model command)

Examples

mesh_module heattransfer id my_heattransfer wall_density 500. wall_thickness 0.01 initial_temperature 300. &
   temperature_fluid 200. heat_transfer_coefficient_fluid 0.01
mesh_module heattransfer id my_heattransfer heat_transfer_mode coefficient initial_temperature 300 &
  htc_exterior_fluid 0.01 temperature_exterior_fluid 400 thickness_layers_wall {0.01,0.02} &
  kappa_wall_layers {0.5,1.0} include_tangential_heatflux yes
mesh_module heattransfer id my_heattransfer heat_transfer_mode constant initial_temperature 300
mesh_module heattransfer id my_heattransfer heat_transfer_mode flux flux_value 10 initial_temperature 300 &
  wall_thickness 0 include_tangential_heatflux no
mesh_module heattransfer id my_heattransfer heat_transfer_mode power power_value 1 initial_temperature 300 &
  wall_thickness 0.01
mesh_module heattransfer id my_heattransfer heat_transfer_mode coefficient &
  initial_temperature 300 htc_exterior_fluid 0.01 temperature_exterior_fluid 400 thickness_layers_wall {0.01,0.02} &
  kappa_wall_layers {0.5,1.0} include_tangential_heatflux yes
mesh_module heattransfer id my_heattransfer heat_transfer_mode coefficient wall_thickness 0.18 &
  temperature_exterior_fluid function(temp.csv,x) htc_exterior_fluid 0.01 initial_temperature 500 id mm1 &
  active_region my_active_region
mesh_module heattransfer id my_heattransfer heat_transfer_mode constant initial_temperature 300 enable_radiation yes

Description

This mesh module can solve for three different mechanisms of heat transfer associated to the mesh:

  • heat transfer between particles and mesh elements

  • heat transfer between mesh elements and the exterior fluid

  • heat transfer between mesh elements

The heat transfer between particles and mesh is identical to the implementation in the enable_heat_transfer command. The thermal capacity and conductivity values for particle and wall material are defined via the material_properties commands.

Warning

Although heat_transfer_mode legacy is the default setting (for backward compatibility), any other heat transfer modes is preferred.

With heat_transfer_mode coefficient the heat transfer between the mesh elements and an exterior fluid is included. It is assumed that the exterior fluid is located at one side of the mesh, is at rest and has constant (in time) temperature; hence, only conductive heat transfer is considered. Note that the temperature_exterior_fluid can be set to a scalar value, or provided via a csv data file (to make it location dependent). In the latter case, the following formatting has to be used in the input file:

temperature_exterior_fluid function(my_temp_data.csv,spatial_direction)

Here ‘my_temp_data.csv’ is a file with two columns: the first column contains a spatial position (along the ‘spatial_direction’ axis, which must be set to ‘x’, ‘y’, or ‘z’) and the second column the exterior temperature at the position. The exterior temperature of mesh elements is derived (interpolated based on the center point of the mesh element) from the provided values at initialization via a precomputed lookup table. In order to apply the exterior temperature condition only to certain mesh elements, the active_region can be set. This will ensure only mesh elements with their center point within the active region will apply the temperature boundary condition. Note that the active region does not affect the (tangential) heat conduction within a mesh, which is enabled by default via the include_tangential_heatflux option. If no active region is set, the temperature boundary condition will be applied to all mesh elements.

From the heat transfer coefficient of the exterior fluid and the thickness and thermal conductivity (kappa) values of the wall layers (defined by thickness_layers_wall and kappa_layers_wall), a total heat transfer coefficient is determined according to:

h_t = \frac{1}{R_t} = \frac{1}{\Sigma_i^n \frac{d_i}{\kappa_i} + htc},

where R_t is the total thermal resistance, d_i and \kappa_i are the thickness and thermal conductivity of wall layer i (there are in total n layers), and htc is the heat transfer coefficient of the exterior fluid.

For heat_transfer_mode legacy the total heat transfer coefficient is determined as:

h_t = \frac{2 h_f}{d_{wall}},

where h_f is the wall-fluid heat transfer coefficient (note that its dimensions are different from htc, so a more proper naming would be thermal conductivity) and d_{wall} is the wall thickness.

Q = (T_f - T_m) h_t A_m,

where Q is the heat flux, T_f is the (exterior) fluid temperature, T_m is the temperature of the mesh element, h_t is the total heat transfer coefficient, and A_m is the area of the mesh element.

For heat transfer between mesh elements, a similar formula is used:

Q = (T_i - T_j) h A_{ij},\\
A_{ij} = d_{wall} l_{ij}

where l_{ij} is the length of the edge that is shared between mesh elements i and j, and d_{wall} is the wall thickness, that has to be specified by the user. The thermal conductivity is taken from the material_properties commands defining the thermal conductivity for the wall material (also for a layered wall), see enable_heat_transfer.

The mesh can be used as a heat source/sink with a defined heat flux density \bar{Q} (which is the flux_value for heat_transfer_mode flux). A heat flux of

Q_{source} = \bar{Q} A_m

with A_m the mesh element area is then added to each triangle. For heat_transfer_mode power the power_value is directly used as Q_{source}, without being effected by the mesh element area.

For the temperature update of each mesh element initial_temperature is used as initial condition, which can be set to a scalar value or provided via a csv data file (by a function to make it location dependent, see the description for the temperature_exterior_fluid). The mass of each mesh element is calculated from its area, the value for wall_thickness and the density, which is taken from the material_properties commands (also for a layered wall), but can be overridden via the wall_density keyword for backwards compatibility.

Please note that the initial_temperature keyword is obligatory only if the simulation is started from scratch (in that case it replaces the temperature keyword of the mesh command). For restarted simulations it is an optional keyword, which is used to (re)set the temperature in each mesh element. If the heat transfer mesh module was not enabled when generating the restart file and the initial_temperature keyword is omitted, the temperature in each mesh element will be set to zero. If the initial_temperature is used in combination with a simulation restart, a warning will be written to the screen/output file.

With output_detailed_heatflux it is possible to include detailed heat flux information (for each component contributing to the heat flux) to the mesh output as done by output_settings.

Additionally, this keyword also creates two additional per-particle properties heatFluxWallConduction and heatFluxWallRadiation which output the instanteaneous heat flux a particle experiences due to the heat flux coming from a mesh for both conduction and radiation, respectively.

Warning

Mesh module heattransfer implements a very simplistic way of computing heat transfer on meshes, and it might lead to mesh-dependent results, especially in the case of (a) skewed triangles and (b) very fine meshes. When in doubt about the results, try using a mesh with larger, (preferrably) equilateral triangles.

Warning

When using this module and periodic boundary conditions the mesh needs to fulfill the following properties: (i) a triangle is not allowed to be in contact with itself through periodic boundaries, (ii) if two triangles are in contact inside the domain, they are not allowed to be in contact through periodic boundaries. Note that these restrictions are not validated by Aspherix(R) and must be ensured by the user.

Warning

It is not possible to have heat transfer between separate meshes. Only particle-particle, particle-wall and wall internal heat transfer is possible. Note also that mesh elements only exchange heat with each other if the elements share an edge. Therefore, a cylinder with baffles will only exchange heat between the cylinder and baffles if they are part of the same mesh (stl) and if the baffles share an edge with one of the elements of the cylinder.

In case enable_radiation is set to yes a radiation model based on local void fractions and particle-wall distance is employed using view factors read from a file.

Radiation model

The model that was implemented is based on the work of Johnson et al. [2]. It defines the heat transferred from a wall element j to a particle i as

q_{r,ij} = \epsilon_j A_{ij} \sigma D_{ij} (T_j^4 - T_i^4).

For a description of the involved quantities see the particle-particle heat transfer including the description of the view_factors_file. As the view factor depends on the volume which can be reduced by the presence of a wall we use the integral theorem to calculate it, i.e.

V_i = \iiint 1 dV = \frac{1}{3} \iint x \cdot dS

This surface integral can then be approximated via a ray summation, i.e. 128 equally spaced rays are cast from the center to the surface of the influence sphere and the volume is then approximated via

V_i = \sum_j x_j \cdot n_j A_j,

which, if the ray hits no triangle, reduces to

r_{max} \frac{4 \pi r_{max}^2}{N},

where N is the number of rays and to

x_j \cdot n_j \frac{4 \pi \|x_j\|^2}{N},

where x_j is the intersection point of ray with triangle and n_j is the normal of the triangle.

The update of this local influence volume of each particle is done every radiation_update_timestep time units. The void fraction of a particle close to a wall is then computed using the sum of the volume of all particles in its sphere of influence divided by V_i.

The lookup table present in the view factors file is for a plane which has a certain distance to the particle. Thus, if the wall is discretized using multiple triangles not every triangle should contribute the full view factor. Instead there must be a weight which is based on the percentage of the triangle that covers this plane. We decided that this weight function should be

\omega_j = \frac{1}{I} \iint_j \left( 1 - \frac{2 \phi}{\pi} \right),

where the integral over the full plane is

I = \iint_j \left( 1 - \frac{2 \phi}{\pi} \right) = (\pi r + 2 d_n)r - 2 r_{max}^2 \tan^{-1}\left({\frac{r}{d_n}}\right),

with r = \sqrt{r_{max}^2 - d_n^2}, r_{max} the radius of the sphere of influence and d_n the normal distance to the triangle. The weight can then be approximated as the sum over all rays using

\omega_j \approx \frac{1}{I \xi} \sum_j \frac{\pi r^2}{N_{guess}}\left( 1 - \frac{2 \phi}{\pi} \right),

where \xi is an empirical correction factor that corrects a systematic approximation error via

\xi = \frac{19}{30 \sqrt{x}} - \frac{4}{3}x - 0.6 + 0.2 \sin\left(\pi x\right),

with x = d_n/r_{max}. The number of estimated ray hits of a plane with a certain distance d_n is given as

N_{guess} = N \frac{2 \pi r_{max}(r_{max} - d_n)}{4 \pi r_{max}^2}.

Thus, the final equation reads

q_{r,ij} = \epsilon_j \pi r_i^2 \sigma \omega_j D_{ij} (T_j^4 - T_i^4),

where D_{ij} depends on the volume fraction, which is corrected by the approximated V_j.

External heat flux

In case add_external_heatflux is set to yes an external heat flux is imposed on the mesh

Details on add_external_heatflux

This keyword allows using an external application to impose an additional heat flux on a mesh.

To see how the external application can interact with Aspherix see the enable heat_transfer command. To allow using this keyword the mesh_properties keyword in the output_settings command must contain the heatFluxExternal value. The per-triangle heat flux written by the external application is then read in by Aspherix and applied to the mesh.

Additional information

This mesh module writes information to binary restart files to be able to continue correctly after restart. None of the modify_command options are relevant to this module.

This module stores per-mesh-element properties (“Temp”: temperature and “heatFlux”: aggregated heat flux) which can be accessed via output_settings. Moreover, it stores the average mesh temperature accessible via the entry avg_temp for the mesh. If the exterior temperature is set via a function, the TempAmbient per-mesh-element property is available for output as well. If an active_region is used, also the active per-mesh-element property is available. If add_external_heatflux yes is used, the heatFluxExternal per-mesh-element property will be available. If output_detailed_heatflux is used, one or more of the following per-mesh-element properties (depending on the settings of this command) are available for output as well: heatFluxExteriorConduction, heatFluxParticleConduction, heatFluxParticleRadiation, heatFluxSource, heatFluxWallConduction.

Restrictions

This module specification must be followed by the enable_heat_transfer.