Merge remote-tracking branch 'origin/development' into more-flexible-L
This commit is contained in:
commit
b5bf1d525e
2
PRIVATE
2
PRIVATE
|
@ -1 +1 @@
|
||||||
Subproject commit 8fec909d1931b092b223b0560dd30c3339c6e5a7
|
Subproject commit a949f5417762bddc551bf99f19a26ea2bdb4e5b4
|
|
@ -79,6 +79,5 @@ commercialFEM:
|
||||||
unitlength: 1 # physical length of one computational length unit
|
unitlength: 1 # physical length of one computational length unit
|
||||||
|
|
||||||
generic:
|
generic:
|
||||||
charLength: 1.0 # characteristic length scale for gradient problems.
|
|
||||||
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.
|
||||||
residualStiffness: 1.0e-6 # non-zero residual damage.
|
residualStiffness: 1.0e-6 # non-zero residual damage.
|
||||||
|
|
|
@ -7,5 +7,5 @@ q: 20
|
||||||
|
|
||||||
output: [f_phi]
|
output: [f_phi]
|
||||||
|
|
||||||
K_11: 1.0
|
D_11: 1.0
|
||||||
mu: 0.001
|
mu: 0.001
|
||||||
|
|
|
@ -3,5 +3,5 @@ W_crit: 1400000.0
|
||||||
|
|
||||||
output: [f_phi]
|
output: [f_phi]
|
||||||
|
|
||||||
K_11: 1.0
|
D_11: 1.0
|
||||||
mu: 0.001
|
mu: 0.001
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
v3.0.0-alpha4-112-gb36da7378
|
v3.0.0-alpha4-114-gb98819a36
|
||||||
|
|
|
@ -41,15 +41,6 @@ module homogenization
|
||||||
integer(kind(DAMAGE_none_ID)), dimension(:), allocatable :: &
|
integer(kind(DAMAGE_none_ID)), dimension(:), allocatable :: &
|
||||||
damage_type !< nonlocal damage model
|
damage_type !< nonlocal damage model
|
||||||
|
|
||||||
type, private :: tNumerics_damage
|
|
||||||
real(pReal) :: &
|
|
||||||
charLength !< characteristic length scale for gradient problems
|
|
||||||
end type tNumerics_damage
|
|
||||||
|
|
||||||
type(tNumerics_damage), private :: &
|
|
||||||
num_damage
|
|
||||||
|
|
||||||
|
|
||||||
logical, public :: &
|
logical, public :: &
|
||||||
terminallyIll = .false. !< at least one material point is terminally ill
|
terminallyIll = .false. !< at least one material point is terminally ill
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,7 @@ module subroutine damage_init()
|
||||||
class(tNode), pointer :: &
|
class(tNode), pointer :: &
|
||||||
configHomogenizations, &
|
configHomogenizations, &
|
||||||
configHomogenization, &
|
configHomogenization, &
|
||||||
configHomogenizationDamage, &
|
configHomogenizationDamage
|
||||||
num_generic
|
|
||||||
integer :: ho,Nmembers
|
integer :: ho,Nmembers
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,11 +69,6 @@ module subroutine damage_init()
|
||||||
end associate
|
end associate
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
!------------------------------------------------------------------------------------
|
|
||||||
! read numerics parameter
|
|
||||||
num_generic => config_numerics%get('generic',defaultVal= emptyDict)
|
|
||||||
num_damage%charLength = num_generic%get_asFloat('charLength',defaultVal=1.0_pReal)
|
|
||||||
|
|
||||||
call pass_init()
|
call pass_init()
|
||||||
|
|
||||||
end subroutine damage_init
|
end subroutine damage_init
|
||||||
|
@ -119,8 +113,7 @@ module function homogenization_K_phi(ce) result(K)
|
||||||
real(pReal), dimension(3,3) :: K
|
real(pReal), dimension(3,3) :: K
|
||||||
|
|
||||||
|
|
||||||
K = phase_K_phi(1,ce) &
|
K = phase_K_phi(1,ce)
|
||||||
* num_damage%charLength**2
|
|
||||||
|
|
||||||
end function homogenization_K_phi
|
end function homogenization_K_phi
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ submodule(phase) damage
|
||||||
|
|
||||||
type :: tDamageParameters
|
type :: tDamageParameters
|
||||||
real(pReal) :: mu = 0.0_pReal !< viscosity
|
real(pReal) :: mu = 0.0_pReal !< viscosity
|
||||||
real(pReal), dimension(3,3) :: K = 0.0_pReal !< conductivity/diffusivity
|
real(pReal), dimension(3,3) :: D = 0.0_pReal !< conductivity/diffusivity
|
||||||
end type tDamageParameters
|
end type tDamageParameters
|
||||||
|
|
||||||
enum, bind(c); enumerator :: &
|
enum, bind(c); enumerator :: &
|
||||||
|
@ -18,7 +18,7 @@ submodule(phase) damage
|
||||||
|
|
||||||
|
|
||||||
type :: tDataContainer
|
type :: tDataContainer
|
||||||
real(pReal), dimension(:), allocatable :: phi, d_phi_d_dot_phi
|
real(pReal), dimension(:), allocatable :: phi
|
||||||
end type tDataContainer
|
end type tDataContainer
|
||||||
|
|
||||||
integer(kind(DAMAGE_UNDEFINED_ID)), dimension(:), allocatable :: &
|
integer(kind(DAMAGE_UNDEFINED_ID)), dimension(:), allocatable :: &
|
||||||
|
@ -97,7 +97,6 @@ module subroutine damage_init
|
||||||
Nmembers = count(material_phaseID == ph)
|
Nmembers = count(material_phaseID == ph)
|
||||||
|
|
||||||
allocate(current(ph)%phi(Nmembers),source=1.0_pReal)
|
allocate(current(ph)%phi(Nmembers),source=1.0_pReal)
|
||||||
allocate(current(ph)%d_phi_d_dot_phi(Nmembers),source=0.0_pReal)
|
|
||||||
|
|
||||||
phase => phases%get(ph)
|
phase => phases%get(ph)
|
||||||
sources => phase%get('damage',defaultVal=emptyList)
|
sources => phase%get('damage',defaultVal=emptyList)
|
||||||
|
@ -105,10 +104,10 @@ module subroutine damage_init
|
||||||
if (sources%length == 1) then
|
if (sources%length == 1) then
|
||||||
damage_active = .true.
|
damage_active = .true.
|
||||||
source => sources%get(1)
|
source => sources%get(1)
|
||||||
param(ph)%mu = source%get_asFloat('mu',defaultVal=0.0_pReal) ! ToDo: make mandatory?
|
param(ph)%mu = source%get_asFloat('mu')
|
||||||
param(ph)%K(1,1) = source%get_asFloat('K_11',defaultVal=0.0_pReal) ! ToDo: make mandatory?
|
param(ph)%D(1,1) = source%get_asFloat('D_11')
|
||||||
param(ph)%K(3,3) = source%get_asFloat('K_33',defaultVal=0.0_pReal) ! ToDo: depends on symmetry
|
if (any(phase_lattice(ph) == ['hP','tI'])) param(ph)%D(3,3) = source%get_asFloat('D_33')
|
||||||
param(ph)%K = lattice_applyLatticeSymmetry33(param(ph)%K,phase_lattice(ph))
|
param(ph)%D = lattice_applyLatticeSymmetry33(param(ph)%D,phase_lattice(ph))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
@ -385,9 +384,10 @@ module function phase_K_phi(co,ce) result(K)
|
||||||
|
|
||||||
integer, intent(in) :: co, ce
|
integer, intent(in) :: co, ce
|
||||||
real(pReal), dimension(3,3) :: K
|
real(pReal), dimension(3,3) :: K
|
||||||
|
real(pReal), parameter :: l = 1.0_pReal
|
||||||
|
|
||||||
K = crystallite_push33ToRef(co,ce,param(material_phaseID(co,ce))%K)
|
K = crystallite_push33ToRef(co,ce,param(material_phaseID(co,ce))%D) \
|
||||||
|
* l**2.0_pReal
|
||||||
|
|
||||||
end function phase_K_phi
|
end function phase_K_phi
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue