no need to store the same information multiple times
This commit is contained in:
parent
d0d963a2cc
commit
3a4bb59057
|
@ -69,8 +69,7 @@ module crystallite
|
||||||
logical, dimension(:,:,:), allocatable, public :: &
|
logical, dimension(:,:,:), allocatable, public :: &
|
||||||
crystallite_requested !< used by upper level (homogenization) to request crystallite calculation
|
crystallite_requested !< used by upper level (homogenization) to request crystallite calculation
|
||||||
logical, dimension(:,:,:), allocatable :: &
|
logical, dimension(:,:,:), allocatable :: &
|
||||||
crystallite_converged, & !< convergence flag
|
crystallite_converged !< convergence flag
|
||||||
crystallite_localPlasticity !< indicates this grain to have purely local constitutive law
|
|
||||||
|
|
||||||
type :: tOutput !< new requested output (per phase)
|
type :: tOutput !< new requested output (per phase)
|
||||||
character(len=pStringLen), allocatable, dimension(:) :: &
|
character(len=pStringLen), allocatable, dimension(:) :: &
|
||||||
|
@ -158,7 +157,6 @@ subroutine crystallite_init
|
||||||
|
|
||||||
allocate(crystallite_orientation(cMax,iMax,eMax))
|
allocate(crystallite_orientation(cMax,iMax,eMax))
|
||||||
|
|
||||||
allocate(crystallite_localPlasticity(cMax,iMax,eMax), source=.true.)
|
|
||||||
allocate(crystallite_requested(cMax,iMax,eMax), source=.false.)
|
allocate(crystallite_requested(cMax,iMax,eMax), source=.false.)
|
||||||
allocate(crystallite_converged(cMax,iMax,eMax), source=.true.)
|
allocate(crystallite_converged(cMax,iMax,eMax), source=.true.)
|
||||||
|
|
||||||
|
@ -238,7 +236,6 @@ subroutine crystallite_init
|
||||||
/ math_det33(crystallite_Fp0(1:3,1:3,c,i,e))**(1.0_pReal/3.0_pReal)
|
/ math_det33(crystallite_Fp0(1:3,1:3,c,i,e))**(1.0_pReal/3.0_pReal)
|
||||||
crystallite_Fi0(1:3,1:3,c,i,e) = constitutive_initialFi(c,i,e)
|
crystallite_Fi0(1:3,1:3,c,i,e) = constitutive_initialFi(c,i,e)
|
||||||
crystallite_F0(1:3,1:3,c,i,e) = math_I3
|
crystallite_F0(1:3,1:3,c,i,e) = math_I3
|
||||||
crystallite_localPlasticity(c,i,e) = phase_localPlasticity(material_phaseAt(c,e))
|
|
||||||
crystallite_Fe(1:3,1:3,c,i,e) = math_inv33(matmul(crystallite_Fi0(1:3,1:3,c,i,e), &
|
crystallite_Fe(1:3,1:3,c,i,e) = math_inv33(matmul(crystallite_Fi0(1:3,1:3,c,i,e), &
|
||||||
crystallite_Fp0(1:3,1:3,c,i,e))) ! assuming that euler angles are given in internal strain free configuration
|
crystallite_Fp0(1:3,1:3,c,i,e))) ! assuming that euler angles are given in internal strain free configuration
|
||||||
crystallite_Fp(1:3,1:3,c,i,e) = crystallite_Fp0(1:3,1:3,c,i,e)
|
crystallite_Fp(1:3,1:3,c,i,e) = crystallite_Fp0(1:3,1:3,c,i,e)
|
||||||
|
@ -248,7 +245,7 @@ subroutine crystallite_init
|
||||||
enddo
|
enddo
|
||||||
!$OMP END PARALLEL DO
|
!$OMP END PARALLEL DO
|
||||||
|
|
||||||
if(any(.not. crystallite_localPlasticity) .and. .not. usePingPong) call IO_error(601) ! exit if nonlocal but no ping-pong ToDo: Why not check earlier? or in nonlocal?
|
if(any(plasticState%nonlocal) .and. .not. usePingPong) call IO_error(601) ! exit if nonlocal but no ping-pong ToDo: Why not check earlier? or in nonlocal?
|
||||||
|
|
||||||
crystallite_partionedFp0 = crystallite_Fp0
|
crystallite_partionedFp0 = crystallite_Fp0
|
||||||
crystallite_partionedFi0 = crystallite_Fi0
|
crystallite_partionedFi0 = crystallite_Fi0
|
||||||
|
@ -277,7 +274,6 @@ subroutine crystallite_init
|
||||||
write(6,'(a42,1x,i10)') ' # of elements: ', eMax
|
write(6,'(a42,1x,i10)') ' # of elements: ', eMax
|
||||||
write(6,'(a42,1x,i10)') ' # of integration points/element: ', iMax
|
write(6,'(a42,1x,i10)') ' # of integration points/element: ', iMax
|
||||||
write(6,'(a42,1x,i10)') 'max # of constituents/integration point: ', cMax
|
write(6,'(a42,1x,i10)') 'max # of constituents/integration point: ', cMax
|
||||||
write(6,'(a42,1x,i10)') ' # of nonlocal constituents: ',count(.not. crystallite_localPlasticity)
|
|
||||||
flush(6)
|
flush(6)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -1606,7 +1602,7 @@ subroutine integrateStateRKCK45(todo)
|
||||||
enddo; enddo; enddo
|
enddo; enddo; enddo
|
||||||
!$OMP END PARALLEL DO
|
!$OMP END PARALLEL DO
|
||||||
|
|
||||||
if (nonlocalBroken) call nonlocalConvergenceCheck
|
if(nonlocalBroken) call nonlocalConvergenceCheck
|
||||||
|
|
||||||
end subroutine integrateStateRKCK45
|
end subroutine integrateStateRKCK45
|
||||||
|
|
||||||
|
@ -1617,7 +1613,14 @@ end subroutine integrateStateRKCK45
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine nonlocalConvergenceCheck
|
subroutine nonlocalConvergenceCheck
|
||||||
|
|
||||||
where( .not. crystallite_localPlasticity) crystallite_converged = .false.
|
integer :: e,i,p
|
||||||
|
|
||||||
|
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
||||||
|
p = material_phaseAt(1,e)
|
||||||
|
do i = FEsolving_execIP(1),FEsolving_execIP(2)
|
||||||
|
if(plasticState(p)%nonlocal) crystallite_converged(1,i,e) = .false.
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
end subroutine nonlocalConvergenceCheck
|
end subroutine nonlocalConvergenceCheck
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue