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 ***
|
!*** perform initialization at first call, update variables and ***
|
||||||
!*** call the actual material model ***
|
!*** 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
|
! note: cauchyStress = Cauchy stress cs(6) and jacobian = Consistent tangent dcs/dE
|
||||||
|
|
||||||
!*** variables and functions from other modules ***!
|
!*** variables and functions from other modules ***!
|
||||||
|
@ -153,13 +154,15 @@ subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchySt
|
||||||
!*** output variables ***!
|
!*** output variables ***!
|
||||||
real(pReal), dimension(6), intent(out) :: cauchyStress ! stress vector in Mandel notation
|
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(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 ***!
|
!*** local variables ***!
|
||||||
real(pReal) J_inverse, & ! inverse of Jacobian
|
real(pReal) J_inverse, & ! inverse of Jacobian
|
||||||
rnd
|
rnd
|
||||||
real(pReal), dimension (3,3) :: Kirchhoff
|
real(pReal), dimension (3,3) :: Kirchhoff ! Piola-Kirchhoff stress in Matrix notation
|
||||||
real(pReal), dimension (3,3,3,3) :: H, &
|
real(pReal), dimension (3,3,3,3) :: H_sym, &
|
||||||
H_sym
|
H
|
||||||
integer(pInt) cp_en, & ! crystal plasticity element number
|
integer(pInt) cp_en, & ! crystal plasticity element number
|
||||||
i, &
|
i, &
|
||||||
j, &
|
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
|
! return the local stress and the jacobian from storage
|
||||||
cauchyStress(:) = CPFEM_cs(:,IP,cp_en)
|
cauchyStress(:) = CPFEM_cs(:,IP,cp_en)
|
||||||
jacobian(:,:) = CPFEM_dcsdE(:,:,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
|
if (debugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$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
|
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)
|
dimension nElement(nblock),nMatPoint(nblock)
|
||||||
|
|
||||||
character*80 cmname
|
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
|
! local variables
|
||||||
real(pReal), dimension(3,3) :: defgrd0,defgrd1
|
real(pReal), dimension(3,3) :: defgrd0,defgrd1
|
||||||
real(pReal), dimension(6) :: stress
|
real(pReal), dimension(6) :: stress
|
||||||
|
@ -241,7 +242,7 @@ subroutine vumat (jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, &
|
||||||
defgrd1(3,2) = defgradNew(n,8)
|
defgrd1(3,2) = defgradNew(n,8)
|
||||||
endif
|
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
|
! Mandel: 11, 22, 33, SQRT(2)*12, SQRT(2)*23, SQRT(2)*13
|
||||||
! straight: 11, 22, 33, 12, 23, 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)
|
DFGRD0(3,3),DFGRD1(3,3)
|
||||||
real(pReal) SSE, SPD, SCD, RPL, DRPLDT, DTIME, TEMP,&
|
real(pReal) SSE, SPD, SCD, RPL, DRPLDT, DTIME, TEMP,&
|
||||||
DTEMP, PNEWDT, CELENT
|
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
|
! local variables
|
||||||
real(pReal), dimension(6) :: stress_h
|
real(pReal), dimension(6) :: stress_h
|
||||||
|
@ -209,7 +211,7 @@ subroutine UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,&
|
||||||
!$OMP END CRITICAL (write2out)
|
!$OMP END CRITICAL (write2out)
|
||||||
endif
|
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
|
! Mandel: 11, 22, 33, SQRT(2)*12, SQRT(2)*23, SQRT(2)*13
|
||||||
! straight: 11, 22, 33, 12, 23, 13
|
! straight: 11, 22, 33, 12, 23, 13
|
||||||
|
|
|
@ -218,6 +218,9 @@ subroutine hypela2(&
|
||||||
real(pReal), dimension(6) :: stress
|
real(pReal), dimension(6) :: stress
|
||||||
real(pReal), dimension(6,6) :: ddsdde
|
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
|
integer(pInt) computationMode, i, cp_en
|
||||||
|
|
||||||
if ( .not. CPFEM_init_done ) then
|
if ( .not. CPFEM_init_done ) then
|
||||||
|
@ -286,7 +289,7 @@ subroutine hypela2(&
|
||||||
lastMode = calcMode(nn,cp_en) ! record calculationMode
|
lastMode = calcMode(nn,cp_en) ! record calculationMode
|
||||||
endif
|
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
|
! Mandel: 11, 22, 33, SQRT(2)*12, SQRT(2)*23, SQRT(2)*13
|
||||||
! Marc: 11, 22, 33, 12, 23, 13
|
! Marc: 11, 22, 33, 12, 23, 13
|
||||||
|
|
Loading…
Reference in New Issue