Numerical Parameters¶
In this section, some purely numerical parameters for the phasefield, concentration, flow and stress solver are defined.
PhaseField Solver¶
Time stepping¶
The time step for the phasefield solver has to be defined. It is recommended to use the automatic
or automatic_limited
time step options. In the latter case, minimum and maximum values for the time step as well as optional correction factors (default 0.9) can be further specified which apply to the "phasefield" and "segregation" time stepping criteria. Not all of the 4 parameters must be given. Especially, the first value, the minimum time step, can be very useful to improve performance (for more details please use the MICRESS® forum at www.micress.de). The parameters for automatic_limited
can also be read as timedependent from a file.
For manual definition of the phasefield time step, only the corresponding value in seconds has to be given. As a hint for finding reasonable values, the timesteps for each phase pair according to the automatic criteria is given as screen output during initialization (see Figure 1.
The section ends with the definition of the number of iterations for initialisation of the interfaces. During these types of iterations, the sharp interfaces produced by the initial grain structure setting are smoothed by applying the phasefield solver without any chemical driving force. Due to the fact that the stabilisation term, which enforces the interface profile, and the curvature are not separated in the phasefield model, curved initial grains will shrink and finally vanish if the number of iterations is too high. For single round particles, an attempt has been made to compensate for that, but in the general case this cannot be avoided. In most cases, there will be no problem, if a small number (ca. 20) of initial iterations is used. On the other hand, the nonconserved phasefield variable gives the opportunity to finetune the initial grain fraction during initialisation, e.g. if the "sharp" grain consists of only a few grid cells.
Example 1¶
(Limited) Automatic time stepping with 10 iterations for initialisation
... # Phase field solver #  # Timestep ? # Options: fix ...[s] automatic automatic_limited automatic_limited # Options: constant from_file constant # Limits: (real) min./s, [max./s], [time step factor], [segregation factor] 1.E6 1.E2 #Coefficient for phasefield criterion 1.00 #Coefficient for segregation criterion 0.900 # Number of steps to adjust profiles of initially sharp interfaces [exclude_inactive]? 10 ...
Figure 1¶
Screen output for time step initialisation
... Beginning of initialisation =========================== ... Routine init calls routine initTwidth tWidth_max( LIQUID: FCC_A1) = 2.0552885E05 s tWidth_max( LIQUID: ALCU_THETA) = 1.0687500E05 s Maximal value for tWidth = 1.0687500E05 s for phasefield solver Maximal value for tWidth = 1.0687500E06 s for concfield solver Automatic time stepping (phasefield solver): decreased value for tWidth = 1.01531E06 s Initial value for tWidth = 1.01531E06 s for automatic time stepping (phasefield solver) ...
Type of potential and FDcorrection¶
The user can select either double_obstacle
or multi_obstacle
.
The double_obstacle
functional is of parabolic type: g(\phi)=\phi(1\phi), limited by discontinuities at \phi=0 and \phi=1. The multi_obstacle
functiona ^{1} represents its generalized formulation for multiphase systems comprising contributions g_{\alpha\beta}(\phi)=\phi_\alpha \phi_\beta for all pairwise phase interactions. In the special case of a two phase systems, it exactly recovers the double_obstacle
functional. We recommend to use multi_obstacle
as a standard for all applications.
If double_obstacle
is selected for simulation of a multiphase problem, the antisymmetric approximation^{1} will be used. In this simplifying treatment, pairwise interactions between phases \alpha and \beta are directly derived from the corresponding two phase free energy functionals f_{\alpha\beta} instead of from the common free energy functional, thus neglecting higher order contributions \alpha\beta\gamma. As a consequence all dihedral angles at a junction will evolve as equal (i.e. a triple junction in 2D will always exhibit three 120° angles) independent of the energies of the adjacent interfaces. Therefore, this approximation can only be used in cases in which all boundaries energies are equal or in which dihedral angles are of no importance. For a correct reproduction of dihedral angles in multiphase problems select multi_obstacle
. Keep in mind that strongly differing interfacial energies may lead to high junction forces and extreme angles.
The numerical solution of the phasefield equation based on finite differences (FD) inherently implies a discretization error which may strongly bias the simulation results. Usually, it results in too low interface velocities. The error is inversely correlated to the number of numerical cells resolving the diffuse interface profile. However, high numbers of interface cells are detrimental for computational performance and also favor undesired numerical interface trapping. The problem can be overcome by an improved numerical solution of the phasefield equation, which takes advantage of the a priori knowledge of the phasefield profile, determined by the choice of the potential function^{2} ^{3}. To activate this improved numerical solution, select fd_correction
and choose an interface width of 34 numerical cells. If you want to rerun a diffusioncontrolled simulation which has been run before without the fd_correction option, it might be necessary to recalibrate the interface mobility. The option fd_correction
is recommended to be used as a standard for all applications and may become default in coming versions. It is however not yet compatible with temperature coupling.
The option multi_obstacle
especially comprises corrections for triple junction terms and is important for correct wetting characteristics.
Phase Minimum and Interface Thickness¶
Next, a value for the phase minimum is required. A cell with a phase or grain fraction below this value is not considered to be in the interface any more but in a bulk region (liquid or solid). In most cases, a value of 1.E4 can be recommended.
As optional parameter in the same line, a hysteresis factor can be defined which has a default value of 2, For more information, please consult the MICRESS® forum.
The interface thickness (in cells) also has to be input in this section. Generally, with increasing interface thickness, the curvature evaluation of the phasefield profile is improved. On the other hand, a higher resolution is required to resolve highly curved structures, and numerical artefacts related to the finite interface thickness like artificial solute trapping" is increased.
Note that in case of using extremely small values for the interface thickness (less than 3 cells), curvature evaluation is poor and nucleation at the interface is not working correctly anymore!
PhaseField Data Structure¶
In this section, the initial dimensions for the internal fields iFace
and nTupel
must be specified. During runtime, the size of these fields is determined automatically, so in most cases the given values are of minor importance
The values have to be given relative to the size of the simulation domain, a value of 1.0 for iFace
for example would assume that the whole calculation domain could be covered by (twograin or twophase) interfaces without exceeding the given initial list size. The same holds for nTupel
and the coverage of the domain with triple or higher junctions. The actual usage for both fields can be found in the TabL output.
The arrays iFace
and nTupel
are fully dynamic, so the influence of the initial values is quite limited. In extreme cases, the specification of excessively high initial values can lead to a memory overflow during the program startup. Too low values can lead to an unnecessarily high number of reallocation steps which slow down the initialisation process e. g. in the case of grain growth simulation with a high number of initial grains. Initial values of 0.1 for both parameters are recommended and work in practically all cases.
Additional optional parameters can be specified for the minimal
and the target
usage. These parameters allow a finetuning of the reallocation criteria during runtime what can be helpful if a temporal memory overflow must be avoided. More details can be found or requested in the MICRESS® forum.
Example 2¶
iFace and nTupel
... # Phase field solver #  ... # Coefficient for initial dimension of field iFace # [minimum usage] [target usage] 0.10 # Coefficient for initial dimension of field nTupel # [minimum usage] [target usage] 0.10 ...
Concentration Solver¶
The maximum number of concentration solving per phasefield iteration has only to be defined, if concentration coupling is used in combination with a fixed phasefield time step. An error message is given if the number is too small to be consistent with the timestep criterion of the explicit diffusion solver. This input is not required when automatic timestepping is used.
The global cushion factor influences the diffusion time stepping, i.e. the lower the factor the smaller are the diffusion time steps. In MICRESS version lower than 7.0, this factor holds a default value of 0.5 to be on the safe side. However, reducing the diffusion time stepping by 5% is sufficient for the most applications and gives a performance boost for the diffusion solver part.
Example 3¶
Diffusion time stepping factor (cushion)
... # Concentration solver #  # Factor for diffusion time stepping? (0.0 < factor < 1.0) 0.95000 ...
Stoichiometry and more¶
This section of input represents a terse loop with different leading keywords which can be placed in any order and must be closed by the keyword end_of_options
. In case of multiple definitions, the last input will overwrite previous definitions. Besides the highly relevant definitions of stoichiometric
conditions and a diagonal
extrapolation scheme, the options are mostly very specific and only needed in special cases. Nevertheless, it is important to have them for those cases. A list of these options appears in the cleanedup version of the input file to remind the users about their syntax:
Figure 2¶
Screen output for Stoichiometry and more
... # Optional parameters for thermodynamic definitions # Finish input with 'end_of_options'. # {stoichiometric  stoich_solubility  stoich_enhanced} <phase> <component list> # steep_limit <value> # limits <phase> <component> <min (at%)> <max (at%)> # penalty <phase> <phase 2> <component> # interstitial <phase> <component list> # sum_limits <phase> <component list> <min (at%)> <max (at%)> # diagonal [<component list>] # interaction <component 1> <component 2> # {criterion_higher  criterion_lower} <phase> <phase 2> <component> # {ordered  disordered} <phase> <sublattice 1> <sublattice 2> # switch_diff_data <phase> <reference phase> # {diff_comp_sets  vol_comp_sets  enth_comp_sets} <phase list> # temp_limit_TQ <lowest (K)> <highest (K)> # temp_limit_phase_TQ <phase> <lowest (K)> <highest (K)> # independent_sublattice <phase> <submatrix component> <component list> # database_consistent # pressure <value (MPa)> # start_value <phase> <phase 2> # init_fraction <phase> <phase 2> <fraction> # tic_tq_segments  tic_z_segments ...
The individual options often have complex applications and effects and will be described only briefly here. For more details please consult the MICRESS Forum or use the MICRESS Support (support@micress.de).

stoichiometric
stoich_solubility
stoich_enhanced
: The first type of required information is a list of all the stoichiometric components, which can be defined using the keywordstoichiometric
followed by a phase number and a list of element numbers. Stoichiometric components are those elements in a phase for which no explicit slopes of the phase diagram lines are specified or can be specified. A typical case is an element which has no solubility range in a given phase (line compound), which also includes elements with zero solubility. In such cases, the composition of the element in this phase cannot be used as a thermodynamic condition, which is important information if coupling to thermodynamic data is used. This type of stoichiometric condition is automatically detected and needs not to be (but may be) specified by the user.
The user may also decide to define an element with large slope in the phase diagram for numerical reasons as stoichiometric, other reasons could be opposite signs of the solidus and solvus slopes retrieved from the database, which also can create numerical problems (pseudobinary "demixing").
Contrarily, the keywordsstoich_solubility
andstoich_enhanced
are expert options which should not be used without prior consultation of MICRESS® experts. The first one can be used to indicate that the addressed element has a solubility range and thus its composition can be used as a thermodynamic condition when calculating quasiequilibrium or phase properties like diffusion coefficients or enthalpies. However, redistribution will be performed with a stoichiometric condition, e.g. because multibinary demixing would be expected. The second option (stoich_enhanced
) presents a more effective extrapolation scheme for redistribution, which assumes a "solidification path" approximation similar as in the growth restriction theory for nucleation. Although this approximation is not necessarily correct, it can be better than just assuming a constant composition, especially during solidification. It automatically implies alsostoich_solubility
. 
steep_limit
: When an element in a phase is defined as stoichiometric with solubility range (stoich_solubility
), MICRESS® will not only use concentration conditions for thermodynamic calculations, but also try to calculate the slopes during initialisation of the phase interactions of this phase. If the slopes of the interacting phases differ by more than a factor of 1.0*10^5, is is preferred not to calculate this slope again during the further simulation run. This has not only effects on solute redistribution but also for the dS+ and dS value (see Phase Diagram). The optionsteep_limit
allows specifying a different value for the critical factor. 
limits
: This option is followed by a phase and component number in the same line and restricts the allowed composition range of an element in a phase. The minimum and maximum value in at% (always!) is specified in the same line, or alternatively as two extra lines. In case of TCcoupling, MICRESS during initialisation tries to calculate theoretical limits based on the sublattice constituents defined in the thermodynamic database. If compositions outside of this range were used as conditions in ThermoCalc calculations, serious errors would occur. For this reason, knowledge of these limits is crucial. In case of full solubility of all elements or VA constituents in all sublattices, a minimum of 0 at% and a maximum of 100 at% are obtained as default limits.
The role of thelimits
thus is to restrict allowed composition ranges for TCcoupling (by raising a TQerror with number "1xxyy" with xx=phase, yy=component), but also (in connection with the optionpenalty
) to prevent crossing these limits as a result of a too far extrapolation of linearisation data (leading e.g. to negative compositions).
Userdefinedlimits
are especially helpful if the same phase in the database exists as several composition sets (e.g. FCC_A1 and FCC_A1#2), andswitching
between the two phases has to be avoided. 
penalty
: With this option apenalty
driving force is triggered if an element in the specified phase and phase interaction crosses its default or userdefined limits. This helps to avoid conditions which lead to compositions outside the user limit. As penalty term can sometimes lead to strange side effects (especially when several competing limits take action), this option should be used carefully and only if necessary. 
interstitial
: If thevolume_change
mode is activated, components can in this section be defined asinterstitial
by using this keyword followed by a phase number and component number(s). By default, components are defined as substitutional, if no 'VA' constituent is present, and as interstitial otherwise. In contrast to substitutional diffusion, diffusion of interstitial components is related to a local change in number of moles.
Besides thevolume_change
mode, interstitial elements also affect quasiequilibrium calculation and the eigenstrains from database in case of stress coupling. 
sum_limits
: Similar tolimits
,sum_limits
trigger TQerrors ("1xx99" with xx=phase) if the sum of the concentrations of a given set of elements falls below or exceeds a userdefined limit (e.g. to prevent switching between \gamma and \gamma'phase in Nialloys. In contrary tolimits
, no defaultsum_limits
are defined. Only onesum_limits
option can be defined per phase, and  for conceptual reasons  no correspondingpenalty
option exists. 
diagonal
: Switches for the list of elements from 'Multibinary Extrapolation' to 'Diagonal Extrapolation'^{4}^{2}
The use of stoichiometric conditions, especially when applied to avoid pseudobinary "demixing", can easily come to a limit: It is generally not recommended to set a stoichiometric condition for the same element in two phases between which a phase interaction is defined (see section Phase Interactions). With this limitation it may be almost impossible to avoid the effects of pseudobinary "demixing" in materials like stainless steels by use of the stoichiometric condition.
Therefore, from MICRESS® version 6.1, a 'Diagonal Extrapolation Scheme' has been included which only uses the diagonal elements of the redistribution matrix and which avoids demixing at the costs of a slightly lower extrapolation accuracy (which can be compensated for by more frequent updating of quasiequilibrium).^{4} It is invoked by specifying the keyworddiagonal
, followed by a list of elements. Ifdiagonal
is used without further parameters, this extrapolation is applied for all dissolved components. 
interaction
: Switches to 'Ternary Extrapolation' of the two specified elements and the matrix component.
'Ternary element interactions' can be included for selected element triples. Ternary extrapolation gives the user the possibility to account for some of the interactions between the (dissolved) elements which are neglected in case of normal (pseudobinary or diagonal) extrapolation, and thus to increase extrapolation accuracy. Usinginteraction
followed by two component numbers in the same line, a ternary interaction group can be established between two elements and the matrix component. Depending on the total component number, several such ternary interaction groups can be defined in extra lines, but each (dissolved) component can be used only once. The definition of ternary interaction groups applies to all phases and phase interactions.
If one of the keywordsinteraction
ordiagonal
has been used, two partition matrices per phase interaction (one for each direction) are written to the .log file (together with the linearization data, at the time of initialization of the phase interaction) which allow estimating the level of chemical higher order interactions between the dissolved elements and can serve as a guide for usinginteraction
in an efficient way. More information about the different extrapolation schemes available in MICRESS® can be found in ^{4}. 
criterion_higher
/criterion_lower
: These options can be regarded as alternatives forlimits
as they allow for setting a relative limit to phase compositions. The keyword is followed by three integer values for phase 1, phase 2 and a component number. The options allow the user to require that the specified component has a higher or lower composition in phase 1 than in phase 2, otherwise a TQerror with number "1xxyyzz" (xx:phase1, yy:phase2, zz:component) is raised. This option is helpful e.g. for the interaction of γ and γ' in Nibase superalloys to ensure that e.g. the Al composition is always lower in γ than in γ' without necessity to specify a discrete composition limit. 
ordered
/disordered
: If an orderdisorder transition is implemented in the sublattice model of a phase in the database, the site fractions of two sublattices are either different (ordered) or identical (disordered). Using these options for a given phase and the specified sublattices (usually no. 1 and 2) checks whether the required condition is violated and creates a corresponding TQerror ("4xx00" with xx=phase number). 
switch_diff_data
: Allows using diffusion data from a different phase. This may be helpful for using the same data also for composition sets, or use diffusion data from a similar phase if for the given phase no data are available. 
diff_comp_sets
/vol_com_sets
/enth_comp_sets
: Allows adding composition sets to singlephase equilibrium calculations which are necessary when retrieving diffusion, volume or enthalpy data. Each keyword is followed by a phase list for which existing composition sets (those with the same base name) are added. Only those composition sets are added which are defined as extra phases in MICRESS® and which already have been initialized. The option helps to deal with problems when working close to miscibility gaps so that the phase at the average composition may be unstable. 
temp_limit_TQ
: In case of TQcoupling, the use of temperatures for any type of TQcalculation can be restricted to a userspecified range. The purpose of this option is to avoid numerical problems with too high or too low temperatures, which often are an issue in connection with additive processes at fullscale. 
temp_limit_phase_TQ
: Identical to temp_limit_TQ
, but only for a given critical phase and its phase interactions (e.g. \gamma' at low temperatures). 
independent_sublattice
: This is an experimental option which tries to treat the sum rule of an independent sublattice (with loss of a concentration condition) 
database_consistent
: affects the scopes of relinearisation options (see Phase Diagram). 
pressure
: Allows using a different value than 1 atm as system pressure (especially relevant in case of gas reactions). 
start_value
: Allows controlling which of the phase compositions is used as start value for the iteration of the quasiequilibrium. As parameters, the chosen phase and the second phase of the interface must be given. Default is the use of the phase with higher fraction if no stoichiometric conditions are set. This option has to be considered as an absolute 'expert option'. 
init_fraction
: Allows controlling the phase fraction of the specified phase for initialisation of its interface with a second phase. Failing of the initial equilibrium must be avoided at any cost. This option is an alternative or addition to the selection of a suitable temperature for initial equilibrium. Initialisation is performed either at the beginning of the simulation, or when nucleation for a phase, which would establish this interaction, is checked first time (then the temperature for initialisation would not apply anymore). The initial set of linearization data is written in the .log output.
Without this option, a fraction of phMin is used for nucleating phases, or 0.5 for phases already existing in the initial microstructure. After the keywordinit_fraction
, the phase itself, the second phase in the interface, and the initial fraction of the phase are specified. 
tic_tq_segments
tic_z_segments
: For reasons of computational performance and numerical stability, the thin interface correction models for 'quantitatve phasefield' ('ticmodels')atc
andmob_corr
(see Redistribution Models) refer to averaged values for the thermodynamic linearisation data, temperature, and diffusion coefficients. Per default, the averaging scope is 'per interface'. With the two optionstic_tq_segments
andtic_z_segments
, the scope can be further narrowed down by intersection with either the TQsegments (as defined by the scopes for relinearisation, see Phase Diagram) or with the zsegments used for calculation of diffusion coefficients (see Diffusion).
Example 4¶
Expert options for thermodynamic definitions
... # Concentration solver #  ... diagonal stoichiometric 2 1 2 stoichiometric 3 13 limits 0 1 0. 20. disordered 1 1 2 tic_tq_segments temp_limit_TQ 973 2000 no_more_options ...
VolumeExpansion Solver¶
In case that the volume_change
has been specified, tow values have to be specified which control the expansionrelaxation solver: first, the maximal number of and second, a convergence value. The task of the expansionrelaxation solver is to homogenize local expansion by compensating material fluxes. The solver runs iteratively and stops when either the specified number of calls per times step is reached or when the mean difference in local expansion falls below the specified convergence value. The effectivity of the solver can be checked by monitoring the degree of homogenization in the expansion output file expa
and the consumed CPUtime listed in the TabP
file (row: expansion time).
Temperature Solver¶
If 1d_temp
has been specified in Model  Thermal Conditions, a reference position for the .dTLat output is required which lies inside the MICRESS domain (1 < z < CellsZ). The .dTLat output will summarize data on enthalpies and latent heat for that part of the microstructure domain, which belongs to the same grid cell of the 1dtemperature field as the specified zlocation.
The keyword 3d_correction
switches on a correction of the amount of latent heat which may be wrongly predicted in some types of 2D simulations. An additional phase number input allows specifying a reference phase for this correction, otherwise phase 0 is assumed. If lat_heat_3d
is chosen, the user can activate or deactivate the 2D/3D correction for each further phase by the keywords pseudo_3D
/ no_pseudo_3D
followed by the critical fraction of the matrix phase for limiting the correction (see section Topics  Temperature).
Example 5¶
3D correction
... # Temperature solver #  # 3D correction for latent heat in a 2D simulation ? # Options: no_3d_correction 3d_correction <matrix phase> 3d_correction 0 # Simulation with release of pseudo3D latent heat of phase 1 (FCC_A1)? # Options: pseudo_3d [crit. matrix fraction] no_pseudo_3d pseudo_3D 0.75 # Simulation with release of pseudo3D latent heat of phase 2 (ALCU_THETA)? # Options: pseudo_3d [crit. matrix fraction] no_pseudo_3d no_pseudo_3D # Interval for updating enthalpy data [s] 1.00000E02 ...
Stress Solver¶
The following section applies only for stress
and stress_coupled
simulations. The first input here is the phase number of the matrix phase. The strain and the calculation of its eigenvalue will be referenced to this phase.
The convergence criteria for the iterative BiCGstab matrix solver as well as an upper limit (maximum number) of iterations have to be defined. In the input line for the maximum number of iterations, the input of a second integer is also possible. It is set to 20 by default and specifies the maximum number of iterations allowed for achieving a good solution for quasistatic equilibrium. In most cases, the default settings are sufficient.
Flow Solver¶
For flow coupling a set of numerical parameters are queried in this section: the solver scheme, convergence criteria, and iteration limits. Section Flow Solver  Numerical Parameters describes the necessary parameters and ways to arrive at suitable values for a specific simulation.
Parallel Execution¶
The parallel variants of MICRESS® require one additional parameter for the number of threads to be used for parallel execution of the diffusion, stress, and temperature solvers.
These solvers are parallelized using the OpenMP (see www.openmp.org) paradigm for parallel programming which is intended for shared memory, thread level based parallelization.
It is possible to reduce the wallclock time of a simulation if the computational load is put heavily on the parallelized solvers. Check the TabP
output for getting an impression in which cases you can benefit from using the parallel variants of MICRESS®, see Figure 3. Each line of the text output shows the accumulated time values for the current simulation time step. Except the Simulation Time and CPU Time, all values show wallclock time. The third column, headed with Wallclock Time, shows the overall execution time and reflects the real time gone for the simulation.
Figure 3¶
Performance Output (TabP)
Two threads
Eight threads
Recommended choices of MICRESS® variants:

Serial versions: If there is only little load on the parallelized solvers, it is recommended to use MICRESS® standard serial variants. The parallelization itself introduces some overhead which results in a slow down of the parallel simulation.

Parallel versions: Simulation with a fair load on the parallel solvers will benefit from parallel execution with thread counts above 1. The performance will depend on the problem size and the available CPUs on your system when you choose high thread counts. Usually, there is an optimal thread count and the performance degrades beyond.
Example 6¶
Thread count for accelerating the execution of diffusion, stress, and temperature solvers in parallel MICRESS variants
# Numerical parameters # ==================== # ... # Parallel Execution #  # Number of parallel threads ? 5 ...

I. Steinbach, F. Pezzolla, B. Nestler, M. Seeßelberg, R. Prieler, G. J. Schmitz, and J. L. L. Rezende. A phase field concept for multiphase systems. Physica D: Nonlinear Phenomena, 94(3):135–147, jul 1996. doi:10.1016/01672789(95)002987. ↩↩

J. Eiken, B. Böttger, and I. Steinbach. Multiphasefield approach for multicomponent alloys with extrapolation scheme for numerical application. Physical Review, 2006. doi:10.1103/physreve.73.066122. ↩↩

Janin Eiken. Numerical solution of the phasefield equation with minimized discretization error. IOP Conference Series: Materials Science and Engineering, 33:012105, jul 2012. doi:10.1088/1757899x/33/1/012105. ↩

B. Böttger, J. Eiken, and M. Apel. Multiternary extrapolation scheme for efficient coupling of thermodynamic data to a multiphasefield model. Computational Materials Science, 108:283–292, oct 2015. doi:10.1016/j.commatsci.2015.03.003. ↩↩↩