numerics.yaml#

The algorithms used in DAMASK can be configured via a YAML file that is typically called numerics.yaml. This optional file needs to be specified with the –numerics option when using the DAMASK grid or mesh solvers, or located in the current working directory and named numerics.yaml to be included in a simulation with commercial FEM solvers.

Using damask.Config is the recommended way for the generation and modification of numerics.yaml. Hand-written files should be checked for correctness, e.g. with yamllint or on www.yamllint.com.

Reference Examples#

All available parameters are usually listed in the file examples/config/numerics.yaml. The content of this file is shown below.

numerics#

# Default values of all available numerical parameters
# Please note that keys are case sensitive

solver:
  grid:
    N_staggered_iter_max: 10            # max number of field-level staggered iterations
    N_cutback_max:        3             # maximum cutback level (0: 1, 1: 0.5, 2: 0.25, etc)

    damage:
      N_iter_max: 100                   # maximum iteration number
      eps_abs_phi: 1.0e-2               # absolute tolerance for damage evolution
      eps_rel_phi: 1.0e-6               # relative tolerance for damage evolution
      phi_min: 1.0e-6                   # residual integrity

    thermal:
      N_iter_max: 100                   # maximum iteration number
      eps_abs_T: 1.0e-2                 # absolute tolerance for thermal equilibrium
      eps_rel_T: 1.0e-6                 # relative tolerance for thermal equilibrium

    mechanical:
      N_iter_min: 1                     # minimum iteration number
      N_iter_max: 100                   # maximum iteration number
      eps_abs_div(P): 1.0e-4            # absolute tolerance for fulfillment of stress equilibrium
      eps_rel_div(P): 5.0e-4            # relative tolerance for fulfillment of stress equilibrium
      eps_abs_P: 1.0e3                  # absolute tolerance for fulfillment of stress BC
      eps_rel_P: 1.0e-3                 # relative tolerance for fulfillment of stress BC
      update_gamma: false               # update Gamma-operator with current dPdF (not possible if FFT: memory_efficient == true)
      PETSc_options: -snes_type ngmres -snes_ngmres_anderson   # PETSc solver options

    FFT:
      memory_efficient: true            # precalculate Gamma-operator (81 doubles per point)
      divergence_correction: size+grid  # use size-independent divergence criterion {none, size, size+grid}
      derivative: continuous            # approximation used for derivatives in Fourier space {continuous, central_difference, FWBW_difference}
      FFTW_plan_mode: FFTW_MEASURE      # planning-rigor flags, see manual at https://www.fftw.org/fftw3_doc/Planner-Flags.html
      FFTW_timelimit: -1.0              # time limit of plan creation for FFTW, see manual on www.fftw.org. (-1.0: disable time limit)
      alpha: 1.0                        # polarization scheme parameter 0.0 < alpha < 2.0 (1.0: AL scheme, 2.0: accelerated scheme)
      beta: 1.0                         # polarization scheme parameter 0.0 <  beta < 2.0 (1.0: AL scheme, 2.0: accelerated scheme)
      eps_abs_curl(F): 1.0e-10          # absolute tolerance for fulfillment of strain compatibility
      eps_rel_curl(F): 5.0e-4           # relative tolerance for fulfillment of strain compatibility

  mesh:
    N_cutback_max:        3             # maximum cut back level (0: 1, 1: 0.5, 2: 0.25, etc)
    N_staggered_iter_max: 10            # max number of field level staggered iterations
    p_s:                  2             # order of displacement shape functions
    p_i:                  2             # order of quadrature rule required
    bbarstabilization:    false

    mechanical:
      N_iter_max:         250           # Maximum iteration number
      eps_abs_div(P):     1.0e-10       # absolute tolerance for mechanical equilibrium
      eps_rel_div(P):     1.0e-4        # relative tolerance for mechanical equilibrium

  Marc:
    unit_length:          1.0           # physical length of one computational length unit


homogenization:
  mechanical:
    RGC:
      eps_abs_P:           1.0e+4       # absolute tolerance of RGC residuum (in Pa)
      eps_rel_P:           1.0e-3       # relative ...
      eps_abs_max:         1.0e+10      # absolute upper-limit of RGC residuum (in Pa)
      eps_rel_max:         1.0e+2       # relative ...
      Delta_a:             1.0e-7       # perturbation for computing penalty tangent
      relevant_mismatch:   1.0e-5       # minimum threshold of mismatch
      viscosity_exponent:  1.0e+0       # power (sensitivity rate) of numerical viscosity in RGC scheme
      viscosity_modulus:   0.0e+0       # stress modulus of RGC numerical viscosity (0: without numerical viscosity)
                                        # suggestion: larger than the aTol_RGC but still far below the expected flow stress of material
      dot_a_ref:           1.0e-3       # reference rate of relaxation (about the same magnitude as straining rate, possibly a bit higher)
      dot_a_max:           1.0e+0       # threshold of maximum relaxation vector increment (if exceed this then cutback)
      Delta_V_max:         1.0e-5       # maximum allowable relative volume discrepancy
      Delta_V_modulus:     1.0e+12
      Delta_V_exponent:    5.0


phase:
  mechanical:
    r_cutback_min:             1.0e-3   # minimum (relative) size of step allowed during cutback in phase state calculation
    r_cutback:                 0.25     # factor to decrease size of step when cutback introduced in phase state calculation (value between 0 and 1)
    r_increase:                1.5      # factor to increase size of next step when previous step converged in phase state calculation
    eps_rel_state:             1.0e-6   # relative tolerance in phase state loop (abs tol provided by constitutive law)
    N_iter_state_max:          10       # state loop limit

    plastic:
      r_linesearch_Lp:         0.5      # factor to decrease the step if Lp calculation fails to converge
      eps_rel_Lp:              1.0e-6   # relative tolerance in Lp residuum
      eps_abs_Lp:              1.0e-8   # absolute tolerance in Lp residuum
      N_iter_Lp_max:           40       # stress loop limit for Lp
      f_update_jacobi_Lp:      1        # frequency of Jacobian update of residuum in Lp
      integrator_state:        FPI      # integration method (FPI = Fixed Point Iteration, Euler = Euler, AdaptiveEuler = Adaptive Euler, RK4 = classical 4th order Runge-Kutta, RKCK45 = 5th order Runge-Kutta Cash-Karp)

    eigen:
      r_linesearch_Li:         0.5      # factor to decrease the step if Li calculation fails to converge
      eps_rel_Li:              1.0e-6   # relative tolerance in Li residuum
      eps_abs_Li:              1.0e-8   # absolute tolerance in Li residuum
      N_iter_Li_max:           40       # stress loop limit for Li
      f_update_jacobi_Li:      1        # frequency of updating the Jacobian of residuum in Li

generic:
  random_seed:                 0        # fixed seeding for pseudo-random number generator (0: use random seed)

Note

The default YAML parser used in DAMASK does not support advanced features, such as references and line continuation statements, unless DAMASK was compiled with libfyaml.