avoid writing to public variable crystallite_todo
This commit is contained in:
parent
6b11d43842
commit
ec53e4c318
|
@ -1016,10 +1016,10 @@ subroutine integrateStateFPI
|
||||||
real(pReal), dimension(:), allocatable :: plastic_dotState_p1, plastic_dotState_p2
|
real(pReal), dimension(:), allocatable :: plastic_dotState_p1, plastic_dotState_p2
|
||||||
real(pReal), dimension(constitutive_source_maxSizeDotState,2,maxval(phase_Nsources)) :: source_dotState
|
real(pReal), dimension(constitutive_source_maxSizeDotState,2,maxval(phase_Nsources)) :: source_dotState
|
||||||
logical :: &
|
logical :: &
|
||||||
nonlocalBroken
|
nonlocalBroken, broken
|
||||||
|
|
||||||
nonlocalBroken = .false.
|
nonlocalBroken = .false.
|
||||||
!$OMP PARALLEL DO PRIVATE(sizeDotState,r,zeta,p,c,plastic_dotState_p1, plastic_dotState_p2,source_dotState)
|
!$OMP PARALLEL DO PRIVATE(sizeDotState,r,zeta,p,c,plastic_dotState_p1, plastic_dotState_p2,source_dotState,broken)
|
||||||
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
||||||
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
||||||
do g = 1,homogenization_Ngrains(material_homogenizationAt(e))
|
do g = 1,homogenization_Ngrains(material_homogenizationAt(e))
|
||||||
|
@ -1027,15 +1027,15 @@ subroutine integrateStateFPI
|
||||||
|
|
||||||
p = material_phaseAt(g,e); c = material_phaseMemberAt(g,i,e)
|
p = material_phaseAt(g,e); c = material_phaseMemberAt(g,i,e)
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = .not. constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
broken = constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedF0, &
|
crystallite_partionedF0, &
|
||||||
crystallite_Fi(1:3,1:3,g,i,e), &
|
crystallite_Fi(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedFp0, &
|
crystallite_partionedFp0, &
|
||||||
crystallite_subdt(g,i,e), g,i,e)
|
crystallite_subdt(g,i,e), g,i,e)
|
||||||
|
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
sizeDotState = plasticState(p)%sizeDotState
|
sizeDotState = plasticState(p)%sizeDotState
|
||||||
plasticState(p)%state(1:sizeDotState,c) = plasticState(p)%subState0(1:sizeDotState,c) &
|
plasticState(p)%state(1:sizeDotState,c) = plasticState(p)%subState0(1:sizeDotState,c) &
|
||||||
|
@ -1060,16 +1060,16 @@ subroutine integrateStateFPI
|
||||||
source_dotState(1:sizeDotState,1,s) = sourceState(p)%p(s)%dotState(:,c)
|
source_dotState(1:sizeDotState,1,s) = sourceState(p)%p(s)%dotState(:,c)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = integrateStress(g,i,e)
|
broken = .not. integrateStress(g,i,e)
|
||||||
if(.not. crystallite_todo(g,i,e)) exit iteration
|
if(broken) exit iteration
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = .not. constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
broken = constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedF0, &
|
crystallite_partionedF0, &
|
||||||
crystallite_Fi(1:3,1:3,g,i,e), &
|
crystallite_Fi(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedFp0, &
|
crystallite_partionedFp0, &
|
||||||
crystallite_subdt(g,i,e), g,i,e)
|
crystallite_subdt(g,i,e), g,i,e)
|
||||||
|
|
||||||
if(.not. crystallite_todo(g,i,e)) exit iteration
|
if(broken) exit iteration
|
||||||
|
|
||||||
sizeDotState = plasticState(p)%sizeDotState
|
sizeDotState = plasticState(p)%sizeDotState
|
||||||
zeta = damper(plasticState(p)%dotState(:,c),plastic_dotState_p1,plastic_dotState_p2)
|
zeta = damper(plasticState(p)%dotState(:,c),plastic_dotState_p1,plastic_dotState_p2)
|
||||||
|
@ -1102,12 +1102,12 @@ subroutine integrateStateFPI
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
if(crystallite_converged(g,i,e)) then
|
if(crystallite_converged(g,i,e)) then
|
||||||
crystallite_todo(g,i,e) = stateJump(g,i,e)
|
broken = .not. stateJump(g,i,e)
|
||||||
exit iteration
|
exit iteration
|
||||||
endif
|
endif
|
||||||
|
|
||||||
enddo iteration
|
enddo iteration
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@ -1155,10 +1155,10 @@ subroutine integrateStateEuler
|
||||||
s, &
|
s, &
|
||||||
sizeDotState
|
sizeDotState
|
||||||
logical :: &
|
logical :: &
|
||||||
nonlocalBroken
|
nonlocalBroken, broken
|
||||||
|
|
||||||
nonlocalBroken = .false.
|
nonlocalBroken = .false.
|
||||||
!$OMP PARALLEL DO PRIVATE (sizeDotState,p,c)
|
!$OMP PARALLEL DO PRIVATE (sizeDotState,p,c,broken)
|
||||||
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
||||||
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
||||||
do g = 1,homogenization_Ngrains(material_homogenizationAt(e))
|
do g = 1,homogenization_Ngrains(material_homogenizationAt(e))
|
||||||
|
@ -1166,15 +1166,15 @@ subroutine integrateStateEuler
|
||||||
|
|
||||||
p = material_phaseAt(g,e); c = material_phaseMemberAt(g,i,e)
|
p = material_phaseAt(g,e); c = material_phaseMemberAt(g,i,e)
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = .not. constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
broken = constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedF0, &
|
crystallite_partionedF0, &
|
||||||
crystallite_Fi(1:3,1:3,g,i,e), &
|
crystallite_Fi(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedFp0, &
|
crystallite_partionedFp0, &
|
||||||
crystallite_subdt(g,i,e), g,i,e)
|
crystallite_subdt(g,i,e), g,i,e)
|
||||||
|
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
sizeDotState = plasticState(p)%sizeDotState
|
sizeDotState = plasticState(p)%sizeDotState
|
||||||
plasticState(p)%state(1:sizeDotState,c) = plasticState(p)%subState0(1:sizeDotState,c) &
|
plasticState(p)%state(1:sizeDotState,c) = plasticState(p)%subState0(1:sizeDotState,c) &
|
||||||
|
@ -1187,16 +1187,16 @@ subroutine integrateStateEuler
|
||||||
* crystallite_subdt(g,i,e)
|
* crystallite_subdt(g,i,e)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = stateJump(g,i,e)
|
broken = .not. stateJump(g,i,e)
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = integrateStress(g,i,e)
|
broken = .not. integrateStress(g,i,e)
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
|
|
||||||
crystallite_converged(g,i,e) = crystallite_todo(g,i,e)
|
crystallite_converged(g,i,e) = .not. broken
|
||||||
|
|
||||||
endif
|
endif
|
||||||
enddo; enddo; enddo
|
enddo; enddo; enddo
|
||||||
|
@ -1221,13 +1221,13 @@ subroutine integrateStateAdaptiveEuler
|
||||||
s, &
|
s, &
|
||||||
sizeDotState
|
sizeDotState
|
||||||
logical :: &
|
logical :: &
|
||||||
nonlocalBroken
|
nonlocalBroken, broken
|
||||||
|
|
||||||
real(pReal), dimension(constitutive_plasticity_maxSizeDotState) :: residuum_plastic
|
real(pReal), dimension(constitutive_plasticity_maxSizeDotState) :: residuum_plastic
|
||||||
real(pReal), dimension(constitutive_source_maxSizeDotState,maxval(phase_Nsources)) :: residuum_source
|
real(pReal), dimension(constitutive_source_maxSizeDotState,maxval(phase_Nsources)) :: residuum_source
|
||||||
|
|
||||||
nonlocalBroken = .false.
|
nonlocalBroken = .false.
|
||||||
!$OMP PARALLEL DO PRIVATE(sizeDotState,p,c,residuum_plastic,residuum_source)
|
!$OMP PARALLEL DO PRIVATE(sizeDotState,p,c,residuum_plastic,residuum_source,broken)
|
||||||
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
||||||
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
||||||
do g = 1,homogenization_Ngrains(material_homogenizationAt(e))
|
do g = 1,homogenization_Ngrains(material_homogenizationAt(e))
|
||||||
|
@ -1235,15 +1235,15 @@ subroutine integrateStateAdaptiveEuler
|
||||||
|
|
||||||
p = material_phaseAt(g,e); c = material_phaseMemberAt(g,i,e)
|
p = material_phaseAt(g,e); c = material_phaseMemberAt(g,i,e)
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = .not. constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
broken = constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedF0, &
|
crystallite_partionedF0, &
|
||||||
crystallite_Fi(1:3,1:3,g,i,e), &
|
crystallite_Fi(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedFp0, &
|
crystallite_partionedFp0, &
|
||||||
crystallite_subdt(g,i,e), g,i,e)
|
crystallite_subdt(g,i,e), g,i,e)
|
||||||
|
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
sizeDotState = plasticState(p)%sizeDotState
|
sizeDotState = plasticState(p)%sizeDotState
|
||||||
|
|
||||||
|
@ -1259,25 +1259,25 @@ subroutine integrateStateAdaptiveEuler
|
||||||
+ sourceState(p)%p(s)%dotstate(1:sizeDotState,c) * crystallite_subdt(g,i,e)
|
+ sourceState(p)%p(s)%dotstate(1:sizeDotState,c) * crystallite_subdt(g,i,e)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = stateJump(g,i,e)
|
broken = .not. stateJump(g,i,e)
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = integrateStress(g,i,e)
|
broken = .not. integrateStress(g,i,e)
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = .not. constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
broken = constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedF0, &
|
crystallite_partionedF0, &
|
||||||
crystallite_Fi(1:3,1:3,g,i,e), &
|
crystallite_Fi(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedFp0, &
|
crystallite_partionedFp0, &
|
||||||
crystallite_subdt(g,i,e), g,i,e)
|
crystallite_subdt(g,i,e), g,i,e)
|
||||||
|
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
|
|
||||||
sizeDotState = plasticState(p)%sizeDotState
|
sizeDotState = plasticState(p)%sizeDotState
|
||||||
|
@ -1333,12 +1333,12 @@ subroutine integrateStateRK4
|
||||||
s, &
|
s, &
|
||||||
sizeDotState
|
sizeDotState
|
||||||
logical :: &
|
logical :: &
|
||||||
nonlocalBroken
|
nonlocalBroken, broken
|
||||||
|
|
||||||
real(pReal), dimension(constitutive_source_maxSizeDotState,4,maxval(phase_Nsources)) :: source_RK4dotState
|
real(pReal), dimension(constitutive_source_maxSizeDotState,4,maxval(phase_Nsources)) :: source_RK4dotState
|
||||||
real(pReal), dimension(constitutive_plasticity_maxSizeDotState,4) :: plastic_RK4dotState
|
real(pReal), dimension(constitutive_plasticity_maxSizeDotState,4) :: plastic_RK4dotState
|
||||||
nonlocalBroken = .false.
|
nonlocalBroken = .false.
|
||||||
!$OMP PARALLEL DO PRIVATE(sizeDotState,p,c,source_RK4dotState,plastic_RK4dotState)
|
!$OMP PARALLEL DO PRIVATE(sizeDotState,p,c,source_RK4dotState,plastic_RK4dotState,broken)
|
||||||
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
||||||
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
||||||
do g = 1,homogenization_Ngrains(material_homogenizationAt(e))
|
do g = 1,homogenization_Ngrains(material_homogenizationAt(e))
|
||||||
|
@ -1346,15 +1346,15 @@ subroutine integrateStateRK4
|
||||||
|
|
||||||
p = material_phaseAt(g,e); c = material_phaseMemberAt(g,i,e)
|
p = material_phaseAt(g,e); c = material_phaseMemberAt(g,i,e)
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = .not. constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
broken = constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedF0, &
|
crystallite_partionedF0, &
|
||||||
crystallite_Fi(1:3,1:3,g,i,e), &
|
crystallite_Fi(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedFp0, &
|
crystallite_partionedFp0, &
|
||||||
crystallite_subdt(g,i,e), g,i,e)
|
crystallite_subdt(g,i,e), g,i,e)
|
||||||
|
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
do stage = 1,3
|
do stage = 1,3
|
||||||
sizeDotState = plasticState(p)%sizeDotState
|
sizeDotState = plasticState(p)%sizeDotState
|
||||||
|
@ -1388,24 +1388,24 @@ subroutine integrateStateRK4
|
||||||
* crystallite_subdt(g,i,e)
|
* crystallite_subdt(g,i,e)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = integrateStress(g,i,e,CC(stage))
|
broken = .not. integrateStress(g,i,e,CC(stage))
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) exit
|
if(broken) exit
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = .not. constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
broken = constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedF0, &
|
crystallite_partionedF0, &
|
||||||
crystallite_Fi(1:3,1:3,g,i,e), &
|
crystallite_Fi(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedFp0, &
|
crystallite_partionedFp0, &
|
||||||
crystallite_subdt(g,i,e)*CC(stage), g,i,e)
|
crystallite_subdt(g,i,e)*CC(stage), g,i,e)
|
||||||
|
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) exit
|
if(broken) exit
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
sizeDotState = plasticState(p)%sizeDotState
|
sizeDotState = plasticState(p)%sizeDotState
|
||||||
|
|
||||||
|
@ -1427,15 +1427,15 @@ subroutine integrateStateRK4
|
||||||
* crystallite_subdt(g,i,e)
|
* crystallite_subdt(g,i,e)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = stateJump(g,i,e)
|
broken = .not. stateJump(g,i,e)
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = integrateStress(g,i,e)
|
broken = .not. integrateStress(g,i,e)
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
crystallite_converged(g,i,e) = crystallite_todo(g,i,e) ! consider converged if not broken
|
crystallite_converged(g,i,e) = .not. broken
|
||||||
|
|
||||||
endif
|
endif
|
||||||
enddo; enddo; enddo
|
enddo; enddo; enddo
|
||||||
|
@ -1483,12 +1483,12 @@ subroutine integrateStateRKCK45
|
||||||
s, &
|
s, &
|
||||||
sizeDotState
|
sizeDotState
|
||||||
logical :: &
|
logical :: &
|
||||||
nonlocalBroken
|
nonlocalBroken, broken
|
||||||
real(pReal), dimension(constitutive_source_maxSizeDotState,6,maxval(phase_Nsources)) :: source_RKdotState
|
real(pReal), dimension(constitutive_source_maxSizeDotState,6,maxval(phase_Nsources)) :: source_RKdotState
|
||||||
real(pReal), dimension(constitutive_plasticity_maxSizeDotState,6) :: plastic_RKdotState
|
real(pReal), dimension(constitutive_plasticity_maxSizeDotState,6) :: plastic_RKdotState
|
||||||
|
|
||||||
nonlocalBroken = .false.
|
nonlocalBroken = .false.
|
||||||
!$OMP PARALLEL DO PRIVATE(sizeDotState,p,c,plastic_RKdotState,source_RKdotState)
|
!$OMP PARALLEL DO PRIVATE(sizeDotState,p,c,plastic_RKdotState,source_RKdotState,broken)
|
||||||
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
||||||
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
||||||
do g = 1,homogenization_Ngrains(material_homogenizationAt(e))
|
do g = 1,homogenization_Ngrains(material_homogenizationAt(e))
|
||||||
|
@ -1496,15 +1496,15 @@ subroutine integrateStateRKCK45
|
||||||
|
|
||||||
p = material_phaseAt(g,e); c = material_phaseMemberAt(g,i,e)
|
p = material_phaseAt(g,e); c = material_phaseMemberAt(g,i,e)
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = .not. constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
broken = constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedF0, &
|
crystallite_partionedF0, &
|
||||||
crystallite_Fi(1:3,1:3,g,i,e), &
|
crystallite_Fi(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedFp0, &
|
crystallite_partionedFp0, &
|
||||||
crystallite_subdt(g,i,e), g,i,e)
|
crystallite_subdt(g,i,e), g,i,e)
|
||||||
|
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
do stage = 1,5
|
do stage = 1,5
|
||||||
sizeDotState = plasticState(p)%sizeDotState
|
sizeDotState = plasticState(p)%sizeDotState
|
||||||
|
@ -1538,23 +1538,23 @@ subroutine integrateStateRKCK45
|
||||||
* crystallite_subdt(g,i,e)
|
* crystallite_subdt(g,i,e)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = integrateStress(g,i,e,CC(stage))
|
broken = .not. integrateStress(g,i,e,CC(stage))
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) exit
|
if(broken) exit
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = .not. constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
broken = constitutive_collectDotState(crystallite_S(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedF0, &
|
crystallite_partionedF0, &
|
||||||
crystallite_Fi(1:3,1:3,g,i,e), &
|
crystallite_Fi(1:3,1:3,g,i,e), &
|
||||||
crystallite_partionedFp0, &
|
crystallite_partionedFp0, &
|
||||||
crystallite_subdt(g,i,e)*CC(stage), g,i,e)
|
crystallite_subdt(g,i,e)*CC(stage), g,i,e)
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) exit
|
if(broken) exit
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
sizeDotState = plasticState(p)%sizeDotState
|
sizeDotState = plasticState(p)%sizeDotState
|
||||||
|
|
||||||
|
@ -1563,7 +1563,7 @@ subroutine integrateStateRKCK45
|
||||||
plasticState(p)%state(1:sizeDotState,c) = plasticState(p)%subState0(1:sizeDotState,c) &
|
plasticState(p)%state(1:sizeDotState,c) = plasticState(p)%subState0(1:sizeDotState,c) &
|
||||||
+ plasticState(p)%dotState (1:sizeDotState,c) &
|
+ plasticState(p)%dotState (1:sizeDotState,c) &
|
||||||
* crystallite_subdt(g,i,e)
|
* crystallite_subdt(g,i,e)
|
||||||
crystallite_todo(g,i,e) = converged( matmul(plastic_RKdotState(1:sizeDotState,1:6),DB) &
|
broken = .not. converged( matmul(plastic_RKdotState(1:sizeDotState,1:6),DB) &
|
||||||
* crystallite_subdt(g,i,e), &
|
* crystallite_subdt(g,i,e), &
|
||||||
plasticState(p)%state(1:sizeDotState,c), &
|
plasticState(p)%state(1:sizeDotState,c), &
|
||||||
plasticState(p)%atol(1:sizeDotState))
|
plasticState(p)%atol(1:sizeDotState))
|
||||||
|
@ -1576,25 +1576,25 @@ subroutine integrateStateRKCK45
|
||||||
sourceState(p)%p(s)%state(1:sizeDotState,c) = sourceState(p)%p(s)%subState0(1:sizeDotState,c) &
|
sourceState(p)%p(s)%state(1:sizeDotState,c) = sourceState(p)%p(s)%subState0(1:sizeDotState,c) &
|
||||||
+ sourceState(p)%p(s)%dotState (1:sizeDotState,c) &
|
+ sourceState(p)%p(s)%dotState (1:sizeDotState,c) &
|
||||||
* crystallite_subdt(g,i,e)
|
* crystallite_subdt(g,i,e)
|
||||||
crystallite_todo(g,i,e) = crystallite_todo(g,i,e) .and. &
|
broken = broken .and. .not. &
|
||||||
converged(matmul(source_RKdotState(1:sizeDotState,1:6,s),DB) &
|
converged(matmul(source_RKdotState(1:sizeDotState,1:6,s),DB) &
|
||||||
* crystallite_subdt(g,i,e), &
|
* crystallite_subdt(g,i,e), &
|
||||||
sourceState(p)%p(s)%state(1:sizeDotState,c), &
|
sourceState(p)%p(s)%state(1:sizeDotState,c), &
|
||||||
sourceState(p)%p(s)%atol(1:sizeDotState))
|
sourceState(p)%p(s)%atol(1:sizeDotState))
|
||||||
enddo
|
enddo
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = stateJump(g,i,e)
|
broken = .not. stateJump(g,i,e)
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
if(.not. crystallite_todo(g,i,e)) cycle
|
if(broken) cycle
|
||||||
|
|
||||||
crystallite_todo(g,i,e) = integrateStress(g,i,e)
|
broken = .not. integrateStress(g,i,e)
|
||||||
if(.not. (crystallite_todo(g,i,e) .or. crystallite_localPlasticity(g,i,e))) &
|
if(broken .and. .not. crystallite_localPlasticity(g,i,e)) &
|
||||||
nonlocalBroken = .true.
|
nonlocalBroken = .true.
|
||||||
crystallite_converged(g,i,e) = crystallite_todo(g,i,e) ! consider converged if not broken
|
crystallite_converged(g,i,e) = .not. broken
|
||||||
|
|
||||||
endif
|
endif
|
||||||
enddo; enddo; enddo
|
enddo; enddo; enddo
|
||||||
|
|
Loading…
Reference in New Issue