From 82932c37086515210de4b9c4992edcbe4a0680f2 Mon Sep 17 00:00:00 2001
From: Pratheek Shanthraj
Date: Fri, 26 Sep 2014 10:34:36 +0000
Subject: [PATCH] added field quantity output
---
code/homogenization.f90 | 152 ++++++++++++++++++++++++++++--
code/homogenization_RGC.f90 | 65 ++++++-------
code/homogenization_isostrain.f90 | 45 ++++-----
3 files changed, 193 insertions(+), 69 deletions(-)
diff --git a/code/homogenization.f90 b/code/homogenization.f90
index f05c164c9..5d9c15302 100644
--- a/code/homogenization.f90
+++ b/code/homogenization.f90
@@ -25,7 +25,8 @@ module homogenization
materialpoint_results !< results array of material point
integer(pInt), public, protected :: &
materialpoint_sizeResults, &
- homogenization_maxSizePostResults
+ homogenization_maxSizePostResults, &
+ field_maxSizePostResults
real(pReal), dimension(:,:), allocatable, public, protected :: &
materialpoint_heat
@@ -43,6 +44,22 @@ module homogenization
materialpoint_converged
logical, dimension(:,:,:), allocatable, private :: &
materialpoint_doneAndHappy
+ enum, bind(c)
+ enumerator :: undefined_ID, &
+ temperature_ID, &
+ damage_ID
+ end enum
+ integer(pInt), dimension(:), allocatable, private, protected :: &
+ field_sizePostResults
+ integer(pInt), dimension(:,:), allocatable, private :: &
+ field_sizePostResult
+
+ character(len=64), dimension(:,:), allocatable, private :: &
+ field_output !< name of each post result output
+ integer(pInt), dimension(:), allocatable, private :: &
+ field_Noutput !< number of outputs per homog instance
+ integer(kind(undefined_ID)), dimension(:,:), allocatable, private :: &
+ field_outputID !< ID of each post result output
public :: &
homogenization_init, &
@@ -56,7 +73,8 @@ module homogenization
field_getThermalConductivity33, &
field_getMassDensity, &
field_getSpecificHeat, &
- materialpoint_postResults
+ materialpoint_postResults, &
+ field_postResults
private :: &
homogenization_partitionDeformation, &
homogenization_updateState, &
@@ -86,13 +104,6 @@ subroutine homogenization_init()
debug_levelBasic, &
debug_e, &
debug_g
- use IO, only: &
- IO_error, &
- IO_open_file, &
- IO_open_jobFile_stat, &
- IO_write_jobFile, &
- IO_write_jobIntFile, &
- IO_timeStamp
use mesh, only: &
mesh_maxNips, &
mesh_NcpElems, &
@@ -111,11 +122,13 @@ subroutine homogenization_init()
use homogenization_none
use homogenization_isostrain
use homogenization_RGC
+ use IO
implicit none
integer(pInt), parameter :: FILEUNIT = 200_pInt
integer(pInt) :: e,i,p,myInstance
integer(pInt), dimension(:,:), pointer :: thisSize
+ integer(pInt), dimension(:) , pointer :: thisNoutput
character(len=64), dimension(:,:), pointer :: thisOutput
character(len=32) :: outputName !< name of output, intermediate fix until HDF5 output is ready
logical :: knownHomogenization
@@ -125,6 +138,13 @@ subroutine homogenization_init()
allocate(mapping(mesh_ncpelems,4),source=0_pInt)
allocate(InstancePosition(material_Nhomogenization),source=0_pInt)
#endif
+ integer(pInt), parameter :: MAXNCHUNKS = 2_pInt
+ integer(pInt), dimension(1_pInt+2_pInt*MAXNCHUNKS) :: positions
+ integer(pInt) :: section = 0_pInt
+ character(len=65536) :: &
+ tag = '', &
+ line = ''
+
!--------------------------------------------------------------------------------------------------
! parse homogenization from config file
if (.not. IO_open_jobFile_stat(FILEUNIT,material_localFileExt)) & ! no local material configuration present...
@@ -137,6 +157,61 @@ subroutine homogenization_init()
call homogenization_RGC_init(FILEUNIT)
close(FILEUNIT)
+!--------------------------------------------------------------------------------------------------
+! parse field from config file
+ allocate(field_sizePostResults(material_Nhomogenization), source=0_pInt)
+ allocate(field_sizePostResult(maxval(homogenization_Noutput),material_Nhomogenization), &
+ source=0_pInt)
+ allocate(field_Noutput(material_Nhomogenization), source=0_pInt)
+ allocate(field_outputID(maxval(homogenization_Noutput),material_Nhomogenization), &
+ source=undefined_ID)
+ allocate(field_output(maxval(homogenization_Noutput),material_Nhomogenization))
+ field_output = ''
+
+ if (.not. IO_open_jobFile_stat(FILEUNIT,material_localFileExt)) & ! no local material configuration present...
+ call IO_open_file(FILEUNIT,material_configFile) ! ... open material.config file
+ rewind(FILEUNIT)
+ do while (trim(line) /= IO_EOF .and. IO_lc(IO_getTag(line,'<','>')) /= material_partHomogenization)! wind forward to
+ line = IO_read(FILEUNIT)
+ enddo
+
+ parsingFile: do while (trim(line) /= IO_EOF) ! read through sections of homogenization part
+ line = IO_read(FILEUNIT)
+ if (IO_isBlank(line)) cycle ! skip empty lines
+ if (IO_getTag(line,'<','>') /= '') then ! stop at next part
+ line = IO_read(FILEUNIT, .true.) ! reset IO_read
+ exit
+ endif
+ if (IO_getTag(line,'[',']') /= '') then ! next section
+ section = section + 1_pInt
+ cycle
+ endif
+ if (section > 0_pInt ) then ! do not short-circuit here (.and. with next if-statement). It's not safe in Fortran
+ positions = IO_stringPos(line,MAXNCHUNKS)
+ tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key
+ select case(tag)
+ case ('(output)')
+ select case(IO_lc(IO_stringValue(line,positions,2_pInt)))
+ case('temperature')
+ field_Noutput(section) = field_Noutput(section) + 1_pInt
+ field_outputID(field_Noutput(section),section) = temperature_ID
+ field_sizePostResult(field_Noutput(section),section) = 1_pInt
+ field_sizePostResults(section) = field_sizePostResults(section) + 1_pInt
+ field_output(field_Noutput(section),section) = IO_lc(IO_stringValue(line,positions,2_pInt))
+ case('damage')
+ field_Noutput(section) = field_Noutput(section) + 1_pInt
+ field_outputID(field_Noutput(section),section) = damage_ID
+ field_sizePostResult(field_Noutput(section),section) = 1_pInt
+ field_sizePostResults(section) = field_sizePostResults(section) + 1_pInt
+ field_output(field_Noutput(section),section) = IO_lc(IO_stringValue(line,positions,2_pInt))
+
+ end select
+
+ end select
+ endif
+ enddo parsingFile
+ close(FILEUNIT)
+
!--------------------------------------------------------------------------------------------------
! write description file for homogenization output
call IO_write_jobFile(FILEUNIT,'outputHomogenization')
@@ -146,14 +221,17 @@ subroutine homogenization_init()
select case(homogenization_type(p)) ! split per homogenization type
case (HOMOGENIZATION_NONE_ID)
outputName = HOMOGENIZATION_NONE_label
+ thisNoutput => null()
thisOutput => null()
thisSize => null()
case (HOMOGENIZATION_ISOSTRAIN_ID)
outputName = HOMOGENIZATION_ISOSTRAIN_label
+ thisNoutput => homogenization_isostrain_Noutput
thisOutput => homogenization_isostrain_output
thisSize => homogenization_isostrain_sizePostResult
case (HOMOGENIZATION_RGC_ID)
outputName = HOMOGENIZATION_RGC_label
+ thisNoutput => homogenization_RGC_Noutput
thisOutput => homogenization_RGC_output
thisSize => homogenization_RGC_sizePostResult
case default
@@ -163,10 +241,16 @@ subroutine homogenization_init()
if (knownHomogenization) then
write(FILEUNIT,'(a)') '(type)'//char(9)//trim(outputName)
write(FILEUNIT,'(a,i4)') '(ngrains)'//char(9),homogenization_Ngrains(p)
- do e = 1,homogenization_Noutput(p)
+ do e = 1,thisNoutput(i)
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,i))//char(9),thisSize(e,i)
enddo
endif
+#ifdef multiphysicsOut
+ write(FILEUNIT,'(a)') '(field)'
+ do e = 1_pInt,field_Noutput(p)
+ write(FILEUNIT,'(a,i4)') trim(field_output(e,p))//char(9),field_sizePostResult(e,p)
+ enddo
+#endif
enddo
close(FILEUNIT)
@@ -204,11 +288,16 @@ subroutine homogenization_init()
#endif
homogenization_maxSizePostResults = 0_pInt
+ field_maxSizePostResults = 0_pInt
do p = 1,material_Nhomogenization
homogenization_maxSizePostResults = max(homogenization_maxSizePostResults,homogState(p)%sizePostResults)
+ field_maxSizePostResults = max(field_maxSizePostResults,field_Noutput(p))
enddo
materialpoint_sizeResults = 1 & ! grain count
+ 1 + homogenization_maxSizePostResults & ! homogSize & homogResult
+#ifdef multiphysicsOut
+ + 1 + field_maxSizePostResults & ! field size & field result
+#endif
+ homogenization_maxNgrains * (1 + crystallite_maxSizePostResults & ! crystallite size & crystallite results
#ifdef multiphysicsOut
+ 1 + constitutive_damage_maxSizePostResults &
@@ -625,6 +714,17 @@ subroutine materialpoint_postResults
materialpoint_results(thePos+1:thePos+theSize,i,e) = homogenization_postResults(i,e) ! tell homogenization results
thePos = thePos + theSize
endif
+
+#ifdef multiphysicsOut
+ theSize = field_Noutput(mappingHomogenization(2,i,e))
+ materialpoint_results(thePos+1,i,e) = real(theSize,pReal) ! tell size of field results
+ thePos = thePos + 1_pInt
+
+ 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
+ thePos = thePos + theSize
+ endif
+#endif
materialpoint_results(thePos+1,i,e) = real(myNgrains,pReal) ! tell number of grains at materialpoint
thePos = thePos + 1_pInt
@@ -1184,4 +1284,36 @@ function homogenization_postResults(ip,el)
end function homogenization_postResults
+!--------------------------------------------------------------------------------------------------
+!> @brief return array of homogenization results for post file inclusion. call only,
+!> if homogenization_sizePostResults(i,e) > 0 !!
+!--------------------------------------------------------------------------------------------------
+function field_postResults(ip,el)
+ use material, only: &
+ mappingHomogenization
+
+ implicit none
+ integer(pInt), intent(in) :: &
+ ip, & !< integration point
+ el !< element number
+ real(pReal), dimension(field_sizePostResults(mappingHomogenization(2,ip,el))) :: &
+ field_postResults
+ integer(pInt) :: &
+ c = 0_pInt, homog, o
+
+ field_postResults = 0.0_pReal
+ homog = mappingHomogenization(2,ip,el)
+ do o = 1_pInt,field_Noutput(homog)
+ select case(field_outputID(o,homog))
+ case (temperature_ID)
+ field_postResults(c+1_pInt) = field_getThermal(ip,el)
+ c = c + 1_pInt
+ case (damage_ID)
+ field_postResults(c+1_pInt) = field_getDAMAGE(ip,el)
+ c = c + 1_pInt
+ end select
+ enddo
+
+end function field_postResults
+
end module homogenization
diff --git a/code/homogenization_RGC.f90 b/code/homogenization_RGC.f90
index 815ba4096..3b3a666ba 100644
--- a/code/homogenization_RGC.f90
+++ b/code/homogenization_RGC.f90
@@ -21,7 +21,7 @@ module homogenization_RGC
homogenization_RGC_sizePostResult
character(len=64), dimension(:,:), allocatable,target, public :: &
homogenization_RGC_output ! name of each post result output
- integer(pInt), dimension(:), allocatable, private :: &
+ integer(pInt), dimension(:), allocatable,target, public :: &
homogenization_RGC_Noutput !< number of outputs per homog instance
integer(pInt), dimension(:,:), allocatable, private :: &
homogenization_RGC_Ngrains
@@ -35,7 +35,6 @@ module homogenization_RGC
homogenization_RGC_ciAlpha
enum, bind(c)
enumerator :: undefined_ID, &
- temperature_ID, &
constitutivework_ID, &
penaltyenergy_ID, &
volumediscrepancy_ID, &
@@ -110,7 +109,7 @@ subroutine homogenization_RGC_init(fileUnit)
o, &
instance, &
sizeHState
- integer(pInt) :: section=0_pInt, maxNinstance, i,j,e, output=-1_pInt, mySize, myInstance
+ integer(pInt) :: section=0_pInt, maxNinstance, i,j,e, mySize, myInstance
character(len=65536) :: &
tag = '', &
line = ''
@@ -154,7 +153,6 @@ subroutine homogenization_RGC_init(fileUnit)
endif
if (IO_getTag(line,'[',']') /= '') then ! next section
section = section + 1_pInt
- output = 0_pInt ! reset output counter
cycle
endif
if (section > 0_pInt ) then ! do not short-circuit here (.and. with next if-statement). It's not safe in Fortran
@@ -163,45 +161,54 @@ subroutine homogenization_RGC_init(fileUnit)
positions = IO_stringPos(line,MAXNCHUNKS)
tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key
select case(tag)
- case ('nconstituents','ngrains','type')
- case('field_damage')
case ('(output)')
- output = output + 1_pInt
- homogenization_RGC_output(output,i) = IO_lc(IO_stringValue(line,positions,2_pInt))
- select case(homogenization_RGC_output(output,i))
+ select case(IO_lc(IO_stringValue(line,positions,2_pInt)))
case('constitutivework')
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
- homogenization_RGC_outputID(output,i) = constitutivework_ID
+ homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = constitutivework_ID
+ homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('penaltyenergy')
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
- homogenization_RGC_outputID(output,i) = penaltyenergy_ID
+ homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = penaltyenergy_ID
+ homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('volumediscrepancy')
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
- homogenization_RGC_outputID(output,i) = volumediscrepancy_ID
+ homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = volumediscrepancy_ID
+ homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('averagerelaxrate')
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
- homogenization_RGC_outputID(output,i) = averagerelaxrate_ID
+ homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = averagerelaxrate_ID
+ homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('maximumrelaxrate')
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
- homogenization_RGC_outputID(output,i) = maximumrelaxrate_ID
+ homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = maximumrelaxrate_ID
+ homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('magnitudemismatch')
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
- homogenization_RGC_outputID(output,i) = magnitudemismatch_ID
- case('temperature')
- homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
- homogenization_RGC_outputID(output,i) = temperature_ID
+ homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = magnitudemismatch_ID
+ homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('ipcoords')
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
- homogenization_RGC_outputID(output,i) = ipcoords_ID
+ homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = ipcoords_ID
+ homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('avgdefgrad','avgf')
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
- homogenization_RGC_outputID(output,i) = avgdefgrad_ID
+ homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = avgdefgrad_ID
+ homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('avgp','avgfirstpiola','avg1stpiola')
homogenization_RGC_Noutput(i) = homogenization_RGC_Noutput(i) + 1_pInt
- homogenization_RGC_outputID(output,i) = avgfirstpiola_ID
- case default
- call IO_error(105_pInt,ext_msg=IO_stringValue(line,positions,2_pInt)//&
- ' ('//HOMOGENIZATION_RGC_label//')')
+ homogenization_RGC_outputID(homogenization_RGC_Noutput(i),i) = avgfirstpiola_ID
+ homogenization_RGC_output(homogenization_RGC_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
+
end select
case ('clustersize')
homogenization_RGC_Ngrains(1,i) = IO_intValue(line,positions,2_pInt)
@@ -221,8 +228,7 @@ subroutine homogenization_RGC_init(fileUnit)
homogenization_RGC_angles(1,i) = IO_floatValue(line,positions,2_pInt)
homogenization_RGC_angles(2,i) = IO_floatValue(line,positions,3_pInt)
homogenization_RGC_angles(3,i) = IO_floatValue(line,positions,4_pInt)
- case default
- call IO_error(210_pInt,ext_msg=trim(tag)//' ('//HOMOGENIZATION_RGC_label//')')
+
end select
endif
endif
@@ -270,7 +276,7 @@ subroutine homogenization_RGC_init(fileUnit)
! * Determine size of postResults array
outputsLoop: do o = 1_pInt, homogenization_RGC_Noutput(instance)
select case(homogenization_RGC_outputID(o,instance))
- case(temperature_ID,constitutivework_ID,penaltyenergy_ID,volumediscrepancy_ID, &
+ case(constitutivework_ID,penaltyenergy_ID,volumediscrepancy_ID, &
averagerelaxrate_ID,maximumrelaxrate_ID)
mySize = 1_pInt
case(ipcoords_ID,magnitudemismatch_ID)
@@ -949,8 +955,6 @@ pure function homogenization_RGC_postResults(ip,el,avgP,avgF)
homogState, &
mappingHomogenization, &
homogenization_Noutput
- use crystallite, only: &
- crystallite_temperature
implicit none
integer(pInt), intent(in) :: &
@@ -973,9 +977,6 @@ pure function homogenization_RGC_postResults(ip,el,avgP,avgF)
homogenization_RGC_postResults = 0.0_pReal
do o = 1_pInt,homogenization_Noutput(mesh_element(3,el))
select case(homogenization_RGC_outputID(o,homID))
- case (temperature_ID)
- homogenization_RGC_postResults(c+1_pInt) = crystallite_temperature(ip,el)
- c = c + 1_pInt
case (avgdefgrad_ID)
homogenization_RGC_postResults(c+1_pInt:c+9_pInt) = reshape(avgF,[9])
c = c + 9_pInt
diff --git a/code/homogenization_isostrain.f90 b/code/homogenization_isostrain.f90
index 02853a5d6..0ecb26bee 100644
--- a/code/homogenization_isostrain.f90
+++ b/code/homogenization_isostrain.f90
@@ -18,14 +18,13 @@ module homogenization_isostrain
character(len=64), dimension(:,:), allocatable, target, public :: &
homogenization_isostrain_output !< name of each post result output
- integer(pInt), dimension(:), allocatable, private :: &
+ integer(pInt), dimension(:), allocatable, target, public :: &
homogenization_isostrain_Noutput !< number of outputs per homog instance
integer(pInt), dimension(:), allocatable, private :: &
homogenization_isostrain_Ngrains
enum, bind(c)
enumerator :: undefined_ID, &
nconstituents_ID, &
- temperature_ID, &
ipcoords_ID, &
avgdefgrad_ID, &
avgfirstpiola_ID
@@ -67,7 +66,7 @@ subroutine homogenization_isostrain_init(fileUnit)
integer(pInt), parameter :: MAXNCHUNKS = 2_pInt
integer(pInt), dimension(1_pInt+2_pInt*MAXNCHUNKS) :: positions
integer(pInt) :: &
- section = 0_pInt, i, output, mySize, o
+ section = 0_pInt, i, mySize, o
integer :: &
maxNinstance, &
homog, &
@@ -113,7 +112,6 @@ subroutine homogenization_isostrain_init(fileUnit)
endif
if (IO_getTag(line,'[',']') /= '') then ! next section
section = section + 1_pInt
- output = 0_pInt ! reset output counter
cycle
endif
if (section > 0_pInt ) then ! do not short-circuit here (.and. with next if-statement). It's not safe in Fortran
@@ -122,30 +120,29 @@ subroutine homogenization_isostrain_init(fileUnit)
positions = IO_stringPos(line,MAXNCHUNKS)
tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key
select case(tag)
- case('type')
- case('field_damage')
case ('(output)')
- output = output + 1_pInt
- homogenization_isostrain_output(output,i) = IO_lc(IO_stringValue(line,positions,2_pInt))
- select case(homogenization_isostrain_output(output,i))
+ select case(IO_lc(IO_stringValue(line,positions,2_pInt)))
case('nconstituents','ngrains')
homogenization_isostrain_Noutput(i) = homogenization_isostrain_Noutput(i) + 1_pInt
- homogenization_isostrain_outputID(output,i) = nconstituents_ID
- case('temperature')
- homogenization_isostrain_Noutput(i) = homogenization_isostrain_Noutput(i) + 1_pInt
- homogenization_isostrain_outputID(output,i) = temperature_ID
+ homogenization_isostrain_outputID(homogenization_isostrain_Noutput(i),i) = nconstituents_ID
+ homogenization_isostrain_output(homogenization_isostrain_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('ipcoords')
homogenization_isostrain_Noutput(i) = homogenization_isostrain_Noutput(i) + 1_pInt
- homogenization_isostrain_outputID(output,i) = ipcoords_ID
+ homogenization_isostrain_outputID(homogenization_isostrain_Noutput(i),i) = ipcoords_ID
+ homogenization_isostrain_output(homogenization_isostrain_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('avgdefgrad','avgf')
homogenization_isostrain_Noutput(i) = homogenization_isostrain_Noutput(i) + 1_pInt
- homogenization_isostrain_outputID(output,i) = avgdefgrad_ID
+ homogenization_isostrain_outputID(homogenization_isostrain_Noutput(i),i) = avgdefgrad_ID
+ homogenization_isostrain_output(homogenization_isostrain_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
case('avgp','avgfirstpiola','avg1stpiola')
homogenization_isostrain_Noutput(i) = homogenization_isostrain_Noutput(i) + 1_pInt
- homogenization_isostrain_outputID(output,i) = avgfirstpiola_ID
- case default
- call IO_error(105_pInt,ext_msg=IO_stringValue(line,positions,2_pInt)//&
- ' ('//HOMOGENIZATION_isostrain_label//')')
+ homogenization_isostrain_outputID(homogenization_isostrain_Noutput(i),i) = avgfirstpiola_ID
+ homogenization_isostrain_output(homogenization_isostrain_Noutput(i),i) = &
+ IO_lc(IO_stringValue(line,positions,2_pInt))
+
end select
case ('nconstituents','ngrains')
homogenization_isostrain_Ngrains(i) = IO_intValue(line,positions,2_pInt)
@@ -158,8 +155,7 @@ subroutine homogenization_isostrain_init(fileUnit)
case default
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//HOMOGENIZATION_isostrain_label//')')
end select
- case default
- call IO_error(210_pInt,ext_msg=trim(tag)//' ('//HOMOGENIZATION_isostrain_label//')')
+
end select
endif
endif
@@ -173,7 +169,7 @@ subroutine homogenization_isostrain_init(fileUnit)
! * Determine size of postResults array
outputsLoop: do o = 1_pInt, homogenization_isostrain_Noutput(instance)
select case(homogenization_isostrain_outputID(o,instance))
- case(nconstituents_ID, temperature_ID)
+ case(nconstituents_ID)
mySize = 1_pInt
case(ipcoords_ID)
mySize = 3_pInt
@@ -277,8 +273,6 @@ pure function homogenization_isostrain_postResults(ip,el,avgP,avgF)
use material, only: &
homogenization_typeInstance, &
homogenization_Noutput
- use crystallite, only: &
- crystallite_temperature
implicit none
integer(pInt), intent(in) :: &
@@ -304,9 +298,6 @@ pure function homogenization_isostrain_postResults(ip,el,avgP,avgF)
case (nconstituents_ID)
homogenization_isostrain_postResults(c+1_pInt) = real(homogenization_isostrain_Ngrains(homID),pReal)
c = c + 1_pInt
- case (temperature_ID)
- homogenization_isostrain_postResults(c+1_pInt) = crystallite_temperature(ip,el)
- c = c + 1_pInt
case (avgdefgrad_ID)
homogenization_isostrain_postResults(c+1_pInt:c+9_pInt) = reshape(avgF,[9])
c = c + 9_pInt