diff --git a/src/phase.f90 b/src/phase.f90 index c3696eda7..af7f577af 100644 --- a/src/phase.f90 +++ b/src/phase.f90 @@ -19,13 +19,6 @@ module phase implicit none private - enum, bind(c); enumerator :: & - KINEMATICS_UNDEFINED_ID ,& - KINEMATICS_CLEAVAGE_OPENING_ID, & - KINEMATICS_SLIPPLANE_OPENING_ID, & - KINEMATICS_THERMAL_EXPANSION_ID - end enum - type(rotation), dimension(:,:,:), allocatable :: & crystallite_orientation !< current orientation @@ -64,10 +57,6 @@ module phase type(tDebugOptions) :: debugCrystallite - - integer(kind(KINEMATICS_UNDEFINED_ID)), dimension(:,:), allocatable :: & - phase_kinematics !< active kinematic mechanisms of each phase - integer, dimension(:), allocatable, public :: & !< ToDo: should be protected (bug in Intel compiler) thermal_Nsources, & phase_Nsources, & !< number of source mechanisms active in each phase @@ -317,15 +306,10 @@ module phase constitutive_mech_getP, & constitutive_mech_setF, & constitutive_mech_getF, & - constitutive_windForward, & - KINEMATICS_UNDEFINED_ID ,& - KINEMATICS_CLEAVAGE_OPENING_ID, & - KINEMATICS_SLIPPLANE_OPENING_ID, & - KINEMATICS_THERMAL_EXPANSION_ID + constitutive_windForward contains - !-------------------------------------------------------------------------------------------------- !> @brief Initialze constitutive models for individual physics !-------------------------------------------------------------------------------------------------- diff --git a/src/phase_mechanics.f90 b/src/phase_mechanics.f90 index dab9ddc88..0408f91d0 100644 --- a/src/phase_mechanics.f90 +++ b/src/phase_mechanics.f90 @@ -15,9 +15,15 @@ submodule(phase) mechanics PLASTICITY_KINEHARDENING_ID, & PLASTICITY_DISLOTWIN_ID, & PLASTICITY_DISLOTUNGSTEN_ID, & - PLASTICITY_NONLOCAL_ID + PLASTICITY_NONLOCAL_ID, & + KINEMATICS_UNDEFINED_ID, & + KINEMATICS_CLEAVAGE_OPENING_ID, & + KINEMATICS_SLIPPLANE_OPENING_ID, & + KINEMATICS_THERMAL_EXPANSION_ID end enum + integer(kind(KINEMATICS_UNDEFINED_ID)), dimension(:,:), allocatable :: & + phase_kinematics integer(kind(ELASTICITY_UNDEFINED_ID)), dimension(:), allocatable :: & phase_elasticity !< elasticity of each phase integer(kind(STIFFNESS_DEGRADATION_UNDEFINED_ID)), dimension(:,:), allocatable :: & @@ -53,8 +59,6 @@ submodule(phase) mechanics end subroutine eigendeformation_init module subroutine plastic_init - - end subroutine plastic_init module subroutine plastic_isotropic_LiAndItsTangent(Li,dLi_dMi,Mi,instance,me) @@ -82,17 +86,15 @@ submodule(phase) mechanics logical :: broken end function plastic_dotState - module function plastic_deltaState(co, ip, el, ph, of) result(broken) - + module function plastic_deltaState(co, ip, el, ph, me) result(broken) integer, intent(in) :: & co, & !< component-ID of integration point ip, & !< integration point el, & !< element ph, & - of + me logical :: & broken - end function plastic_deltaState module subroutine constitutive_LiAndItsTangents(Li, dLi_dS, dLi_dFi, & @@ -346,9 +348,6 @@ module subroutine mech_init(phases) end subroutine mech_init - - - !-------------------------------------------------------------------------------------------------- !> @brief returns the 2nd Piola-Kirchhoff stress tensor and its tangent with respect to !> the elastic and intermediate deformation gradients using Hooke's law diff --git a/src/phase_mechanics_plastic.f90 b/src/phase_mechanics_plastic.f90 index b03683061..95bcbb650 100644 --- a/src/phase_mechanics_plastic.f90 +++ b/src/phase_mechanics_plastic.f90 @@ -388,14 +388,14 @@ end subroutine plastic_dependentState !> @brief for constitutive models having an instantaneous change of state !> will return false if delta state is not needed/supported by the constitutive model !-------------------------------------------------------------------------------------------------- -module function plastic_deltaState(co, ip, el, ph, of) result(broken) +module function plastic_deltaState(co, ip, el, ph, me) result(broken) integer, intent(in) :: & - co, & !< component-ID of integration point + co, & !< component-ID of integration point ip, & !< integration point el, & !< element ph, & - of + me logical :: & broken @@ -407,19 +407,19 @@ module function plastic_deltaState(co, ip, el, ph, of) result(broken) mySize - Mp = matmul(matmul(transpose(constitutive_mech_Fi(ph)%data(1:3,1:3,of)),& - constitutive_mech_Fi(ph)%data(1:3,1:3,of)),constitutive_mech_S(ph)%data(1:3,1:3,of)) + Mp = matmul(matmul(transpose(constitutive_mech_Fi(ph)%data(1:3,1:3,me)),& + constitutive_mech_Fi(ph)%data(1:3,1:3,me)),constitutive_mech_S(ph)%data(1:3,1:3,me)) instance = phase_plasticityInstance(ph) plasticityType: select case (phase_plasticity(ph)) case (PLASTICITY_KINEHARDENING_ID) plasticityType - call plastic_kinehardening_deltaState(Mp,instance,of) - broken = any(IEEE_is_NaN(plasticState(ph)%deltaState(:,of))) + call plastic_kinehardening_deltaState(Mp,instance,me) + broken = any(IEEE_is_NaN(plasticState(ph)%deltaState(:,me))) case (PLASTICITY_NONLOCAL_ID) plasticityType - call plastic_nonlocal_deltaState(Mp,instance,of,ip,el) - broken = any(IEEE_is_NaN(plasticState(ph)%deltaState(:,of))) + call plastic_nonlocal_deltaState(Mp,instance,me,ip,el) + broken = any(IEEE_is_NaN(plasticState(ph)%deltaState(:,me))) case default broken = .false. @@ -432,8 +432,8 @@ module function plastic_deltaState(co, ip, el, ph, of) result(broken) myOffset = plasticState(ph)%offsetDeltaState mySize = plasticState(ph)%sizeDeltaState - plasticState(ph)%state(myOffset + 1:myOffset + mySize,of) = & - plasticState(ph)%state(myOffset + 1:myOffset + mySize,of) + plasticState(ph)%deltaState(1:mySize,of) + plasticState(ph)%state(myOffset + 1:myOffset + mySize,me) = & + plasticState(ph)%state(myOffset + 1:myOffset + mySize,me) + plasticState(ph)%deltaState(1:mySize,me) end select endif