MyTRIMRasterizer

Providing isotopic species and concentrations

MyTRIMRasterizer uses information of the isotopic composition in the domain provided by MooseVariables specified in parameter var to prepare a rasterized domain on which binary collision Monte Carlo is performed. Rasterization is the process of averaging smoothly varying compositional data over each FEM mesh element.

The entries in of the var, M, and Z parameters are paired; we index them as , , and , respectively. Loosely speaking represents the number density of isotope at point , is the atomic mass, and is the charge in units of .

The physical meaning of the var argument is specified in the var_physical_meaning parameter: it can be either number density (atoms / volume) or stoichiometric content (number of atoms in compound). The number density should be given in the rasterizer's length units specified by the length_unit parameter (defaults to Angstrom). If the physical meaning of the var parameter is stoichiometric content site_volume must be provided. site_volume is a material property and can hence vary with space; it is denoted by and its physical meaning is the volume of the compound related to the stoichiometric specification in var, e.g. . Note that site_volume must always be specified in nanometers regardless of length_unit.

MyTRIM computes the mass density of the material by:

where is Avogadro's number. We identify as the number density defined as the number of atoms of species per unit volume. The following choices for may be usage of the site_volume parameter:

where : if length_unit is nanometer, if length_unit is Angstrom, if length_unit is micro-meter: so that the user should store number densities in the variables specified in var. Note that site_volume will be set automatically in this case.

: should be the stoichiometric content of species . Using the example: , .

Computing the PKA list

Before performing damage cascades, the rasterizer computes the number of primary knock-on atoms (PKA) for each mesh element , mass and atomic number by:

where is the current time step, indexes the PKAGenerator objects provided in the pka_generator parameter, is the probability that PKAGenerator produces a PKA with mass and atomic number , and is the recoil rate of PKAGenerator that may depend on space. is an integer number so it is rounded to the next higher value with a probability proportional to its truncated integer complement ( would be with a probability of , and with a probability of ). The total number of PKAs is given by .

Scaling PKA rates

The rasterizer provides two parameters for modifying the number of simulated PKAs without biasing the results. The parameter max_pka_count limits the number of PKAs roughly to the provided integer number denoted by . If the number of computed PKAs is smaller than or equal to max_pka_count, the parameter is ignored. If the number of PKAs is larger than max_pka_count, PKAs are accepted with a probability of . The actual number of PKAs is usually not identical to and is denoted by . Any tallied result is, e.g. vacancy or interstitial densities or energy deposition, are multiplied by .

The parameter recoil_rate_scaling is a real number that is multiplied to the recoil rate . All tallied results are divided by recoil_rate_scaling.

Recombination

A simple model for recombination within damage cascades is currently implemented. A vacancy-interstitial pair is annihilated if their distance is less than r_rec. Note that r_rec must be given in Angstrom. Recombination within damage cascades typically occurs within thermal spike areas where sufficient energy has been deposited to displace virtually all contained atoms. In thermal spike areas the atoms are effectively in a liquid state. Recrystallization takes place when energy has been dissipated from the thermal spike area and most Frenkel pairs annihilate. Surviving Frenkel pairs have usually been transported out of the melted zone through collision sequences along closely packed directions. The current recombination model does not accurately describe this physics.

Periodic variables

If all variables in the var parameters are auxiliary variables, the rasterizer has to be made aware of periodic boundaries. The user needs to provide a nonlinear variable that the desired periodic variable apply to in the periodic_var parameter.

Input Parameters

  • MElement mass in amu

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Element mass in amu

  • ZNuclear charge in e

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Nuclear charge in e

  • pka_generatorList of PKA generating user objects

    C++ Type:std::vector<UserObjectName>

    Controllable:No

    Description:List of PKA generating user objects

  • varVariables to rasterize

    C++ Type:std::vector<VariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Variables to rasterize

Required Parameters

  • EbindBinding energy in eV

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Binding energy in eV

  • EdispDisplacement threshold in eV

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Displacement threshold in eV

  • MtolTolerance on mass number for tagging PKAs with var id.

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Tolerance on mass number for tagging PKAs with var id.

  • blockThe list of blocks (ids or names) that this object will be applied

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • length_unitANGSTROMLength units of the MOOSE mesh. MyTRIM contains pretabulated crossection data with units so this option must be set correctly to obtain physical results.

    Default:ANGSTROM

    C++ Type:MooseEnum

    Options:ANGSTROM, NANOMETER, MICROMETER

    Controllable:No

    Description:Length units of the MOOSE mesh. MyTRIM contains pretabulated crossection data with units so this option must be set correctly to obtain physical results.

  • max_nrt_difference0.2The largest max-norm difference between number fractions for reusing existing polyatomic NRT.

    Default:0.2

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The largest max-norm difference between number fractions for reusing existing polyatomic NRT.

  • periodic_varOptional variables that determines the periodicity. If not supplied the first argument of 'var' will be used.

    C++ Type:std::vector<VariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional variables that determines the periodicity. If not supplied the first argument of 'var' will be used.

  • recoil_rate_scaling1A factor to scale computed reaction rates in the the PKAGenerator objects. This is useful to avoid extremely large PKA lists.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:A factor to scale computed reaction rates in the the PKAGenerator objects. This is useful to avoid extremely large PKA lists.

  • site_volumeLattice site volume in nm^3 (regardless of the chosen mesh units)

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Lattice site volume in nm^3 (regardless of the chosen mesh units)

  • trim_moduleCORETRIM Module to run for optional capabilities like energy deposition

    Default:CORE

    C++ Type:MooseEnum

    Options:CORE, ENERGY_DEPOSITION

    Controllable:No

    Description:TRIM Module to run for optional capabilities like energy deposition

  • var_physical_meaningSTOICHIOMETRYThe physical meaning of the rasterizer variables.

    Default:STOICHIOMETRY

    C++ Type:MooseEnum

    Options:STOICHIOMETRY, NUMBER_DENSITY

    Controllable:No

    Description:The physical meaning of the rasterizer variables.

Optional Parameters

  • allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).

    Default:False

    C++ Type:bool

    Controllable:No

    Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).

  • execute_onTIMESTEP_BEGINThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.

    Default:TIMESTEP_BEGIN

    C++ Type:ExecFlagEnum

    Options:NONE, INITIAL, LINEAR, LINEAR_CONVERGENCE, NONLINEAR, NONLINEAR_CONVERGENCE, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, MULTIAPP_FIXED_POINT_CONVERGENCE, FINAL, CUSTOM

    Controllable:No

    Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.

  • execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.

    Default:0

    C++ Type:int

    Controllable:No

    Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.

  • force_postauxFalseForces the UserObject to be executed in POSTAUX

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in POSTAUX

  • force_preauxFalseForces the UserObject to be executed in PREAUX

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in PREAUX

  • force_preicFalseForces the UserObject to be executed in PREIC during initial setup

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in PREIC during initial setup

Execution Scheduling Parameters

  • analytical_energy_cutoff0Energy cutoff in eV below which recoils are not followed explicitly but effects are calculated analytically.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Energy cutoff in eV below which recoils are not followed explicitly but effects are calculated analytically.

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

  • implicitTrueDetermines whether this object is calculated using an implicit or explicit form

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Determines whether this object is calculated using an implicit or explicit form

  • interval1The time step interval at which TRIM BCMC is run

    Default:1

    C++ Type:unsigned int

    Controllable:No

    Description:The time step interval at which TRIM BCMC is run

  • max_pka_countDesired number of PKAs to be run during each invocation of mytrim

    C++ Type:unsigned int

    Controllable:No

    Description:Desired number of PKAs to be run during each invocation of mytrim

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The seed for the master random number generator

  • use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Advanced Parameters

  • prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

  • use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

Material Property Retrieval Parameters

  • r_recRecombination radius in Angstrom. Frenkel pairs with a separation distance lower than this will be removed from the cascade

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Recombination radius in Angstrom. Frenkel pairs with a separation distance lower than this will be removed from the cascade

Recombination Parameters

Input Files

References

No citations exist within this document.