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
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