multi physics output now working for all solvers

This commit is contained in:
Pratheek Shanthraj 2015-03-25 16:02:30 +00:00
parent 8b09d78ed1
commit 37a7364a3e
3 changed files with 203 additions and 228 deletions

View File

@ -242,164 +242,164 @@ subroutine constitutive_init(temperature_init)
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! write description file for constitutive phase output ! write description file for constitutive phase output
call IO_write_jobFile(FILEUNIT,'outputConstitutive') if (worldrank == 0_pInt) then
do phase = 1_pInt,material_Nphase call IO_write_jobFile(FILEUNIT,'outputConstitutive')
instance = phase_plasticityInstance(phase) ! which instance of a plasticity is present phase do phase = 1_pInt,material_Nphase
knownPlasticity = .true. ! assume valid instance = phase_plasticityInstance(phase) ! which instance of a plasticity is present phase
select case(phase_plasticity(phase)) ! split per constititution knownPlasticity = .true. ! assume valid
case (PLASTICITY_NONE_ID) select case(phase_plasticity(phase)) ! split per constititution
outputName = PLASTICITY_NONE_label case (PLASTICITY_NONE_ID)
thisNoutput => null() outputName = PLASTICITY_NONE_label
thisOutput => null() ! plastic_none_output thisNoutput => null()
thisSize => null() ! plastic_none_sizePostResult thisOutput => null() ! plastic_none_output
case (PLASTICITY_J2_ID) thisSize => null() ! plastic_none_sizePostResult
outputName = PLASTICITY_J2_label case (PLASTICITY_J2_ID)
thisNoutput => plastic_j2_Noutput outputName = PLASTICITY_J2_label
thisOutput => plastic_j2_output thisNoutput => plastic_j2_Noutput
thisSize => plastic_j2_sizePostResult thisOutput => plastic_j2_output
case (PLASTICITY_PHENOPOWERLAW_ID) thisSize => plastic_j2_sizePostResult
outputName = PLASTICITY_PHENOPOWERLAW_label case (PLASTICITY_PHENOPOWERLAW_ID)
thisNoutput => plastic_phenopowerlaw_Noutput outputName = PLASTICITY_PHENOPOWERLAW_label
thisOutput => plastic_phenopowerlaw_output thisNoutput => plastic_phenopowerlaw_Noutput
thisSize => plastic_phenopowerlaw_sizePostResult thisOutput => plastic_phenopowerlaw_output
case (PLASTICITY_DISLOTWIN_ID) thisSize => plastic_phenopowerlaw_sizePostResult
outputName = PLASTICITY_DISLOTWIN_label case (PLASTICITY_DISLOTWIN_ID)
thisNoutput => plastic_dislotwin_Noutput outputName = PLASTICITY_DISLOTWIN_label
thisOutput => plastic_dislotwin_output thisNoutput => plastic_dislotwin_Noutput
thisSize => plastic_dislotwin_sizePostResult thisOutput => plastic_dislotwin_output
case (PLASTICITY_DISLOKMC_ID) thisSize => plastic_dislotwin_sizePostResult
outputName = PLASTICITY_DISLOKMC_label case (PLASTICITY_DISLOKMC_ID)
thisNoutput => plastic_dislokmc_Noutput outputName = PLASTICITY_DISLOKMC_label
thisOutput => plastic_dislokmc_output thisNoutput => plastic_dislokmc_Noutput
thisSize => plastic_dislokmc_sizePostResult thisOutput => plastic_dislokmc_output
case (PLASTICITY_DISLOUCLA_ID) thisSize => plastic_dislokmc_sizePostResult
outputName = PLASTICITY_DISLOUCLA_label case (PLASTICITY_DISLOUCLA_ID)
thisNoutput => plastic_disloucla_Noutput outputName = PLASTICITY_DISLOUCLA_label
thisOutput => plastic_disloucla_output thisNoutput => plastic_disloucla_Noutput
thisSize => plastic_disloucla_sizePostResult thisOutput => plastic_disloucla_output
case (PLASTICITY_TITANMOD_ID) thisSize => plastic_disloucla_sizePostResult
outputName = PLASTICITY_TITANMOD_label case (PLASTICITY_TITANMOD_ID)
thisNoutput => plastic_titanmod_Noutput outputName = PLASTICITY_TITANMOD_label
thisOutput => plastic_titanmod_output thisNoutput => plastic_titanmod_Noutput
thisSize => plastic_titanmod_sizePostResult thisOutput => plastic_titanmod_output
case (PLASTICITY_NONLOCAL_ID) thisSize => plastic_titanmod_sizePostResult
outputName = PLASTICITY_NONLOCAL_label case (PLASTICITY_NONLOCAL_ID)
thisNoutput => plastic_nonlocal_Noutput outputName = PLASTICITY_NONLOCAL_label
thisOutput => plastic_nonlocal_output thisNoutput => plastic_nonlocal_Noutput
thisSize => plastic_nonlocal_sizePostResult thisOutput => plastic_nonlocal_output
case default thisSize => plastic_nonlocal_sizePostResult
knownPlasticity = .false. case default
end select knownPlasticity = .false.
write(FILEUNIT,'(/,a,/)') '['//trim(phase_name(phase))//']' end select
if (knownPlasticity) then write(FILEUNIT,'(/,a,/)') '['//trim(phase_name(phase))//']'
write(FILEUNIT,'(a)') '(plasticity)'//char(9)//trim(outputName) if (knownPlasticity) then
if (phase_plasticity(phase) /= PLASTICITY_NONE_ID) then write(FILEUNIT,'(a)') '(plasticity)'//char(9)//trim(outputName)
do e = 1_pInt,thisNoutput(instance) if (phase_plasticity(phase) /= PLASTICITY_NONE_ID) then
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance) do e = 1_pInt,thisNoutput(instance)
enddo write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
enddo
endif
endif endif
endif instance = phase_damageInstance(phase) ! which instance of a plasticity is present phase
#ifdef multiphysicsOut knownDamage = .true.
instance = phase_damageInstance(phase) ! which instance of a plasticity is present phase select case(phase_damage(phase)) ! split per constititution
knownDamage = .true. case (LOCAL_DAMAGE_none_ID)
select case(phase_damage(phase)) ! split per constititution outputName = LOCAL_DAMAGE_NONE_label
case (LOCAL_DAMAGE_none_ID) thisNoutput => null()
outputName = LOCAL_DAMAGE_NONE_label thisOutput => null()
thisNoutput => null() thisSize => null()
thisOutput => null() case (LOCAL_DAMAGE_isoBrittle_ID)
thisSize => null() outputName = LOCAL_DAMAGE_isoBrittle_LABEL
case (LOCAL_DAMAGE_isoBrittle_ID) thisNoutput => damage_isoBrittle_Noutput
outputName = LOCAL_DAMAGE_isoBrittle_LABEL thisOutput => damage_isoBrittle_output
thisNoutput => damage_isoBrittle_Noutput thisSize => damage_isoBrittle_sizePostResult
thisOutput => damage_isoBrittle_output case (LOCAL_DAMAGE_isoDuctile_ID)
thisSize => damage_isoBrittle_sizePostResult outputName = LOCAL_DAMAGE_isoDuctile_LABEL
case (LOCAL_DAMAGE_isoDuctile_ID) thisNoutput => damage_isoDuctile_Noutput
outputName = LOCAL_DAMAGE_isoDuctile_LABEL thisOutput => damage_isoDuctile_output
thisNoutput => damage_isoDuctile_Noutput thisSize => damage_isoDuctile_sizePostResult
thisOutput => damage_isoDuctile_output case (LOCAL_DAMAGE_anisoBrittle_ID)
thisSize => damage_isoDuctile_sizePostResult outputName = LOCAL_DAMAGE_anisoBrittle_label
case (LOCAL_DAMAGE_anisoBrittle_ID) thisNoutput => damage_anisoBrittle_Noutput
outputName = LOCAL_DAMAGE_anisoBrittle_label thisOutput => damage_anisoBrittle_output
thisNoutput => damage_anisoBrittle_Noutput thisSize => damage_anisoBrittle_sizePostResult
thisOutput => damage_anisoBrittle_output case (LOCAL_DAMAGE_anisoDuctile_ID)
thisSize => damage_anisoBrittle_sizePostResult outputName = LOCAL_DAMAGE_anisoDuctile_LABEL
case (LOCAL_DAMAGE_anisoDuctile_ID) thisNoutput => damage_anisoDuctile_Noutput
outputName = LOCAL_DAMAGE_anisoDuctile_LABEL thisOutput => damage_anisoDuctile_output
thisNoutput => damage_anisoDuctile_Noutput thisSize => damage_anisoDuctile_sizePostResult
thisOutput => damage_anisoDuctile_output case (LOCAL_DAMAGE_gurson_ID)
thisSize => damage_anisoDuctile_sizePostResult outputName = LOCAL_DAMAGE_gurson_label
case (LOCAL_DAMAGE_gurson_ID) thisNoutput => damage_gurson_Noutput
outputName = LOCAL_DAMAGE_gurson_label thisOutput => damage_gurson_output
thisNoutput => damage_gurson_Noutput thisSize => damage_gurson_sizePostResult
thisOutput => damage_gurson_output case (LOCAL_DAMAGE_phaseField_ID)
thisSize => damage_gurson_sizePostResult outputName = LOCAL_DAMAGE_phaseField_label
case (LOCAL_DAMAGE_phaseField_ID) thisNoutput => damage_phaseField_Noutput
outputName = LOCAL_DAMAGE_phaseField_label thisOutput => damage_phaseField_output
thisNoutput => damage_phaseField_Noutput thisSize => damage_phaseField_sizePostResult
thisOutput => damage_phaseField_output case default
thisSize => damage_phaseField_sizePostResult knownDamage = .false.
case default end select
knownDamage = .false. if (knownDamage) then
end select write(FILEUNIT,'(a)') '(damage)'//char(9)//trim(outputName)
if (knownDamage) then if (phase_damage(phase) /= LOCAL_DAMAGE_none_ID) then
write(FILEUNIT,'(a)') '(damage)'//char(9)//trim(outputName) do e = 1_pInt,thisNoutput(instance)
if (phase_damage(phase) /= LOCAL_DAMAGE_none_ID) then write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
do e = 1_pInt,thisNoutput(instance) enddo
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance) endif
enddo
endif endif
endif instance = phase_thermalInstance(phase) ! which instance is present phase
instance = phase_thermalInstance(phase) ! which instance is present phase knownThermal = .true.
knownThermal = .true. select case(phase_thermal(phase)) ! split per constititution
select case(phase_thermal(phase)) ! split per constititution case (LOCAL_THERMAL_isothermal_ID)
case (LOCAL_THERMAL_isothermal_ID) outputName = LOCAL_THERMAL_ISOTHERMAL_label
outputName = LOCAL_THERMAL_ISOTHERMAL_label thisNoutput => null()
thisNoutput => null() thisOutput => null()
thisOutput => null() thisSize => null()
thisSize => null() case (LOCAL_THERMAL_adiabatic_ID)
case (LOCAL_THERMAL_adiabatic_ID) outputName = LOCAL_THERMAL_ADIABATIC_label
outputName = LOCAL_THERMAL_ADIABATIC_label thisNoutput => thermal_adiabatic_Noutput
thisNoutput => thermal_adiabatic_Noutput thisOutput => thermal_adiabatic_output
thisOutput => thermal_adiabatic_output thisSize => thermal_adiabatic_sizePostResult
thisSize => thermal_adiabatic_sizePostResult case default
case default knownThermal = .false.
knownThermal = .false. end select
end select if (knownThermal) then
if (knownThermal) then write(FILEUNIT,'(a)') '(thermal)'//char(9)//trim(outputName)
write(FILEUNIT,'(a)') '(thermal)'//char(9)//trim(outputName) if (phase_thermal(phase) /= LOCAL_THERMAL_isothermal_ID) then
if (phase_thermal(phase) /= LOCAL_THERMAL_isothermal_ID) then do e = 1_pInt,thisNoutput(instance)
do e = 1_pInt,thisNoutput(instance) write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance) enddo
enddo endif
endif endif
endif instance = phase_vacancyInstance(phase) ! which instance is present phase
instance = phase_vacancyInstance(phase) ! which instance is present phase knownVacancy = .true.
knownVacancy = .true. select case(phase_vacancy(phase)) ! split per constititution
select case(phase_vacancy(phase)) ! split per constititution case (LOCAL_VACANCY_constant_ID)
case (LOCAL_VACANCY_constant_ID) outputName = LOCAL_VACANCY_constant_label
outputName = LOCAL_VACANCY_constant_label thisNoutput => null()
thisNoutput => null() thisOutput => null()
thisOutput => null() thisSize => null()
thisSize => null() case (LOCAL_VACANCY_generation_ID)
case (LOCAL_VACANCY_generation_ID) outputName = LOCAL_VACANCY_generation_label
outputName = LOCAL_VACANCY_generation_label thisNoutput => vacancy_generation_Noutput
thisNoutput => vacancy_generation_Noutput thisOutput => vacancy_generation_output
thisOutput => vacancy_generation_output thisSize => vacancy_generation_sizePostResult
thisSize => vacancy_generation_sizePostResult case default
case default knownVacancy = .false.
knownVacancy = .false. end select
end select if (knownVacancy) then
if (knownVacancy) then write(FILEUNIT,'(a)') '(vacancy)'//char(9)//trim(outputName)
write(FILEUNIT,'(a)') '(vacancy)'//char(9)//trim(outputName) if (phase_vacancy(phase) /= LOCAL_VACANCY_constant_ID) then
if (phase_vacancy(phase) /= LOCAL_VACANCY_constant_ID) then do e = 1_pInt,thisNoutput(instance)
do e = 1_pInt,thisNoutput(instance) write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance) enddo
enddo endif
endif endif
endif enddo
#endif close(FILEUNIT)
enddo endif
close(FILEUNIT)
constitutive_maxSizeDotState = 0_pInt constitutive_maxSizeDotState = 0_pInt
constitutive_maxSizePostResults = 0_pInt constitutive_maxSizePostResults = 0_pInt
@ -1739,7 +1739,6 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
plastic_titanmod_postResults plastic_titanmod_postResults
use plastic_nonlocal, only: & use plastic_nonlocal, only: &
plastic_nonlocal_postResults plastic_nonlocal_postResults
#ifdef multiphysicsOut
use damage_isoBrittle, only: & use damage_isoBrittle, only: &
damage_isoBrittle_postResults damage_isoBrittle_postResults
use damage_isoDuctile, only: & use damage_isoDuctile, only: &
@ -1756,23 +1755,17 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
thermal_adiabatic_postResults thermal_adiabatic_postResults
use vacancy_generation, only: & use vacancy_generation, only: &
vacancy_generation_postResults vacancy_generation_postResults
#endif
implicit none implicit none
integer(pInt), intent(in) :: & integer(pInt), intent(in) :: &
ipc, & !< grain number ipc, & !< grain number
ip, & !< integration point number ip, & !< integration point number
el !< element number el !< element number
#ifdef multiphysicsOut
real(pReal), dimension(plasticState(material_phase(ipc,ip,el))%sizePostResults + & real(pReal), dimension(plasticState(material_phase(ipc,ip,el))%sizePostResults + &
damageState( material_phase(ipc,ip,el))%sizePostResults + & damageState( material_phase(ipc,ip,el))%sizePostResults + &
thermalState(material_phase(ipc,ip,el))%sizePostResults + & thermalState(material_phase(ipc,ip,el))%sizePostResults + &
vacancyState(material_phase(ipc,ip,el))%sizePostResults) :: & vacancyState(material_phase(ipc,ip,el))%sizePostResults) :: &
constitutive_postResults constitutive_postResults
#else
real(pReal), dimension(plasticState(material_phase(ipc,ip,el))%sizePostResults) :: &
constitutive_postResults
#endif
real(pReal), intent(in), dimension(3,3,homogenization_maxNgrains,mesh_maxNips,mesh_NcpElems) :: & real(pReal), intent(in), dimension(3,3,homogenization_maxNgrains,mesh_maxNips,mesh_NcpElems) :: &
FeArray !< elastic deformation gradient FeArray !< elastic deformation gradient
real(pReal), intent(in), dimension(6) :: & real(pReal), intent(in), dimension(6) :: &
@ -1806,7 +1799,6 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
plastic_nonlocal_postResults (Tstar_v,FeArray,ip,el) plastic_nonlocal_postResults (Tstar_v,FeArray,ip,el)
end select end select
#ifdef multiphysicsOut
startPos = endPos + 1_pInt startPos = endPos + 1_pInt
endPos = endPos + damageState(material_phase(ipc,ip,el))%sizePostResults endPos = endPos + damageState(material_phase(ipc,ip,el))%sizePostResults
select case (phase_damage(material_phase(ipc,ip,el))) select case (phase_damage(material_phase(ipc,ip,el)))
@ -1837,7 +1829,6 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
case (LOCAL_VACANCY_generation_ID) case (LOCAL_VACANCY_generation_ID)
constitutive_postResults(startPos:endPos) = vacancy_generation_postResults(ipc, ip, el) constitutive_postResults(startPos:endPos) = vacancy_generation_postResults(ipc, ip, el)
end select end select
#endif
end function constitutive_postResults end function constitutive_postResults

View File

@ -395,16 +395,18 @@ subroutine crystallite_init
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! write description file for crystallite output ! write description file for crystallite output
call IO_write_jobFile(FILEUNIT,'outputCrystallite') if (worldrank == 0_pInt) then
call IO_write_jobFile(FILEUNIT,'outputCrystallite')
do p = 1_pInt,material_Ncrystallite do p = 1_pInt,material_Ncrystallite
write(FILEUNIT,'(/,a,/)') '['//trim(crystallite_name(p))//']' write(FILEUNIT,'(/,a,/)') '['//trim(crystallite_name(p))//']'
do e = 1_pInt,crystallite_Noutput(p) do e = 1_pInt,crystallite_Noutput(p)
write(FILEUNIT,'(a,i4)') trim(crystallite_output(e,p))//char(9),crystallite_sizePostResult(e,p) write(FILEUNIT,'(a,i4)') trim(crystallite_output(e,p))//char(9),crystallite_sizePostResult(e,p)
enddo
enddo enddo
enddo
close(FILEUNIT) close(FILEUNIT)
endif
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! initialize ! initialize
@ -4229,18 +4231,12 @@ function crystallite_postResults(ipc, ip, el)
ip, & !< integration point index ip, & !< integration point index
ipc !< grain index ipc !< grain index
#ifdef multiphysicsOut
real(pReal), dimension(1+crystallite_sizePostResults(microstructure_crystallite(mesh_element(4,el))) + & real(pReal), dimension(1+crystallite_sizePostResults(microstructure_crystallite(mesh_element(4,el))) + &
1+plasticState(material_phase(ipc,ip,el))%sizePostResults + & 1+plasticState(material_phase(ipc,ip,el))%sizePostResults + &
damageState( material_phase(ipc,ip,el))%sizePostResults + & damageState( material_phase(ipc,ip,el))%sizePostResults + &
thermalState(material_phase(ipc,ip,el))%sizePostResults + & thermalState(material_phase(ipc,ip,el))%sizePostResults + &
vacancyState(material_phase(ipc,ip,el))%sizePostResults) :: & vacancyState(material_phase(ipc,ip,el))%sizePostResults) :: &
crystallite_postResults crystallite_postResults
#else
real(pReal), dimension(1+crystallite_sizePostResults(microstructure_crystallite(mesh_element(4,el)))+ &
1+plasticState(material_phase(ipc,ip,el))%sizePostResults) :: &
crystallite_postResults
#endif
real(pReal), dimension(3,3) :: & real(pReal), dimension(3,3) :: &
Ee Ee
real(pReal), dimension(4) :: & real(pReal), dimension(4) :: &

View File

@ -228,47 +228,46 @@ subroutine homogenization_init()
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! write description file for homogenization output ! write description file for homogenization output
call IO_write_jobFile(FILEUNIT,'outputHomogenization') if (worldrank == 0_pInt) then
do p = 1,material_Nhomogenization call IO_write_jobFile(FILEUNIT,'outputHomogenization')
i = homogenization_typeInstance(p) ! which instance of this homogenization type do p = 1,material_Nhomogenization
knownHomogenization = .true. ! assume valid i = homogenization_typeInstance(p) ! which instance of this homogenization type
select case(homogenization_type(p)) ! split per homogenization type knownHomogenization = .true. ! assume valid
case (HOMOGENIZATION_NONE_ID) select case(homogenization_type(p)) ! split per homogenization type
outputName = HOMOGENIZATION_NONE_label case (HOMOGENIZATION_NONE_ID)
thisNoutput => null() outputName = HOMOGENIZATION_NONE_label
thisOutput => null() thisNoutput => null()
thisSize => null() thisOutput => null()
case (HOMOGENIZATION_ISOSTRAIN_ID) thisSize => null()
outputName = HOMOGENIZATION_ISOSTRAIN_label case (HOMOGENIZATION_ISOSTRAIN_ID)
thisNoutput => homogenization_isostrain_Noutput outputName = HOMOGENIZATION_ISOSTRAIN_label
thisOutput => homogenization_isostrain_output thisNoutput => homogenization_isostrain_Noutput
thisSize => homogenization_isostrain_sizePostResult thisOutput => homogenization_isostrain_output
case (HOMOGENIZATION_RGC_ID) thisSize => homogenization_isostrain_sizePostResult
outputName = HOMOGENIZATION_RGC_label case (HOMOGENIZATION_RGC_ID)
thisNoutput => homogenization_RGC_Noutput outputName = HOMOGENIZATION_RGC_label
thisOutput => homogenization_RGC_output thisNoutput => homogenization_RGC_Noutput
thisSize => homogenization_RGC_sizePostResult thisOutput => homogenization_RGC_output
case default thisSize => homogenization_RGC_sizePostResult
knownHomogenization = .false. case default
end select knownHomogenization = .false.
write(FILEUNIT,'(/,a,/)') '['//trim(homogenization_name(p))//']' end select
if (knownHomogenization) then write(FILEUNIT,'(/,a,/)') '['//trim(homogenization_name(p))//']'
write(FILEUNIT,'(a)') '(type)'//char(9)//trim(outputName) if (knownHomogenization) then
write(FILEUNIT,'(a,i4)') '(ngrains)'//char(9),homogenization_Ngrains(p) write(FILEUNIT,'(a)') '(type)'//char(9)//trim(outputName)
if (homogenization_type(p) /= HOMOGENIZATION_NONE_ID) then write(FILEUNIT,'(a,i4)') '(ngrains)'//char(9),homogenization_Ngrains(p)
do e = 1,thisNoutput(i) if (homogenization_type(p) /= HOMOGENIZATION_NONE_ID) then
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,i))//char(9),thisSize(e,i) do e = 1,thisNoutput(i)
enddo write(FILEUNIT,'(a,i4)') trim(thisOutput(e,i))//char(9),thisSize(e,i)
enddo
endif
endif endif
endif do e = 1_pInt,field_Noutput(p)
#ifdef multiphysicsOut write(FILEUNIT,'(a,i4)') trim(field_output(e,p))//char(9),field_sizePostResult(e,p)
write(FILEUNIT,'(a)') '(field)' enddo
do e = 1_pInt,field_Noutput(p)
write(FILEUNIT,'(a,i4)') trim(field_output(e,p))//char(9),field_sizePostResult(e,p)
enddo enddo
#endif close(FILEUNIT)
enddo endif
close(FILEUNIT)
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! allocate and initialize global variables ! allocate and initialize global variables
@ -310,16 +309,12 @@ subroutine homogenization_init()
enddo enddo
materialpoint_sizeResults = 1 & ! grain count materialpoint_sizeResults = 1 & ! grain count
+ 1 + homogenization_maxSizePostResults & ! homogSize & homogResult + 1 + homogenization_maxSizePostResults & ! homogSize & homogResult
#ifdef multiphysicsOut
+ field_maxSizePostResults & ! field size & field result + field_maxSizePostResults & ! field size & field result
#endif
+ homogenization_maxNgrains * (1 + crystallite_maxSizePostResults & ! crystallite size & crystallite results + homogenization_maxNgrains * (1 + crystallite_maxSizePostResults & ! crystallite size & crystallite results
#ifdef multiphysicsOut + 1 + constitutive_maxSizePostResults & ! constitutive size & constitutive results
+ constitutive_damage_maxSizePostResults & + constitutive_damage_maxSizePostResults &
+ constitutive_thermal_maxSizePostResults & + constitutive_thermal_maxSizePostResults &
+ constitutive_vacancy_maxSizePostResults & + constitutive_vacancy_maxSizePostResults)
#endif
+ 1 + constitutive_maxSizePostResults) ! constitutive size & constitutive results
allocate(materialpoint_results(materialpoint_sizeResults,mesh_maxNips,mesh_NcpElems)) allocate(materialpoint_results(materialpoint_sizeResults,mesh_maxNips,mesh_NcpElems))
mainProcess: if (worldrank == 0) then mainProcess: if (worldrank == 0) then
@ -751,28 +746,21 @@ subroutine materialpoint_postResults
thePos = thePos + theSize thePos = thePos + theSize
endif endif
#ifdef multiphysicsOut
theSize = field_sizePostResults(mappingHomogenization(2,i,e)) theSize = field_sizePostResults(mappingHomogenization(2,i,e))
if (theSize > 0_pInt) then ! any homogenization results to mention? if (theSize > 0_pInt) then ! any homogenization results to mention?
materialpoint_results(thePos+1:thePos+theSize,i,e) = field_postResults(i,e) ! tell field results materialpoint_results(thePos+1:thePos+theSize,i,e) = field_postResults(i,e) ! tell field results
thePos = thePos + theSize thePos = thePos + theSize
endif endif
#endif
materialpoint_results(thePos+1,i,e) = real(myNgrains,pReal) ! tell number of grains at materialpoint materialpoint_results(thePos+1,i,e) = real(myNgrains,pReal) ! tell number of grains at materialpoint
thePos = thePos + 1_pInt thePos = thePos + 1_pInt
grainLooping :do g = 1,myNgrains grainLooping :do g = 1,myNgrains
#ifdef multiphysicsOut
theSize = 1 + crystallite_sizePostResults(myCrystallite) + & theSize = 1 + crystallite_sizePostResults(myCrystallite) + &
1 + plasticState(material_phase(g,i,e))%sizePostResults + & !ToDo 1 + plasticState(material_phase(g,i,e))%sizePostResults + & !ToDo
damageState(material_phase(g,i,e))%sizePostResults + & damageState(material_phase(g,i,e))%sizePostResults + &
thermalState(material_phase(g,i,e))%sizePostResults + & thermalState(material_phase(g,i,e))%sizePostResults + &
vacancyState(material_phase(g,i,e))%sizePostResults vacancyState(material_phase(g,i,e))%sizePostResults
#else
theSize = (1 + crystallite_sizePostResults(myCrystallite)) + &
(1 + plasticState(material_phase(g,i,e))%sizePostResults)
#endif
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
enddo grainLooping enddo grainLooping