store number of outputs for each instance of the constitution in constitutive_[j2/titanmod/...]_Nouput and use this value to loop over all valid outputs when determining the size of the outputs array

This commit is contained in:
Nan Jia 2012-02-14 15:19:59 +00:00
parent 49a964aeda
commit db06c797cd
5 changed files with 35 additions and 28 deletions

View File

@ -49,6 +49,7 @@ integer(pInt), dimension(:), allocatable :: constitutive_dislotwin
constitutive_dislotwin_sizePostResults ! cumulative size of post results
integer(pInt), dimension(:,:), allocatable, target :: constitutive_dislotwin_sizePostResult ! size of each post result output
character(len=64), dimension(:,:), allocatable, target :: constitutive_dislotwin_output ! name of each post result output
integer(pInt), dimension(:), allocatable :: constitutive_dislotwin_Noutput ! number of outputs per instance of this constitution
character(len=32), dimension(:), allocatable :: constitutive_dislotwin_structureName ! name of the lattice structure
integer(pInt), dimension(:), allocatable :: constitutive_dislotwin_structure, & ! number representing the kind of lattice structure
constitutive_dislotwin_totalNslip, & ! total number of active slip systems for each instance
@ -145,7 +146,7 @@ integer(pInt), intent(in) :: file
!* Local variables
integer(pInt), parameter :: maxNchunks = 21
integer(pInt), dimension(1+2*maxNchunks) :: positions
integer(pInt) section,maxNinstance,f,i,j,k,l,m,n,o,p,q,r,s,s1,s2,t1,t2,ns,nt,output,mySize,myStructure,maxTotalNslip,maxTotalNtwin
integer(pInt) section,maxNinstance,f,i,j,k,l,m,n,o,p,q,r,s,s1,s2,t1,t2,ns,nt,mySize,myStructure,maxTotalNslip,maxTotalNtwin
character(len=64) tag
character(len=1024) line
@ -165,11 +166,13 @@ allocate(constitutive_dislotwin_sizeState(maxNinstance))
allocate(constitutive_dislotwin_sizePostResults(maxNinstance))
allocate(constitutive_dislotwin_sizePostResult(maxval(phase_Noutput),maxNinstance))
allocate(constitutive_dislotwin_output(maxval(phase_Noutput),maxNinstance))
allocate(constitutive_dislotwin_Noutput(maxNinstance))
constitutive_dislotwin_sizeDotState = 0_pInt
constitutive_dislotwin_sizeState = 0_pInt
constitutive_dislotwin_sizePostResults = 0_pInt
constitutive_dislotwin_sizePostResult = 0_pInt
constitutive_dislotwin_output = ''
constitutive_dislotwin_Noutput = 0_pInt
allocate(constitutive_dislotwin_structureName(maxNinstance))
allocate(constitutive_dislotwin_structure(maxNinstance))
@ -289,7 +292,6 @@ do ! read thru sections of
if (IO_getTag(line,'<','>') /= '') exit ! stop at next part
if (IO_getTag(line,'[',']') /= '') then ! next section
section = section + 1_pInt ! advance section counter
output = 0_pInt ! reset output counter
cycle
endif
if (section > 0_pInt .and. phase_constitution(section) == constitutive_dislotwin_label) then ! one of my sections
@ -300,8 +302,8 @@ do ! read thru sections of
case ('constitution')
cycle
case ('(output)')
output = output + 1_pInt
constitutive_dislotwin_output(output,i) = IO_lc(IO_stringValue(line,positions,2_pInt))
constitutive_dislotwin_Noutput(i) = constitutive_dislotwin_Noutput(i) + 1_pInt
constitutive_dislotwin_output(constitutive_dislotwin_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt))
case ('lattice_structure')
constitutive_dislotwin_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
case ('covera_ratio')
@ -509,7 +511,7 @@ do i = 1_pInt,maxNinstance
size(constitutive_dislotwin_listDependentSlipStates)*ns+size(constitutive_dislotwin_listDependentTwinStates)*nt
!* Determine size of postResults array
do o = 1_pInt,maxval(phase_Noutput)
do o = 1_pInt,constitutive_dislotwin_Noutput(i)
select case(constitutive_dislotwin_output(o,i))
case('edge_density', &
'dipole_density', &

View File

@ -53,6 +53,7 @@ MODULE constitutive_j2
constitutive_j2_sizePostResults
integer(pInt), dimension(:,:), allocatable,target :: constitutive_j2_sizePostResult ! size of each post result output
character(len=64), dimension(:,:), allocatable,target :: constitutive_j2_output ! name of each post result output
integer(pInt), dimension(:), allocatable :: constitutive_j2_Noutput
real(pReal), dimension(:), allocatable :: constitutive_j2_C11
real(pReal), dimension(:), allocatable :: constitutive_j2_C12
real(pReal), dimension(:,:,:), allocatable :: constitutive_j2_Cslip_66
@ -91,7 +92,7 @@ subroutine constitutive_j2_init(file)
integer(pInt), intent(in) :: file
integer(pInt), parameter :: maxNchunks = 7
integer(pInt), dimension(1+2*maxNchunks) :: positions
integer(pInt) section, maxNinstance, i,j,k, output, mySize
integer(pInt) section, maxNinstance, i,j,k, mySize
character(len=64) tag
character(len=1024) line
@ -117,6 +118,7 @@ subroutine constitutive_j2_init(file)
allocate(constitutive_j2_sizePostResults(maxNinstance)); constitutive_j2_sizePostResults = 0_pInt
allocate(constitutive_j2_sizePostResult(maxval(phase_Noutput), maxNinstance)); constitutive_j2_sizePostResult = 0_pInt
allocate(constitutive_j2_output(maxval(phase_Noutput), maxNinstance)) ; constitutive_j2_output = ''
allocate(constitutive_j2_Noutput(maxNinstance)) ; constitutive_j2_Noutput = 0_pInt
allocate(constitutive_j2_C11(maxNinstance)) ; constitutive_j2_C11 = 0.0_pReal
allocate(constitutive_j2_C12(maxNinstance)) ; constitutive_j2_C12 = 0.0_pReal
allocate(constitutive_j2_Cslip_66(6,6,maxNinstance)) ; constitutive_j2_Cslip_66 = 0.0_pReal
@ -143,7 +145,6 @@ subroutine constitutive_j2_init(file)
if (IO_getTag(line,'<','>') /= '') exit ! stop at next part
if (IO_getTag(line,'[',']') /= '') then ! next section
section = section + 1_pInt ! advance section counter
output = 0_pInt ! reset output counter
cycle
endif
if (section > 0_pInt .and. phase_constitution(section) == constitutive_j2_label) then ! one of my sections
@ -154,8 +155,8 @@ subroutine constitutive_j2_init(file)
case ('constitution')
cycle
case ('(output)')
output = output + 1
constitutive_j2_output(output,i) = IO_lc(IO_stringValue(line,positions,2))
constitutive_j2_Noutput(i) = constitutive_j2_Noutput(i) + 1_pInt
constitutive_j2_output(constitutive_j2_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2))
case ('c11')
constitutive_j2_C11(i) = IO_floatValue(line,positions,2)
case ('c12')
@ -193,7 +194,7 @@ subroutine constitutive_j2_init(file)
enddo
do i = 1,maxNinstance
do j = 1,maxval(phase_Noutput)
do j = 1,constitutive_j2_Noutput(i)
select case(constitutive_j2_output(j,i))
case('flowstress')
mySize = 1_pInt

View File

@ -62,6 +62,7 @@ integer(pInt), dimension(:), allocatable :: constitutive_nonlocal_
constitutive_nonlocal_sizePostResults ! cumulative size of post results
integer(pInt), dimension(:,:), allocatable, target :: constitutive_nonlocal_sizePostResult ! size of each post result output
character(len=64), dimension(:,:), allocatable, target :: constitutive_nonlocal_output ! name of each post result output
integer(pInt), dimension(:), allocatable :: constitutive_nonlocal_Noutput ! number of outputs per instance of this constitution
character(len=32), dimension(:), allocatable :: constitutive_nonlocal_structureName ! name of the lattice structure
integer(pInt), dimension(:), allocatable :: constitutive_nonlocal_structure, & ! number representing the kind of lattice structure
@ -199,7 +200,6 @@ integer(pInt) section, &
s1, & ! index of my slip system
s2, & ! index of my slip system
it, & ! index of my interaction type
output, &
mySize
character(len=64) tag
character(len=1024) line
@ -230,12 +230,14 @@ allocate(constitutive_nonlocal_sizeState(maxNinstance))
allocate(constitutive_nonlocal_sizePostResults(maxNinstance))
allocate(constitutive_nonlocal_sizePostResult(maxval(phase_Noutput), maxNinstance))
allocate(constitutive_nonlocal_output(maxval(phase_Noutput), maxNinstance))
allocate(constitutive_nonlocal_Noutput(maxNinstance))
constitutive_nonlocal_sizeDotState = 0_pInt
constitutive_nonlocal_sizeDependentState = 0_pInt
constitutive_nonlocal_sizeState = 0_pInt
constitutive_nonlocal_sizePostResults = 0_pInt
constitutive_nonlocal_sizePostResult = 0_pInt
constitutive_nonlocal_output = ''
constitutive_nonlocal_Noutput = 0_pInt
allocate(constitutive_nonlocal_structureName(maxNinstance))
allocate(constitutive_nonlocal_structure(maxNinstance))
@ -341,7 +343,6 @@ do
if (IO_getTag(line,'<','>') /= '') exit ! stop at next part
if (IO_getTag(line,'[',']') /= '') then ! next section
section = section + 1_pInt ! advance section counter
output = 0_pInt ! reset output counter
cycle
endif
if (section > 0_pInt .and. phase_constitution(section) == constitutive_nonlocal_label) then ! one of my sections
@ -352,8 +353,8 @@ do
case('constitution','/nonlocal/')
cycle
case ('(output)')
output = output + 1_pInt
constitutive_nonlocal_output(output,i) = IO_lc(IO_stringValue(line,positions,2_pInt))
constitutive_nonlocal_Noutput(i) = constitutive_nonlocal_Noutput(i) + 1_pInt
constitutive_nonlocal_output(constitutive_nonlocal_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt))
case ('lattice_structure')
constitutive_nonlocal_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
case ('c/a_ratio','covera_ratio')
@ -573,7 +574,7 @@ do i = 1,maxNinstance
!*** determine size of postResults array
do o = 1,maxval(phase_Noutput)
do o = 1,constitutive_nonlocal_Noutput(i)
select case(constitutive_nonlocal_output(o,i))
case( 'rho', &
'delta', &

View File

@ -83,7 +83,8 @@ MODULE constitutive_phenopowerlaw
constitutive_phenopowerlaw_sizePostResults ! cumulative size of post results
integer(pInt), dimension(:,:), allocatable,target :: constitutive_phenopowerlaw_sizePostResult ! size of each post result output
character(len=64), dimension(:,:), allocatable,target :: constitutive_phenopowerlaw_output ! name of each post result output
integer(pInt), dimension(:), allocatable :: constitutive_phenopowerlaw_Noutput ! number of outputs per instance of this constitution
character(len=32), dimension(:), allocatable :: constitutive_phenopowerlaw_structureName
integer(pInt), dimension(:), allocatable :: constitutive_phenopowerlaw_structure
integer(pInt), dimension(:,:), allocatable :: constitutive_phenopowerlaw_Nslip ! active number of slip systems per family
@ -165,7 +166,7 @@ subroutine constitutive_phenopowerlaw_init(file)
integer(pInt), intent(in) :: file
integer(pInt), parameter :: maxNchunks = lattice_maxNinteraction + 1_pInt
integer(pInt), dimension(1+2*maxNchunks) :: positions
integer(pInt) section, maxNinstance, i,j,k, f,o, output, &
integer(pInt) section, maxNinstance, i,j,k, f,o, &
mySize, myStructure, index_myFamily, index_otherFamily
character(len=64) tag
character(len=1024) line
@ -193,6 +194,7 @@ subroutine constitutive_phenopowerlaw_init(file)
maxNinstance)) ; constitutive_phenopowerlaw_sizePostResult = 0_pInt
allocate(constitutive_phenopowerlaw_output(maxval(phase_Noutput), &
maxNinstance)) ; constitutive_phenopowerlaw_output = ''
allocate(constitutive_phenopowerlaw_Noutput(maxNinstance)) ; constitutive_phenopowerlaw_Noutput = 0_pInt
allocate(constitutive_phenopowerlaw_structureName(maxNinstance)) ; constitutive_phenopowerlaw_structureName = ''
allocate(constitutive_phenopowerlaw_structure(maxNinstance)) ; constitutive_phenopowerlaw_structure = 0_pInt
@ -264,7 +266,6 @@ subroutine constitutive_phenopowerlaw_init(file)
if (IO_getTag(line,'<','>') /= '') exit ! stop at next part
if (IO_getTag(line,'[',']') /= '') then ! next section
section = section + 1_pInt ! advance section counter
output = 0_pInt ! reset output counter
cycle ! skip to next line
endif
if (section > 0_pInt .and. phase_constitution(section) == constitutive_phenopowerlaw_label) then ! one of my sections
@ -275,8 +276,8 @@ subroutine constitutive_phenopowerlaw_init(file)
case ('constitution')
cycle
case ('(output)')
output = output + 1_pInt
constitutive_phenopowerlaw_output(output,i) = IO_lc(IO_stringValue(line,positions,2_pInt))
constitutive_phenopowerlaw_Noutput(i) = constitutive_phenopowerlaw_Noutput(i) + 1_pInt
constitutive_phenopowerlaw_output(constitutive_phenopowerlaw_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt))
case ('lattice_structure')
constitutive_phenopowerlaw_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
case ('covera_ratio')
@ -406,7 +407,7 @@ subroutine constitutive_phenopowerlaw_init(file)
do i = 1_pInt,maxNinstance
do j = 1_pInt,maxval(phase_Noutput)
do j = 1_pInt,constitutive_phenopowerlaw_Noutput(i)
select case(constitutive_phenopowerlaw_output(j,i))
case('resistance_slip', &
'shearrate_slip', &

View File

@ -81,7 +81,8 @@ integer(pInt), dimension(:), allocatable :: constitutive_titanmod_
constitutive_titanmod_sizeState, & ! total number of microstructural state variables
constitutive_titanmod_sizePostResults ! cumulative size of post results
integer(pInt), dimension(:,:), allocatable, target :: constitutive_titanmod_sizePostResult ! size of each post result output
character(len=64), dimension(:,:), allocatable, target :: constitutive_titanmod_output ! name of each post result output
character(len=64), dimension(:,:), allocatable, target :: constitutive_titanmod_output ! name of each post result output
integer(pInt), dimension(:), allocatable :: constitutive_titanmod_Noutput ! number of outputs per instance of this constitution
character(len=32), dimension(:), allocatable :: constitutive_titanmod_structureName ! name of the lattice structure
integer(pInt), dimension(:), allocatable :: constitutive_titanmod_structure, & ! number representing the kind of lattice structure
constitutive_titanmod_totalNslip, & ! total number of active slip systems for each instance
@ -214,7 +215,7 @@ integer(pInt), intent(in) :: file
!* Local variables
integer(pInt), parameter :: maxNchunks = 21
integer(pInt), dimension(1+2*maxNchunks) :: positions
integer(pInt) section,maxNinstance,f,i,j,k,l,m,n,o,p,q,r,s,s1,s2,t,t1,t2,ns,nt,output,mySize,myStructure,maxTotalNslip, &
integer(pInt) section,maxNinstance,f,i,j,k,l,m,n,o,p,q,r,s,s1,s2,t,t1,t2,ns,nt,mySize,myStructure,maxTotalNslip, &
maxTotalNtwin
character(len=64) tag
character(len=1024) line
@ -233,11 +234,13 @@ allocate(constitutive_titanmod_sizeState(maxNinstance))
allocate(constitutive_titanmod_sizePostResults(maxNinstance))
allocate(constitutive_titanmod_sizePostResult(maxval(phase_Noutput),maxNinstance))
allocate(constitutive_titanmod_output(maxval(phase_Noutput),maxNinstance))
allocate(constitutive_titanmod_Noutput(maxNinstance))
constitutive_titanmod_sizeDotState = 0_pInt
constitutive_titanmod_sizeState = 0_pInt
constitutive_titanmod_sizePostResults = 0_pInt
constitutive_titanmod_sizePostResult = 0_pInt
constitutive_titanmod_output = ''
constitutive_titanmod_Noutput = 0_pInt
allocate(constitutive_titanmod_structureName(maxNinstance))
allocate(constitutive_titanmod_structure(maxNinstance))
@ -391,7 +394,6 @@ enddo
if (IO_getTag(line,'<','>') /= '') exit ! stop at next part
if (IO_getTag(line,'[',']') /= '') then ! next section
section = section + 1_pInt ! advance section counter
output = 0_pInt ! reset output counter
cycle ! skip to next line
endif
if (section > 0_pInt .and. phase_constitution(section) == constitutive_titanmod_label) then ! one of my sections
@ -402,9 +404,9 @@ enddo
case ('constitution')
cycle
case ('(output)')
output = output + 1_pInt
constitutive_titanmod_output(output,i) = IO_lc(IO_stringValue(line,positions,2_pInt))
write(6,*) tag,constitutive_titanmod_output(output,i)
constitutive_titanmod_Noutput(i) = constitutive_titanmod_Noutput(i) + 1_pInt
constitutive_titanmod_output(constitutive_titanmod_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt))
write(6,*) tag,constitutive_titanmod_output(constitutive_titanmod_Noutput(i),i)
case ('lattice_structure')
constitutive_titanmod_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
write(6,*) tag,constitutive_titanmod_structureName(i)
@ -763,7 +765,7 @@ do i = 1_pInt,maxNinstance
write(6,*) 'Determined size of state and dot state'
!* Determine size of postResults array
do o = 1,maxval(phase_Noutput)
do o = 1,constitutive_titanmod_Noutput(i)
select case(constitutive_titanmod_output(o,i))
case('rhoedge', &
'rhoscrew', &