FEM solver for vacancy diffusion
This commit is contained in:
parent
851a90bc29
commit
9544fe55a6
|
@ -398,14 +398,14 @@ FEM_FILES = prec.o DAMASK_interface.o FEZoo.o IO.o libs.o numerics.o debug.
|
||||||
FEsolving.o mesh.o material.o lattice.o \
|
FEsolving.o mesh.o material.o lattice.o \
|
||||||
$(DAMAGE_FILES) $(THERMAL_FILES) $(VACANCY_FILES) $(CONSTITUTIVE_FILES) \
|
$(DAMAGE_FILES) $(THERMAL_FILES) $(VACANCY_FILES) $(CONSTITUTIVE_FILES) \
|
||||||
crystallite.o $(HOMOGENIZATION_FILES) CPFEM.o \
|
crystallite.o $(HOMOGENIZATION_FILES) CPFEM.o \
|
||||||
FEM_utilities.o FEM_mech.o FEM_thermal.o FEM_damage.o
|
FEM_utilities.o FEM_mech.o FEM_thermal.o FEM_damage.o FEM_vacancyDiffusion.o
|
||||||
|
|
||||||
DAMASK_FEM.exe: DAMASK_FEM_driver.o
|
DAMASK_FEM.exe: DAMASK_FEM_driver.o
|
||||||
$(PREFIX) $(LINKERNAME) $(LINK_OPTIONS_$(F90)) $(STANDARD_CHECK_$(F90)) $(OPTIMIZATION_$(MAXOPTI)_$(F90)) \
|
$(PREFIX) $(LINKERNAME) $(LINK_OPTIONS_$(F90)) $(STANDARD_CHECK_$(F90)) $(OPTIMIZATION_$(MAXOPTI)_$(F90)) \
|
||||||
-o DAMASK_FEM.exe DAMASK_FEM_driver.o \
|
-o DAMASK_FEM.exe DAMASK_FEM_driver.o \
|
||||||
$(FEM_FILES) $(LIBRARIES) $(LIB_DIRS) $(RUN_PATH) $(SUFFIX)
|
$(FEM_FILES) $(LIBRARIES) $(LIB_DIRS) $(RUN_PATH) $(SUFFIX)
|
||||||
|
|
||||||
DAMASK_FEM_driver.o: DAMASK_FEM_driver.f90 FEM_mech.o FEM_thermal.o FEM_damage.o
|
DAMASK_FEM_driver.o: DAMASK_FEM_driver.f90 FEM_mech.o FEM_thermal.o FEM_damage.o FEM_vacancyDiffusion.o
|
||||||
$(PREFIX) $(COMPILERNAME) $(COMPILE_MAXOPTI) -c ../private/FEM/code/DAMASK_FEM_driver.f90 $(SUFFIX)
|
$(PREFIX) $(COMPILERNAME) $(COMPILE_MAXOPTI) -c ../private/FEM/code/DAMASK_FEM_driver.f90 $(SUFFIX)
|
||||||
|
|
||||||
FEM_mech.o: FEM_mech.f90 \
|
FEM_mech.o: FEM_mech.f90 \
|
||||||
|
@ -417,6 +417,9 @@ FEM_thermal.o: FEM_thermal.f90 \
|
||||||
FEM_damage.o: FEM_damage.f90 \
|
FEM_damage.o: FEM_damage.f90 \
|
||||||
FEM_utilities.o
|
FEM_utilities.o
|
||||||
|
|
||||||
|
FEM_vacancyDiffusion.o: FEM_vacancyDiffusion.f90 \
|
||||||
|
FEM_utilities.o
|
||||||
|
|
||||||
FEM_utilities.o: FEM_utilities.f90 \
|
FEM_utilities.o: FEM_utilities.f90 \
|
||||||
CPFEM.o
|
CPFEM.o
|
||||||
|
|
||||||
|
|
|
@ -148,7 +148,15 @@ module numerics
|
||||||
&-thermal_pc_type ml &
|
&-thermal_pc_type ml &
|
||||||
&-thermal_mg_levels_ksp_type chebyshev &
|
&-thermal_mg_levels_ksp_type chebyshev &
|
||||||
&-thermal_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
|
&-thermal_mg_levels_ksp_chebyshev_estimate_eigenvalues 0,0.1,0,1.1 &
|
||||||
&-thermal_mg_levels_pc_type sor'
|
&-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 '
|
||||||
integer(pInt), protected, public :: &
|
integer(pInt), protected, public :: &
|
||||||
itmaxFEM = 25_pInt, & !< maximum number of iterations
|
itmaxFEM = 25_pInt, & !< maximum number of iterations
|
||||||
itminFEM = 2_pInt, & !< minimum number of iterations
|
itminFEM = 2_pInt, & !< minimum number of iterations
|
||||||
|
@ -156,7 +164,8 @@ module numerics
|
||||||
integrationOrder = 2_pInt, &
|
integrationOrder = 2_pInt, &
|
||||||
structOrder = 2_pInt, &
|
structOrder = 2_pInt, &
|
||||||
thermalOrder = 2_pInt, &
|
thermalOrder = 2_pInt, &
|
||||||
damageOrder = 2_pInt
|
damageOrder = 2_pInt, &
|
||||||
|
vacancyDiffusionOrder = 2_pInt
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public :: numerics_init
|
public :: numerics_init
|
||||||
|
@ -413,6 +422,8 @@ subroutine numerics_init
|
||||||
thermalorder = IO_intValue(line,positions,2_pInt)
|
thermalorder = IO_intValue(line,positions,2_pInt)
|
||||||
case ('damageorder')
|
case ('damageorder')
|
||||||
damageorder = IO_intValue(line,positions,2_pInt)
|
damageorder = IO_intValue(line,positions,2_pInt)
|
||||||
|
case ('vacancydiffusionorder')
|
||||||
|
vacancyDiffusionOrder = IO_intValue(line,positions,2_pInt)
|
||||||
case ('petsc_optionsfem')
|
case ('petsc_optionsfem')
|
||||||
petsc_optionsFEM = trim(line(positions(4):))
|
petsc_optionsFEM = trim(line(positions(4):))
|
||||||
#else
|
#else
|
||||||
|
@ -555,6 +566,7 @@ subroutine numerics_init
|
||||||
write(6,'(a24,1x,i8)') ' structOrder: ',structOrder
|
write(6,'(a24,1x,i8)') ' structOrder: ',structOrder
|
||||||
write(6,'(a24,1x,i8)') ' thermalOrder: ',thermalOrder
|
write(6,'(a24,1x,i8)') ' thermalOrder: ',thermalOrder
|
||||||
write(6,'(a24,1x,i8)') ' damageOrder: ',damageOrder
|
write(6,'(a24,1x,i8)') ' damageOrder: ',damageOrder
|
||||||
|
write(6,'(a24,1x,i8)') ' vacancyDiffusionOrder: ',vacancyDiffusionOrder
|
||||||
write(6,'(a24,1x,es8.1)') ' err_struct_tolAbs: ',err_struct_tolAbs
|
write(6,'(a24,1x,es8.1)') ' err_struct_tolAbs: ',err_struct_tolAbs
|
||||||
write(6,'(a24,1x,es8.1)') ' err_struct_tolRel: ',err_struct_tolRel
|
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_thermal_tol: ',err_thermal_tol
|
||||||
|
|
Loading…
Reference in New Issue