marc and other minor changes
This commit is contained in:
parent
482ba98b18
commit
ac63ee3600
|
@ -1,5 +1,6 @@
|
||||||
# Available numerical parameters
|
# Available numerical parameters
|
||||||
# Case sensitive keys
|
# Case sensitive keys
|
||||||
|
---
|
||||||
|
|
||||||
homogenization:
|
homogenization:
|
||||||
mechanical:
|
mechanical:
|
||||||
|
@ -21,74 +22,74 @@ homogenization:
|
||||||
|
|
||||||
solver:
|
solver:
|
||||||
grid:
|
grid:
|
||||||
N_staggered_iter_max: 10 # max number of field level staggered iterations
|
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 cut back level (0: 1, 1: 0.5, 2: 0.25, etc)
|
||||||
|
|
||||||
damage:
|
damage:
|
||||||
N_iter_max: 100 # maximum iteration number
|
N_iter_max: 100 # maximum iteration number
|
||||||
eps_abs_phi: 1.0e-2 # absolute tolerance for damage evolution
|
eps_abs_phi: 1.0e-2 # absolute tolerance for damage evolution
|
||||||
eps_rel_phi: 1.0e-6 # relative tolerance for damage evolution
|
eps_rel_phi: 1.0e-6 # relative tolerance for damage evolution
|
||||||
|
phi_min: 1.0e-6 # non-zero residual damage
|
||||||
thermal:
|
thermal:
|
||||||
N_iter_max: 100 # maximum iteration number
|
N_iter_max: 100 # maximum iteration number
|
||||||
eps_abs_T: 1.0e-2 # absolute tolerance for thermal equilibrium
|
eps_abs_T: 1.0e-2 # absolute tolerance for thermal equilibrium
|
||||||
eps_rel_T: 1.0e-6 # relative tolerance for thermal equilibrium
|
eps_rel_T: 1.0e-6 # relative tolerance for thermal equilibrium
|
||||||
|
|
||||||
mechanical:
|
mechanical:
|
||||||
eps_abs_div(P): 1.0e-4 # absolute tolerance for fulfillment of stress equilibrium
|
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_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_abs_P: 1.0e3 # absolute tolerance for fulfillment of stress BC
|
||||||
eps_rel_P: 1.0e-3 # relative 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_min: 1 # minimum iteration number
|
||||||
N_iter_max: 100 # maximum iteration number
|
N_iter_max: 100 # maximum iteration number
|
||||||
update_gamma: false # Update Gamma-operator with current dPdF (not possible if memory_efficient=1)
|
update_gamma: false # Update Gamma-operator with current dPdF (not possible if memory_efficient=1)
|
||||||
|
|
||||||
FFT:
|
FFT:
|
||||||
memory_efficient: True # Precalculate Gamma-operator (81 double per point)
|
memory_efficient: True # Precalculate Gamma-operator (81 double per point)
|
||||||
divergence_correction: size+grid # Use size-independent divergence criterion
|
divergence_correction: size+grid # Use size-independent divergence criterion
|
||||||
derivative: continuous # Approximation used for derivatives in Fourier space
|
derivative: continuous # Approximation used for derivatives in Fourier space
|
||||||
FFTW_plan_mode: FFTW_MEASURE # planing-rigor flag, see manual on www.fftw.org
|
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
|
FFTW_timelimit: -1.0 # timelimit of plan creation for FFTW, see manual on www.fftw.org. -1.0: disable timelimit
|
||||||
|
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
|
||||||
PETSc_options: -snes_type ngmres -snes_ngmres_anderson # PETSc solver options
|
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:
|
mesh:
|
||||||
N_cutback_max: 3 # maximum cut back level (0: 1, 1: 0.5, 2: 0.25, etc)
|
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_staggered_iter_max: 10 # max number of field level staggered iterations
|
||||||
p_s: 2 # order of displacement shape functions (when mesh is defined)
|
p_s: 2 # order of displacement shape functions (when mesh is defined)
|
||||||
bbarstabilisation: false
|
bbarstabilisation: false
|
||||||
p_i: 2 # order of quadrature rule required (when mesh is defined)
|
p_i: 2 # order of quadrature rule required (when mesh is defined)
|
||||||
N_iter_max: 250 # Maximum iteration number
|
N_iter_max: 250 # Maximum iteration number
|
||||||
eps_abs_div(P): 1.0e-10 # absolute tolerance for mechanical equilibrium
|
eps_abs_div(P): 1.0e-10 # absolute tolerance for mechanical equilibrium
|
||||||
eps_rel_div(P): 1.0e-4 # relative 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
|
||||||
|
|
||||||
phase:
|
phase:
|
||||||
mechanical:
|
mechanical:
|
||||||
r_cutback_min: 1.0e-3 # minimum (relative) size of step allowed during cutback in phase state calculation
|
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_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
|
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)
|
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
|
N_iter_state_max: 10 # state loop limit
|
||||||
|
|
||||||
plastic:
|
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 due to non-convergence in Lp calculation
|
||||||
eps_rel_Lp: 1.0e-6 # relative tolerance in Lp residuum
|
eps_rel_Lp: 1.0e-6 # relative tolerance in Lp residuum
|
||||||
eps_abs_Lp: 1.0e-8 # absolute 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
|
N_iter_Lp_max: 40 # stress loop limit for Lp
|
||||||
f_update_jacobi_Lp: 1 # frequency of Jacobian update of residuum in 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)
|
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:
|
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 due to non-convergence in Li calculation
|
||||||
eps_rel_Li: 1.0e-6 # relative tolerance in Li residuum
|
eps_rel_Li: 1.0e-6 # relative tolerance in Li residuum
|
||||||
eps_abs_Li: 1.0e-8 # absolute 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
|
N_iter_Li_max: 40 # stress loop limit for Li
|
||||||
f_update_jacobi_Li: 1 # frequency of Jacobian update of residuum in Li
|
f_update_jacobi_Li: 1 # frequency of Jacobian update of residuum in Li
|
||||||
|
|
||||||
commercialFEM:
|
|
||||||
unitlength: 1 # physical length of one computational length unit
|
|
||||||
|
|
||||||
generic:
|
generic:
|
||||||
random_seed: 0 # fixed seeding for pseudo-random number generator, Default 0: use random seed.
|
random_seed: 0 # fixed seeding for pseudo-random number generator, Default 0: use random seed.
|
||||||
phi_min: 1.0e-6 # non-zero residual damage.
|
|
||||||
|
|
|
@ -69,13 +69,15 @@ subroutine discretization_Marc_init
|
||||||
unscaledNormals
|
unscaledNormals
|
||||||
|
|
||||||
type(tDict), pointer :: &
|
type(tDict), pointer :: &
|
||||||
|
num_solver, &
|
||||||
num_commercialFEM
|
num_commercialFEM
|
||||||
|
|
||||||
|
|
||||||
print'(/,a)', ' <<<+- discretization_Marc init -+>>>'; flush(6)
|
print'(/,a)', ' <<<+- discretization_Marc init -+>>>'; flush(6)
|
||||||
|
|
||||||
num_commercialFEM => config_numerics%get_dict('commercialFEM',defaultVal = emptyDict)
|
num_solver => config_numerics%get_asDict('solver',defaultVal=emptyDict)
|
||||||
mesh_unitlength = num_commercialFEM%get_asReal('unitlength',defaultVal=1.0_pREAL) ! set physical extent of a length unit in mesh
|
num_commercialFEM => num_solver%get_asDict('Marc', defaultVal = emptyDict)
|
||||||
|
mesh_unitlength = num_commercialFEM%get_asReal('unit_length',defaultVal=1.0_pREAL) ! set physical extent of a length unit in mesh
|
||||||
if (mesh_unitlength <= 0.0_pREAL) call IO_error(301,'unitlength')
|
if (mesh_unitlength <= 0.0_pREAL) call IO_error(301,'unitlength')
|
||||||
|
|
||||||
call inputRead(elem,node0_elem,connectivity_elem,materialAt)
|
call inputRead(elem,node0_elem,connectivity_elem,materialAt)
|
||||||
|
|
|
@ -102,7 +102,7 @@ subroutine grid_damage_spectral_init(num_grid)
|
||||||
! read numerical parameters and do sanity checks
|
! read numerical parameters and do sanity checks
|
||||||
num_grid_damage => num_grid%get_dict('damage',defaultVal=emptyDict)
|
num_grid_damage => num_grid%get_dict('damage',defaultVal=emptyDict)
|
||||||
|
|
||||||
num%itmax = num_grid_damage%get_asInt('N_iter_max', defaultVal=100)
|
num%itmax = num_grid_damage%get_asInt ('N_iter_max', defaultVal=100)
|
||||||
num%eps_damage_atol = num_grid_damage%get_asReal('eps_abs_phi',defaultVal=1.0e-2_pREAL)
|
num%eps_damage_atol = num_grid_damage%get_asReal('eps_abs_phi',defaultVal=1.0e-2_pREAL)
|
||||||
num%eps_damage_rtol = num_grid_damage%get_asReal('eps_rel_phi',defaultVal=1.0e-6_pREAL)
|
num%eps_damage_rtol = num_grid_damage%get_asReal('eps_rel_phi',defaultVal=1.0e-6_pREAL)
|
||||||
num%phi_min = num_grid_damage%get_asReal('phi_min', defaultVal=1.0e-6_pREAL)
|
num%phi_min = num_grid_damage%get_asReal('phi_min', defaultVal=1.0e-6_pREAL)
|
||||||
|
@ -110,7 +110,7 @@ subroutine grid_damage_spectral_init(num_grid)
|
||||||
extmsg = ''
|
extmsg = ''
|
||||||
if (num%eps_damage_atol <= 0.0_pREAL) extmsg = trim(extmsg)//' eps_abs_phi'
|
if (num%eps_damage_atol <= 0.0_pREAL) extmsg = trim(extmsg)//' eps_abs_phi'
|
||||||
if (num%eps_damage_rtol <= 0.0_pREAL) extmsg = trim(extmsg)//' eps_rel_phi'
|
if (num%eps_damage_rtol <= 0.0_pREAL) extmsg = trim(extmsg)//' eps_rel_phi'
|
||||||
if (num%phi_min < 0.0_pREAL) extmsg = trim(extmsg)//' phi_min'
|
if (num%phi_min <= 0.0_pREAL) extmsg = trim(extmsg)//' phi_min'
|
||||||
if (num%itmax < 1) extmsg = trim(extmsg)//' N_iter_max'
|
if (num%itmax < 1) extmsg = trim(extmsg)//' N_iter_max'
|
||||||
|
|
||||||
if (extmsg /= '') call IO_error(301,ext_msg=trim(extmsg))
|
if (extmsg /= '') call IO_error(301,ext_msg=trim(extmsg))
|
||||||
|
|
|
@ -96,7 +96,6 @@ subroutine FEM_utilities_init(num_mesh)
|
||||||
num_mesh
|
num_mesh
|
||||||
character(len=pSTRLEN) :: petsc_optionsOrder
|
character(len=pSTRLEN) :: petsc_optionsOrder
|
||||||
character(len=:), allocatable :: &
|
character(len=:), allocatable :: &
|
||||||
extmsg, &
|
|
||||||
petsc_options
|
petsc_options
|
||||||
integer :: &
|
integer :: &
|
||||||
p_s, & !< order of shape functions
|
p_s, & !< order of shape functions
|
||||||
|
|
Loading…
Reference in New Issue