[skip ci] polishing
This commit is contained in:
parent
a40d53d308
commit
640bc7b190
|
@ -49,7 +49,7 @@ module CPFEM
|
||||||
iJacoStiffness !< frequency of stiffness update
|
iJacoStiffness !< frequency of stiffness update
|
||||||
end type tNumerics
|
end type tNumerics
|
||||||
|
|
||||||
type(tNumerics), private :: num
|
type(tNumerics), private :: num
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
CPFEM_general, &
|
CPFEM_general, &
|
||||||
|
|
|
@ -36,16 +36,16 @@ end subroutine YAML_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
recursive function parse_flow(flow_string) result(node)
|
recursive function parse_flow(flow_string) result(node)
|
||||||
|
|
||||||
character(len=*), intent(inout) :: flow_string !< YAML file in flow style
|
character(len=*), intent(inout) :: flow_string !< YAML file in flow style
|
||||||
class (tNode), pointer :: node
|
class (tNode), pointer :: node
|
||||||
|
|
||||||
class (tNode), pointer :: myVal
|
class (tNode), pointer :: myVal
|
||||||
character(len=pStringLen) :: key
|
character(len=pStringLen) :: key
|
||||||
|
|
||||||
integer :: e, & ! end position of dictionary or list
|
integer :: e, & ! end position of dictionary or list
|
||||||
s, & ! start position of dictionary or list
|
s, & ! start position of dictionary or list
|
||||||
d ! position of key: value separator (':')
|
d ! position of key: value separator (':')
|
||||||
|
|
||||||
flow_string = trim(adjustl(flow_string(:)))
|
flow_string = trim(adjustl(flow_string(:)))
|
||||||
if (len_trim(flow_string) == 0) then
|
if (len_trim(flow_string) == 0) then
|
||||||
node => emptyDict
|
node => emptyDict
|
||||||
|
|
|
@ -27,7 +27,7 @@ module config
|
||||||
|
|
||||||
type(tPartitionedStringList), public, protected :: &
|
type(tPartitionedStringList), public, protected :: &
|
||||||
config_debug
|
config_debug
|
||||||
|
|
||||||
character(len=pStringLen), public, protected, allocatable, dimension(:) :: &
|
character(len=pStringLen), public, protected, allocatable, dimension(:) :: &
|
||||||
config_name_phase, & !< name of each phase
|
config_name_phase, & !< name of each phase
|
||||||
config_name_homogenization, & !< name of each homogenization
|
config_name_homogenization, & !< name of each homogenization
|
||||||
|
|
|
@ -84,7 +84,7 @@ module crystallite
|
||||||
nState, & !< state loop limit
|
nState, & !< state loop limit
|
||||||
nStress !< stress loop limit
|
nStress !< stress loop limit
|
||||||
character(len=:), allocatable :: &
|
character(len=:), allocatable :: &
|
||||||
integrator !< integrator scheme
|
integrator !< integration scheme
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
subStepMinCryst, & !< minimum (relative) size of sub-step allowed during cutback
|
subStepMinCryst, & !< minimum (relative) size of sub-step allowed during cutback
|
||||||
subStepSizeCryst, & !< size of first substep when cutback
|
subStepSizeCryst, & !< size of first substep when cutback
|
||||||
|
@ -165,7 +165,7 @@ subroutine crystallite_init
|
||||||
allocate(crystallite_converged(cMax,iMax,eMax), source=.true.)
|
allocate(crystallite_converged(cMax,iMax,eMax), source=.true.)
|
||||||
|
|
||||||
num_crystallite => numerics_root%get('crystallite',defaultVal=emptyDict)
|
num_crystallite => numerics_root%get('crystallite',defaultVal=emptyDict)
|
||||||
|
|
||||||
num%subStepMinCryst = num_crystallite%get_asFloat ('subStepMin', defaultVal=1.0e-3_pReal)
|
num%subStepMinCryst = num_crystallite%get_asFloat ('subStepMin', defaultVal=1.0e-3_pReal)
|
||||||
num%subStepSizeCryst = num_crystallite%get_asFloat ('subStepSize', defaultVal=0.25_pReal)
|
num%subStepSizeCryst = num_crystallite%get_asFloat ('subStepSize', defaultVal=0.25_pReal)
|
||||||
num%stepIncreaseCryst = num_crystallite%get_asFloat ('stepIncrease', defaultVal=1.5_pReal)
|
num%stepIncreaseCryst = num_crystallite%get_asFloat ('stepIncrease', defaultVal=1.5_pReal)
|
||||||
|
|
|
@ -56,7 +56,6 @@ subroutine damage_local_init
|
||||||
num_generic => numerics_root%get('generic',defaultVal=emptyDict)
|
num_generic => numerics_root%get('generic',defaultVal=emptyDict)
|
||||||
num%residualStiffness = num_generic%get_asFloat('residualStiffness', defaultVal=1.0e-6_pReal)
|
num%residualStiffness = num_generic%get_asFloat('residualStiffness', defaultVal=1.0e-6_pReal)
|
||||||
if (num%residualStiffness < 0.0_pReal) call IO_error(301,ext_msg='residualStiffness')
|
if (num%residualStiffness < 0.0_pReal) call IO_error(301,ext_msg='residualStiffness')
|
||||||
!----------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
Ninstance = count(damage_type == DAMAGE_local_ID)
|
Ninstance = count(damage_type == DAMAGE_local_ID)
|
||||||
allocate(param(Ninstance))
|
allocate(param(Ninstance))
|
||||||
|
@ -102,7 +101,6 @@ function damage_local_updateState(subdt, ip, el)
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
phi, phiDot, dPhiDot_dPhi
|
phi, phiDot, dPhiDot_dPhi
|
||||||
|
|
||||||
|
|
||||||
homog = material_homogenizationAt(el)
|
homog = material_homogenizationAt(el)
|
||||||
offset = material_homogenizationMemberAt(ip,el)
|
offset = material_homogenizationMemberAt(ip,el)
|
||||||
phi = damageState(homog)%subState0(1,offset)
|
phi = damageState(homog)%subState0(1,offset)
|
||||||
|
|
|
@ -53,14 +53,13 @@ subroutine damage_nonlocal_init
|
||||||
integer :: Ninstance,NofMyHomog,h
|
integer :: Ninstance,NofMyHomog,h
|
||||||
class(tNode), pointer :: &
|
class(tNode), pointer :: &
|
||||||
num_generic
|
num_generic
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- damage_'//DAMAGE_nonlocal_label//' init -+>>>'; flush(6)
|
write(6,'(/,a)') ' <<<+- damage_'//DAMAGE_nonlocal_label//' init -+>>>'; flush(6)
|
||||||
|
|
||||||
!------------------------------------------------------------------------------------
|
!------------------------------------------------------------------------------------
|
||||||
! read numerics parameter
|
! read numerics parameter
|
||||||
num_generic => numerics_root%get('generic',defaultVal= emptyDict)
|
num_generic => numerics_root%get('generic',defaultVal= emptyDict)
|
||||||
num%charLength = num_generic%get_asFloat('charLength',defaultVal=1.0_pReal)
|
num%charLength = num_generic%get_asFloat('charLength',defaultVal=1.0_pReal)
|
||||||
!------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
Ninstance = count(damage_type == DAMAGE_nonlocal_ID)
|
Ninstance = count(damage_type == DAMAGE_nonlocal_ID)
|
||||||
allocate(param(Ninstance))
|
allocate(param(Ninstance))
|
||||||
|
|
|
@ -46,7 +46,8 @@ module grid_mech_FEM
|
||||||
petsc_options
|
petsc_options
|
||||||
end type tNumerics
|
end type tNumerics
|
||||||
|
|
||||||
type(tNumerics), private :: num
|
type(tNumerics), private :: num
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! PETSc data
|
! PETSc data
|
||||||
DM, private :: mech_grid
|
DM, private :: mech_grid
|
||||||
|
@ -454,8 +455,6 @@ subroutine converged(snes_local,PETScIter,devNull1,devNull2,fnorm,reason,dummy,i
|
||||||
divTol, &
|
divTol, &
|
||||||
BCTol
|
BCTol
|
||||||
|
|
||||||
!------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
err_div = fnorm*sqrt(wgt)*geomSize(1)/scaledGeomSize(1)/detJ
|
err_div = fnorm*sqrt(wgt)*geomSize(1)/scaledGeomSize(1)/detJ
|
||||||
divTol = max(maxval(abs(P_av))*num%eps_div_rtol ,num%eps_div_atol)
|
divTol = max(maxval(abs(P_av))*num%eps_div_rtol ,num%eps_div_atol)
|
||||||
BCTol = max(maxval(abs(P_av))*num%eps_stress_rtol,num%eps_stress_atol)
|
BCTol = max(maxval(abs(P_av))*num%eps_stress_rtol,num%eps_stress_atol)
|
||||||
|
|
|
@ -28,7 +28,7 @@ module grid_mech_spectral_basic
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! derived types
|
! derived types
|
||||||
type(tSolutionParams), private :: params
|
type(tSolutionParams) :: params
|
||||||
|
|
||||||
type, private :: tNumerics
|
type, private :: tNumerics
|
||||||
logical :: update_gamma !< update gamma operator with current stiffness
|
logical :: update_gamma !< update gamma operator with current stiffness
|
||||||
|
@ -44,29 +44,29 @@ module grid_mech_spectral_basic
|
||||||
petsc_options
|
petsc_options
|
||||||
end type tNumerics
|
end type tNumerics
|
||||||
|
|
||||||
type(tNumerics), private :: num ! numerics parameters. Better name?
|
type(tNumerics) :: num ! numerics parameters. Better name?
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! PETSc data
|
! PETSc data
|
||||||
DM, private :: da
|
DM :: da
|
||||||
SNES, private :: snes
|
SNES :: snes
|
||||||
Vec, private :: solution_vec
|
Vec :: solution_vec
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! common pointwise data
|
! common pointwise data
|
||||||
real(pReal), private, dimension(:,:,:,:,:), allocatable :: &
|
real(pReal), dimension(:,:,:,:,:), allocatable :: &
|
||||||
F_lastInc, & !< field of previous compatible deformation gradients
|
F_lastInc, & !< field of previous compatible deformation gradients
|
||||||
Fdot !< field of assumed rate of compatible deformation gradient
|
Fdot !< field of assumed rate of compatible deformation gradient
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! stress, stiffness and compliance average etc.
|
! stress, stiffness and compliance average etc.
|
||||||
real(pReal), private, dimension(3,3) :: &
|
real(pReal), dimension(3,3) :: &
|
||||||
F_aimDot = 0.0_pReal, & !< assumed rate of average deformation gradient
|
F_aimDot = 0.0_pReal, & !< assumed rate of average deformation gradient
|
||||||
F_aim = math_I3, & !< current prescribed deformation gradient
|
F_aim = math_I3, & !< current prescribed deformation gradient
|
||||||
F_aim_lastInc = math_I3, & !< previous average deformation gradient
|
F_aim_lastInc = math_I3, & !< previous average deformation gradient
|
||||||
P_av = 0.0_pReal !< average 1st Piola--Kirchhoff stress
|
P_av = 0.0_pReal !< average 1st Piola--Kirchhoff stress
|
||||||
|
|
||||||
character(len=pStringLen), private :: incInfo !< time and increment information
|
character(len=pStringLen) :: incInfo !< time and increment information
|
||||||
real(pReal), private, dimension(3,3,3,3) :: &
|
real(pReal), private, dimension(3,3,3,3) :: &
|
||||||
C_volAvg = 0.0_pReal, & !< current volume average stiffness
|
C_volAvg = 0.0_pReal, & !< current volume average stiffness
|
||||||
C_volAvgLastInc = 0.0_pReal, & !< previous volume average stiffness
|
C_volAvgLastInc = 0.0_pReal, & !< previous volume average stiffness
|
||||||
|
@ -74,11 +74,11 @@ module grid_mech_spectral_basic
|
||||||
C_minMaxAvgLastInc = 0.0_pReal, & !< previous (min+max)/2 stiffness
|
C_minMaxAvgLastInc = 0.0_pReal, & !< previous (min+max)/2 stiffness
|
||||||
S = 0.0_pReal !< current compliance (filled up with zeros)
|
S = 0.0_pReal !< current compliance (filled up with zeros)
|
||||||
|
|
||||||
real(pReal), private :: &
|
real(pReal) :: &
|
||||||
err_BC, & !< deviation from stress BC
|
err_BC, & !< deviation from stress BC
|
||||||
err_div !< RMS of div of P
|
err_div !< RMS of div of P
|
||||||
|
|
||||||
integer, private :: &
|
integer :: &
|
||||||
totalIter = 0 !< total iteration in current increment
|
totalIter = 0 !< total iteration in current increment
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
|
|
|
@ -29,9 +29,9 @@ module grid_mech_spectral_polarisation
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! derived types
|
! derived types
|
||||||
type(tSolutionParams), private :: params
|
type(tSolutionParams) :: params
|
||||||
|
|
||||||
type, private :: tNumerics
|
type :: tNumerics
|
||||||
logical :: update_gamma !< update gamma operator with current stiffness
|
logical :: update_gamma !< update gamma operator with current stiffness
|
||||||
character(len=:), allocatable :: &
|
character(len=:), allocatable :: &
|
||||||
petsc_options
|
petsc_options
|
||||||
|
@ -46,21 +46,21 @@ module grid_mech_spectral_polarisation
|
||||||
eps_stress_atol, & !< absolute tolerance for fullfillment of stress BC
|
eps_stress_atol, & !< absolute tolerance for fullfillment of stress BC
|
||||||
eps_stress_rtol !< relative tolerance for fullfillment of stress BC
|
eps_stress_rtol !< relative tolerance for fullfillment of stress BC
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
alpha, & !< polarization scheme parameter 0.0 < alpha < 2.0. alpha = 1.0 ==> AL scheme, alpha = 2.0 ==> accelerated scheme
|
alpha, & !< polarization scheme parameter 0.0 < alpha < 2.0. alpha = 1.0 ==> AL scheme, alpha = 2.0 ==> accelerated scheme
|
||||||
beta !< polarization scheme parameter 0.0 < beta < 2.0. beta = 1.0 ==> AL scheme, beta = 2.0 ==> accelerated scheme
|
beta !< polarization scheme parameter 0.0 < beta < 2.0. beta = 1.0 ==> AL scheme, beta = 2.0 ==> accelerated scheme
|
||||||
end type tNumerics
|
end type tNumerics
|
||||||
|
|
||||||
type(tNumerics), private :: num ! numerics parameters. Better name?
|
type(tNumerics) :: num ! numerics parameters. Better name?
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! PETSc data
|
! PETSc data
|
||||||
DM, private :: da
|
DM :: da
|
||||||
SNES, private :: snes
|
SNES :: snes
|
||||||
Vec, private :: solution_vec
|
Vec :: solution_vec
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! common pointwise data
|
! common pointwise data
|
||||||
real(pReal), private, dimension(:,:,:,:,:), allocatable :: &
|
real(pReal), dimension(:,:,:,:,:), allocatable :: &
|
||||||
F_lastInc, & !< field of previous compatible deformation gradients
|
F_lastInc, & !< field of previous compatible deformation gradients
|
||||||
F_tau_lastInc, & !< field of previous incompatible deformation gradient
|
F_tau_lastInc, & !< field of previous incompatible deformation gradient
|
||||||
Fdot, & !< field of assumed rate of compatible deformation gradient
|
Fdot, & !< field of assumed rate of compatible deformation gradient
|
||||||
|
@ -68,15 +68,15 @@ module grid_mech_spectral_polarisation
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! stress, stiffness and compliance average etc.
|
! stress, stiffness and compliance average etc.
|
||||||
real(pReal), private, dimension(3,3) :: &
|
real(pReal), dimension(3,3) :: &
|
||||||
F_aimDot = 0.0_pReal, & !< assumed rate of average deformation gradient
|
F_aimDot = 0.0_pReal, & !< assumed rate of average deformation gradient
|
||||||
F_aim = math_I3, & !< current prescribed deformation gradient
|
F_aim = math_I3, & !< current prescribed deformation gradient
|
||||||
F_aim_lastInc = math_I3, & !< previous average deformation gradient
|
F_aim_lastInc = math_I3, & !< previous average deformation gradient
|
||||||
F_av = 0.0_pReal, & !< average incompatible def grad field
|
F_av = 0.0_pReal, & !< average incompatible def grad field
|
||||||
P_av = 0.0_pReal !< average 1st Piola--Kirchhoff stress
|
P_av = 0.0_pReal !< average 1st Piola--Kirchhoff stress
|
||||||
|
|
||||||
character(len=pStringLen), private :: incInfo !< time and increment information
|
character(len=pStringLen) :: incInfo !< time and increment information
|
||||||
real(pReal), private, dimension(3,3,3,3) :: &
|
real(pReal), dimension(3,3,3,3) :: &
|
||||||
C_volAvg = 0.0_pReal, & !< current volume average stiffness
|
C_volAvg = 0.0_pReal, & !< current volume average stiffness
|
||||||
C_volAvgLastInc = 0.0_pReal, & !< previous volume average stiffness
|
C_volAvgLastInc = 0.0_pReal, & !< previous volume average stiffness
|
||||||
C_minMaxAvg = 0.0_pReal, & !< current (min+max)/2 stiffness
|
C_minMaxAvg = 0.0_pReal, & !< current (min+max)/2 stiffness
|
||||||
|
@ -85,12 +85,12 @@ module grid_mech_spectral_polarisation
|
||||||
C_scale = 0.0_pReal, &
|
C_scale = 0.0_pReal, &
|
||||||
S_scale = 0.0_pReal
|
S_scale = 0.0_pReal
|
||||||
|
|
||||||
real(pReal), private :: &
|
real(pReal) :: &
|
||||||
err_BC, & !< deviation from stress BC
|
err_BC, & !< deviation from stress BC
|
||||||
err_curl, & !< RMS of curl of F
|
err_curl, & !< RMS of curl of F
|
||||||
err_div !< RMS of div of P
|
err_div !< RMS of div of P
|
||||||
|
|
||||||
integer, private :: &
|
integer :: &
|
||||||
totalIter = 0 !< total iteration in current increment
|
totalIter = 0 !< total iteration in current increment
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
|
|
|
@ -24,9 +24,9 @@ module grid_thermal_spectral
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! derived types
|
! derived types
|
||||||
type(tSolutionParams), private :: params
|
type(tSolutionParams) :: params
|
||||||
|
|
||||||
type, private :: tNumerics
|
type :: tNumerics
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
eps_thermal_atol, & !< absolute tolerance for thermal equilibrium
|
eps_thermal_atol, & !< absolute tolerance for thermal equilibrium
|
||||||
eps_thermal_rtol !< relative tolerance for thermal equilibrium
|
eps_thermal_rtol !< relative tolerance for thermal equilibrium
|
||||||
|
@ -34,30 +34,28 @@ module grid_thermal_spectral
|
||||||
petsc_options
|
petsc_options
|
||||||
end type tNumerics
|
end type tNumerics
|
||||||
|
|
||||||
type(tNumerics), private :: num
|
type(tNumerics) :: num
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! PETSc data
|
! PETSc data
|
||||||
SNES, private :: thermal_snes
|
SNES :: thermal_snes
|
||||||
Vec, private :: solution_vec
|
Vec :: solution_vec
|
||||||
PetscInt, private :: xstart, xend, ystart, yend, zstart, zend
|
PetscInt :: xstart, xend, ystart, yend, zstart, zend
|
||||||
real(pReal), private, dimension(:,:,:), allocatable :: &
|
real(pReal), dimension(:,:,:), allocatable :: &
|
||||||
T_current, & !< field of current temperature
|
T_current, & !< field of current temperature
|
||||||
T_lastInc, & !< field of previous temperature
|
T_lastInc, & !< field of previous temperature
|
||||||
T_stagInc !< field of staggered temperature
|
T_stagInc !< field of staggered temperature
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! reference diffusion tensor, mobility etc.
|
! reference diffusion tensor, mobility etc.
|
||||||
integer, private :: totalIter = 0 !< total iteration in current increment
|
integer :: totalIter = 0 !< total iteration in current increment
|
||||||
real(pReal), dimension(3,3), private :: K_ref
|
real(pReal), dimension(3,3) :: K_ref
|
||||||
real(pReal), private :: mu_ref
|
real(pReal) :: mu_ref
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
grid_thermal_spectral_init, &
|
grid_thermal_spectral_init, &
|
||||||
grid_thermal_spectral_solution, &
|
grid_thermal_spectral_solution, &
|
||||||
grid_thermal_spectral_forward
|
grid_thermal_spectral_forward
|
||||||
private :: &
|
|
||||||
formResidual
|
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -94,7 +92,8 @@ subroutine grid_thermal_spectral_init
|
||||||
! set default and user defined options for PETSc
|
! set default and user defined options for PETSc
|
||||||
call PETScOptionsInsertString(PETSC_NULL_OPTIONS,'-thermal_snes_type ngmres',ierr)
|
call PETScOptionsInsertString(PETSC_NULL_OPTIONS,'-thermal_snes_type ngmres',ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call PETScOptionsInsertString(PETSC_NULL_OPTIONS,num%petsc_options,ierr)
|
call PETScOptionsInsertString(PETSC_NULL_OPTIONS,&
|
||||||
|
num_grid%get_asString('petsc_options',defaultVal=''),ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -168,7 +167,7 @@ function grid_thermal_spectral_solution(timeinc,timeinc_old) result(solution)
|
||||||
SNESConvergedReason :: reason
|
SNESConvergedReason :: reason
|
||||||
|
|
||||||
!-------------------------------------------------------------------
|
!-------------------------------------------------------------------
|
||||||
! reading numerical parameter and do sanity check
|
! reading numerical parameter and do sanity check !TODO: MD: Not Here
|
||||||
num_grid => numerics_root%get('grid',defaultVal=emptyDict)
|
num_grid => numerics_root%get('grid',defaultVal=emptyDict)
|
||||||
itmax = num_grid%get_asInt('itmax',defaultVal=250)
|
itmax = num_grid%get_asInt('itmax',defaultVal=250)
|
||||||
if (itmax <= 1) call IO_error(301,ext_msg='itmax')
|
if (itmax <= 1) call IO_error(301,ext_msg='itmax')
|
||||||
|
|
|
@ -218,13 +218,13 @@ subroutine spectral_utilities_init
|
||||||
' add more using the PETSc_Options keyword in numerics.config '; flush(6)
|
' add more using the PETSc_Options keyword in numerics.config '; flush(6)
|
||||||
|
|
||||||
num_grid => numerics_root%get('grid',defaultVal=emptyDict)
|
num_grid => numerics_root%get('grid',defaultVal=emptyDict)
|
||||||
num%petsc_options = num_grid%get_asString('petsc_options',defaultVal='')
|
|
||||||
|
|
||||||
call PETScOptionsClear(PETSC_NULL_OPTIONS,ierr)
|
call PETScOptionsClear(PETSC_NULL_OPTIONS,ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
if(debugPETSc) call PETScOptionsInsertString(PETSC_NULL_OPTIONS,trim(PETSCDEBUG),ierr)
|
if(debugPETSc) call PETScOptionsInsertString(PETSC_NULL_OPTIONS,trim(PETSCDEBUG),ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
call PETScOptionsInsertString(PETSC_NULL_OPTIONS,num%petsc_options,ierr)
|
call PETScOptionsInsertString(PETSC_NULL_OPTIONS,&
|
||||||
|
num_grid%get_asString('petsc_options',defaultVal=''),ierr)
|
||||||
CHKERRQ(ierr)
|
CHKERRQ(ierr)
|
||||||
|
|
||||||
grid1Red = grid(1)/2 + 1
|
grid1Red = grid(1)/2 + 1
|
||||||
|
@ -232,7 +232,7 @@ subroutine spectral_utilities_init
|
||||||
|
|
||||||
write(6,'(/,a,3(i12 ))') ' grid a b c: ', grid
|
write(6,'(/,a,3(i12 ))') ' grid a b c: ', grid
|
||||||
write(6,'(a,3(es12.5))') ' size x y z: ', geomSize
|
write(6,'(a,3(es12.5))') ' size x y z: ', geomSize
|
||||||
|
|
||||||
num%memory_efficient = num_grid%get_asInt ('memory_efficient', defaultVal=1) > 0
|
num%memory_efficient = num_grid%get_asInt ('memory_efficient', defaultVal=1) > 0
|
||||||
num%FFTW_timelimit = num_grid%get_asFloat ('fftw_timelimit', defaultVal=-1.0_pReal)
|
num%FFTW_timelimit = num_grid%get_asFloat ('fftw_timelimit', defaultVal=-1.0_pReal)
|
||||||
num%divergence_correction = num_grid%get_asInt ('divergence_correction', defaultVal=2)
|
num%divergence_correction = num_grid%get_asInt ('divergence_correction', defaultVal=2)
|
||||||
|
|
|
@ -174,7 +174,6 @@ subroutine homogenization_init
|
||||||
num%subStepSizeHomog = num_homogGeneric%get_asFloat('subStepSize', defaultVal=0.25_pReal)
|
num%subStepSizeHomog = num_homogGeneric%get_asFloat('subStepSize', defaultVal=0.25_pReal)
|
||||||
num%stepIncreaseHomog = num_homogGeneric%get_asFloat('stepIncrease', defaultVal=1.5_pReal)
|
num%stepIncreaseHomog = num_homogGeneric%get_asFloat('stepIncrease', defaultVal=1.5_pReal)
|
||||||
|
|
||||||
|
|
||||||
if (num%nMPstate < 1) call IO_error(301,ext_msg='nMPstate')
|
if (num%nMPstate < 1) call IO_error(301,ext_msg='nMPstate')
|
||||||
if (num%subStepMinHomog <= 0.0_pReal) call IO_error(301,ext_msg='subStepMinHomog')
|
if (num%subStepMinHomog <= 0.0_pReal) call IO_error(301,ext_msg='subStepMinHomog')
|
||||||
if (num%subStepSizeHomog <= 0.0_pReal) call IO_error(301,ext_msg='subStepSizeHomog')
|
if (num%subStepSizeHomog <= 0.0_pReal) call IO_error(301,ext_msg='subStepSizeHomog')
|
||||||
|
|
|
@ -107,7 +107,7 @@ module subroutine mech_RGC_init(num_homogMech)
|
||||||
allocate(dependentState(Ninstance))
|
allocate(dependentState(Ninstance))
|
||||||
|
|
||||||
num_RGC => num_homogMech%get('RGC',defaultVal=emptyDict)
|
num_RGC => num_homogMech%get('RGC',defaultVal=emptyDict)
|
||||||
|
|
||||||
num%atol = num_RGC%get_asFloat('atol', defaultVal=1.0e+4_pReal)
|
num%atol = num_RGC%get_asFloat('atol', defaultVal=1.0e+4_pReal)
|
||||||
num%rtol = num_RGC%get_asFloat('rtol', defaultVal=1.0e-3_pReal)
|
num%rtol = num_RGC%get_asFloat('rtol', defaultVal=1.0e-3_pReal)
|
||||||
num%absMax = num_RGC%get_asFloat('amax', defaultVal=1.0e+10_pReal)
|
num%absMax = num_RGC%get_asFloat('amax', defaultVal=1.0e+10_pReal)
|
||||||
|
@ -122,7 +122,6 @@ module subroutine mech_RGC_init(num_homogMech)
|
||||||
num%volDiscrMod = num_RGC%get_asFloat('voldiscrepancymod', defaultVal=1.0e+12_pReal)
|
num%volDiscrMod = num_RGC%get_asFloat('voldiscrepancymod', defaultVal=1.0e+12_pReal)
|
||||||
num%volDiscrPow = num_RGC%get_asFloat('dicrepancypower', defaultVal=5.0_pReal)
|
num%volDiscrPow = num_RGC%get_asFloat('dicrepancypower', defaultVal=5.0_pReal)
|
||||||
|
|
||||||
|
|
||||||
if (num%atol <= 0.0_pReal) call IO_error(301,ext_msg='absTol_RGC')
|
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%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%absMax <= 0.0_pReal) call IO_error(301,ext_msg='absMax_RGC')
|
||||||
|
|
|
@ -85,7 +85,7 @@ module math
|
||||||
module procedure math_identity2nd
|
module procedure math_identity2nd
|
||||||
end interface math_eye
|
end interface math_eye
|
||||||
|
|
||||||
|
! ToDo: Since random seed is needed only once, I would simplify here
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
private :: &
|
private :: &
|
||||||
selfTest
|
selfTest
|
||||||
|
|
|
@ -92,7 +92,7 @@ program DAMASK_mesh
|
||||||
|
|
||||||
if (num%stagItMax < 0) call IO_error(301,ext_msg='maxStaggeredIter')
|
if (num%stagItMax < 0) call IO_error(301,ext_msg='maxStaggeredIter')
|
||||||
if (num%maxCutBack < 0) call IO_error(301,ext_msg='maxCutBack')
|
if (num%maxCutBack < 0) call IO_error(301,ext_msg='maxCutBack')
|
||||||
|
|
||||||
! reading basic information from load case file and allocate data structure containing load cases
|
! reading basic information from load case file and allocate data structure containing load cases
|
||||||
call DMGetDimension(geomMesh,dimPlex,ierr); CHKERRA(ierr) !< dimension of mesh (2D or 3D)
|
call DMGetDimension(geomMesh,dimPlex,ierr); CHKERRA(ierr) !< dimension of mesh (2D or 3D)
|
||||||
nActiveFields = 1
|
nActiveFields = 1
|
||||||
|
|
|
@ -96,6 +96,7 @@ module FEM_utilities
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
!ToDo: use functions in variable call
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief allocates all neccessary fields, sets debug flags
|
!> @brief allocates all neccessary fields, sets debug flags
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -83,7 +83,6 @@ subroutine discretization_mesh_init(restart)
|
||||||
num_mesh
|
num_mesh
|
||||||
integer :: integrationOrder !< order of quadrature rule required
|
integer :: integrationOrder !< order of quadrature rule required
|
||||||
|
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- mesh init -+>>>'
|
write(6,'(/,a)') ' <<<+- mesh init -+>>>'
|
||||||
|
|
||||||
num_mesh => numerics_root%get('mesh',defaultVal=emptyDict)
|
num_mesh => numerics_root%get('mesh',defaultVal=emptyDict)
|
||||||
|
|
|
@ -294,7 +294,6 @@ type(tSolutionState) function FEM_mech_solution( &
|
||||||
character(len=*), intent(in) :: &
|
character(len=*), intent(in) :: &
|
||||||
incInfoIn
|
incInfoIn
|
||||||
|
|
||||||
|
|
||||||
PetscErrorCode :: ierr
|
PetscErrorCode :: ierr
|
||||||
SNESConvergedReason :: reason
|
SNESConvergedReason :: reason
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue