more changes related to new state

This commit is contained in:
Martin Diehl 2014-05-22 15:24:12 +00:00
parent adfa634d05
commit a284e7e6c0
5 changed files with 146 additions and 53 deletions

View File

@ -134,8 +134,10 @@ subroutine CPFEM_init
use material, only: &
homogenization_maxNgrains, &
material_phase
#ifndef NEWSTATE
use constitutive, only: &
constitutive_state0
#endif
use crystallite, only: &
crystallite_F0, &
crystallite_Fp0, &
@ -190,7 +192,7 @@ subroutine CPFEM_init
call IO_read_realFile(777,'convergedTstar',modelName,size(crystallite_Tstar0_v))
read (777,rec=1) crystallite_Tstar0_v
close (777)
#ifndef NEWSTATE
call IO_read_realFile(777,'convergedStateConst',modelName)
m = 0_pInt
do i = 1,homogenization_maxNgrains; do j = 1,mesh_maxNips; do k = 1,mesh_NcpElems
@ -210,7 +212,7 @@ subroutine CPFEM_init
enddo
enddo; enddo
close (777)
#endif
call IO_read_realFile(777,'convergeddcsdE',modelName,size(CPFEM_dcsdE))
read (777,rec=1) CPFEM_dcsdE
close (777)
@ -283,12 +285,15 @@ subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature, dt, el
plasticState,&
#endif
material_phase
#ifndef NEWSTATE
use constitutive, only: &
constitutive_state0, &
#ifdef NEWSTATE
mappingConstitutive,&
#endif
constitutive_state
#else
use constitutive, only: &
mappingConstitutive
#endif
use crystallite, only: &
crystallite_partionedF,&
crystallite_F0, &
@ -376,12 +381,12 @@ subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature, dt, el
crystallite_Tstar0_v = crystallite_Tstar_v ! crystallite 2nd Piola Kirchhoff stress
#ifndef NEWSTATE
forall ( i = 1:homogenization_maxNgrains, &
j = 1:mesh_maxNips, &
k = 1:mesh_NcpElems ) &
constitutive_state0(i,j,k)%p = constitutive_state(i,j,k)%p ! microstructure of crystallites
#endif
#ifdef NEWSTATE
forall ( i = 1:size(plasticState)) plasticState(i)%state0= plasticState(i)%state ! copy state in this lenghty way because A component cannot be an array if the encompassing structure is an array
if (iand(debug_level(debug_CPFEM), debug_levelExtensive) /= 0_pInt) then
@ -392,8 +397,7 @@ subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature, dt, el
plasticState(mappingConstitutive(2,1,debug_i,debug_e))%state(:,mappingConstitutive(1,1,debug_i,debug_e))
endif
endif
#endif
#else
if (iand(debug_level(debug_CPFEM), debug_levelExtensive) /= 0_pInt) then
write(6,'(a)') '<< CPFEM >> aging states'
if (debug_e <= mesh_NcpElems .and. debug_i <= mesh_maxNips) then
@ -401,7 +405,7 @@ subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature, dt, el
debug_e, debug_i, 1, constitutive_state(1,debug_i,debug_e)%p
endif
endif
#endif
!$OMP PARALLEL DO
do k = 1,mesh_NcpElems
do j = 1,mesh_maxNips
@ -440,7 +444,7 @@ subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature, dt, el
call IO_write_jobRealFile(777,'convergedTstar',size(crystallite_Tstar0_v))
write (777,rec=1) crystallite_Tstar0_v
close (777)
#ifndef NEWSTATE
call IO_write_jobRealFile(777,'convergedStateConst')
m = 0_pInt
do i = 1,homogenization_maxNgrains; do j = 1,mesh_maxNips; do k = 1,mesh_NcpElems
@ -450,7 +454,7 @@ subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature, dt, el
enddo
enddo; enddo; enddo
close (777)
#endif
call IO_write_jobRealFile(777,'convergedStateHomog')
m = 0_pInt
do k = 1,mesh_NcpElems; do j = 1,mesh_maxNips

View File

@ -34,10 +34,10 @@ module FEsolving
outdatedByNewInc = .false. !< needs description
integer(pInt), dimension(:,:), allocatable, public :: &
FEsolving_execIP !< needs description
FEsolving_execIP !< for ping-pong scheme always range to max IP, otherwise one specific IP
integer(pInt), dimension(2), public :: &
FEsolving_execElem !< needs description
FEsolving_execElem !< for ping-pong scheme always whole range, otherwise one specific element
character(len=1024), public :: &
modelName !< needs description

View File

@ -13,6 +13,7 @@ module constitutive
implicit none
private
#ifndef NEWSTATE
type(p_vec), public, dimension(:,:,:), allocatable :: &
constitutive_state0, & !< pointer array to microstructure at start of BVP inc
constitutive_partionedState0, & !< pointer array to microstructure at start of homogenization inc
@ -37,7 +38,12 @@ module constitutive
constitutive_maxSizePostResults
integer(pInt), private :: &
constitutive_maxSizeState
#else
integer(pInt), public, dimension(:,:,:), allocatable :: &
constitutive_sizePostResults !< size of postResults array per grain
integer(pInt), public :: &
constitutive_maxSizePostResults
#endif
public :: &
constitutive_init, &
constitutive_homogenizedC, &
@ -45,7 +51,9 @@ module constitutive
constitutive_LpAndItsTangent, &
constitutive_TandItsTangent, &
constitutive_collectDotState, &
#ifndef NEWSTATE
constitutive_collectDeltaState, &
#endif
constitutive_postResults
private :: &
@ -124,10 +132,11 @@ subroutine constitutive_init
use constitutive_none
use constitutive_j2
use constitutive_phenopowerlaw
#ifndef NEWSTATE
use constitutive_titanmod
use constitutive_dislotwin
use constitutive_nonlocal
#endif
implicit none
integer(pInt), parameter :: FILEUNIT = 200_pInt
integer(pInt) :: &
@ -161,9 +170,11 @@ subroutine constitutive_init
if (any(phase_plasticity == PLASTICITY_NONE_ID)) call constitutive_none_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_J2_ID)) call constitutive_j2_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_PHENOPOWERLAW_ID)) call constitutive_phenopowerlaw_init(FILEUNIT)
#ifndef NEWSTATE
if (any(phase_plasticity == PLASTICITY_TITANMOD_ID)) call constitutive_titanmod_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_DISLOTWIN_ID)) call constitutive_dislotwin_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_NONLOCAL_ID)) call constitutive_nonlocal_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_NONLOCAL_ID)) call constitutive_nonlocal_init(FILEUNIT)
#endif
close(FILEUNIT)
write(6,'(/,a)') ' <<<+- constitutive init -+>>>'
@ -190,6 +201,7 @@ subroutine constitutive_init
outputName = PLASTICITY_PHENOPOWERLAW_label
thisOutput => constitutive_phenopowerlaw_output
thisSize => constitutive_phenopowerlaw_sizePostResult
#ifndef NEWSTATE
case (PLASTICITY_DISLOTWIN_ID)
outputName = PLASTICITY_DISLOTWIN_label
thisOutput => constitutive_dislotwin_output
@ -202,6 +214,7 @@ subroutine constitutive_init
outputName = PLASTICITY_NONLOCAL_label
thisOutput => constitutive_nonlocal_output
thisSize => constitutive_nonlocal_sizePostResult
#endif
case default
knownPlasticity = .false.
end select
@ -220,8 +233,9 @@ subroutine constitutive_init
cMax = homogenization_maxNgrains
iMax = mesh_maxNips
eMax = mesh_NcpElems
allocate(constitutive_sizePostResults(cMax,iMax,eMax), source=0_pInt)
#ifndef NEWSTATE
! lumped into new state
allocate(constitutive_state0(cMax,iMax,eMax))
allocate(constitutive_partionedState0(cMax,iMax,eMax))
@ -235,7 +249,6 @@ subroutine constitutive_init
! not needed anymore for new state
allocate(constitutive_sizeDotState(cMax,iMax,eMax), source=0_pInt)
allocate(constitutive_sizeState(cMax,iMax,eMax), source=0_pInt)
allocate(constitutive_sizePostResults(cMax,iMax,eMax), source=0_pInt)
if (any(numerics_integrator == 1_pInt)) then
allocate(constitutive_previousDotState(cMax,iMax,eMax))
allocate(constitutive_previousDotState2(cMax,iMax,eMax))
@ -246,11 +259,12 @@ subroutine constitutive_init
if (any(numerics_integrator == 5_pInt)) then
allocate(constitutive_RKCK45dotState(6,cMax,iMax,eMax))
endif
#endif
do e = 1_pInt,mesh_NcpElems ! loop over elements
ElemLoop:do e = 1_pInt,mesh_NcpElems ! loop over elements
myNgrains = homogenization_Ngrains(mesh_element(3,e))
do i = 1_pInt,FE_Nips(FE_geomtype(mesh_element(2,e))) ! loop over IPs
do g = 1_pInt,myNgrains ! loop over grains
IPloop:do i = 1_pInt,FE_Nips(FE_geomtype(mesh_element(2,e))) ! loop over IPs
GrainLoop:do g = 1_pInt,myNgrains ! loop over grains
select case(phase_elasticity(material_phase(g,i,e)))
case default ! so far no output for elasticity
end select
@ -260,6 +274,7 @@ subroutine constitutive_init
ConstitutivePosition(phase) = ConstitutivePosition(phase)+1_pInt ! not distinguishing between instances of same phase
mappingConstitutive(1:2,g,i,e) = [ConstitutivePosition(phase),phase]
#endif
#ifndef NEWSTATE
select case(phase_plasticity(material_phase(g,i,e)))
case (PLASTICITY_NONE_ID)
allocate(constitutive_state0(g,i,e)%p(constitutive_none_sizeState(instance)))
@ -288,6 +303,7 @@ subroutine constitutive_init
constitutive_sizeState(g,i,e) = 0_pInt
constitutive_sizeDotState(g,i,e) = 0_pInt
constitutive_sizePostResults(g,i,e) = 0_pInt
case (PLASTICITY_J2_ID)
allocate(constitutive_state0(g,i,e)%p(constitutive_j2_sizeState(instance)))
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_j2_sizeState(instance)))
@ -315,6 +331,7 @@ subroutine constitutive_init
constitutive_sizeState(g,i,e) = constitutive_j2_sizeState(instance)
constitutive_sizeDotState(g,i,e) = constitutive_j2_sizeDotState(instance)
constitutive_sizePostResults(g,i,e) = constitutive_j2_sizePostResults(instance)
case (PLASTICITY_PHENOPOWERLAW_ID)
allocate(constitutive_state0(g,i,e)%p(constitutive_phenopowerlaw_sizeState(instance)))
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_phenopowerlaw_sizeState(instance)))
@ -342,6 +359,7 @@ subroutine constitutive_init
constitutive_sizeState(g,i,e) = constitutive_phenopowerlaw_sizeState(instance)
constitutive_sizeDotState(g,i,e) = constitutive_phenopowerlaw_sizeDotState(instance)
constitutive_sizePostResults(g,i,e) = constitutive_phenopowerlaw_sizePostResults(instance)
case (PLASTICITY_DISLOTWIN_ID)
allocate(constitutive_state0(g,i,e)%p(constitutive_dislotwin_sizeState(instance)))
allocate(constitutive_partionedState0(g,i,e)%p(constitutive_dislotwin_sizeState(instance)))
@ -425,18 +443,23 @@ subroutine constitutive_init
constitutive_sizeDotState(g,i,e) = constitutive_nonlocal_sizeDotState(instance)
constitutive_sizePostResults(g,i,e) = constitutive_nonlocal_sizePostResults(instance)
end select
enddo
enddo
enddo
#endif
enddo GrainLoop
enddo IPloop
enddo ElemLoop
#ifndef NEWSTATE
if (nonlocalConstitutionPresent) &
call constitutive_nonlocal_stateInit(constitutive_state0(1,1:iMax,1:eMax))
do e = 1_pInt,mesh_NcpElems ! loop over elements
myNgrains = homogenization_Ngrains(mesh_element(3,e))
forall(i = 1_pInt:FE_Nips(FE_geomtype(mesh_element(2,e))), g = 1_pInt:myNgrains)
constitutive_partionedState0(g,i,e)%p = constitutive_state0(g,i,e)%p
constitutive_state(g,i,e)%p = constitutive_state0(g,i,e)%p ! need to be defined for first call of constitutive_microstructure in crystallite_init
endforall
enddo
#endif
#ifdef HDF
call HDF5_mappingConstitutive(mappingConstitutive)
do phase = 1_pInt,material_Nphase
@ -448,7 +471,7 @@ subroutine constitutive_init
enddo
#endif
#ifndef NEWSTATE
!--------------------------------------------------------------------------------------------------
! write out state size file
call IO_write_jobIntFile(777,'sizeStateConst', size(constitutive_sizeState))
@ -477,7 +500,7 @@ subroutine constitutive_init
write(6,'(a32,1x,7(i8,1x))') 'maxSizePostResults: ', constitutive_maxSizePostResults
endif
flush(6)
#endif
end subroutine constitutive_init
@ -490,10 +513,12 @@ pure function constitutive_homogenizedC(ipc,ip,el)
material_phase, &
PLASTICITY_TITANMOD_ID, &
PLASTICITY_DISLOTWIN_ID
#ifndef NEWSTATE
use constitutive_dislotwin, only: &
constitutive_dislotwin_homogenizedC
use constitutive_titanmod, only: &
constitutive_titanmod_homogenizedC
#endif
use lattice, only: &
lattice_C66
@ -505,13 +530,14 @@ pure function constitutive_homogenizedC(ipc,ip,el)
el !< element number
select case (phase_plasticity(material_phase(ipc,ip,el)))
#ifndef NEWSTATE
case (PLASTICITY_DISLOTWIN_ID)
constitutive_homogenizedC = constitutive_dislotwin_homogenizedC(constitutive_state(ipc,ip,el), &
ipc,ip,el)
case (PLASTICITY_TITANMOD_ID)
constitutive_homogenizedC = constitutive_titanmod_homogenizedC(constitutive_state(ipc,ip,el), &
ipc,ip,el)
#endif
case default
constitutive_homogenizedC = lattice_C66(1:6,1:6,material_phase(ipc,ip,el))
@ -524,6 +550,7 @@ end function constitutive_homogenizedC
!> @brief calls microstructure function of the different constitutive models
!--------------------------------------------------------------------------------------------------
subroutine constitutive_microstructure(temperature, Fe, Fp, ipc, ip, el)
#ifndef NEWSTATE
use material, only: &
phase_plasticity, &
material_phase, &
@ -536,7 +563,8 @@ subroutine constitutive_microstructure(temperature, Fe, Fp, ipc, ip, el)
constitutive_dislotwin_microstructure
use constitutive_nonlocal, only: &
constitutive_nonlocal_microstructure
#endif
implicit none
integer(pInt), intent(in) :: &
ipc, & !< grain number
@ -547,10 +575,7 @@ subroutine constitutive_microstructure(temperature, Fe, Fp, ipc, ip, el)
real(pReal), intent(in), dimension(3,3) :: &
Fe, & !< elastic deformation gradient
Fp !< plastic deformation gradient
! offset = mappingConstitutive(ipc,el,1) ????
! OLD constitutive_state(ipc,ip,el)
! NEW plasticState(phase=material_phase(ipc,ip,el))%state(1:myStateSize,offset)
#ifndef NEWSTATE
select case (phase_plasticity(material_phase(ipc,ip,el)))
case (PLASTICITY_DISLOTWIN_ID)
@ -563,7 +588,7 @@ subroutine constitutive_microstructure(temperature, Fe, Fp, ipc, ip, el)
call constitutive_nonlocal_microstructure(constitutive_state,Fe,Fp,ipc,ip,el)
end select
#endif
end subroutine constitutive_microstructure
@ -576,6 +601,9 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, temperature, ip
use material, only: &
phase_plasticity, &
material_phase, &
#ifdef NEWSTATE
plasticState,&
#endif
PLASTICITY_NONE_ID, &
PLASTICITY_J2_ID, &
PLASTICITY_PHENOPOWERLAW_ID, &
@ -585,14 +613,15 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, temperature, ip
use constitutive_j2, only: &
constitutive_j2_LpAndItsTangent
use constitutive_phenopowerlaw, only: &
constitutive_phenopowerlaw_LpAndItsTangent
constitutive_phenopowerlaw_LpAndItsTangent
#ifndef NEWSTATE
use constitutive_dislotwin, only: &
constitutive_dislotwin_LpAndItsTangent
use constitutive_titanmod, only: &
constitutive_titanmod_LpAndItsTangent
use constitutive_nonlocal, only: &
constitutive_nonlocal_LpAndItsTangent
#endif
implicit none
integer(pInt), intent(in) :: &
ipc, & !< grain number
@ -614,11 +643,22 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, temperature, ip
dLp_dTstar = math_identity2nd(9)
case (PLASTICITY_J2_ID)
#ifdef NEWSTATE
call constitutive_j2_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
plasticState(mappingConstitutive(2,ipc,ip,el))%state(:,mappingConstitutive(1,ipc,ip,el)),ipc,ip,el)
#else
call constitutive_j2_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
constitutive_state(ipc,ip,el),ipc,ip,el)
#endif
case (PLASTICITY_PHENOPOWERLAW_ID)
#ifdef NEWSTATE
call constitutive_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
plasticState(mappingConstitutive(2,ipc,ip,el))%state(:,mappingConstitutive(1,ipc,ip,el)),ipc,ip,el)
#else
call constitutive_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
constitutive_state(ipc,ip,el),ipc,ip,el)
#endif
#ifndef NEWSTATE
case (PLASTICITY_DISLOTWIN_ID)
call constitutive_dislotwin_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
temperature,constitutive_state(ipc,ip,el),ipc,ip,el)
@ -628,6 +668,7 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, temperature, ip
case (PLASTICITY_NONLOCAL_ID)
call constitutive_nonlocal_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, &
temperature, constitutive_state(ipc,ip,el), ipc,ip,el)
#endif
end select
end subroutine constitutive_LpAndItsTangent
@ -719,6 +760,9 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, Temperature,
mesh_maxNips
use material, only: &
phase_plasticity, &
#ifdef NEWSTATE
plasticState, &
#endif
material_phase, &
homogenization_maxNgrains, &
PLASTICITY_NONE_ID, &
@ -731,13 +775,14 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, Temperature,
constitutive_j2_dotState
use constitutive_phenopowerlaw, only: &
constitutive_phenopowerlaw_dotState
#ifndef NEWSTATE
use constitutive_dislotwin, only: &
constitutive_dislotwin_dotState
use constitutive_titanmod, only: &
constitutive_titanmod_dotState
use constitutive_nonlocal, only: &
constitutive_nonlocal_dotState
#endif
implicit none
integer(pInt), intent(in) :: &
ipc, & !< grain number
@ -762,16 +807,27 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, Temperature,
call system_clock(count=tick,count_rate=tickrate,count_max=maxticks)
select case (phase_plasticity(material_phase(ipc,ip,el)))
case (PLASTICITY_NONE_ID)
constitutive_dotState(ipc,ip,el)%p = 0.0_pReal !ToDo: needed or will it remain zero anyway?
case (PLASTICITY_J2_ID)
#ifdef NEWSTATE
plasticState(mappingConstitutive(2,ipc,ip,el))%dotState(:,mappingConstitutive(1,ipc,ip,el)) &
= constitutive_j2_dotState(Tstar_v,plasticState(mappingConstitutive(2,ipc,ip,el))% &
state(:,mappingConstitutive(1,ipc,ip,el)), ipc,ip,el)
#else
constitutive_dotState(ipc,ip,el)%p = constitutive_j2_dotState(Tstar_v,&
constitutive_state(ipc,ip,el), ipc,ip,el)
#endif
case (PLASTICITY_PHENOPOWERLAW_ID)
#ifdef NEWSTATE
plasticState(mappingConstitutive(2,ipc,ip,el))%dotState(:,mappingConstitutive(1,ipc,ip,el)) &
= constitutive_phenopowerlaw_dotState(Tstar_v,plasticState(mappingConstitutive(2,ipc,ip,el))% &
state(:,mappingConstitutive(1,ipc,ip,el)), ipc,ip,el)
#else
constitutive_dotState(ipc,ip,el)%p = constitutive_phenopowerlaw_dotState(Tstar_v,&
constitutive_state(ipc,ip,el), ipc,ip,el)
#endif
#ifndef NEWSTATE
case (PLASTICITY_TITANMOD_ID)
constitutive_dotState(ipc,ip,el)%p = constitutive_titanmod_dotState(Tstar_v,Temperature,&
constitutive_state(ipc,ip,el), ipc,ip,el)
@ -782,7 +838,7 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, Temperature,
constitutive_dotState(ipc,ip,el)%p = constitutive_nonlocal_dotState(Tstar_v, FeArray, FpArray, &
Temperature, constitutive_state, constitutive_state0, subdt, &
subfracArray, ipc, ip, el)
#endif
end select
if (iand(debug_level(debug_constitutive), debug_levelBasic) /= 0_pInt) then
@ -797,7 +853,7 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, Temperature,
end subroutine constitutive_collectDotState
#ifndef NEWSTATE
!--------------------------------------------------------------------------------------------------
!> @brief contains the constitutive equation for calculating the incremental change of
!> microstructure based on the current stress and state
@ -840,8 +896,9 @@ subroutine constitutive_collectDeltaState(Tstar_v, ipc, ip, el)
constitutive_state(ipc,ip,el), Tstar_v,ipc,ip,el)
case default
#ifndef NEWSTATE
constitutive_deltaState(ipc,ip,el)%p = 0.0_pReal !ToDo: needed or will it remain zero anyway?
#endif
end select
if (iand(debug_level(debug_constitutive), debug_levelBasic) /= 0_pInt) then
@ -855,7 +912,7 @@ subroutine constitutive_collectDeltaState(Tstar_v, ipc, ip, el)
endif
end subroutine constitutive_collectDeltaState
#endif
!--------------------------------------------------------------------------------------------------
!> @brief returns array of constitutive results
@ -865,6 +922,9 @@ function constitutive_postResults(Tstar_v, FeArray, temperature, ipc, ip, el)
mesh_NcpElems, &
mesh_maxNips
use material, only: &
#ifdef NEWSTATE
plasticState, &
#endif
phase_plasticity, &
material_phase, &
homogenization_maxNgrains, &
@ -880,14 +940,15 @@ function constitutive_postResults(Tstar_v, FeArray, temperature, ipc, ip, el)
#endif
constitutive_j2_postResults
use constitutive_phenopowerlaw, only: &
constitutive_phenopowerlaw_postResults
constitutive_phenopowerlaw_postResults
#ifndef NEWSTATE
use constitutive_dislotwin, only: &
constitutive_dislotwin_postResults
use constitutive_titanmod, only: &
constitutive_titanmod_postResults
use constitutive_nonlocal, only: &
constitutive_nonlocal_postResults
#endif
implicit none
integer(pInt), intent(in) :: &
ipc, & !< grain number
@ -907,25 +968,39 @@ function constitutive_postResults(Tstar_v, FeArray, temperature, ipc, ip, el)
select case (phase_plasticity(material_phase(ipc,ip,el)))
case (PLASTICITY_NONE_ID)
#ifndef NEWSTATE
case (PLASTICITY_TITANMOD_ID)
constitutive_postResults = constitutive_titanmod_postResults(&
constitutive_state(ipc,ip,el),ipc,ip,el)
#endif
case (PLASTICITY_J2_ID)
#ifdef HDF
call constitutive_j2_postResults2(Tstar_v,constitutive_state(ipc,ip,el),ipc,ip,el,1)
#endif
#ifdef NEWSTATE
constitutive_postResults= constitutive_j2_postResults(Tstar_v, &
plasticState(mappingConstitutive(2,ipc,ip,el))% &
state(:,mappingConstitutive(1,ipc,ip,el)),ipc,ip,el)
#else
constitutive_postResults = constitutive_j2_postResults(Tstar_v,&
constitutive_state(ipc,ip,el),ipc,ip,el)
constitutive_state(ipc,ip,el),ipc,ip,el)
#endif
case (PLASTICITY_PHENOPOWERLAW_ID)
#ifdef NEWSTATE
constitutive_postResults = constitutive_phenopowerlaw_postResults(Tstar_v,&
constitutive_state(ipc,ip,el),ipc,ip,el)
plasticState(mappingConstitutive(2,ipc,ip,el))% &
state(:,mappingConstitutive(1,ipc,ip,el)),ipc,ip,el)
#else
constitutive_postResults = constitutive_phenopowerlaw_postResults(Tstar_v,&
constitutive_state(ipc,ip,el),ipc,ip,el)
case (PLASTICITY_DISLOTWIN_ID)
constitutive_postResults = constitutive_dislotwin_postResults(Tstar_v,Temperature,&
constitutive_state(ipc,ip,el),ipc,ip,el)
case (PLASTICITY_NONLOCAL_ID)
constitutive_postResults = constitutive_nonlocal_postResults(Tstar_v, FeArray, &
constitutive_state, constitutive_dotstate(ipc,ip,el), ipc, ip, el)
#endif
end select
end function constitutive_postResults

View File

@ -312,7 +312,7 @@ subroutine constitutive_j2_init(fileUnit)
enddo outputsLoop
#ifdef NEWSTATE
sizeState = 1
plasticState(phase)%sizeState = sizeState
plasticState(phase)%stateSize = sizeState
allocate(plasticState(phase)%state0 (sizeState,NofMyPhase),source=constitutive_j2_tau0(instance))
allocate(plasticState(phase)%partionedState0(sizeState,NofMyPhase),source=constitutive_j2_tau0(instance))
allocate(plasticState(phase)%subState0 (sizeState,NofMyPhase),source=0.0_pReal)

View File

@ -12,8 +12,10 @@ module constitutive_none
implicit none
private
integer(pInt), dimension(:), allocatable, public, protected :: &
#ifndef NEWSTATE
constitutive_none_sizeDotState, &
constitutive_none_sizeState, &
#endif
constitutive_none_sizePostResults
integer(pInt), dimension(:,:), allocatable, target, public :: &
@ -42,14 +44,19 @@ subroutine constitutive_none_init(fileUnit)
phase_plasticity, &
phase_Noutput, &
PLASTICITY_NONE_label, &
#ifdef NEWSTATE
material_phase, &
plasticState, &
#endif
PLASTICITY_NONE_ID, &
MATERIAL_partPhase
implicit none
integer(pInt), intent(in) :: fileUnit
integer(pInt) :: maxNinstance
integer(pInt) :: &
maxNinstance, &
phase
write(6,'(/,a)') ' <<<+- constitutive_'//PLASTICITY_NONE_label//' init -+>>>'
write(6,'(a)') ' $Id$'
@ -61,9 +68,16 @@ subroutine constitutive_none_init(fileUnit)
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) &
write(6,'(a16,1x,i5,/)') '# instances:',maxNinstance
#ifdef NEWSTATE
initializeInstances: do phase = 1_pInt, size(phase_plasticity)
if (phase_plasticity(phase) == PLASTICITY_none_ID .and. count(material_phase==phase)/=0) &
plasticState(phase)%stateSize = 0_pInt
enddo initializeInstances
#else
allocate(constitutive_none_sizeDotState(maxNinstance), source=1_pInt)
allocate(constitutive_none_sizeState(maxNinstance), source=1_pInt)
#endif
allocate(constitutive_none_sizePostResults(maxNinstance), source=0_pInt)
end subroutine constitutive_none_init