clarified logic
This commit is contained in:
parent
c4ce28e63f
commit
201303f35f
|
@ -328,88 +328,68 @@ subroutine material_parseMicrostructure
|
|||
homogenization
|
||||
|
||||
integer, dimension(:), allocatable :: &
|
||||
CounterPhase, &
|
||||
CounterHomogenization
|
||||
|
||||
real(pReal), dimension(:,:), allocatable :: &
|
||||
microstructure_fraction !< vol fraction of each constituent in microstrcuture
|
||||
counterPhase, &
|
||||
counterHomogenization
|
||||
|
||||
real(pReal) :: &
|
||||
frac
|
||||
integer :: &
|
||||
e, &
|
||||
i, &
|
||||
m, &
|
||||
c, &
|
||||
microstructure_maxNconstituents
|
||||
maxNconstituents
|
||||
|
||||
homogenization => config_material%get('homogenization')
|
||||
phases => config_material%get('phase')
|
||||
microstructure => config_material%get('microstructure')
|
||||
allocate(microstructure_Nconstituents(microstructure%length),source=0)
|
||||
|
||||
if(any(discretization_microstructureAt > microstructure%length)) &
|
||||
call IO_error(155,ext_msg='More microstructures requested than found in material.yaml')
|
||||
|
||||
allocate(microstructure_Nconstituents(microstructure%length),source=0)
|
||||
do m = 1, microstructure%length
|
||||
constituentsInMicrostructure => microstructure%get(m)
|
||||
constituents => constituentsInMicrostructure%get('constituents')
|
||||
microstructure_Nconstituents(m) = constituents%length
|
||||
enddo
|
||||
|
||||
microstructure_maxNconstituents = maxval(microstructure_Nconstituents)
|
||||
allocate(microstructure_fraction(microstructure_maxNconstituents,microstructure%length), source =0.0_pReal)
|
||||
allocate(material_orientation0(microstructure_maxNconstituents,discretization_nIP,discretization_nElem))
|
||||
|
||||
maxNconstituents = maxval(microstructure_Nconstituents)
|
||||
|
||||
allocate(material_orientation0(maxNconstituents,discretization_nIP,discretization_nElem))
|
||||
allocate(material_homogenizationAt(discretization_nElem),source=0)
|
||||
allocate(material_homogenizationMemberAt(discretization_nIP,discretization_nElem),source=0)
|
||||
allocate(material_phaseAt(microstructure_maxNconstituents,discretization_nElem),source=0)
|
||||
allocate(material_phaseMemberAt(microstructure_maxNconstituents,discretization_nIP,discretization_nElem),source=0)
|
||||
allocate(material_phaseAt(maxNconstituents,discretization_nElem),source=0)
|
||||
allocate(material_phaseMemberAt(maxNconstituents,discretization_nIP,discretization_nElem),source=0)
|
||||
|
||||
allocate(CounterPhase(phases%length),source=0)
|
||||
allocate(CounterHomogenization(homogenization%length),source=0)
|
||||
|
||||
do m = 1, microstructure%length
|
||||
constituentsInMicrostructure => microstructure%get(m)
|
||||
constituents => constituentsInMicrostructure%get('constituents')
|
||||
do c = 1, constituents%length
|
||||
constituent => constituents%get(c)
|
||||
microstructure_fraction(c,m) = constituent%get_asFloat('fraction')
|
||||
enddo
|
||||
if (dNeq(sum(microstructure_fraction(:,m)),1.0_pReal)) call IO_error(153,ext_msg='constituent')
|
||||
enddo
|
||||
|
||||
do e = 1, discretization_nElem
|
||||
constituentsInMicrostructure => microstructure%get(discretization_microstructureAt(e))
|
||||
constituents => constituentsInMicrostructure%get('constituents')
|
||||
do i = 1, discretization_nIP
|
||||
do c = 1, constituents%length
|
||||
constituent => constituents%get(c)
|
||||
material_phaseAt(c,e) = phases%getIndex(constituent%get_asString('phase'))
|
||||
call material_orientation0(c,i,e)%fromQuaternion(constituent%get_asFloats('orientation',requiredSize=4))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
phases => config_material%get('phase')
|
||||
allocate(counterPhase(phases%length),source=0)
|
||||
homogenization => config_material%get('homogenization')
|
||||
allocate(counterHomogenization(homogenization%length),source=0)
|
||||
|
||||
do e = 1, discretization_nElem
|
||||
constituentsInMicrostructure => microstructure%get(discretization_microstructureAt(e))
|
||||
constituents => constituentsInMicrostructure%get('constituents')
|
||||
|
||||
material_homogenizationAt(e) = homogenization%getIndex(constituentsInMicrostructure%get_asString('homogenization'))
|
||||
do i = 1, discretization_nIP
|
||||
CounterHomogenization(material_homogenizationAt(e)) = CounterHomogenization(material_homogenizationAt(e)) + 1
|
||||
material_homogenizationMemberAt(i,e) = CounterHomogenization(material_homogenizationAt(e))
|
||||
counterHomogenization(material_homogenizationAt(e)) = counterHomogenization(material_homogenizationAt(e)) + 1
|
||||
material_homogenizationMemberAt(i,e) = counterHomogenization(material_homogenizationAt(e))
|
||||
enddo
|
||||
enddo
|
||||
|
||||
do e = 1, discretization_nElem
|
||||
constituentsInMicrostructure => microstructure%get(discretization_microstructureAt(e))
|
||||
constituents => constituentsInMicrostructure%get('constituents')
|
||||
|
||||
do i = 1, discretization_nIP
|
||||
do c = 1, constituents%length
|
||||
CounterPhase(material_phaseAt(c,e)) = &
|
||||
CounterPhase(material_phaseAt(c,e)) + 1
|
||||
material_phaseMemberAt(c,i,e) = CounterPhase(material_phaseAt(c,e))
|
||||
frac = 0.0_pReal
|
||||
do c = 1, constituents%length
|
||||
constituent => constituents%get(c)
|
||||
frac = frac + constituent%get_asFloat('fraction')
|
||||
|
||||
material_phaseAt(c,e) = phases%getIndex(constituent%get_asString('phase'))
|
||||
|
||||
do i = 1, discretization_nIP
|
||||
counterPhase(material_phaseAt(c,e)) = counterPhase(material_phaseAt(c,e)) + 1
|
||||
material_phaseMemberAt(c,i,e) = counterPhase(material_phaseAt(c,e))
|
||||
|
||||
call material_orientation0(c,i,e)%fromQuaternion(constituent%get_asFloats('orientation',requiredSize=4))
|
||||
enddo
|
||||
|
||||
enddo
|
||||
|
||||
if (dNeq(frac,1.0_pReal)) call IO_error(153,ext_msg='constituent')
|
||||
|
||||
enddo
|
||||
|
||||
end subroutine material_parseMicrostructure
|
||||
|
|
Loading…
Reference in New Issue