passing the entire defomration gradient information through microstructure
This commit is contained in:
parent
30f4a5a70f
commit
de6b712b09
|
@ -436,7 +436,7 @@ end function constitutive_homogenizedC
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief calls microstructure function of the different constitutive models
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine constitutive_microstructure(orientations, Fe, Fp, ipc, ip, el)
|
||||
subroutine constitutive_microstructure(orientations, Fe, Fp, ipc, ip, el, F0s,Fes,Fps)
|
||||
use prec, only: &
|
||||
pReal
|
||||
use material, only: &
|
||||
|
@ -473,7 +473,10 @@ subroutine constitutive_microstructure(orientations, Fe, Fp, ipc, ip, el)
|
|||
ho, & !< homogenization
|
||||
tme !< thermal member position
|
||||
real(pReal), intent(in), dimension(:,:,:,:) :: &
|
||||
orientations !< crystal orientations as quaternions
|
||||
orientations, &
|
||||
F0s, &
|
||||
Fes, &
|
||||
Fps !< crystal orientations as quaternions
|
||||
|
||||
ho = material_homog(ip,el)
|
||||
tme = thermalMapping(ho)%p(ip,el)
|
||||
|
@ -488,7 +491,7 @@ subroutine constitutive_microstructure(orientations, Fe, Fp, ipc, ip, el)
|
|||
case (PLASTICITY_NONLOCAL_ID) plasticityType
|
||||
call plastic_nonlocal_microstructure (Fe,Fp,ip,el)
|
||||
case (PLASTICITY_PHENOPLUS_ID) plasticityType
|
||||
call plastic_phenoplus_microstructure(orientations,ipc,ip,el,Fe,Fp)
|
||||
call plastic_phenoplus_microstructure(orientations,ipc,ip,el,F0s,Fes,Fps)
|
||||
end select plasticityType
|
||||
|
||||
end subroutine constitutive_microstructure
|
||||
|
|
|
@ -437,7 +437,10 @@ subroutine crystallite_init
|
|||
call constitutive_microstructure(crystallite_orientation, & ! pass orientation to constitutive module
|
||||
crystallite_Fe(1:3,1:3,c,i,e), &
|
||||
crystallite_Fp(1:3,1:3,c,i,e), &
|
||||
c,i,e) ! update dependent state variables to be consistent with basic states
|
||||
c,i,e,
|
||||
crystallite_F0,
|
||||
crystallite_Fe,
|
||||
crystallite_Fp) ! update dependent state variables to be consistent with basic states
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -1714,7 +1717,10 @@ subroutine crystallite_integrateStateRK4()
|
|||
call constitutive_microstructure(crystallite_orientation, &
|
||||
crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), &
|
||||
g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
g, i, e,
|
||||
crystallite_F0,
|
||||
crystallite_Fe,
|
||||
crystallite_Fp) ! update dependent state variables to be consistent with basic states
|
||||
enddo; enddo; enddo
|
||||
!$OMP ENDDO
|
||||
|
||||
|
@ -2040,7 +2046,10 @@ subroutine crystallite_integrateStateRKCK45()
|
|||
call constitutive_microstructure(crystallite_orientation, &
|
||||
crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), &
|
||||
g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
g, i, e,
|
||||
crystallite_F0,
|
||||
crystallite_Fe,
|
||||
crystallite_Fp) ! update dependent state variables to be consistent with basic states
|
||||
enddo; enddo; enddo
|
||||
!$OMP ENDDO
|
||||
|
||||
|
@ -2260,7 +2269,10 @@ subroutine crystallite_integrateStateRKCK45()
|
|||
call constitutive_microstructure(crystallite_orientation, &
|
||||
crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), &
|
||||
g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
g, i, e,
|
||||
crystallite_F0,
|
||||
crystallite_Fe,
|
||||
crystallite_Fp) ! update dependent state variables to be consistent with basic states
|
||||
enddo; enddo; enddo
|
||||
!$OMP ENDDO
|
||||
|
||||
|
@ -2495,7 +2507,10 @@ subroutine crystallite_integrateStateAdaptiveEuler()
|
|||
call constitutive_microstructure(crystallite_orientation, &
|
||||
crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), &
|
||||
g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
g, i, e,
|
||||
crystallite_F0,
|
||||
crystallite_Fe,
|
||||
crystallite_Fp) ! update dependent state variables to be consistent with basic states
|
||||
enddo; enddo; enddo
|
||||
!$OMP ENDDO
|
||||
!$OMP END PARALLEL
|
||||
|
@ -2839,7 +2854,10 @@ eIter = FEsolving_execElem(1:2)
|
|||
call constitutive_microstructure(crystallite_orientation, &
|
||||
crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), &
|
||||
g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
g, i, e,
|
||||
crystallite_F0,
|
||||
crystallite_Fe,
|
||||
crystallite_Fp) ! update dependent state variables to be consistent with basic states
|
||||
enddo; enddo; enddo
|
||||
!$OMP ENDDO
|
||||
!$OMP END PARALLEL
|
||||
|
@ -3084,7 +3102,10 @@ subroutine crystallite_integrateStateFPI()
|
|||
call constitutive_microstructure(crystallite_orientation, &
|
||||
crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), &
|
||||
g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
g, i, e,
|
||||
crystallite_F0,
|
||||
crystallite_Fe,
|
||||
crystallite_Fp) ! update dependent state variables to be consistent with basic states
|
||||
p = phaseAt(g,i,e)
|
||||
c = phasememberAt(g,i,e)
|
||||
plasticState(p)%previousDotState2(:,c) = plasticState(p)%previousDotState(:,c)
|
||||
|
|
|
@ -739,9 +739,11 @@ end subroutine plastic_phenoplus_aTolState
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief calculate push-up factors (kappa) for each voxel based on its neighbors
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine plastic_phenoplus_microstructure(orientation,ipc,ip,el,Fe,Fp)
|
||||
subroutine plastic_phenoplus_microstructure(orientation,ipc,ip,el,F0,Fe,Fp)
|
||||
use math, only: pi, &
|
||||
math_identity2nd, &
|
||||
math_mul33x33, &
|
||||
math_mul33xx33, &
|
||||
math_mul3x3, &
|
||||
math_transpose33, &
|
||||
math_qDot, &
|
||||
|
@ -773,7 +775,8 @@ subroutine plastic_phenoplus_microstructure(orientation,ipc,ip,el,Fe,Fp)
|
|||
ipc, & !< component-ID of integration point
|
||||
ip, & !< integration point
|
||||
el
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
real(pReal), dimension(3,3,homogenization_maxNgrains,mesh_maxNips,mesh_NcpElems), intent(in) :: &
|
||||
F0, & ! deformation gradient from last increment
|
||||
Fe, & ! elastic deformation gradient
|
||||
Fp ! elastic deformation gradient !< element
|
||||
real(pReal), dimension(4,homogenization_maxNgrains,mesh_maxNips,mesh_NcpElems), intent(in) :: &
|
||||
|
@ -813,10 +816,15 @@ subroutine plastic_phenoplus_microstructure(orientation,ipc,ip,el,Fe,Fp)
|
|||
tmp_acshear !temp holder for accumulative shear for m'
|
||||
|
||||
real(pReal), dimension(3,3) :: &
|
||||
F0_me, & !my deformation gradient from last converged increment
|
||||
Fe_me, & !my elastic deformation gradient
|
||||
Fp_me, & !my plastic deformation gradient
|
||||
dF_me, & !my deformation gradient change (delta)
|
||||
dE_me, & !my Green Lagrangian strain tensor (delta)
|
||||
Fe_ne, & !elastic deformation gradient of my current neighbor
|
||||
Fp_ne !plastic deformation gradient of my current neighbor
|
||||
Fp_ne, & !plastic deformation gradient of my current neighbor
|
||||
dF_ne, & !deformation gradient of my current neighbor
|
||||
dE_ne !delta Green Lagrangian strain tensor
|
||||
|
||||
real(pReal), dimension(plastic_phenoplus_totalNslip(phase_plasticityInstance(material_phase(1,ip,el)))) :: &
|
||||
m_primes, & !m' between me_alpha(one) and neighbor beta(all)
|
||||
|
@ -835,10 +843,6 @@ subroutine plastic_phenoplus_microstructure(orientation,ipc,ip,el,Fe,Fp)
|
|||
ne_mprimes !m' between each neighbor
|
||||
|
||||
!***Get my properties
|
||||
!@TODO
|
||||
! still need to know how to access the total strain for current material point
|
||||
! also, need to figure out an efficient way to calculate gamma_dot for the material
|
||||
! point and its neighbors
|
||||
Nneighbors = FE_NipNeighbors(FE_celltype(FE_geomtype(mesh_element(2,el))))
|
||||
ph = phaseAt(ipc,ip,el) !get my phase
|
||||
of = phasememberAt(ipc,ip,el) !get my spatial location offset in memory
|
||||
|
@ -853,13 +857,18 @@ subroutine plastic_phenoplus_microstructure(orientation,ipc,ip,el,Fe,Fp)
|
|||
mprime_cut = 0.7_pReal !set by Dr.Bieler
|
||||
dtaylor_cut = 1.0_pReal !set by Chen, quick test only
|
||||
|
||||
!***calculate my Taylor factor
|
||||
!***gather my orientation and slip systems
|
||||
!***gather my orientation, F and slip systems
|
||||
my_orientation = orientation(1:4, ipc, ip, el)
|
||||
Fe_me = Fe(ipc,ip,el)
|
||||
Fp_me = Fp(ipc,ip,el)
|
||||
F0_me = F0(1:3, 1:3, ipc, ip, el)
|
||||
Fe_me = Fe(1:3, 1:3, ipc, ip, el)
|
||||
Fp_me = Fp(1:3, 1:3, ipc, ip, el)
|
||||
slipNormal(1:3, 1:ns) = lattice_sn(1:3, 1:ns, ph)
|
||||
slipDirect(1:3, 1:ns) = lattice_sd(1:3, 1:ns, ph)
|
||||
!******calculate Taylor factor for me
|
||||
!@note: we need teh
|
||||
F_me = math_mul33x33(Fe_me,Fp_me)
|
||||
E_me = 0.5*(math_mul33x33(math_transpose33(F_me), F_me) - math_identity2nd) !E = 0.5(F^tF-I)
|
||||
vonStrain
|
||||
|
||||
!***loop into the geometry to figure out who is my closest neighbor
|
||||
LOOPNEIGHBORS: DO n=1_pInt, Nneighbors
|
||||
|
|
Loading…
Reference in New Issue