Added constitutive_homogenizedC

This commit is contained in:
Luc Hantcherli 2007-03-27 18:51:11 +00:00
parent 0673b15cfa
commit cd43929951
1 changed files with 62 additions and 33 deletions

View File

@ -27,6 +27,7 @@ implicit none
!Cslip_66(:,6)=2.0d0*Cslip_66(:,5) !Cslip_66(:,6)=2.0d0*Cslip_66(:,5)
!Cslip_66(:,5)=2.0d0*temp !Cslip_66(:,5)=2.0d0*temp
! MISSING consistency check after reading 'mattex.mpie'
!*********************************************** !***********************************************
!* Definition of crystal structures properties * !* Definition of crystal structures properties *
@ -237,6 +238,7 @@ CONTAINS
!* - constitutive_Parse_TexturePart !* - constitutive_Parse_TexturePart
!* - constitutive_Parse_MatTexDat !* - constitutive_Parse_MatTexDat
!* - constitutive_Assignement !* - constitutive_Assignement
!* - constitutive_HomogenizedC
!* - constitutive_LpAndItsTangent !* - constitutive_LpAndItsTangent
!* - consistutive_DotState !* - consistutive_DotState
!**************************************** !****************************************
@ -611,7 +613,7 @@ implicit none
!* Definition of variables !* Definition of variables
character(len=*) filename character(len=*) filename
character(len=80) part,formerPart character(len=80) part,formerPart
integer(pInt) sectionCount,dummy,i,j,m integer(pInt) sectionCount,dummy,i,j,k
!* First reading: number of materials and textures !* First reading: number of materials and textures
!* determine material_maxN and texture_maxN !* determine material_maxN and texture_maxN
@ -683,29 +685,33 @@ do while (part/='')
enddo enddo
close(1) close(1)
!* Construction of the elasticity matrices
!do m=1,material_maxN do i=1,material_maxN
! material_Cslip_66(:,:,m) = 0.0_pReal material_Cslip_66(:,:,i) = 0.0_pReal
! select case (material_crystal_structure) select case (material_CrystalStructure(i))
! case (1:2) ! cubic structure case(1:2)
! do i=1,3 do k=1,3
! do j=1,3 do j=1,3
! material_Cslip_66(i,j,m) = C12 material_Cslip_66(k,j,i)=material_C12(i)
! enddo enddo
! material_Cslip_66(i,i,m) = C11 material_Cslip_66(k,k,i)=material_C11(i)
! material_Cslip_66(i+3,i+3,m) = C44 material_Cslip_66(k+3,k+3,i)=material_C44(i)
! enddo enddo
! case (3) ! hcp structure MISSING correct case(3)
! do i=1,3 material_Cslip_66(1,1,i)=material_C11(i)
! do j=1,3 material_Cslip_66(2,2,i)=material_C11(i)
! material_Cslip_66(i,j,m) = C12 material_Cslip_66(3,3,i)=material_C33(i)
! enddo material_Cslip_66(1,2,i)=material_C12(i)
! material_Cslip_66(i,i,m) = C11 material_Cslip_66(2,1,i)=material_C12(i)
! material_Cslip_66(i+3,i+3,m) = C44 material_Cslip_66(1,3,i)=material_C13(i)
! enddo material_Cslip_66(3,1,i)=material_C13(i)
! end select material_Cslip_66(2,3,i)=material_C13(i)
! material_Cslip_3333(:,:,:,:,m) = math_66to3333(Cslip_66(:,:,m)) material_Cslip_66(3,2,i)=material_C13(i)
!end do material_Cslip_66(4,4,i)=material_C44(i)
material_Cslip_66(5,5,i)=material_C44(i)
material_Cslip_66(6,6,i)=0.5_pReal*(material_C11(i)-material_C12(i))
end select
enddo
! MISSING some consistency checks may be..? ! MISSING some consistency checks may be..?
@ -743,6 +749,8 @@ allocate(constitutive_state_old(material_maxNslip,constitutive_maxNgrains,mesh_m
constitutive_state_old=0.0_pReal constitutive_state_old=0.0_pReal
allocate(constitutive_state_new(material_maxNslip,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems)) allocate(constitutive_state_new(material_maxNslip,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems))
constitutive_state_new=0.0_pReal constitutive_state_new=0.0_pReal
allocate(constitutive_Nresults(constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems))
constitutive_Nresults=0_pInt
!* Assignement !* Assignement
do i=1,mesh_NcpElems do i=1,mesh_NcpElems
@ -767,6 +775,28 @@ enddo
end subroutine end subroutine
function constitutive_HomogenizedC(ipc,ip,el)
!*********************************************************************
!* This function gives the homogenized elacticity matrix back *
!* INPUT: *
!* - ipc : component-ID of current integration point *
!* - ip : current integration point *
!* - el : current element *
!*********************************************************************
use prec, only: pReal,pInt
implicit none
!* Definition of variables
integer(pInt) ipc,ip,el
real(pReal), dimension(6,6) :: constitutive_homogeniZedC
!* Homogenization scheme
constitutive_homogenizedC=constitutive_MatVolFrac(ipc,ip,el)*material_Cslip_66(:,:,constitutive_matID(ipc,ip,el))
return
end function
!subroutine constitutive_InitFp(CPFEM_Fp_old) !subroutine constitutive_InitFp(CPFEM_Fp_old)
!********************************************************************* !*********************************************************************
!* This function reads the material and texture input file * !* This function reads the material and texture input file *
@ -794,20 +824,19 @@ subroutine constitutive_LpAndItsTangent(Tstar_v,ipc,ip,el,Lp,dLp_dTstar)
!* - ipc : component-ID of current integration point * !* - ipc : component-ID of current integration point *
!* - ip : current integration point * !* - ip : current integration point *
!* - el : current element * !* - el : current element *
!* OUTPUT: !* OUTPUT: *
!* - Lp : plastic velocity gradient * !* - Lp : plastic velocity gradient *
!* - dLp_dTstar : derivative of Lp * !* - dLp_dTstar : derivative of Lp (4th-order tensor) *
!********************************************************************* !*********************************************************************
use prec, only: pReal,pInt use prec, only: pReal,pInt
implicit none implicit none
!* Definition of variables !* Definition of variables
integer(pInt) ipc,ip,el integer(pInt) ipc,ip,el
integer(pInt) matID,i,j,k integer(pInt) matID,i,k,l,m,n
real(pReal) Tstar_v(6) real(pReal) Tstar_v(6)
real(pReal) Lp(3,3) real(pReal) Lp(3,3)
real(pReal) dLp_dTstar(6,6) real(pReal) dLp_dTstar(3,3,3,3)
real(pReal) dLpT_dTstar(6,6)
real(pReal), dimension(constitutive_matID(ipc,ip,el)) :: gdot_slip real(pReal), dimension(constitutive_matID(ipc,ip,el)) :: gdot_slip
real(pReal), dimension(constitutive_matID(ipc,ip,el)) :: dgdot_dtauslip real(pReal), dimension(constitutive_matID(ipc,ip,el)) :: dgdot_dtauslip
real(preal), dimension(constitutive_matID(ipc,ip,el)) :: tau_slip real(preal), dimension(constitutive_matID(ipc,ip,el)) :: tau_slip
@ -827,8 +856,8 @@ enddo
dLp_dTstar=0.0_pReal dLp_dTstar=0.0_pReal
do i=1,material_Nslip(matID) do i=1,material_Nslip(matID)
dgdot_dtauslip(i)=material_gdot0_slip(matID)*(abs(tau_slip(i))/constitutive_state_new(i,ipc,ip,el))**(material_n_slip(matID)-1.0_pReal)*material_n_slip(matID)/constitutive_state_new(i,ipc,ip,el) dgdot_dtauslip(i)=material_gdot0_slip(matID)*(abs(tau_slip(i))/constitutive_state_new(i,ipc,ip,el))**(material_n_slip(matID)-1.0_pReal)*material_n_slip(matID)/constitutive_state_new(i,ipc,ip,el)
forall (j=1:6,k=1:6) forall (k=1:3,l=1:3,m=1:3,n=1:3)
dLp_dTstar(j,k)=dLp_dTstar(j,k)+constitutive_Sslip_v(j,i,material_CrystalStructure(matID))*constitutive_Sslip_v(k,i,material_CrystalStructure(matID))*dgdot_dtauslip(i) dLp_dTstar(k,l,m,n)=dLp_dTstar(k,l,m,n)+constitutive_Sslip(k,l,i,material_CrystalStructure(matID))*constitutive_Sslip(m,n,i,material_CrystalStructure(matID))*dgdot_dtauslip(i)
endforall endforall
enddo enddo