diff --git a/examples/config/numerics.yaml b/examples/config/numerics.yaml index fa56bdff4..7e7c9895f 100644 --- a/examples/config/numerics.yaml +++ b/examples/config/numerics.yaml @@ -8,10 +8,10 @@ homogenization: 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 ... - perturbpenalty: 1.0e-7 # perturbation for computing penalty tangent - relevantmismatch: 1.0e-5 # minimum threshold of mismatch - viscositypower: 1.0e+0 # power (sensitivity rate) of numerical viscosity in RGC scheme - viscositymodulus: 0.0e+0 # stress modulus of RGC numerical viscosity (zero = without numerical viscosity) + 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) @@ -20,9 +20,6 @@ homogenization: Delta_V_pow: 5.0 # Don't think generic is required generic: - subStepMin: 1.0e-3 #? (not used) minimum (relative) size of sub-step allowed during cutback in homogenization - subStepSize: 0.25 #? (not used) size of substep when cutback introduced in homogenization (value between 0 and 1) - stepIncrease: 1.5 #? (not used) increase of next substep size when previous substep converged in homogenization (value higher than 1) nMPstate: 10 # (do we need??) materialpoint state loop limit solver: diff --git a/src/homogenization_mechanical_RGC.f90 b/src/homogenization_mechanical_RGC.f90 index e4a9367eb..3b21ebc37 100644 --- a/src/homogenization_mechanical_RGC.f90 +++ b/src/homogenization_mechanical_RGC.f90 @@ -108,33 +108,33 @@ module subroutine RGC_init() num_mechanical => num_homogenization%get_dict('mechanical',defaultVal=emptyDict) num_RGC => num_mechanical%get_dict('RGC',defaultVal=emptyDict) - num%atol = num_RGC%get_asReal('eps_abs_P', defaultVal=1.0e+4_pREAL) - num%rtol = num_RGC%get_asReal('eps_rel_P', defaultVal=1.0e-3_pREAL) - num%absMax = num_RGC%get_asReal('eps_abs_max', defaultVal=1.0e+10_pREAL) - num%relMax = num_RGC%get_asReal('eps_rel_max', defaultVal=1.0e+2_pREAL) - num%pPert = num_RGC%get_asReal('perturbpenalty', defaultVal=1.0e-7_pREAL) - num%xSmoo = num_RGC%get_asReal('relevantmismatch', defaultVal=1.0e-5_pREAL) - num%viscPower = num_RGC%get_asReal('viscositypower', defaultVal=1.0e+0_pREAL) - num%viscModus = num_RGC%get_asReal('viscositymodulus', defaultVal=0.0e+0_pREAL) - num%refRelaxRate = num_RGC%get_asReal('dot_a_ref', defaultVal=1.0e-3_pREAL) - num%maxdRelax = num_RGC%get_asReal('dot_a_max', defaultVal=1.0e+0_pREAL) - num%maxVolDiscr = num_RGC%get_asReal('Delta_V_max', defaultVal=1.0e-5_pREAL) - num%volDiscrMod = num_RGC%get_asReal('Delta_V_mod', defaultVal=1.0e+12_pREAL) - num%volDiscrPow = num_RGC%get_asReal('Delta_V_pow', defaultVal=5.0_pREAL) + num%atol = num_RGC%get_asReal('eps_abs_P', defaultVal=1.0e+4_pREAL) + num%rtol = num_RGC%get_asReal('eps_rel_P', defaultVal=1.0e-3_pREAL) + num%absMax = num_RGC%get_asReal('eps_abs_max', defaultVal=1.0e+10_pREAL) + num%relMax = num_RGC%get_asReal('eps_rel_max', defaultVal=1.0e+2_pREAL) + num%pPert = num_RGC%get_asReal('Delta_a', defaultVal=1.0e-7_pREAL) + num%xSmoo = num_RGC%get_asReal('relevant_mismatch', defaultVal=1.0e-5_pREAL) + num%viscPower = num_RGC%get_asReal('viscosity_exponent', defaultVal=1.0e+0_pREAL) + num%viscModus = num_RGC%get_asReal('viscosity_modulus', defaultVal=0.0e+0_pREAL) + num%refRelaxRate = num_RGC%get_asReal('dot_a_ref', defaultVal=1.0e-3_pREAL) + num%maxdRelax = num_RGC%get_asReal('dot_a_max', defaultVal=1.0e+0_pREAL) + num%maxVolDiscr = num_RGC%get_asReal('Delta_V_max', defaultVal=1.0e-5_pREAL) + num%volDiscrMod = num_RGC%get_asReal('Delta_V_mod', defaultVal=1.0e+12_pREAL) + num%volDiscrPow = num_RGC%get_asReal('Delta_V_pow', defaultVal=5.0_pREAL) - if (num%atol <= 0.0_pREAL) call IO_error(301,ext_msg='absTol_RGC') - if (num%rtol <= 0.0_pREAL) call IO_error(301,ext_msg='relTol_RGC') - if (num%absMax <= 0.0_pREAL) call IO_error(301,ext_msg='absMax_RGC') - if (num%relMax <= 0.0_pREAL) call IO_error(301,ext_msg='relMax_RGC') - if (num%pPert <= 0.0_pREAL) call IO_error(301,ext_msg='pPert_RGC') - if (num%xSmoo <= 0.0_pREAL) call IO_error(301,ext_msg='xSmoo_RGC') - if (num%viscPower < 0.0_pREAL) call IO_error(301,ext_msg='viscPower_RGC') - if (num%viscModus < 0.0_pREAL) call IO_error(301,ext_msg='viscModus_RGC') - if (num%refRelaxRate <= 0.0_pREAL) call IO_error(301,ext_msg='refRelaxRate_RGC') - if (num%maxdRelax <= 0.0_pREAL) call IO_error(301,ext_msg='maxdRelax_RGC') - if (num%maxVolDiscr <= 0.0_pREAL) call IO_error(301,ext_msg='maxVolDiscr_RGC') - if (num%volDiscrMod < 0.0_pREAL) call IO_error(301,ext_msg='volDiscrMod_RGC') - if (num%volDiscrPow <= 0.0_pREAL) call IO_error(301,ext_msg='volDiscrPw_RGC') + if (num%atol <= 0.0_pREAL) call IO_error(301,ext_msg='eps_abs_P') + if (num%rtol <= 0.0_pREAL) call IO_error(301,ext_msg='eps_rel_P') + if (num%absMax <= 0.0_pREAL) call IO_error(301,ext_msg='eps_abs_max') + if (num%relMax <= 0.0_pREAL) call IO_error(301,ext_msg='eps_rel_max') + if (num%pPert <= 0.0_pREAL) call IO_error(301,ext_msg='Delta_a') + if (num%xSmoo <= 0.0_pREAL) call IO_error(301,ext_msg='relevant_mismatch') + if (num%viscPower < 0.0_pREAL) call IO_error(301,ext_msg='viscosity_exponent') + if (num%viscModus < 0.0_pREAL) call IO_error(301,ext_msg='viscosity_modulus') + if (num%refRelaxRate <= 0.0_pREAL) call IO_error(301,ext_msg='dot_a_ref') + if (num%maxdRelax <= 0.0_pREAL) call IO_error(301,ext_msg='dot_a_max') + if (num%maxVolDiscr <= 0.0_pREAL) call IO_error(301,ext_msg='Delta_V_max') + if (num%volDiscrMod < 0.0_pREAL) call IO_error(301,ext_msg='Delta_V_mod') + if (num%volDiscrPow <= 0.0_pREAL) call IO_error(301,ext_msg='Delta_V_pow') do ho = 1, size(mechanical_type)