changed name of some variables to be in accordance with constitutive_none,j2,phenopowerlaw

This commit is contained in:
Martin Diehl 2013-09-19 07:46:01 +00:00
parent 70c888f6ea
commit ca0b3b7b81
1 changed files with 227 additions and 246 deletions

View File

@ -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)))
constitutive_averageBurgers = 2.5e-10_pReal
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)
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