From 0750f7fd01ff3697e6f24d6bd18b4bdf0e247647 Mon Sep 17 00:00:00 2001 From: Fengbo Han Date: Thu, 10 Aug 2017 15:40:18 +0200 Subject: [PATCH] fixed plastic work calculation --- src/DAMASK_spectral.f90 | 10 +++++++++- src/spectral_utilities.f90 | 7 ++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/DAMASK_spectral.f90 b/src/DAMASK_spectral.f90 index fe7bdf2b3..38684f450 100755 --- a/src/DAMASK_spectral.f90 +++ b/src/DAMASK_spectral.f90 @@ -316,7 +316,15 @@ program DAMASK_spectral end select enddo; enddo close(FILEUNIT) - + + if(yieldStop) then ! initialize variables related to yield stop + yieldStressNew = 0.0_pReal + plasticStrainNew = 0.0_pReal + eqStressNew = 0.0_pReal + eqTotalStrainNew = 0.0_pReal + eqPlasticStrainNew = 0.0_pReal + plasticWorkNew = 0.0_pReal + endif !-------------------------------------------------------------------------------------------------- ! consistency checks and output of load case loadCases(1)%followFormerTrajectory = .false. ! cannot guess along trajectory for first inc of first currentLoadCase diff --git a/src/spectral_utilities.f90 b/src/spectral_utilities.f90 index c5560752e..ecbce38bf 100755 --- a/src/spectral_utilities.f90 +++ b/src/spectral_utilities.f90 @@ -1080,9 +1080,12 @@ subroutine utilities_calcPlasticity(yieldStress, plasticStrain, eqStress, eqTota real(pReal), dimension(15) :: WORK !< previous deformation gradient integer(pInt) :: INFO, i, j, k, l, ierr real(pReal) :: stress, stress_av, strain_total, strain_total_av, strain_plastic, strain_plastic_av, wgtm + real(pReal) :: eqStressOld, eqPlasticStrainOld external :: dgesvd + eqStressOld = eqStress + eqPlasticStrainOld = eqPlasticStrain wgtm = 1.0/real(mesh_NcpElems*mesh_maxNips*homogenization_maxNgrains,pReal) Vp_av = 0.0_pReal V_total_av = 0.0_pReal @@ -1142,20 +1145,18 @@ subroutine utilities_calcPlasticity(yieldStress, plasticStrain, eqStress, eqTota enddo; enddo; enddo - yieldStress = cauchy_av * wgtm call MPI_Allreduce(MPI_IN_PLACE,yieldStress,9,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr) plasticStrain = Vp_av * wgtm call MPI_Allreduce(MPI_IN_PLACE,plasticStrain,9,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr) - plasticWork = plasticWork + 0.5*(eqStress + stress_av * wgtm) * (strain_total_av * wgtm - eqTotalStrain) - call MPI_Allreduce(MPI_IN_PLACE,plasticWork,1,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr) eqStress = stress_av * wgtm call MPI_Allreduce(MPI_IN_PLACE,eqStress,1,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr) eqTotalStrain = strain_total_av * wgtm call MPI_Allreduce(MPI_IN_PLACE,eqTotalStrain,1,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr) eqPlasticStrain = strain_plastic_av * wgtm call MPI_Allreduce(MPI_IN_PLACE,eqPlasticStrain,1,MPI_DOUBLE,MPI_SUM,PETSC_COMM_WORLD,ierr) + plasticWork = plasticWork + 0.5*(eqStressOld + eqStress) * (eqPlasticStrain - eqPlasticStrainOld) end subroutine utilities_calcPlasticity