fix heat/gran/roasting command

Purpose

Calculates heat transfer between particles and indicates the progress of chemical reactions such as roasting.

Warning

GPU support for this command has not been tested and may not work as expected.

Syntax

fix ID group-ID heat/gran/roasting heat_gran_conduction_keywords heat_gran_conduction_values delete_below r0 keyword values
  • ID, group-ID are documented in fix command

  • heat/gran/roasting = style name of this fix command

  • heat_gran_conduction_keywords and heat_gran_conduction values are documented in fix heat/gran/conduction command

  • zero or more keyword/value pairs may be appended

  • keyword = conduction, time_scale

conduction values = yes or no
  yes = calculate thermal conduction between particles
  no = do not calculate thermal conduction between particles
time_scale value = ts
  ts = time scale for calculation of the roastDegree (see equation below)

Examples

fix roast all heat/gran/roasting initial_temperature 273.15 parameters 1.e4 0 0 0

Description

Calculates heat conduction between particles in contact, temperature update and an indicator for chemical reactions from solid to solid.


Heat conduction and temperature update are solved according to

_images/heat_gran.png

Note that the heat conduction part can be turned off using the conduction keyword.

It is assumed that the temperature within the particles is uniform. To make particles adiabatic (so they do not change the temperature), do not include them in the fix group. However, heat transfer is calculated between particles in the group and particles not in the group (but temperature update is not performed for particles not in the group). Thermal conductivity (if conduction = yes) and specific thermal capacity must be defined for each atom type used in the simulation by means of fix property/global commands:

fix id all property/global thermalConductivity peratomtype value_1 value_2 ...
(value_i=value for thermal conductivity of atom type i)
fix id all property/global thermalCapacity peratomtype value_1 value_2 ...
(value_i=value for thermal capacity of atom type i)

To set the temperature for a group of particles, you can use the set command with keyword property/atom and values Temp T. T is the temperature value you want the particles to have. To set heat sources (or sinks) for a group of particles, you can also use the set command with the set keyword: property/atom and the set values: heatSource h where h is the heat source value you want the particles to have (in Energy/time units). A negative value means it is a heat sink. Examples would be:

set region halfbed property/peratom Temp 800.
set region srcreg property/peratom heatSource 0.5

Chemical reactions or roasting are logged by a per-particle scalar roastDegree, defined as

roastDegree = m_roasted / m_particle

The roasting process is modelled differently for endotherm and exotherm reactions. For the former the process is modelled in two parts

(1) mDot = - qDot / lh,  if T > roastTemp and qDot > 0
(2) mDot = - m * cp * (T-roastTemp)/dt / lh,  if T > roastTemp

where mDot is the roasting rate, qDot is the heat flux into the particle, lh is the latent heat for the chemical reaction, roastTemp the roasting temperature, m the particle mass, cp the thermal capacity and dt the time step size. (1) is a term due to heat flux from outside, (2) is a term that assures that T satisfies T <= Troast in case the particle temperature is changed e.g. by the set command.

For exotherm processes a characteristic exponential change of roastDegree with time is assumed:

roastDegree = 1 - exp(-t / T)

where T is a time scale based on the user input for time_scale multiplied by the particle size. The roastDegree is changed in each time step if the particle temperature is larger than roastTemp.

For both kinds of processes the reactions are assumed to be irreversible, i.e. the roastDegree cannot decrease.

The cooling or heating effect of the phase change is depicted by

qDot += mDot * lh

This means that exotherm reactions are modelled for positive latent heat values and endotherm reactions for negative values.

Latent heat and starting temperature for chemical reactions must be defined for each atom type used in the simulation by means of fix property/global commands:

fix id all property/global roastHeat peratomtype value_1 value_2 ...
(value_i=value for roastHeat of atom type i)
fix id all property/global roastTemp peratomtype value_1 value_2 ...
(value_i=value for roastTemp of atom type i)

Output info:

You can visualize the heat sources by accessing f_heatSource, and the heatFluxes by f_heatFlux. With f_directionalHeatFlux[1], f_directionalHeatFlux[2] and f_directionalHeatFlux[3] you can access the conductive heat fluxes in x,y,z directions. The conductive heat fluxes are calculated per-contact and half the value is stored in each atom participating in the contact. With f_Temp you can access the per-particle temperature. You can also access the total thermal energy of the fix group (useful for the status command) with f_id .

Restart, fix_modify, run start/stop:

The particle temperature and heat source is written is written to binary restart files so simulations can continue properly. None of the fix_modify options are relevant to this fix.

This fix computes a scalar which can be accessed by various output commands. This scalar is the total thermal energy of the fix group

No parameter of this fix can be used with the start/stop keywords of the run command.

Restrictions

none

Coarse-graining information:

Using coarsegraining in combination with this command might lead to statistically different dynamics and system state. To the best knowledge of the developers, the cross-influence between this command and coarse-graining is unknown.

Default: conduction = yes