untied interlinked constitutive and CPFEM modules
now constitutive stores EulerAngles and CPFEM generates Fp_old from these
This commit is contained in:
parent
cb4a85319d
commit
eb292917b9
|
@ -35,11 +35,13 @@
|
||||||
SUBROUTINE CPFEM_init()
|
SUBROUTINE CPFEM_init()
|
||||||
!
|
!
|
||||||
use prec, only: pReal,pInt
|
use prec, only: pReal,pInt
|
||||||
! use math, only: math_I3
|
use math, only: math_EulertoR
|
||||||
use mesh
|
use mesh
|
||||||
use constitutive
|
use constitutive
|
||||||
!
|
!
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
|
integer(pInt) e,i,g
|
||||||
!
|
!
|
||||||
! *** mpie.marc parameters ***
|
! *** mpie.marc parameters ***
|
||||||
allocate(CPFEM_ffn_all (3,3,mesh_maxNips,mesh_NcpElems)) ; CPFEM_ffn_all = 0.0_pReal
|
allocate(CPFEM_ffn_all (3,3,mesh_maxNips,mesh_NcpElems)) ; CPFEM_ffn_all = 0.0_pReal
|
||||||
|
@ -56,7 +58,9 @@
|
||||||
allocate(CPFEM_sigma_new(6,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; CPFEM_sigma_new = 0.0_pReal
|
allocate(CPFEM_sigma_new(6,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; CPFEM_sigma_new = 0.0_pReal
|
||||||
!
|
!
|
||||||
! *** Plastic deformation gradient at (t=t0) and (t=t1) ***
|
! *** Plastic deformation gradient at (t=t0) and (t=t1) ***
|
||||||
allocate(CPFEM_Fp_old(3,3,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; CPFEM_Fp_old = 0.0_pReal
|
allocate(CPFEM_Fp_old(3,3,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems))
|
||||||
|
forall (e=1:mesh_NcpElems,i=1:mesh_maxNips,g=1:constitutive_maxNgrains) &
|
||||||
|
CPFEM_Fp_old(:,:,g,i,e) = math_EulerToR(constitutive_EulerAngles(:,g,i,e)) ! plastic def gradient reflects init orientation
|
||||||
allocate(CPFEM_Fp_new(3,3,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; CPFEM_Fp_new = 0.0_pReal
|
allocate(CPFEM_Fp_new(3,3,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; CPFEM_Fp_new = 0.0_pReal
|
||||||
!
|
!
|
||||||
! *** Old jacobian (consistent tangent) ***
|
! *** Old jacobian (consistent tangent) ***
|
||||||
|
|
|
@ -732,7 +732,7 @@ use prec, only: pReal,pInt
|
||||||
use math, only: math_sampleGaussOri,math_sampleFiberOri,math_sampleRandomOri,math_symmetricEulers,math_EulerToR
|
use math, only: math_sampleGaussOri,math_sampleFiberOri,math_sampleRandomOri,math_symmetricEulers,math_EulerToR
|
||||||
use mesh, only: mesh_NcpElems,FE_Nips,FE_mapElemtype,mesh_maxNips,mesh_element
|
use mesh, only: mesh_NcpElems,FE_Nips,FE_mapElemtype,mesh_maxNips,mesh_element
|
||||||
use IO, only: IO_hybridIA
|
use IO, only: IO_hybridIA
|
||||||
use CPFEM,only: CPFEM_Fp_old
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
!* Definition of variables
|
!* Definition of variables
|
||||||
|
@ -801,6 +801,7 @@ allocate(constitutive_matID(constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems))
|
||||||
allocate(constitutive_texID(constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; constitutive_texID=0_pInt
|
allocate(constitutive_texID(constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; constitutive_texID=0_pInt
|
||||||
allocate(constitutive_MatVolFrac(constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; constitutive_MatVolFrac=0.0_pReal
|
allocate(constitutive_MatVolFrac(constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; constitutive_MatVolFrac=0.0_pReal
|
||||||
allocate(constitutive_TexVolFrac(constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; constitutive_TexVolFrac=0.0_pReal
|
allocate(constitutive_TexVolFrac(constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; constitutive_TexVolFrac=0.0_pReal
|
||||||
|
allocate(constitutive_EulerAngles(3,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; constitutive_EulerAngles=0.0_pReal
|
||||||
allocate(constitutive_Nresults(constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; constitutive_Nresults=0_pInt
|
allocate(constitutive_Nresults(constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) ; constitutive_Nresults=0_pInt
|
||||||
allocate(constitutive_results(constitutive_maxNresults,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems))
|
allocate(constitutive_results(constitutive_maxNresults,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems))
|
||||||
constitutive_results=0.0_pReal
|
constitutive_results=0.0_pReal
|
||||||
|
@ -855,7 +856,7 @@ do e=1,mesh_NcpElems
|
||||||
constitutive_TexVolFrac(g,i,e) = texVolfrac(s)/multiplicity(texID)/Nsym(texID)
|
constitutive_TexVolFrac(g,i,e) = texVolfrac(s)/multiplicity(texID)/Nsym(texID)
|
||||||
constitutive_Nstatevars(g,i,e) = material_Nslip(matID) ! number of state variables (i.e. tau_c of each slip system)
|
constitutive_Nstatevars(g,i,e) = material_Nslip(matID) ! number of state variables (i.e. tau_c of each slip system)
|
||||||
constitutive_Nresults(g,i,e) = 0 ! number of constitutive results
|
constitutive_Nresults(g,i,e) = 0 ! number of constitutive results
|
||||||
CPFEM_Fp_old(:,:,g,i,e) = math_EulerToR(Euler(:,s)) ! set plastic deformation gradient at t_0
|
constitutive_EulerAngles(:,g,i,e) = Euler(:,s) ! store initial orientation
|
||||||
forall (l=1:constitutive_Nstatevars(g,i,e)) ! initialize state variables
|
forall (l=1:constitutive_Nstatevars(g,i,e)) ! initialize state variables
|
||||||
constitutive_state_old(l,g,i,e) = material_s0_slip(matID)
|
constitutive_state_old(l,g,i,e) = material_s0_slip(matID)
|
||||||
constitutive_state_new(l,g,i,e) = material_s0_slip(matID)
|
constitutive_state_new(l,g,i,e) = material_s0_slip(matID)
|
||||||
|
|
Loading…
Reference in New Issue