numerics with respect to vacancy diffusion.

This commit is contained in:
Haiming Zhang 2014-12-08 15:37:44 +00:00
parent db0e02b94d
commit 0bd4ab48f8
1 changed files with 47 additions and 42 deletions

View File

@ -115,48 +115,49 @@ module numerics
err_struct_tolAbs = 1.0e-10_pReal, & !< absolute tolerance for equilibrium
err_struct_tolRel = 1.0e-4_pReal, & !< relative tolerance for equilibrium
err_thermal_tol = 1.0e-1_pReal, &
err_damage_tol = 1.0e-3_pReal
err_damage_tol = 1.0e-3_pReal, &
err_vacancydiffusion_tol = 1.0e-8_pReal
character(len=4096), protected, public :: &
petsc_optionsFEM = '-mech_snes_type newtonls &
&-mech_snes_linesearch_type cp &
&-mech_snes_ksp_ew &
&-mech_snes_ksp_ew_rtol0 0.01 &
&-mech_snes_ksp_ew_rtolmax 0.01 &
&-mech_ksp_type fgmres &
&-mech_ksp_max_it 25 &
&-mech_pc_type ml &
&-mech_pc_ml_maxNlevels 2 &
&-mech_mg_coarse_ksp_type preonly &
&-mech_mg_coarse_pc_type lu &
&-mech_mg_coarse_pc_factor_mat_solver_package superlu_dist &
&-mech_mg_levels_ksp_type chebyshev &
&-mech_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
&-mech_mg_levels_pc_type sor &
&-mech_pc_ml_nullspace user &
&-damage_snes_type vinewtonssls &
&-damage_snes_linesearch_type cp &
&-damage_ksp_type fgmres &
&-damage_snes_atol 1e-8 &
&-damage_pc_type ml &
&-damage_mg_levels_ksp_type chebyshev &
&-damage_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
&-damage_mg_levels_pc_type sor &
&-thermal_snes_type newtonls &
&-thermal_snes_linesearch_type cp &
&-thermal_ksp_type fgmres &
&-thermal_snes_atol 1e-1 &
&-thermal_pc_type ml &
&-thermal_mg_levels_ksp_type chebyshev &
&-thermal_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
&-thermal_mg_levels_pc_type sor &
&-vacancy_snes_type newtonls &
&-vacancy_snes_linesearch_type cp &
&-vacancy_ksp_type fgmres &
&-vacancy_snes_atol 1e-6 &
&-vacancy_pc_type ml &
&-vacancy_mg_levels_ksp_type chebyshev &
&-vacancy_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
&-vacancy_mg_levels_pc_type sor '
petsc_optionsFEM = '-mech_snes_type newtonls &
&-mech_snes_linesearch_type cp &
&-mech_snes_ksp_ew &
&-mech_snes_ksp_ew_rtol0 0.01 &
&-mech_snes_ksp_ew_rtolmax 0.01 &
&-mech_ksp_type fgmres &
&-mech_ksp_max_it 25 &
&-mech_pc_type ml &
&-mech_pc_ml_maxNlevels 2 &
&-mech_mg_coarse_ksp_type preonly &
&-mech_mg_coarse_pc_type lu &
&-mech_mg_coarse_pc_factor_mat_solver_package superlu_dist &
&-mech_mg_levels_ksp_type chebyshev &
&-mech_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
&-mech_mg_levels_pc_type sor &
&-mech_pc_ml_nullspace user &
&-damage_snes_type vinewtonssls &
&-damage_snes_linesearch_type cp &
&-damage_ksp_type fgmres &
&-damage_snes_atol 1e-8 &
&-damage_pc_type ml &
&-damage_mg_levels_ksp_type chebyshev &
&-damage_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
&-damage_mg_levels_pc_type sor &
&-thermal_snes_type newtonls &
&-thermal_snes_linesearch_type cp &
&-thermal_ksp_type fgmres &
&-thermal_snes_atol 1e-1 &
&-thermal_pc_type ml &
&-thermal_mg_levels_ksp_type chebyshev &
&-thermal_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
&-thermal_mg_levels_pc_type sor &
&-vacancyDiffusion_snes_type newtonls &
&-vacancyDiffusion_snes_linesearch_type cp &
&-vacancyDiffusion_ksp_type fgmres &
&-vacancyDiffusion_snes_atol 1e-6 &
&-vacancyDiffusion_pc_type ml &
&-vacancyDiffusion_mg_levels_ksp_type chebyshev &
&-vacancyDiffusion_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
&-vacancyDiffusion_mg_levels_pc_type sor '
integer(pInt), protected, public :: &
itmaxFEM = 25_pInt, & !< maximum number of iterations
itminFEM = 1_pInt, & !< minimum number of iterations
@ -409,6 +410,8 @@ subroutine numerics_init
err_thermal_tol = IO_floatValue(line,positions,2_pInt)
case ('err_damage_tol')
err_damage_tol = IO_floatValue(line,positions,2_pInt)
case ('err_vacancydiffusion_tol')
err_vacancyDiffusion_tol = IO_floatValue(line,positions,2_pInt)
case ('itmaxfem')
itmaxFEM = IO_intValue(line,positions,2_pInt)
case ('itminfem')
@ -430,7 +433,7 @@ subroutine numerics_init
case ('petsc_optionsfem')
petsc_optionsFEM = trim(line(positions(4):))
#else
case ('err_struct_tolabs','err_struct_tolrel','err_thermal_tol','err_damage_tol', & ! found FEM parameter for spectral/Abaqus/Marc build
case ('err_struct_tolabs','err_struct_tolrel','err_thermal_tol','err_damage_tol','err_vacancydiffusion_tol',& ! found FEM parameter for spectral/Abaqus/Marc build
'itmaxfem', 'itminfem','maxcutbackfem','maxstaggerediter','integrationorder',&
'structorder','thermalorder', 'damageorder','petsc_optionsfem')
call IO_warning(40_pInt,ext_msg=tag)
@ -576,6 +579,7 @@ subroutine numerics_init
write(6,'(a24,1x,es8.1)') ' err_struct_tolRel: ',err_struct_tolRel
write(6,'(a24,1x,es8.1)') ' err_thermal_tol: ',err_thermal_tol
write(6,'(a24,1x,es8.1)') ' err_damage_tol: ',err_damage_tol
write(6,'(a24,1x,es8.1)') ' err_vacancyDiffusion_tol:',err_vacancydiffusion_tol
write(6,'(a24,1x,a)') ' PETSc_optionsFEM: ',trim(petsc_optionsFEM)
#endif
endif mainProcess3
@ -652,6 +656,7 @@ subroutine numerics_init
if (err_struct_tolAbs <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_struct_tolAbs')
if (err_thermal_tol <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_thermal_tol')
if (err_damage_tol <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_damage_tol')
if (err_vacancyDiffusion_tol <= 0.0_pReal)call IO_error(301_pInt,ext_msg='err_vacancydiffusion_tol')
#endif
end subroutine numerics_init