bugfix: calculation of size of postResults was wrong

This commit is contained in:
Martin Diehl 2019-12-02 23:06:28 +01:00
parent 2969a53338
commit c36a5bdfbb
3 changed files with 6 additions and 14 deletions

View File

@ -743,8 +743,7 @@ function crystallite_postResults(ipc, ip, el)
ipc !< grain index ipc !< grain index
real(pReal), dimension(1+ & real(pReal), dimension(1+ &
1+plasticState(material_phaseAt(ipc,el))%sizePostResults + & 1+sum(sourceState(material_phaseAt(ipc,el))%p(:)%sizePostResults)) :: &
sum(sourceState(material_phaseAt(ipc,el))%p(:)%sizePostResults)) :: &
crystallite_postResults crystallite_postResults
integer :: & integer :: &
c c
@ -754,7 +753,7 @@ function crystallite_postResults(ipc, ip, el)
crystallite_postResults(1) = 0.0_pReal ! header-like information (length) crystallite_postResults(1) = 0.0_pReal ! header-like information (length)
c = 1 c = 1
crystallite_postResults(c+1) = real(plasticState(material_phaseAt(ipc,el))%sizePostResults,pReal) ! size of constitutive results crystallite_postResults(c+1) = real(sum(sourceState(material_phaseAt(ipc,el))%p(:)%sizePostResults),pReal) ! size of constitutive results
c = c + 1 c = c + 1
if (size(crystallite_postResults)-c > 0) & if (size(crystallite_postResults)-c > 0) &
crystallite_postResults(c+1:size(crystallite_postResults)) = & crystallite_postResults(c+1:size(crystallite_postResults)) = &

View File

@ -255,8 +255,8 @@ subroutine homogenization_init
thermal_maxSizePostResults = 0 thermal_maxSizePostResults = 0
damage_maxSizePostResults = 0 damage_maxSizePostResults = 0
do p = 1,size(config_homogenization) do p = 1,size(config_homogenization)
thermal_maxSizePostResults = max(thermal_maxSizePostResults, thermalState (p)%sizePostResults) thermal_maxSizePostResults = max(thermal_maxSizePostResults, thermalState(p)%sizePostResults)
damage_maxSizePostResults = max(damage_maxSizePostResults ,damageState (p)%sizePostResults) damage_maxSizePostResults = max(damage_maxSizePostResults, damageState (p)%sizePostResults)
enddo enddo
materialpoint_sizeResults = 1 & ! grain count materialpoint_sizeResults = 1 & ! grain count
@ -616,7 +616,7 @@ subroutine materialpoint_postResults
grainLooping :do g = 1,myNgrains grainLooping :do g = 1,myNgrains
theSize = 1 + & theSize = 1 + &
1 + plasticState (material_phaseAt(g,e))%sizePostResults + & 1 + &
sum(sourceState(material_phaseAt(g,e))%p(:)%sizePostResults) sum(sourceState(material_phaseAt(g,e))%p(:)%sizePostResults)
materialpoint_results(thePos+1:thePos+theSize,i,e) = crystallite_postResults(g,i,e) ! tell crystallite results materialpoint_results(thePos+1:thePos+theSize,i,e) = crystallite_postResults(g,i,e) ! tell crystallite results
thePos = thePos + theSize thePos = thePos + theSize

View File

@ -27,13 +27,9 @@ module plastic_nonlocal
real(pReal), parameter, private :: & real(pReal), parameter, private :: &
KB = 1.38e-23_pReal !< Physical parameter, Boltzmann constant in J/Kelvin KB = 1.38e-23_pReal !< Physical parameter, Boltzmann constant in J/Kelvin
integer, dimension(:,:), allocatable, target, public :: &
plastic_nonlocal_sizePostResult !< size of each post result output
character(len=64), dimension(:,:), allocatable, target, public :: & character(len=64), dimension(:,:), allocatable, target, public :: &
plastic_nonlocal_output !< name of each post result output plastic_nonlocal_output !< name of each post result output
! storage order of dislocation types ! storage order of dislocation types
integer, dimension(8), parameter :: & integer, dimension(8), parameter :: &
sgl = [1,2,3,4,5,6,7,8] !< signed (single) sgl = [1,2,3,4,5,6,7,8] !< signed (single)
@ -268,7 +264,6 @@ subroutine plastic_nonlocal_init
allocate(deltaState(maxNinstances)) allocate(deltaState(maxNinstances))
allocate(microstructure(maxNinstances)) allocate(microstructure(maxNinstances))
allocate(plastic_nonlocal_sizePostResult(maxval(phase_Noutput), maxNinstances), source=0)
allocate(plastic_nonlocal_output(maxval(phase_Noutput), maxNinstances)) allocate(plastic_nonlocal_output(maxval(phase_Noutput), maxNinstances))
plastic_nonlocal_output = '' plastic_nonlocal_output = ''
allocate(plastic_nonlocal_outputID(maxval(phase_Noutput), maxNinstances), source=undefined_ID) allocate(plastic_nonlocal_outputID(maxval(phase_Noutput), maxNinstances), source=undefined_ID)
@ -498,7 +493,6 @@ subroutine plastic_nonlocal_init
if (outputID /= undefined_ID) then if (outputID /= undefined_ID) then
plastic_nonlocal_output(i,phase_plasticityInstance(p)) = outputs(i) plastic_nonlocal_output(i,phase_plasticityInstance(p)) = outputs(i)
plastic_nonlocal_sizePostResult(i,phase_plasticityInstance(p)) = prm%totalNslip
prm%outputID = [prm%outputID , outputID] prm%outputID = [prm%outputID , outputID]
endif endif
@ -524,7 +518,6 @@ subroutine plastic_nonlocal_init
prm%totalNslip,0,0) prm%totalNslip,0,0)
plasticState(p)%nonlocal = .true. plasticState(p)%nonlocal = .true.
plasticState(p)%offsetDeltaState = 0 ! ToDo: state structure does not follow convention plasticState(p)%offsetDeltaState = 0 ! ToDo: state structure does not follow convention
plasticState(p)%sizePostResults = sum(plastic_nonlocal_sizePostResult(:,phase_plasticityInstance(p)))
totalNslip(phase_plasticityInstance(p)) = prm%totalNslip totalNslip(phase_plasticityInstance(p)) = prm%totalNslip