changed name of some variables to be in accordance with constitutive_none,j2,phenopowerlaw
This commit is contained in:
parent
70c888f6ea
commit
ca0b3b7b81
|
@ -32,7 +32,7 @@ module constitutive
|
|||
implicit none
|
||||
private
|
||||
type(p_vec), public, dimension(:,:,:), allocatable :: &
|
||||
constitutive_state0, & !< pointer array to microstructure at start of FE inc
|
||||
constitutive_state0, & !< pointer array to microstructure at start of BVP inc
|
||||
constitutive_partionedState0, & !< pointer array to microstructure at start of homogenization inc
|
||||
constitutive_subState0, & !< pointer array to microstructure at start of crystallite inc
|
||||
constitutive_state, & !< pointer array to current microstructure (end of converged time step)
|
||||
|
@ -125,12 +125,12 @@ subroutine constitutive_init
|
|||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e, & !< element number
|
||||
gMax, & !< maximum number of grains
|
||||
cMax, & !< maximum number of grains
|
||||
iMax, & !< maximum number of integration points
|
||||
eMax, & !< maximum number of elements
|
||||
p, &
|
||||
s, &
|
||||
myInstance,&
|
||||
matID,&
|
||||
myNgrains
|
||||
integer(pInt), dimension(:,:), pointer :: thisSize
|
||||
character(len=64), dimension(:,:), pointer :: thisOutput
|
||||
|
@ -196,31 +196,31 @@ subroutine constitutive_init
|
|||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! allocation of states
|
||||
gMax = homogenization_maxNgrains
|
||||
cMax = homogenization_maxNgrains
|
||||
iMax = mesh_maxNips
|
||||
eMax = mesh_NcpElems
|
||||
|
||||
allocate(constitutive_state0(gMax,iMax,eMax))
|
||||
allocate(constitutive_partionedState0(gMax,iMax,eMax))
|
||||
allocate(constitutive_subState0(gMax,iMax,eMax))
|
||||
allocate(constitutive_state(gMax,iMax,eMax))
|
||||
allocate(constitutive_state_backup(gMax,iMax,eMax))
|
||||
allocate(constitutive_dotState(gMax,iMax,eMax))
|
||||
allocate(constitutive_deltaState(gMax,iMax,eMax))
|
||||
allocate(constitutive_dotState_backup(gMax,iMax,eMax))
|
||||
allocate(constitutive_aTolState(gMax,iMax,eMax))
|
||||
allocate(constitutive_sizeDotState(gMax,iMax,eMax)) ; constitutive_sizeDotState = 0_pInt
|
||||
allocate(constitutive_sizeState(gMax,iMax,eMax)) ; constitutive_sizeState = 0_pInt
|
||||
allocate(constitutive_sizePostResults(gMax,iMax,eMax)); constitutive_sizePostResults = 0_pInt
|
||||
allocate(constitutive_state0(cMax,iMax,eMax))
|
||||
allocate(constitutive_partionedState0(cMax,iMax,eMax))
|
||||
allocate(constitutive_subState0(cMax,iMax,eMax))
|
||||
allocate(constitutive_state(cMax,iMax,eMax))
|
||||
allocate(constitutive_state_backup(cMax,iMax,eMax))
|
||||
allocate(constitutive_dotState(cMax,iMax,eMax))
|
||||
allocate(constitutive_deltaState(cMax,iMax,eMax))
|
||||
allocate(constitutive_dotState_backup(cMax,iMax,eMax))
|
||||
allocate(constitutive_aTolState(cMax,iMax,eMax))
|
||||
allocate(constitutive_sizeDotState(cMax,iMax,eMax)) ; constitutive_sizeDotState = 0_pInt
|
||||
allocate(constitutive_sizeState(cMax,iMax,eMax)) ; constitutive_sizeState = 0_pInt
|
||||
allocate(constitutive_sizePostResults(cMax,iMax,eMax)); constitutive_sizePostResults = 0_pInt
|
||||
if (any(numerics_integrator == 1_pInt)) then
|
||||
allocate(constitutive_previousDotState(gMax,iMax,eMax))
|
||||
allocate(constitutive_previousDotState2(gMax,iMax,eMax))
|
||||
allocate(constitutive_previousDotState(cMax,iMax,eMax))
|
||||
allocate(constitutive_previousDotState2(cMax,iMax,eMax))
|
||||
endif
|
||||
if (any(numerics_integrator == 4_pInt)) then
|
||||
allocate(constitutive_RK4dotState(gMax,iMax,eMax))
|
||||
allocate(constitutive_RK4dotState(cMax,iMax,eMax))
|
||||
endif
|
||||
if (any(numerics_integrator == 5_pInt)) then
|
||||
allocate(constitutive_RKCK45dotState(6,gMax,iMax,eMax))
|
||||
allocate(constitutive_RKCK45dotState(6,cMax,iMax,eMax))
|
||||
endif
|
||||
|
||||
do e = 1_pInt,mesh_NcpElems ! loop over elements
|
||||
|
@ -235,177 +235,177 @@ subroutine constitutive_init
|
|||
call IO_error(200_pInt,ext_msg=trim(phase_elasticity(material_phase(g,i,e)))) ! unknown elasticity
|
||||
|
||||
end select
|
||||
myInstance = phase_plasticityInstance(material_phase(g,i,e))
|
||||
matID = phase_plasticityInstance(material_phase(g,i,e))
|
||||
select case(phase_plasticity(material_phase(g,i,e)))
|
||||
|
||||
case (constitutive_none_label)
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_none_sizeState(myInstance)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_none_sizeState(myInstance)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_none_sizeState(myInstance)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_none_sizeState(myInstance)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_none_sizeState(myInstance)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_none_sizeState(myInstance)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_none_sizeDotState(myInstance)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_none_sizeDotState(myInstance)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_none_sizeDotState(myInstance)))
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_none_sizeState(matID)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_none_sizeState(matID)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_none_sizeState(matID)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_none_sizeState(matID)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_none_sizeState(matID)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_none_sizeState(matID)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_none_sizeDotState(matID)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_none_sizeDotState(matID)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_none_sizeDotState(matID)))
|
||||
if (any(numerics_integrator == 1_pInt)) then
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_none_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_none_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_none_sizeDotState(matID)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_none_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 4_pInt)) then
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_none_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_none_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 5_pInt)) then
|
||||
do s = 1_pInt,6_pInt
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_none_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_none_sizeDotState(matID)))
|
||||
enddo
|
||||
endif
|
||||
constitutive_state0(g,i,e)%p = constitutive_none_stateInit(myInstance)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_none_aTolState(myInstance)
|
||||
constitutive_sizeState(g,i,e) = constitutive_none_sizeState(myInstance)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_none_sizeDotState(myInstance)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_none_sizePostResults(myInstance)
|
||||
constitutive_state0(g,i,e)%p = constitutive_none_stateInit(matID)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_none_aTolState(matID)
|
||||
constitutive_sizeState(g,i,e) = constitutive_none_sizeState(matID)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_none_sizeDotState(matID)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_none_sizePostResults(matID)
|
||||
|
||||
case (constitutive_j2_label)
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_j2_sizeState(myInstance)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_j2_sizeState(myInstance)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_j2_sizeState(myInstance)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_j2_sizeState(myInstance)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_j2_sizeState(myInstance)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_j2_sizeState(myInstance)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_j2_sizeDotState(myInstance)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_j2_sizeDotState(myInstance)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_j2_sizeDotState(myInstance)))
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_j2_sizeState(matID)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_j2_sizeState(matID)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_j2_sizeState(matID)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_j2_sizeState(matID)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_j2_sizeState(matID)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_j2_sizeState(matID)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_j2_sizeDotState(matID)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_j2_sizeDotState(matID)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_j2_sizeDotState(matID)))
|
||||
if (any(numerics_integrator == 1_pInt)) then
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_j2_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_j2_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_j2_sizeDotState(matID)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_j2_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 4_pInt)) then
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_j2_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_j2_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 5_pInt)) then
|
||||
do s = 1_pInt,6_pInt
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_j2_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_j2_sizeDotState(matID)))
|
||||
enddo
|
||||
endif
|
||||
constitutive_state0(g,i,e)%p = constitutive_j2_stateInit(myInstance)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_j2_aTolState(myInstance)
|
||||
constitutive_sizeState(g,i,e) = constitutive_j2_sizeState(myInstance)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_j2_sizeDotState(myInstance)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_j2_sizePostResults(myInstance)
|
||||
constitutive_state0(g,i,e)%p = constitutive_j2_stateInit(matID)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_j2_aTolState(matID)
|
||||
constitutive_sizeState(g,i,e) = constitutive_j2_sizeState(matID)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_j2_sizeDotState(matID)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_j2_sizePostResults(matID)
|
||||
|
||||
case (constitutive_phenopowerlaw_label)
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_phenopowerlaw_sizeState(myInstance)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_phenopowerlaw_sizeState(myInstance)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_phenopowerlaw_sizeState(myInstance)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_phenopowerlaw_sizeState(myInstance)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_phenopowerlaw_sizeState(myInstance)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_phenopowerlaw_sizeState(myInstance)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(myInstance)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(myInstance)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(myInstance)))
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_phenopowerlaw_sizeState(matID)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_phenopowerlaw_sizeState(matID)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_phenopowerlaw_sizeState(matID)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_phenopowerlaw_sizeState(matID)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_phenopowerlaw_sizeState(matID)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_phenopowerlaw_sizeState(matID)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(matID)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(matID)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(matID)))
|
||||
if (any(numerics_integrator == 1_pInt)) then
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(matID)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 4_pInt)) then
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 5_pInt)) then
|
||||
do s = 1_pInt,6_pInt
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_phenopowerlaw_sizeDotState(matID)))
|
||||
enddo
|
||||
endif
|
||||
constitutive_state0(g,i,e)%p = constitutive_phenopowerlaw_stateInit(myInstance)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_phenopowerlaw_aTolState(myInstance)
|
||||
constitutive_sizeState(g,i,e) = constitutive_phenopowerlaw_sizeState(myInstance)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_phenopowerlaw_sizeDotState(myInstance)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_phenopowerlaw_sizePostResults(myInstance)
|
||||
constitutive_state0(g,i,e)%p = constitutive_phenopowerlaw_stateInit(matID)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_phenopowerlaw_aTolState(matID)
|
||||
constitutive_sizeState(g,i,e) = constitutive_phenopowerlaw_sizeState(matID)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_phenopowerlaw_sizeDotState(matID)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_phenopowerlaw_sizePostResults(matID)
|
||||
|
||||
case (constitutive_titanmod_label)
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_titanmod_sizeState(myInstance)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_titanmod_sizeState(myInstance)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_titanmod_sizeState(myInstance)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_titanmod_sizeState(myInstance)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_titanmod_sizeState(myInstance)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_titanmod_sizeState(myInstance)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance)))
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_titanmod_sizeState(matID)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_titanmod_sizeState(matID)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_titanmod_sizeState(matID)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_titanmod_sizeState(matID)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_titanmod_sizeState(matID)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_titanmod_sizeState(matID)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_titanmod_sizeDotState(matID)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_titanmod_sizeDotState(matID)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_titanmod_sizeDotState(matID)))
|
||||
if (any(numerics_integrator == 1_pInt)) then
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_titanmod_sizeDotState(matID)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_titanmod_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 4_pInt)) then
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_titanmod_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 5_pInt)) then
|
||||
do s = 1_pInt,6_pInt
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_titanmod_sizeDotState(matID)))
|
||||
enddo
|
||||
endif
|
||||
constitutive_state0(g,i,e)%p = constitutive_titanmod_stateInit(myInstance)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_titanmod_aTolState(myInstance)
|
||||
constitutive_sizeState(g,i,e) = constitutive_titanmod_sizeState(myInstance)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_titanmod_sizeDotState(myInstance)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_titanmod_sizePostResults(myInstance)
|
||||
constitutive_state0(g,i,e)%p = constitutive_titanmod_stateInit(matID)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_titanmod_aTolState(matID)
|
||||
constitutive_sizeState(g,i,e) = constitutive_titanmod_sizeState(matID)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_titanmod_sizeDotState(matID)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_titanmod_sizePostResults(matID)
|
||||
|
||||
case (constitutive_dislotwin_label)
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_dislotwin_sizeState(myInstance)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_dislotwin_sizeState(myInstance)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_dislotwin_sizeState(myInstance)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_dislotwin_sizeState(myInstance)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_dislotwin_sizeState(myInstance)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_dislotwin_sizeState(myInstance)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_dislotwin_sizeDotState(myInstance)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_dislotwin_sizeDotState(myInstance)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_dislotwin_sizeDotState(myInstance)))
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_dislotwin_sizeState(matID)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_dislotwin_sizeState(matID)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_dislotwin_sizeState(matID)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_dislotwin_sizeState(matID)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_dislotwin_sizeState(matID)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_dislotwin_sizeState(matID)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_dislotwin_sizeDotState(matID)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_dislotwin_sizeDotState(matID)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_dislotwin_sizeDotState(matID)))
|
||||
if (any(numerics_integrator == 1_pInt)) then
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_dislotwin_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_dislotwin_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_dislotwin_sizeDotState(matID)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_dislotwin_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 4_pInt)) then
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_dislotwin_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_dislotwin_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 5_pInt)) then
|
||||
do s = 1_pInt,6_pInt
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_dislotwin_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_dislotwin_sizeDotState(matID)))
|
||||
enddo
|
||||
endif
|
||||
constitutive_state0(g,i,e)%p = constitutive_dislotwin_stateInit(myInstance)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_dislotwin_aTolState(myInstance)
|
||||
constitutive_sizeState(g,i,e) = constitutive_dislotwin_sizeState(myInstance)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_dislotwin_sizeDotState(myInstance)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_dislotwin_sizePostResults(myInstance)
|
||||
constitutive_state0(g,i,e)%p = constitutive_dislotwin_stateInit(matID)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_dislotwin_aTolState(matID)
|
||||
constitutive_sizeState(g,i,e) = constitutive_dislotwin_sizeState(matID)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_dislotwin_sizeDotState(matID)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_dislotwin_sizePostResults(matID)
|
||||
|
||||
case (constitutive_nonlocal_label)
|
||||
nonlocalConstitutionPresent = .true.
|
||||
if(myNgrains/=1_pInt) call IO_error(252_pInt, e,i,g)
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_nonlocal_sizeState(myInstance)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_nonlocal_sizeState(myInstance)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_nonlocal_sizeState(myInstance)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_nonlocal_sizeState(myInstance)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_nonlocal_sizeState(myInstance)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_nonlocal_sizeState(myInstance)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_nonlocal_sizeDotState(myInstance)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_nonlocal_sizeDotState(myInstance)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_nonlocal_sizeDotState(myInstance)))
|
||||
allocate(constitutive_state0(g,i,e)%p(constitutive_nonlocal_sizeState(matID)))
|
||||
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_nonlocal_sizeState(matID)))
|
||||
allocate(constitutive_subState0(g,i,e)%p(constitutive_nonlocal_sizeState(matID)))
|
||||
allocate(constitutive_state(g,i,e)%p(constitutive_nonlocal_sizeState(matID)))
|
||||
allocate(constitutive_state_backup(g,i,e)%p(constitutive_nonlocal_sizeState(matID)))
|
||||
allocate(constitutive_aTolState(g,i,e)%p(constitutive_nonlocal_sizeState(matID)))
|
||||
allocate(constitutive_dotState(g,i,e)%p(constitutive_nonlocal_sizeDotState(matID)))
|
||||
allocate(constitutive_deltaState(g,i,e)%p(constitutive_nonlocal_sizeDotState(matID)))
|
||||
allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_nonlocal_sizeDotState(matID)))
|
||||
if (any(numerics_integrator == 1_pInt)) then
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_nonlocal_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_nonlocal_sizeDotState(myInstance)))
|
||||
allocate(constitutive_previousDotState(g,i,e)%p(constitutive_nonlocal_sizeDotState(matID)))
|
||||
allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_nonlocal_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 4_pInt)) then
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_nonlocal_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RK4dotState(g,i,e)%p(constitutive_nonlocal_sizeDotState(matID)))
|
||||
endif
|
||||
if (any(numerics_integrator == 5_pInt)) then
|
||||
do s = 1_pInt,6_pInt
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_nonlocal_sizeDotState(myInstance)))
|
||||
allocate(constitutive_RKCK45dotState(s,g,i,e)%p(constitutive_nonlocal_sizeDotState(matID)))
|
||||
enddo
|
||||
endif
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_nonlocal_aTolState(myInstance)
|
||||
constitutive_sizeState(g,i,e) = constitutive_nonlocal_sizeState(myInstance)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_nonlocal_sizeDotState(myInstance)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_nonlocal_sizePostResults(myInstance)
|
||||
constitutive_aTolState(g,i,e)%p = constitutive_nonlocal_aTolState(matID)
|
||||
constitutive_sizeState(g,i,e) = constitutive_nonlocal_sizeState(matID)
|
||||
constitutive_sizeDotState(g,i,e) = constitutive_nonlocal_sizeDotState(matID)
|
||||
constitutive_sizePostResults(g,i,e) = constitutive_nonlocal_sizePostResults(matID)
|
||||
|
||||
case default
|
||||
call IO_error(201_pInt,ext_msg=trim(phase_plasticity(material_phase(g,i,e)))) ! unknown plasticity
|
||||
|
@ -460,7 +460,7 @@ end subroutine constitutive_init
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief returns the homogenize elasticity matrix
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
pure function constitutive_homogenizedC(g,i,e)
|
||||
pure function constitutive_homogenizedC(ipc,ip,el)
|
||||
use material, only: &
|
||||
phase_plasticity, &
|
||||
material_phase
|
||||
|
@ -474,29 +474,29 @@ pure function constitutive_homogenizedC(g,i,e)
|
|||
implicit none
|
||||
real(pReal), dimension(6,6) :: constitutive_homogenizedC
|
||||
integer(pInt), intent(in) :: &
|
||||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e !< element number
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
|
||||
select case (phase_plasticity(material_phase(g,i,e)))
|
||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||
|
||||
case (constitutive_none_label)
|
||||
constitutive_homogenizedC = constitutive_none_homogenizedC(constitutive_state,g,i,e)
|
||||
constitutive_homogenizedC = constitutive_none_homogenizedC(constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_j2_label)
|
||||
constitutive_homogenizedC = constitutive_j2_homogenizedC(constitutive_state,g,i,e)
|
||||
constitutive_homogenizedC = constitutive_j2_homogenizedC(constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_phenopowerlaw_label)
|
||||
constitutive_homogenizedC = constitutive_phenopowerlaw_homogenizedC(constitutive_state,g,i,e)
|
||||
constitutive_homogenizedC = constitutive_phenopowerlaw_homogenizedC(constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_titanmod_label)
|
||||
constitutive_homogenizedC = constitutive_titanmod_homogenizedC(constitutive_state,g,i,e)
|
||||
constitutive_homogenizedC = constitutive_titanmod_homogenizedC(constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_dislotwin_label)
|
||||
constitutive_homogenizedC = constitutive_dislotwin_homogenizedC(constitutive_state,g,i,e)
|
||||
constitutive_homogenizedC = constitutive_dislotwin_homogenizedC(constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_nonlocal_label)
|
||||
constitutive_homogenizedC = constitutive_nonlocal_homogenizedC(constitutive_state,g,i,e)
|
||||
constitutive_homogenizedC = constitutive_nonlocal_homogenizedC(constitutive_state,ipc,ip,el)
|
||||
|
||||
end select
|
||||
|
||||
|
@ -504,9 +504,9 @@ end function constitutive_homogenizedC
|
|||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief returns average length of Burgers vector
|
||||
!> @brief returns average length of Burgers vector (not material point model specific so far)
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
real(pReal) function constitutive_averageBurgers(g,i,e)
|
||||
real(pReal) function constitutive_averageBurgers(ipc,ip,el)
|
||||
use material, only: &
|
||||
phase_plasticity,material_phase
|
||||
use constitutive_none, only: &
|
||||
|
@ -524,31 +524,12 @@ real(pReal) function constitutive_averageBurgers(g,i,e)
|
|||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e !< element number
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
|
||||
select case (phase_plasticity(material_phase(g,i,e)))
|
||||
|
||||
case (constitutive_none_label)
|
||||
constitutive_averageBurgers = 2.5e-10_pReal ! constitutive_none_averageBurgers(constitutive_state,g,i,e)
|
||||
|
||||
case (constitutive_j2_label)
|
||||
constitutive_averageBurgers = 2.5e-10_pReal ! constitutive_j2_averageBurgers(constitutive_state,g,i,e)
|
||||
|
||||
case (constitutive_phenopowerlaw_label)
|
||||
constitutive_averageBurgers = 2.5e-10_pReal ! constitutive_phenopowerlaw_averageBurgers(constitutive_state,g,i,e)
|
||||
constitutive_averageBurgers = 2.5e-10_pReal
|
||||
|
||||
case (constitutive_titanmod_label)
|
||||
constitutive_averageBurgers = 2.5e-10_pReal ! constitutive_titanmod_averageBurgers(constitutive_state,g,i,e)
|
||||
|
||||
case (constitutive_dislotwin_label)
|
||||
constitutive_averageBurgers = 2.5e-10_pReal ! constitutive_dislotwin_averageBurgers(constitutive_state,g,i,e)
|
||||
|
||||
case (constitutive_nonlocal_label)
|
||||
constitutive_averageBurgers = 2.5e-10_pReal ! constitutive_nonlocal_averageBurgers(constitutive_state,g,i,e)
|
||||
|
||||
end select
|
||||
|
||||
end function constitutive_averageBurgers
|
||||
|
||||
|
@ -556,7 +537,7 @@ end function constitutive_averageBurgers
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief calls microstructure function of the different constitutive models
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine constitutive_microstructure(Temperature, Fe, Fp, g, i, e)
|
||||
subroutine constitutive_microstructure(Temperature, Fe, Fp, ipc, ip, el)
|
||||
use material, only: &
|
||||
phase_plasticity, &
|
||||
material_phase
|
||||
|
@ -581,34 +562,34 @@ subroutine constitutive_microstructure(Temperature, Fe, Fp, g, i, e)
|
|||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e !< element number
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), intent(in) :: &
|
||||
Temperature
|
||||
real(pReal), intent(in), dimension(3,3) :: &
|
||||
Fe, & !< elastic deformation gradient
|
||||
Fp !< plastic deformation gradient
|
||||
|
||||
select case (phase_plasticity(material_phase(g,i,e)))
|
||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||
|
||||
case (constitutive_none_label)
|
||||
call constitutive_none_microstructure(Temperature,constitutive_state,g,i,e)
|
||||
call constitutive_none_microstructure(Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_j2_label)
|
||||
call constitutive_j2_microstructure(Temperature,constitutive_state,g,i,e)
|
||||
call constitutive_j2_microstructure(Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_phenopowerlaw_label)
|
||||
call constitutive_phenopowerlaw_microstructure(Temperature,constitutive_state,g,i,e)
|
||||
call constitutive_phenopowerlaw_microstructure(Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_titanmod_label)
|
||||
call constitutive_titanmod_microstructure(Temperature,constitutive_state,g,i,e)
|
||||
call constitutive_titanmod_microstructure(Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_dislotwin_label)
|
||||
call constitutive_dislotwin_microstructure(Temperature,constitutive_state,g,i,e)
|
||||
call constitutive_dislotwin_microstructure(Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_nonlocal_label)
|
||||
call constitutive_nonlocal_microstructure(constitutive_state, Temperature, Fe, Fp, g, i, e)
|
||||
call constitutive_nonlocal_microstructure(constitutive_state, Temperature, Fe, Fp, ipc,ip,el)
|
||||
|
||||
end select
|
||||
|
||||
|
@ -616,9 +597,9 @@ end subroutine constitutive_microstructure
|
|||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief contains the constitutive equation for calculating the velocity gradient *
|
||||
!> @brief contains the constitutive equation for calculating the velocity gradient
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, Temperature, g, i, e)
|
||||
subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, Temperature, ipc, ip, el)
|
||||
use material, only: &
|
||||
phase_plasticity, &
|
||||
material_phase
|
||||
|
@ -643,9 +624,9 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, Temperature, g,
|
|||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e !< element number
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), intent(in) :: &
|
||||
Temperature
|
||||
real(pReal), intent(in), dimension(6) :: &
|
||||
|
@ -655,25 +636,25 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, Temperature, g,
|
|||
real(pReal), intent(out), dimension(9,9) :: &
|
||||
dLp_dTstar !< derivative of Lp with respect to Tstar (4th-order tensor)
|
||||
|
||||
select case (phase_plasticity(material_phase(g,i,e)))
|
||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||
|
||||
case (constitutive_none_label)
|
||||
call constitutive_none_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
call constitutive_none_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_j2_label)
|
||||
call constitutive_j2_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
call constitutive_j2_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_phenopowerlaw_label)
|
||||
call constitutive_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
call constitutive_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_titanmod_label)
|
||||
call constitutive_titanmod_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
call constitutive_titanmod_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_dislotwin_label)
|
||||
call constitutive_dislotwin_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
call constitutive_dislotwin_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_nonlocal_label)
|
||||
call constitutive_nonlocal_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, Temperature, constitutive_state(g,i,e), g, i, e)
|
||||
call constitutive_nonlocal_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, Temperature, constitutive_state(ipc,ip,el), ipc,ip,el)
|
||||
|
||||
end select
|
||||
|
||||
|
@ -685,15 +666,15 @@ end subroutine constitutive_LpAndItsTangent
|
|||
!> @brief returns the 2nd Piola-Kirchhoff stress tensor and its tangent with respect to
|
||||
!> the elastic deformation gradient depending on the selected elastic law
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
pure subroutine constitutive_TandItsTangent(T, dT_dFe, Fe, g, i, e)
|
||||
pure subroutine constitutive_TandItsTangent(T, dT_dFe, Fe, ipc, ip, el)
|
||||
use material, only: &
|
||||
phase_elasticity,material_phase
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e !< element number
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), intent(in), dimension(3,3) :: &
|
||||
Fe !< elastic deformation gradient
|
||||
real(pReal), intent(out), dimension(3,3) :: &
|
||||
|
@ -701,10 +682,10 @@ pure subroutine constitutive_TandItsTangent(T, dT_dFe, Fe, g, i, e)
|
|||
real(pReal), intent(out), dimension(3,3,3,3) :: &
|
||||
dT_dFe !< derivative of 2nd P-K stress with respect to elastic deformation gradient
|
||||
|
||||
select case (phase_elasticity(material_phase(g,i,e)))
|
||||
select case (phase_elasticity(material_phase(ipc,ip,el)))
|
||||
|
||||
case (constitutive_hooke_label)
|
||||
call constitutive_hooke_TandItsTangent(T, dT_dFe, Fe, g, i, e)
|
||||
call constitutive_hooke_TandItsTangent(T, dT_dFe, Fe, ipc, ip, el)
|
||||
|
||||
end select
|
||||
|
||||
|
@ -715,19 +696,19 @@ end subroutine constitutive_TandItsTangent
|
|||
!> @brief returns the 2nd Piola-Kirchhoff stress tensor and its tangent with respect to
|
||||
!> the elastic deformation gradient depending for hookes law
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
pure subroutine constitutive_hooke_TandItsTangent(T, dT_dFe, Fe, g, i, e)
|
||||
pure subroutine constitutive_hooke_TandItsTangent(T, dT_dFe, Fe, ipc, ip, el)
|
||||
use math, only : &
|
||||
math_mul33x33, &
|
||||
math_mul3333xx33, &
|
||||
math_Mandel66to3333, &
|
||||
math_transpose33, &
|
||||
math_I3
|
||||
MATH_I3
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e !< element number
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), intent(in), dimension(3,3) :: &
|
||||
Fe !< elastic deformation gradient
|
||||
real(pReal), intent(out), dimension(3,3) :: &
|
||||
|
@ -740,10 +721,10 @@ use math, only : &
|
|||
real(pReal), dimension(3,3,3,3) :: C
|
||||
|
||||
|
||||
C = math_Mandel66to3333(constitutive_homogenizedC(g,i,e))
|
||||
C = math_Mandel66to3333(constitutive_homogenizedC(ipc,ip,el))
|
||||
|
||||
FeT = math_transpose33(Fe)
|
||||
T = 0.5_pReal*math_mul3333xx33(C,math_mul33x33(FeT,Fe)-math_I3)
|
||||
T = 0.5_pReal*math_mul3333xx33(C,math_mul33x33(FeT,Fe)-MATH_I3)
|
||||
|
||||
forall (o=1_pInt:3_pInt, p=1_pInt:3_pInt) dT_dFe(o,p,1:3,1:3) = math_mul33x33(C(o,p,1:3,1:3), FeT) ! dT*_ij/dFe_kl
|
||||
|
||||
|
@ -753,7 +734,7 @@ end subroutine constitutive_hooke_TandItsTangent
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief contains the constitutive equation for calculating the rate of change of microstructure
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine constitutive_collectDotState(Tstar_v, Fe, Fp, Temperature, subdt, subfrac, g, i, e)
|
||||
subroutine constitutive_collectDotState(Tstar_v, Fe, Fp, Temperature, subdt, subfrac, ipc, ip, el)
|
||||
use prec, only: &
|
||||
pLongInt
|
||||
use debug, only: &
|
||||
|
@ -790,9 +771,9 @@ subroutine constitutive_collectDotState(Tstar_v, Fe, Fp, Temperature, subdt, sub
|
|||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e !< element number
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), intent(in) :: &
|
||||
Temperature, &
|
||||
subdt !< timestep
|
||||
|
@ -811,26 +792,26 @@ subroutine constitutive_collectDotState(Tstar_v, Fe, Fp, Temperature, subdt, sub
|
|||
if (iand(debug_level(debug_constitutive), debug_levelBasic) /= 0_pInt) &
|
||||
call system_clock(count=tick,count_rate=tickrate,count_max=maxticks)
|
||||
|
||||
select case (phase_plasticity(material_phase(g,i,e)))
|
||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||
|
||||
case (constitutive_none_label)
|
||||
constitutive_dotState(g,i,e)%p = constitutive_none_dotState(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotState(ipc,ip,el)%p = constitutive_none_dotState(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_j2_label)
|
||||
constitutive_dotState(g,i,e)%p = constitutive_j2_dotState(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotState(ipc,ip,el)%p = constitutive_j2_dotState(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_phenopowerlaw_label)
|
||||
constitutive_dotState(g,i,e)%p = constitutive_phenopowerlaw_dotState(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotState(ipc,ip,el)%p = constitutive_phenopowerlaw_dotState(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_titanmod_label)
|
||||
constitutive_dotState(g,i,e)%p = constitutive_titanmod_dotState(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotState(ipc,ip,el)%p = constitutive_titanmod_dotState(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_dislotwin_label)
|
||||
constitutive_dotState(g,i,e)%p = constitutive_dislotwin_dotState(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotState(ipc,ip,el)%p = constitutive_dislotwin_dotState(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_nonlocal_label)
|
||||
constitutive_dotState(g,i,e)%p = constitutive_nonlocal_dotState(Tstar_v, Fe, Fp, Temperature, constitutive_state, &
|
||||
constitutive_state0, subdt, subfrac, g, i, e)
|
||||
constitutive_dotState(ipc,ip,el)%p = constitutive_nonlocal_dotState(Tstar_v, Fe, Fp, Temperature, constitutive_state, &
|
||||
constitutive_state0, subdt, subfrac, ipc, ip, el)
|
||||
|
||||
end select
|
||||
|
||||
|
@ -851,7 +832,7 @@ end subroutine constitutive_collectDotState
|
|||
!> @brief contains the constitutive equation for calculating the incremental change of
|
||||
!> microstructure based on the current stress and state
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine constitutive_collectDeltaState(Tstar_v, Temperature, g, i, e)
|
||||
subroutine constitutive_collectDeltaState(Tstar_v, Temperature, ipc, ip, el)
|
||||
use prec, only: &
|
||||
pLongInt
|
||||
use debug, only: &
|
||||
|
@ -884,9 +865,9 @@ subroutine constitutive_collectDeltaState(Tstar_v, Temperature, g, i, e)
|
|||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e !< element number
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), intent(in) :: &
|
||||
Temperature
|
||||
real(pReal), intent(in), dimension(6) :: &
|
||||
|
@ -899,25 +880,25 @@ subroutine constitutive_collectDeltaState(Tstar_v, Temperature, g, i, e)
|
|||
if (iand(debug_level(debug_constitutive), debug_levelBasic) /= 0_pInt) &
|
||||
call system_clock(count=tick,count_rate=tickrate,count_max=maxticks)
|
||||
|
||||
select case (phase_plasticity(material_phase(g,i,e)))
|
||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||
|
||||
case (constitutive_none_label)
|
||||
constitutive_deltaState(g,i,e)%p = constitutive_none_deltaState(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_deltaState(ipc,ip,el)%p = constitutive_none_deltaState(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_j2_label)
|
||||
constitutive_deltaState(g,i,e)%p = constitutive_j2_deltaState(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_deltaState(ipc,ip,el)%p = constitutive_j2_deltaState(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_phenopowerlaw_label)
|
||||
constitutive_deltaState(g,i,e)%p = constitutive_phenopowerlaw_deltaState(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_deltaState(ipc,ip,el)%p = constitutive_phenopowerlaw_deltaState(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_titanmod_label)
|
||||
constitutive_deltaState(g,i,e)%p = constitutive_titanmod_deltaState(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_deltaState(ipc,ip,el)%p = constitutive_titanmod_deltaState(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_dislotwin_label)
|
||||
constitutive_deltaState(g,i,e)%p = constitutive_dislotwin_deltaState(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_deltaState(ipc,ip,el)%p = constitutive_dislotwin_deltaState(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_nonlocal_label)
|
||||
call constitutive_nonlocal_deltaState(constitutive_deltaState(g,i,e),constitutive_state, Tstar_v,Temperature,g,i,e)
|
||||
call constitutive_nonlocal_deltaState(constitutive_deltaState(ipc,ip,el),constitutive_state, Tstar_v,Temperature,ipc,ip,el)
|
||||
|
||||
end select
|
||||
|
||||
|
@ -937,7 +918,7 @@ end subroutine constitutive_collectDeltaState
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief contains the constitutive equation for calculating the rate of change of microstructure
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
real(pReal) function constitutive_dotTemperature(Tstar_v,Temperature,g,i,e)
|
||||
real(pReal) function constitutive_dotTemperature(Tstar_v,Temperature,ipc,ip,el)
|
||||
use prec, only: &
|
||||
pLongInt
|
||||
use debug, only: &
|
||||
|
@ -968,9 +949,9 @@ real(pReal) function constitutive_dotTemperature(Tstar_v,Temperature,g,i,e)
|
|||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e !< element number
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), intent(in) :: &
|
||||
Temperature
|
||||
real(pReal), intent(in), dimension(6) :: &
|
||||
|
@ -983,25 +964,25 @@ real(pReal) function constitutive_dotTemperature(Tstar_v,Temperature,g,i,e)
|
|||
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) &
|
||||
call system_clock(count=tick,count_rate=tickrate,count_max=maxticks)
|
||||
|
||||
select case (phase_plasticity(material_phase(g,i,e)))
|
||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||
|
||||
case (constitutive_none_label)
|
||||
constitutive_dotTemperature = constitutive_none_dotTemperature(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotTemperature = constitutive_none_dotTemperature(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_j2_label)
|
||||
constitutive_dotTemperature = constitutive_j2_dotTemperature(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotTemperature = constitutive_j2_dotTemperature(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_phenopowerlaw_label)
|
||||
constitutive_dotTemperature = constitutive_phenopowerlaw_dotTemperature(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotTemperature = constitutive_phenopowerlaw_dotTemperature(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_titanmod_label)
|
||||
constitutive_dotTemperature = constitutive_titanmod_dotTemperature(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotTemperature = constitutive_titanmod_dotTemperature(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_dislotwin_label)
|
||||
constitutive_dotTemperature = constitutive_dislotwin_dotTemperature(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotTemperature = constitutive_dislotwin_dotTemperature(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_nonlocal_label)
|
||||
constitutive_dotTemperature = constitutive_nonlocal_dotTemperature(Tstar_v,Temperature,constitutive_state,g,i,e)
|
||||
constitutive_dotTemperature = constitutive_nonlocal_dotTemperature(Tstar_v,Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
end select
|
||||
|
||||
|
@ -1021,7 +1002,7 @@ end function constitutive_dotTemperature
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief returns array of constitutive results
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
function constitutive_postResults(Tstar_v, Fe, Temperature, dt, g, i, e)
|
||||
function constitutive_postResults(Tstar_v, Fe, Temperature, dt, ipc, ip, el)
|
||||
use mesh, only: &
|
||||
mesh_NcpElems, &
|
||||
mesh_maxNips
|
||||
|
@ -1050,10 +1031,10 @@ function constitutive_postResults(Tstar_v, Fe, Temperature, dt, g, i, e)
|
|||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
g, & !< grain number
|
||||
i, & !< integration point number
|
||||
e !< element number
|
||||
real(pReal), dimension(constitutive_sizePostResults(g,i,e)) :: &
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), dimension(constitutive_sizePostResults(ipc,ip,el)) :: &
|
||||
constitutive_postResults
|
||||
real(pReal), intent(in) :: &
|
||||
Temperature, &
|
||||
|
@ -1065,26 +1046,26 @@ function constitutive_postResults(Tstar_v, Fe, Temperature, dt, g, i, e)
|
|||
|
||||
constitutive_postResults = 0.0_pReal
|
||||
|
||||
select case (phase_plasticity(material_phase(g,i,e)))
|
||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||
|
||||
case (constitutive_none_label)
|
||||
constitutive_postResults = constitutive_none_postResults(Tstar_v,Temperature,dt,constitutive_state,g,i,e)
|
||||
constitutive_postResults = constitutive_none_postResults(Tstar_v,Temperature,dt,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_j2_label)
|
||||
constitutive_postResults = constitutive_j2_postResults(Tstar_v,Temperature,dt,constitutive_state,g,i,e)
|
||||
constitutive_postResults = constitutive_j2_postResults(Tstar_v,Temperature,dt,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_phenopowerlaw_label)
|
||||
constitutive_postResults = constitutive_phenopowerlaw_postResults(Tstar_v,Temperature,dt,constitutive_state,g,i,e)
|
||||
constitutive_postResults = constitutive_phenopowerlaw_postResults(Tstar_v,Temperature,dt,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_titanmod_label)
|
||||
constitutive_postResults = constitutive_titanmod_postResults(Tstar_v,Temperature,dt,constitutive_state,g,i,e)
|
||||
constitutive_postResults = constitutive_titanmod_postResults(Tstar_v,Temperature,dt,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_dislotwin_label)
|
||||
constitutive_postResults = constitutive_dislotwin_postResults(Tstar_v,Temperature,dt,constitutive_state,g,i,e)
|
||||
constitutive_postResults = constitutive_dislotwin_postResults(Tstar_v,Temperature,dt,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_nonlocal_label)
|
||||
constitutive_postResults = constitutive_nonlocal_postResults(Tstar_v, Fe, Temperature, dt, constitutive_state, &
|
||||
constitutive_dotstate(g,i,e), g, i, e)
|
||||
constitutive_dotstate(ipc,ip,el), ipc, ip, el)
|
||||
end select
|
||||
|
||||
end function constitutive_postResults
|
||||
|
|
Loading…
Reference in New Issue