cpfe_general now returns also Kirchhoff-stress P and dPdF
added dummy variables P and dPdF to mpie_cpfe_* to be able to call cpfem_general correctly
This commit is contained in:
parent
80016f8429
commit
397db06fb3
|
@ -63,7 +63,8 @@ endsubroutine
|
|||
!*** perform initialization at first call, update variables and ***
|
||||
!*** call the actual material model ***
|
||||
!***********************************************************************
|
||||
subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchyStress, jacobian)
|
||||
subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchyStress,&
|
||||
& jacobian, pstress, dPdF)
|
||||
! note: cauchyStress = Cauchy stress cs(6) and jacobian = Consistent tangent dcs/dE
|
||||
|
||||
!*** variables and functions from other modules ***!
|
||||
|
@ -153,13 +154,15 @@ subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchySt
|
|||
!*** output variables ***!
|
||||
real(pReal), dimension(6), intent(out) :: cauchyStress ! stress vector in Mandel notation
|
||||
real(pReal), dimension(6,6), intent(out) :: jacobian ! jacobian in Mandel notation
|
||||
|
||||
real(pReal), dimension (3,3), intent(out) :: pstress ! Piola-Kirchhoff stress in Matrix notation
|
||||
real(pReal), dimension (3,3,3,3), intent(out) :: dPdF !
|
||||
|
||||
!*** local variables ***!
|
||||
real(pReal) J_inverse, & ! inverse of Jacobian
|
||||
rnd
|
||||
real(pReal), dimension (3,3) :: Kirchhoff
|
||||
real(pReal), dimension (3,3,3,3) :: H, &
|
||||
H_sym
|
||||
real(pReal), dimension (3,3) :: Kirchhoff ! Piola-Kirchhoff stress in Matrix notation
|
||||
real(pReal), dimension (3,3,3,3) :: H_sym, &
|
||||
H
|
||||
integer(pInt) cp_en, & ! crystal plasticity element number
|
||||
i, &
|
||||
j, &
|
||||
|
@ -356,6 +359,10 @@ subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchySt
|
|||
! return the local stress and the jacobian from storage
|
||||
cauchyStress(:) = CPFEM_cs(:,IP,cp_en)
|
||||
jacobian(:,:) = CPFEM_dcsdE(:,:,IP,cp_en)
|
||||
|
||||
! copy P and dPdF to the output variables
|
||||
pstress(:,:) = materialpoint_P(:,:,IP,cp_en)
|
||||
dPdF(:,:,:,:) = materialpoint_dPdF(:,:,:,:,IP,cp_en)
|
||||
if (debugger .and. selectiveDebugger) then
|
||||
!$OMP CRITICAL (write2out)
|
||||
write(6,'(a16,x,i2,x,a2,x,i4,/,6(f10.3,x)/)') 'stress/MPa at ip', IP, 'el', cp_en, cauchyStress/1e6
|
||||
|
|
|
@ -159,7 +159,8 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
|
|||
dimension nElement(nblock),nMatPoint(nblock)
|
||||
|
||||
character*80 cmname
|
||||
|
||||
real(pReal), dimension (3,3) :: pstress ! not used, but needed for call of cpfem_general
|
||||
real(pReal), dimension (3,3,3,3) :: dPdF ! not used, but needed for call of cpfem_general
|
||||
! local variables
|
||||
real(pReal), dimension(3,3) :: defgrd0,defgrd1
|
||||
real(pReal), dimension(6) :: stress
|
||||
|
@ -241,7 +242,7 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
|
|||
defgrd1(3,2) = defgradNew(n,8)
|
||||
endif
|
||||
|
||||
call CPFEM_general(computationMode,defgrd0,defgrd1,temp,timeInc,nElement(n),nMatPoint(n),stress,ddsdde)
|
||||
call CPFEM_general(computationMode,defgrd0,defgrd1,temp,timeInc,nElement(n),nMatPoint(n),stress,ddsdde, pstress, dPdF)
|
||||
|
||||
! Mandel: 11, 22, 33, SQRT(2)*12, SQRT(2)*23, SQRT(2)*13
|
||||
! straight: 11, 22, 33, 12, 23, 13
|
||||
|
|
|
@ -117,6 +117,8 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
|||
DFGRD0(3,3),DFGRD1(3,3)
|
||||
real(pReal) SSE, SPD, SCD, RPL, DRPLDT, DTIME, TEMP,&
|
||||
DTEMP, PNEWDT, CELENT
|
||||
real(pReal), dimension (3,3) :: pstress ! not used, but needed for call of cpfem_general
|
||||
real(pReal), dimension (3,3,3,3) :: dPdF ! not used, but needed for call of cpfem_general
|
||||
|
||||
! local variables
|
||||
real(pReal), dimension(6) :: stress_h
|
||||
|
@ -209,7 +211,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
|||
!$OMP END CRITICAL (write2out)
|
||||
endif
|
||||
|
||||
call CPFEM_general(computationMode,dfgrd0,dfgrd1,temp,dtime,noel,npt,stress_h,ddsdde_h)
|
||||
call CPFEM_general(computationMode,dfgrd0,dfgrd1,temp,dtime,noel,npt,stress_h,ddsdde_h, pstress, dPdF)
|
||||
|
||||
! Mandel: 11, 22, 33, SQRT(2)*12, SQRT(2)*23, SQRT(2)*13
|
||||
! straight: 11, 22, 33, 12, 23, 13
|
||||
|
|
|
@ -217,6 +217,9 @@ subroutine hypela2(&
|
|||
|
||||
real(pReal), dimension(6) :: stress
|
||||
real(pReal), dimension(6,6) :: ddsdde
|
||||
|
||||
real(pReal), dimension (3,3) :: pstress ! not used, but needed for call of cpfem_general
|
||||
real(pReal), dimension (3,3,3,3) :: dPdF ! not used, but needed for call of cpfem_general
|
||||
|
||||
integer(pInt) computationMode, i, cp_en
|
||||
|
||||
|
@ -286,7 +289,7 @@ subroutine hypela2(&
|
|||
lastMode = calcMode(nn,cp_en) ! record calculationMode
|
||||
endif
|
||||
|
||||
call CPFEM_general(computationMode,ffn,ffn1,t(1),timinc,n(1),nn,stress,ddsdde)
|
||||
call CPFEM_general(computationMode,ffn,ffn1,t(1),timinc,n(1),nn,stress,ddsdde, pstress, dPdF)
|
||||
|
||||
! Mandel: 11, 22, 33, SQRT(2)*12, SQRT(2)*23, SQRT(2)*13
|
||||
! Marc: 11, 22, 33, 12, 23, 13
|
||||
|
|
Loading…
Reference in New Issue