From 8399a1170311c34558eadbd7a4e0b36d9d76c579 Mon Sep 17 00:00:00 2001 From: Philip Eisenlohr Date: Mon, 4 Sep 2023 11:39:45 -0400 Subject: [PATCH 1/2] more extensive numerics.yaml documentation --- examples/config/numerics.yaml | 110 +++++++++++++++++----------------- 1 file changed, 56 insertions(+), 54 deletions(-) diff --git a/examples/config/numerics.yaml b/examples/config/numerics.yaml index 487b6cf88..4ff1d3863 100644 --- a/examples/config/numerics.yaml +++ b/examples/config/numerics.yaml @@ -1,5 +1,5 @@ -# Available numerical parameters -# Case sensitive keys +# Default values of all available numerical parameters +# Please note that keys are case sensitive homogenization: mechanical: @@ -21,75 +21,77 @@ homogenization: solver: grid: - N_staggered_iter_max: 10 # max number of field level staggered iterations - 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 + N_cutback_max: 3 # maximum cut-back 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 + 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 + 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 + 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: - 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 - N_iter_min: 1 # minimum iteration number - N_iter_max: 100 # maximum iteration number - update_gamma: false # Update Gamma-operator with current dPdF (not possible if memory_efficient=1) + 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) FFT: - memory_efficient: True # Precalculate Gamma-operator (81 double per point) - divergence_correction: size+grid # Use size-independent divergence criterion - derivative: continuous # Approximation used for derivatives in Fourier space - FFTW_plan_mode: FFTW_MEASURE # planing-rigor flag, see manual on www.fftw.org - FFTW_timelimit: -1.0 # timelimit of plan creation for FFTW, see manual on www.fftw.org. -1.0: disable timelimit - PETSc_options: -snes_type ngmres -snes_ngmres_anderson # PETSc solver options - alpha: 1.0 # polarization scheme parameter 0.0 < alpha < 2.0. alpha = 1.0 ==> AL scheme, alpha = 2.0 ==> accelerated scheme - beta: 1.0 # polarization scheme parameter 0.0 < beta < 2.0. beta = 1.0 ==> AL scheme, beta = 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 + 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) + PETSc_options: -snes_type ngmres -snes_ngmres_anderson # PETSc solver options + alpha: 1.0 # polarization scheme parameter 0.0 < alpha < 2.0 (alpha = 1.0 ==> AL scheme, alpha = 2.0 ==> accelerated scheme) + beta: 1.0 # polarization scheme parameter 0.0 < beta < 2.0 ( beta = 1.0 ==> AL scheme, beta = 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: - maxCutBack: 3 # maximum cut back level (0: 1, 1: 0.5, 2: 0.25, etc) - maxStaggeredIter: 10 # max number of field level staggered iterations - structorder: 2 # order of displacement shape functions (when mesh is defined) + maxCutBack: 3 # maximum cut back level (0: 1, 1: 0.5, 2: 0.25, etc) + maxStaggeredIter: 10 # max number of field level staggered iterations + structorder: 2 # order of displacement shape functions bbarstabilisation: false - integrationorder: 2 # order of quadrature rule required (when mesh is defined) - itmax: 250 # Maximum iteration number - itmin: 2 # Minimum iteration number - eps_struct_atol: 1.0e-10 # absolute tolerance for mechanical equilibrium - eps_struct_rtol: 1.0e-4 # relative tolerance for mechanical equilibrium + integrationorder: 2 # order of quadrature rule required + itmax: 250 # maximum iteration number + itmin: 2 # minimum iteration number + eps_struct_atol: 1.0e-10 # absolute tolerance for mechanical equilibrium + eps_struct_rtol: 1.0e-4 # relative tolerance for mechanical equilibrium 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 + 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 due to non-convergence in Lp calculation - 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) + r_linesearch_Lp: 0.5 # factor to decrease the step due to non-convergence in Lp calculation + 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 due to non-convergence in Li calculation - 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 Jacobian update of residuum in Li + r_linesearch_Li: 0.5 # factor to decrease the step due to non-convergence in Li calculation + 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 commercialFEM: - unitlength: 1 # physical length of one computational length unit + unitlength: 1 # physical length of one computational length unit generic: - random_seed: 0 # fixed seeding for pseudo-random number generator, Default 0: use random seed. - phi_min: 1.0e-6 # non-zero residual damage. + random_seed: 0 # fixed seeding for pseudo-random number generator (0: use random seed) + phi_min: 1.0e-6 # non-zero residual damage From 2434c322cadbb9a7a47fc28fc5f3269f509e5d3d Mon Sep 17 00:00:00 2001 From: Philip Eisenlohr Date: Tue, 5 Sep 2023 13:14:20 -0400 Subject: [PATCH 2/2] more sensible sorting of sections; additional polish --- examples/config/numerics.yaml | 68 +++++++++++++++++------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/examples/config/numerics.yaml b/examples/config/numerics.yaml index 4ff1d3863..e04888055 100644 --- a/examples/config/numerics.yaml +++ b/examples/config/numerics.yaml @@ -1,28 +1,10 @@ # Default values of all available numerical parameters # Please note that keys are case sensitive -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 (zero = 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 - solver: grid: N_staggered_iter_max: 10 # max number of field-level staggered iterations - N_cutback_max: 3 # maximum cut-back level (0: 1, 1: 0.5, 2: 0.25, etc) + N_cutback_max: 3 # maximum cutback level (0: 1, 1: 0.5, 2: 0.25, etc) damage: N_iter_max: 100 # maximum iteration number @@ -41,7 +23,7 @@ solver: 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) + update_gamma: false # update Gamma-operator with current dPdF (not possible if FFT: memory_efficient == true) FFT: memory_efficient: true # precalculate Gamma-operator (81 doubles per point) @@ -50,21 +32,28 @@ solver: 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) PETSc_options: -snes_type ngmres -snes_ngmres_anderson # PETSc solver options - alpha: 1.0 # polarization scheme parameter 0.0 < alpha < 2.0 (alpha = 1.0 ==> AL scheme, alpha = 2.0 ==> accelerated scheme) - beta: 1.0 # polarization scheme parameter 0.0 < beta < 2.0 ( beta = 1.0 ==> AL scheme, beta = 2.0 ==> accelerated scheme) + 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: - maxCutBack: 3 # maximum cut back level (0: 1, 1: 0.5, 2: 0.25, etc) - maxStaggeredIter: 10 # max number of field level staggered iterations - structorder: 2 # order of displacement shape functions - bbarstabilisation: false - integrationorder: 2 # order of quadrature rule required - itmax: 250 # maximum iteration number - itmin: 2 # minimum iteration number - eps_struct_atol: 1.0e-10 # absolute tolerance for mechanical equilibrium - eps_struct_rtol: 1.0e-4 # relative tolerance for mechanical equilibrium +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: @@ -75,7 +64,7 @@ phase: N_iter_state_max: 10 # state loop limit plastic: - r_linesearch_Lp: 0.5 # factor to decrease the step due to non-convergence in Lp calculation + 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 @@ -83,7 +72,7 @@ phase: 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 due to non-convergence in Li calculation + 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 @@ -95,3 +84,14 @@ commercialFEM: generic: random_seed: 0 # fixed seeding for pseudo-random number generator (0: use random seed) phi_min: 1.0e-6 # non-zero residual damage + +mesh: + maxCutBack: 3 # maximum cutback level (0: 1, 1: 0.5, 2: 0.25, etc.) + maxStaggeredIter: 10 # max number of field-level staggered iterations + structorder: 2 # order of displacement shape functions + bbarstabilisation: false + integrationorder: 2 # order of quadrature rule required + itmax: 250 # maximum iteration number + itmin: 2 # minimum iteration number + eps_struct_atol: 1.0e-10 # absolute tolerance for mechanical equilibrium + eps_struct_rtol: 1.0e-4 # relative tolerance for mechanical equilibrium