ChemicalComposition

commentnote:For Use with Thermochimica

This action is designed for use with the thermochemistry library Thermochimica Piro et al. (2013). Check out the corresponding submodule by running git submodule update --init --checkout modules/chemical_reactions/contrib/thermochimica.

Description

The ChemicalComposition action is used to initiate the framework for thermochemical calculations using the thermodynamics solver _Thermochimica_. The action creates variables needed for the analysis, reads the thermodynamic model for material system, and sets the units for temperature, pressure, and elemental amounts. It can optionally initiate the amounts of elements used in the model.

The ChemicalComposition action is also used to specify lists of chemical phases and chemical species for which concentrations should be output at each timestep. The phase and species names must match those in the data file specified. The ChemicalComposition action creates all AuxVariables and AuxKernels needed for output of phase concentration data. The list of phases is specified in the output_phases variable, and the list of species is specified in output_species. The species must be specified in the convention phase_name:species_name so that the desired species in the desired phase is uniquely identified. A combination of an AuxKernel derived from ThermochimicaAux and a UserObject derived from ThermochimicaNodalData can then be used to store the concentrations of these species in their respective phases.

Variables for Chemical Elements

Chemical element variables to be used and initiated in the model using in ChemicalComposition action are specified using the block [GlobalParams], and vector elements as in Listing 1:

Listing 1: Chemical elements to be used in the model

[GlobalParams]
  elements = 'O U Pu'
[]

The vector elements will be passed to the ChemicalComposition action and used to generate scalar variables, (e.g. O, U, and Pu) of the chemical elements contained in the vector.

commentnote

The names of scalar variables listed in elements vector and created using ChemicalComposition action should not be used for other variables in the model, e.g. the model should not define variables O, U, or Pu in the [Variables] or [AuxVariables] blocks.

The element composition scalar variables can be initialized in ChemicalComposition action, or using [Functions] block combined with other MOOSE capabilities.

Variables for Chemical Phases, Species, and Element Chemical Potentials

Chemical phase and species variables, as well as chemical potentials of elements, to be used and initiated in the model using in ChemicalComposition action are specified using the block [GlobalParams], and vector output_phases as in Listing 2:

Listing 2: Chemical phases species to be used in the model, and list of output phases for which concentration data is desired.

[GlobalParams]
  elements = 'Zr U'
  output_phases = 'ORTHORHOMBIC_A20 TETRAGONAL_U BCC_A2_1 BCC_A2_2'
  output_species = 'ORTHORHOMBIC_A20:ZR TETRAGONAL_U:ZR BCC_A2_1:ZR BCC_A2_2:ZR'
  element_potentials = 'cp:Zr cp:U'
[]

The vectors output_phases, output_species, and element_potentials will be passed to the ChemicalComposition action and used to generate scalar variables, (e.g. ORTHORHOMBIC_A20 and TETRAGONAL_U:ZR) for the chemical phases and species contained in the vectors. The output_phases, output_species, and element_potentials vectors are optional coupled variables for ThermochimicaNodalData, so this vector and use of the ChemicalComposition action are optional when using UserObjects derived from this class.

commentnote

The names of scalar variables listed in phases vector and created using ChemicalComposition action should not be used for other variables in the model, e.g. the model should not define variable ORTHORHOMBIC_A20 in the [Variables] or [AuxVariables] blocks.

commentnote

The format for entries in output_species must be phase_name:species_name, and both must match the specified thermodynamic database.

commentnote

The format for entries in element_potentials must be any_string:element_name.

The variables created by this action will be used by the UserObject ThermochimicaNodalData (or, more likely, a derived class specific to the application) to generate arrays in which to store the indices of the requested phases in Thermochimica calculation results, and later by an AuxKernel derived from ThermochimicaAux to store the corresponding concentration values. Users intending to implement new classes that make use of Thermochimica and desire output phase concentration data should examine ThermochimicaUO2XTransportAux to ensure updating of these variables.

The elemental composition is used in Thermochimica calculations, e.g AuxKernels, that expect an elements vector.

This ChemicalComposition action syntax is shown on the ChemicalComposition action action system page.

References

  1. M.H.A. Piro, S. Simunovic, T.M. Besmann, B.J. Lewis, and W.T. Thompson. The thermochemistry library thermochimica. Computational Materials Science, 67:266–272, 2013. URL: https://www.sciencedirect.com/science/article/pii/S0927025612005502, doi:https://doi.org/10.1016/j.commatsci.2012.09.011.[BibTeX]