diff --git a/PRIVATE b/PRIVATE index d7f8460aa..42ebe55f0 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit d7f8460aa2afceb89f9b82054555d5dc6f9e5c43 +Subproject commit 42ebe55f0ef1cd799115bd87e45d6025db42f7a7 diff --git a/src/lattice.f90 b/src/lattice.f90 index c9b6d99ef..e5f5453d4 100644 --- a/src/lattice.f90 +++ b/src/lattice.f90 @@ -459,7 +459,8 @@ subroutine lattice_init phase, & mech, & elasticity, & - thermal + thermal, & + damage print'(/,a)', ' <<<+- lattice init -+>>>'; flush(IO_STDOUT) @@ -535,13 +536,17 @@ subroutine lattice_init endif - lattice_D(1,1,ph) = phase%get_asFloat('D_11',defaultVal=0.0_pReal) - lattice_D(2,2,ph) = phase%get_asFloat('D_22',defaultVal=0.0_pReal) - lattice_D(3,3,ph) = phase%get_asFloat('D_33',defaultVal=0.0_pReal) - lattice_D(1:3,1:3,ph) = lattice_applyLatticeSymmetry33(lattice_D(1:3,1:3,ph), & + if (phase%contains('damage')) then + damage => phase%get('damage') + damage => damage%get(1) + lattice_D(1,1,ph) = damage%get_asFloat('D_11',defaultVal=0.0_pReal) + lattice_D(2,2,ph) = damage%get_asFloat('D_22',defaultVal=0.0_pReal) + lattice_D(3,3,ph) = damage%get_asFloat('D_33',defaultVal=0.0_pReal) + lattice_D(1:3,1:3,ph) = lattice_applyLatticeSymmetry33(lattice_D(1:3,1:3,ph), & phase%get_asString('lattice')) - lattice_M(ph) = phase%get_asFloat('M',defaultVal=0.0_pReal) + lattice_M(ph) = damage%get_asFloat('M',defaultVal=0.0_pReal) + endif ! SHOULD NOT BE PART OF LATTICE END call selfTest diff --git a/src/phase_mechanical_eigen.f90 b/src/phase_mechanical_eigen.f90 index 9eb3c5767..439f2bef9 100644 --- a/src/phase_mechanical_eigen.f90 +++ b/src/phase_mechanical_eigen.f90 @@ -74,8 +74,8 @@ module subroutine eigendeformation_init(phases) kinematics => phase%get('damage',defaultVal=emptyList) if(kinematics%length >0) then damage => kinematics%get(1) - if(damage%get_asString('type') == 'anisobrittle') phase_Nkinematics(ph) = phase_Nkinematics(ph) +1 - if(damage%get_asString('type') == 'isoductile') phase_Nkinematics(ph) = phase_Nkinematics(ph) +1 + if(damage%get_asString('type',defaultVal='n/a') == 'anisobrittle') phase_Nkinematics(ph) = phase_Nkinematics(ph) +1 + if(damage%get_asString('type',defaultVal='n/a') == 'isoductile' ) phase_Nkinematics(ph) = phase_Nkinematics(ph) +1 endif enddo @@ -113,7 +113,7 @@ function kinematics_active(kinematics_label,kinematics_length) result(active_ki kinematics => phase%get('kinematics',defaultVal=emptyList) do k = 1, kinematics%length kinematics_type => kinematics%get(k) - if(kinematics_type%get_asString('type') == kinematics_label) active_kinematics(k,p) = .true. + active_kinematics(k,p) = kinematics_type%get_asString('type') == kinematics_label enddo enddo @@ -136,17 +136,16 @@ function kinematics_active2(kinematics_label,kinematics_length) result(active_k phase, & kinematics, & kinematics_type - integer :: p,k + integer :: p phases => config_material%get('phase') allocate(active_kinematics(kinematics_length,phases%length), source = .false. ) do p = 1, phases%length phase => phases%get(p) kinematics => phase%get('damage',defaultVal=emptyList) - do k = 1, kinematics%length - kinematics_type => kinematics%get(k) - if(kinematics_type%get_asString('type') == kinematics_label) active_kinematics(k,p) = .true. - enddo + kinematics_type => kinematics%get(1) + if (.not. kinematics_type%contains('type')) continue + active_kinematics(1,p) = kinematics_type%get_asString('type',defaultVal='n/a') == kinematics_label enddo