standard names
This commit is contained in:
parent
e4792e56fb
commit
9733f4a140
|
@ -165,7 +165,7 @@ module subroutine plastic_nonlocal_init
|
||||||
|
|
||||||
integer :: &
|
integer :: &
|
||||||
sizeState, sizeDotState,sizeDependentState, sizeDeltaState, &
|
sizeState, sizeDotState,sizeDependentState, sizeDeltaState, &
|
||||||
maxNinstances, &
|
Ninstance, &
|
||||||
p, &
|
p, &
|
||||||
l, &
|
l, &
|
||||||
s1, s2, &
|
s1, s2, &
|
||||||
|
@ -174,7 +174,7 @@ module subroutine plastic_nonlocal_init
|
||||||
c
|
c
|
||||||
character(len=pStringLen) :: &
|
character(len=pStringLen) :: &
|
||||||
extmsg = ''
|
extmsg = ''
|
||||||
integer :: NofMyPhase
|
integer :: NipcMyPhase
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- constitutive_'//PLASTICITY_NONLOCAL_LABEL//' init -+>>>'; flush(6)
|
write(6,'(/,a)') ' <<<+- constitutive_'//PLASTICITY_NONLOCAL_LABEL//' init -+>>>'; flush(6)
|
||||||
|
|
||||||
|
@ -184,17 +184,17 @@ module subroutine plastic_nonlocal_init
|
||||||
write(6,'(/,a)') ' Kords, Dissertation RWTH Aachen, 2014'
|
write(6,'(/,a)') ' Kords, Dissertation RWTH Aachen, 2014'
|
||||||
write(6,'(a)') ' http://publications.rwth-aachen.de/record/229993'
|
write(6,'(a)') ' http://publications.rwth-aachen.de/record/229993'
|
||||||
|
|
||||||
maxNinstances = count(phase_plasticity == PLASTICITY_NONLOCAL_ID)
|
Ninstance = count(phase_plasticity == PLASTICITY_NONLOCAL_ID)
|
||||||
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0) &
|
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0) &
|
||||||
write(6,'(a16,1x,i5,/)') '# instances:',maxNinstances
|
write(6,'(a16,1x,i5,/)') '# instances:',Ninstance
|
||||||
|
|
||||||
allocate(param(maxNinstances))
|
allocate(param(Ninstance))
|
||||||
allocate(state(maxNinstances))
|
allocate(state(Ninstance))
|
||||||
allocate(state0(maxNinstances))
|
allocate(state0(Ninstance))
|
||||||
allocate(dotState(maxNinstances))
|
allocate(dotState(Ninstance))
|
||||||
allocate(deltaState(maxNinstances))
|
allocate(deltaState(Ninstance))
|
||||||
allocate(microstructure(maxNinstances))
|
allocate(microstructure(Ninstance))
|
||||||
allocate(totalNslip(maxNinstances), source=0)
|
allocate(totalNslip(Ninstance), source=0)
|
||||||
|
|
||||||
|
|
||||||
do p=1, size(config_phase)
|
do p=1, size(config_phase)
|
||||||
|
@ -339,7 +339,7 @@ module subroutine plastic_nonlocal_init
|
||||||
if (prm%fattack <= 0.0_pReal) extmsg = trim(extmsg)//' fattack'
|
if (prm%fattack <= 0.0_pReal) extmsg = trim(extmsg)//' fattack'
|
||||||
if (prm%doublekinkwidth <= 0.0_pReal) extmsg = trim(extmsg)//' doublekinkwidth'
|
if (prm%doublekinkwidth <= 0.0_pReal) extmsg = trim(extmsg)//' doublekinkwidth'
|
||||||
if (prm%Dsd0 < 0.0_pReal) extmsg = trim(extmsg)//' Dsd0'
|
if (prm%Dsd0 < 0.0_pReal) extmsg = trim(extmsg)//' Dsd0'
|
||||||
if (prm%atomicVolume <= 0.0_pReal) extmsg = trim(extmsg)//' atomicVolume' ! ToDo: in disloUCLA/dislotwin, the atomic volume is given as a factor
|
if (prm%atomicVolume <= 0.0_pReal) extmsg = trim(extmsg)//' atomicVolume' ! ToDo: in disloUCLA, the atomic volume is given as a factor
|
||||||
|
|
||||||
if (prm%significantN < 0.0_pReal) extmsg = trim(extmsg)//' significantN'
|
if (prm%significantN < 0.0_pReal) extmsg = trim(extmsg)//' significantN'
|
||||||
if (prm%significantrho < 0.0_pReal) extmsg = trim(extmsg)//' significantrho'
|
if (prm%significantrho < 0.0_pReal) extmsg = trim(extmsg)//' significantrho'
|
||||||
|
@ -369,13 +369,13 @@ module subroutine plastic_nonlocal_init
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! allocate state arrays
|
! allocate state arrays
|
||||||
NofMyPhase = count(material_phaseAt==p) * discretization_nIP
|
NipcMyPhase = count(material_phaseAt==p) * discretization_nIP
|
||||||
sizeDotState = size([ 'rhoSglEdgePosMobile ','rhoSglEdgeNegMobile ', &
|
sizeDotState = size([ 'rhoSglEdgePosMobile ','rhoSglEdgeNegMobile ', &
|
||||||
'rhoSglScrewPosMobile ','rhoSglScrewNegMobile ', &
|
'rhoSglScrewPosMobile ','rhoSglScrewNegMobile ', &
|
||||||
'rhoSglEdgePosImmobile ','rhoSglEdgeNegImmobile ', &
|
'rhoSglEdgePosImmobile ','rhoSglEdgeNegImmobile ', &
|
||||||
'rhoSglScrewPosImmobile','rhoSglScrewNegImmobile', &
|
'rhoSglScrewPosImmobile','rhoSglScrewNegImmobile', &
|
||||||
'rhoDipEdge ','rhoDipScrew ', &
|
'rhoDipEdge ','rhoDipScrew ', &
|
||||||
'gamma ' ]) * prm%totalNslip !< "basic" microstructural state variables that are independent from other state variables
|
'gamma ' ]) * prm%totalNslip !< "basic" microstructural state variables that are independent from other state variables
|
||||||
sizeDependentState = size([ 'rhoForest ']) * prm%totalNslip !< microstructural state variables that depend on other state variables
|
sizeDependentState = size([ 'rhoForest ']) * prm%totalNslip !< microstructural state variables that depend on other state variables
|
||||||
sizeState = sizeDotState + sizeDependentState &
|
sizeState = sizeDotState + sizeDependentState &
|
||||||
+ size([ 'velocityEdgePos ','velocityEdgeNeg ', &
|
+ size([ 'velocityEdgePos ','velocityEdgeNeg ', &
|
||||||
|
@ -383,7 +383,7 @@ module subroutine plastic_nonlocal_init
|
||||||
'maxDipoleHeightEdge ','maxDipoleHeightScrew' ]) * prm%totalNslip !< other dependent state variables that are not updated by microstructure
|
'maxDipoleHeightEdge ','maxDipoleHeightScrew' ]) * prm%totalNslip !< other dependent state variables that are not updated by microstructure
|
||||||
sizeDeltaState = sizeDotState
|
sizeDeltaState = sizeDotState
|
||||||
|
|
||||||
call material_allocatePlasticState(p,NofMyPhase,sizeState,sizeDotState,sizeDeltaState)
|
call material_allocatePlasticState(p,NipcMyPhase,sizeState,sizeDotState,sizeDeltaState)
|
||||||
|
|
||||||
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
|
||||||
|
@ -452,26 +452,26 @@ module subroutine plastic_nonlocal_init
|
||||||
dot%rho_dip_scr => plasticState(p)%dotState (9*prm%totalNslip+1:10*prm%totalNslip,:)
|
dot%rho_dip_scr => plasticState(p)%dotState (9*prm%totalNslip+1:10*prm%totalNslip,:)
|
||||||
del%rho_dip_scr => plasticState(p)%deltaState (9*prm%totalNslip+1:10*prm%totalNslip,:)
|
del%rho_dip_scr => plasticState(p)%deltaState (9*prm%totalNslip+1:10*prm%totalNslip,:)
|
||||||
|
|
||||||
stt%gamma => plasticState(p)%state (10*prm%totalNslip + 1:11*prm%totalNslip ,1:NofMyPhase)
|
stt%gamma => plasticState(p)%state (10*prm%totalNslip + 1:11*prm%totalNslip ,1:NipcMyPhase)
|
||||||
dot%gamma => plasticState(p)%dotState (10*prm%totalNslip + 1:11*prm%totalNslip ,1:NofMyPhase)
|
dot%gamma => plasticState(p)%dotState (10*prm%totalNslip + 1:11*prm%totalNslip ,1:NipcMyPhase)
|
||||||
del%gamma => plasticState(p)%deltaState (10*prm%totalNslip + 1:11*prm%totalNslip ,1:NofMyPhase)
|
del%gamma => plasticState(p)%deltaState (10*prm%totalNslip + 1:11*prm%totalNslip ,1:NipcMyPhase)
|
||||||
plasticState(p)%atol(10*prm%totalNslip+1:11*prm%totalNslip ) = config%getFloat('atol_gamma', defaultVal = 1.0e-20_pReal)
|
plasticState(p)%atol(10*prm%totalNslip+1:11*prm%totalNslip ) = config%getFloat('atol_gamma', defaultVal = 1.0e-20_pReal)
|
||||||
if(any(plasticState(p)%atol(10*prm%totalNslip+1:11*prm%totalNslip) < 0.0_pReal)) &
|
if(any(plasticState(p)%atol(10*prm%totalNslip+1:11*prm%totalNslip) < 0.0_pReal)) &
|
||||||
extmsg = trim(extmsg)//' atol_gamma'
|
extmsg = trim(extmsg)//' atol_gamma'
|
||||||
plasticState(p)%slipRate => plasticState(p)%dotState (10*prm%totalNslip + 1:11*prm%totalNslip ,1:NofMyPhase)
|
plasticState(p)%slipRate => plasticState(p)%dotState (10*prm%totalNslip + 1:11*prm%totalNslip ,1:NipcMyPhase)
|
||||||
|
|
||||||
stt%rho_forest => plasticState(p)%state (11*prm%totalNslip + 1:12*prm%totalNslip ,1:NofMyPhase)
|
stt%rho_forest => plasticState(p)%state (11*prm%totalNslip + 1:12*prm%totalNslip ,1:NipcMyPhase)
|
||||||
stt%v => plasticState(p)%state (12*prm%totalNslip + 1:16*prm%totalNslip ,1:NofMyPhase)
|
stt%v => plasticState(p)%state (12*prm%totalNslip + 1:16*prm%totalNslip ,1:NipcMyPhase)
|
||||||
stt%v_edg_pos => plasticState(p)%state (12*prm%totalNslip + 1:13*prm%totalNslip ,1:NofMyPhase)
|
stt%v_edg_pos => plasticState(p)%state (12*prm%totalNslip + 1:13*prm%totalNslip ,1:NipcMyPhase)
|
||||||
stt%v_edg_neg => plasticState(p)%state (13*prm%totalNslip + 1:14*prm%totalNslip ,1:NofMyPhase)
|
stt%v_edg_neg => plasticState(p)%state (13*prm%totalNslip + 1:14*prm%totalNslip ,1:NipcMyPhase)
|
||||||
stt%v_scr_pos => plasticState(p)%state (14*prm%totalNslip + 1:15*prm%totalNslip ,1:NofMyPhase)
|
stt%v_scr_pos => plasticState(p)%state (14*prm%totalNslip + 1:15*prm%totalNslip ,1:NipcMyPhase)
|
||||||
stt%v_scr_neg => plasticState(p)%state (15*prm%totalNslip + 1:16*prm%totalNslip ,1:NofMyPhase)
|
stt%v_scr_neg => plasticState(p)%state (15*prm%totalNslip + 1:16*prm%totalNslip ,1:NipcMyPhase)
|
||||||
|
|
||||||
allocate(dst%tau_pass(prm%totalNslip,NofMyPhase),source=0.0_pReal)
|
allocate(dst%tau_pass(prm%totalNslip,NipcMyPhase),source=0.0_pReal)
|
||||||
allocate(dst%tau_back(prm%totalNslip,NofMyPhase),source=0.0_pReal)
|
allocate(dst%tau_back(prm%totalNslip,NipcMyPhase),source=0.0_pReal)
|
||||||
end associate
|
end associate
|
||||||
|
|
||||||
if (NofMyPhase > 0) call stateInit(p,NofMyPhase)
|
if (NipcMyPhase > 0) call stateInit(p,NipcMyPhase)
|
||||||
plasticState(p)%state0 = plasticState(p)%state
|
plasticState(p)%state0 = plasticState(p)%state
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -484,12 +484,12 @@ module subroutine plastic_nonlocal_init
|
||||||
discretization_nIP,discretization_nElem), source=0.0_pReal)
|
discretization_nIP,discretization_nElem), source=0.0_pReal)
|
||||||
|
|
||||||
! BEGIN DEPRECATED----------------------------------------------------------------------------------
|
! BEGIN DEPRECATED----------------------------------------------------------------------------------
|
||||||
allocate(iRhoU(maxval(param%totalNslip),4,maxNinstances), source=0)
|
allocate(iRhoU(maxval(param%totalNslip),4,Ninstance), source=0)
|
||||||
allocate(iV(maxval(param%totalNslip),4,maxNinstances), source=0)
|
allocate(iV(maxval(param%totalNslip),4,Ninstance), source=0)
|
||||||
allocate(iD(maxval(param%totalNslip),2,maxNinstances), source=0)
|
allocate(iD(maxval(param%totalNslip),2,Ninstance), source=0)
|
||||||
|
|
||||||
initializeInstances: do p = 1, size(phase_plasticity)
|
initializeInstances: do p = 1, size(phase_plasticity)
|
||||||
NofMyPhase = count(material_phaseAt==p) * discretization_nIP
|
NipcMyPhase = count(material_phaseAt==p) * discretization_nIP
|
||||||
myPhase2: if (phase_plasticity(p) == PLASTICITY_NONLOCAL_ID) then
|
myPhase2: if (phase_plasticity(p) == PLASTICITY_NONLOCAL_ID) then
|
||||||
|
|
||||||
!*** determine indices to state array
|
!*** determine indices to state array
|
||||||
|
@ -532,11 +532,11 @@ module subroutine plastic_nonlocal_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief populates the initial dislocation density
|
!> @brief populates the initial dislocation density
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine stateInit(phase,NofMyPhase)
|
subroutine stateInit(phase,NipcMyPhase)
|
||||||
|
|
||||||
integer,intent(in) ::&
|
integer,intent(in) ::&
|
||||||
phase, &
|
phase, &
|
||||||
NofMyPhase
|
NipcMyPhase
|
||||||
integer :: &
|
integer :: &
|
||||||
e, &
|
e, &
|
||||||
i, &
|
i, &
|
||||||
|
@ -554,7 +554,7 @@ module subroutine plastic_nonlocal_init
|
||||||
totalVolume, &
|
totalVolume, &
|
||||||
densityBinning, &
|
densityBinning, &
|
||||||
minimumIpVolume
|
minimumIpVolume
|
||||||
real(pReal), dimension(NofMyPhase) :: &
|
real(pReal), dimension(NipcMyPhase) :: &
|
||||||
volume
|
volume
|
||||||
|
|
||||||
instance = phase_plasticityInstance(phase)
|
instance = phase_plasticityInstance(phase)
|
||||||
|
@ -577,14 +577,14 @@ module subroutine plastic_nonlocal_init
|
||||||
meanDensity = 0.0_pReal
|
meanDensity = 0.0_pReal
|
||||||
do while(meanDensity < prm%rhoSglRandom)
|
do while(meanDensity < prm%rhoSglRandom)
|
||||||
call random_number(rnd)
|
call random_number(rnd)
|
||||||
phasemember = nint(rnd(1)*real(NofMyPhase,pReal) + 0.5_pReal)
|
phasemember = nint(rnd(1)*real(NipcMyPhase,pReal) + 0.5_pReal)
|
||||||
s = nint(rnd(2)*real(prm%totalNslip,pReal)*4.0_pReal + 0.5_pReal)
|
s = nint(rnd(2)*real(prm%totalNslip,pReal)*4.0_pReal + 0.5_pReal)
|
||||||
meanDensity = meanDensity + densityBinning * volume(phasemember) / totalVolume
|
meanDensity = meanDensity + densityBinning * volume(phasemember) / totalVolume
|
||||||
stt%rhoSglMobile(s,phasemember) = densityBinning
|
stt%rhoSglMobile(s,phasemember) = densityBinning
|
||||||
enddo
|
enddo
|
||||||
! homogeneous distribution of density with some noise
|
! homogeneous distribution of density with some noise
|
||||||
else
|
else
|
||||||
do e = 1, NofMyPhase
|
do e = 1, NipcMyPhase
|
||||||
do f = 1,size(prm%Nslip,1)
|
do f = 1,size(prm%Nslip,1)
|
||||||
from = 1 + sum(prm%Nslip(1:f-1))
|
from = 1 + sum(prm%Nslip(1:f-1))
|
||||||
upto = sum(prm%Nslip(1:f))
|
upto = sum(prm%Nslip(1:f))
|
||||||
|
|
216
src/material.f90
216
src/material.f90
|
@ -17,7 +17,7 @@ module material
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
|
|
||||||
character(len=*), parameter, public :: &
|
character(len=*), parameter, public :: &
|
||||||
ELASTICITY_hooke_label = 'hooke', &
|
ELASTICITY_hooke_label = 'hooke', &
|
||||||
PLASTICITY_none_label = 'none', &
|
PLASTICITY_none_label = 'none', &
|
||||||
|
@ -46,9 +46,9 @@ module material
|
||||||
HOMOGENIZATION_none_label = 'none', &
|
HOMOGENIZATION_none_label = 'none', &
|
||||||
HOMOGENIZATION_isostrain_label = 'isostrain', &
|
HOMOGENIZATION_isostrain_label = 'isostrain', &
|
||||||
HOMOGENIZATION_rgc_label = 'rgc'
|
HOMOGENIZATION_rgc_label = 'rgc'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
enum, bind(c)
|
enum, bind(c)
|
||||||
enumerator :: ELASTICITY_undefined_ID, &
|
enumerator :: ELASTICITY_undefined_ID, &
|
||||||
ELASTICITY_hooke_ID, &
|
ELASTICITY_hooke_ID, &
|
||||||
|
@ -84,7 +84,7 @@ module material
|
||||||
HOMOGENIZATION_isostrain_ID, &
|
HOMOGENIZATION_isostrain_ID, &
|
||||||
HOMOGENIZATION_rgc_ID
|
HOMOGENIZATION_rgc_ID
|
||||||
end enum
|
end enum
|
||||||
|
|
||||||
integer(kind(ELASTICITY_undefined_ID)), dimension(:), allocatable, public, protected :: &
|
integer(kind(ELASTICITY_undefined_ID)), dimension(:), allocatable, public, protected :: &
|
||||||
phase_elasticity !< elasticity of each phase
|
phase_elasticity !< elasticity of each phase
|
||||||
integer(kind(PLASTICITY_undefined_ID)), dimension(:), allocatable, public, protected :: &
|
integer(kind(PLASTICITY_undefined_ID)), dimension(:), allocatable, public, protected :: &
|
||||||
|
@ -95,19 +95,19 @@ module material
|
||||||
damage_type !< nonlocal damage model
|
damage_type !< nonlocal damage model
|
||||||
integer(kind(HOMOGENIZATION_undefined_ID)), dimension(:), allocatable, public, protected :: &
|
integer(kind(HOMOGENIZATION_undefined_ID)), dimension(:), allocatable, public, protected :: &
|
||||||
homogenization_type !< type of each homogenization
|
homogenization_type !< type of each homogenization
|
||||||
|
|
||||||
integer, public, protected :: &
|
integer, public, protected :: &
|
||||||
material_Nphase, & !< number of phases
|
material_Nphase, & !< number of phases
|
||||||
material_Nhomogenization !< number of homogenizations
|
material_Nhomogenization !< number of homogenizations
|
||||||
|
|
||||||
integer(kind(SOURCE_undefined_ID)), dimension(:,:), allocatable, public, protected :: &
|
integer(kind(SOURCE_undefined_ID)), dimension(:,:), allocatable, public, protected :: &
|
||||||
phase_source, & !< active sources mechanisms of each phase
|
phase_source, & !< active sources mechanisms of each phase
|
||||||
phase_kinematics, & !< active kinematic mechanisms of each phase
|
phase_kinematics, & !< active kinematic mechanisms of each phase
|
||||||
phase_stiffnessDegradation !< active stiffness degradation mechanisms of each phase
|
phase_stiffnessDegradation !< active stiffness degradation mechanisms of each phase
|
||||||
|
|
||||||
integer, public, protected :: &
|
integer, public, protected :: &
|
||||||
homogenization_maxNgrains !< max number of grains in any USED homogenization
|
homogenization_maxNgrains !< max number of grains in any USED homogenization
|
||||||
|
|
||||||
integer, dimension(:), allocatable, public, protected :: &
|
integer, dimension(:), allocatable, public, protected :: &
|
||||||
phase_Nsources, & !< number of source mechanisms active in each phase
|
phase_Nsources, & !< number of source mechanisms active in each phase
|
||||||
phase_Nkinematics, & !< number of kinematic mechanisms active in each phase
|
phase_Nkinematics, & !< number of kinematic mechanisms active in each phase
|
||||||
|
@ -118,12 +118,12 @@ module material
|
||||||
homogenization_typeInstance, & !< instance of particular type of each homogenization
|
homogenization_typeInstance, & !< instance of particular type of each homogenization
|
||||||
thermal_typeInstance, & !< instance of particular type of each thermal transport
|
thermal_typeInstance, & !< instance of particular type of each thermal transport
|
||||||
damage_typeInstance !< instance of particular type of each nonlocal damage
|
damage_typeInstance !< instance of particular type of each nonlocal damage
|
||||||
|
|
||||||
real(pReal), dimension(:), allocatable, public, protected :: &
|
real(pReal), dimension(:), allocatable, public, protected :: &
|
||||||
thermal_initialT, & !< initial temperature per each homogenization
|
thermal_initialT, & !< initial temperature per each homogenization
|
||||||
damage_initialPhi !< initial damage per each homogenization
|
damage_initialPhi !< initial damage per each homogenization
|
||||||
|
|
||||||
! NEW MAPPINGS
|
! NEW MAPPINGS
|
||||||
integer, dimension(:), allocatable, public, protected :: & ! (elem)
|
integer, dimension(:), allocatable, public, protected :: & ! (elem)
|
||||||
material_homogenizationAt !< homogenization ID of each element (copy of discretization_homogenizationAt)
|
material_homogenizationAt !< homogenization ID of each element (copy of discretization_homogenizationAt)
|
||||||
integer, dimension(:,:), allocatable, public, target :: & ! (ip,elem) ToDo: ugly target for mapping hack
|
integer, dimension(:,:), allocatable, public, target :: & ! (ip,elem) ToDo: ugly target for mapping hack
|
||||||
|
@ -142,26 +142,26 @@ module material
|
||||||
homogState, &
|
homogState, &
|
||||||
thermalState, &
|
thermalState, &
|
||||||
damageState
|
damageState
|
||||||
|
|
||||||
integer, dimension(:,:,:), allocatable, public, protected :: &
|
integer, dimension(:,:,:), allocatable, public, protected :: &
|
||||||
material_texture !< texture (index) of each grain,IP,element. Only used by plastic_nonlocal
|
material_texture !< texture (index) of each grain,IP,element. Only used by plastic_nonlocal
|
||||||
|
|
||||||
type(Rotation), dimension(:,:,:), allocatable, public, protected :: &
|
type(Rotation), dimension(:,:,:), allocatable, public, protected :: &
|
||||||
material_orientation0 !< initial orientation of each grain,IP,element
|
material_orientation0 !< initial orientation of each grain,IP,element
|
||||||
|
|
||||||
logical, dimension(:), allocatable, public, protected :: &
|
logical, dimension(:), allocatable, public, protected :: &
|
||||||
phase_localPlasticity !< flags phases with local constitutive law
|
phase_localPlasticity !< flags phases with local constitutive law
|
||||||
|
|
||||||
integer, dimension(:), allocatable, private :: &
|
integer, dimension(:), allocatable, private :: &
|
||||||
microstructure_Nconstituents !< number of constituents in each microstructure
|
microstructure_Nconstituents !< number of constituents in each microstructure
|
||||||
|
|
||||||
integer, dimension(:,:), allocatable, private :: &
|
integer, dimension(:,:), allocatable, private :: &
|
||||||
microstructure_phase, & !< phase IDs of each microstructure
|
microstructure_phase, & !< phase IDs of each microstructure
|
||||||
microstructure_texture !< texture IDs of each microstructure
|
microstructure_texture !< texture IDs of each microstructure
|
||||||
|
|
||||||
type(Rotation), dimension(:), allocatable, private :: &
|
type(Rotation), dimension(:), allocatable, private :: &
|
||||||
texture_orientation !< Euler angles in material.config (possibly rotated for alignment)
|
texture_orientation !< Euler angles in material.config (possibly rotated for alignment)
|
||||||
|
|
||||||
|
|
||||||
! BEGIN DEPRECATED
|
! BEGIN DEPRECATED
|
||||||
integer, dimension(:,:), allocatable, private, target :: mappingHomogenizationConst !< mapping from material points to offset in constant state/field
|
integer, dimension(:,:), allocatable, private, target :: mappingHomogenizationConst !< mapping from material points to offset in constant state/field
|
||||||
|
@ -170,12 +170,12 @@ module material
|
||||||
type(tHomogMapping), allocatable, dimension(:), public :: &
|
type(tHomogMapping), allocatable, dimension(:), public :: &
|
||||||
thermalMapping, & !< mapping for thermal state/fields
|
thermalMapping, & !< mapping for thermal state/fields
|
||||||
damageMapping !< mapping for damage state/fields
|
damageMapping !< mapping for damage state/fields
|
||||||
|
|
||||||
type(group_float), allocatable, dimension(:), public :: &
|
type(group_float), allocatable, dimension(:), public :: &
|
||||||
temperature, & !< temperature field
|
temperature, & !< temperature field
|
||||||
damage, & !< damage field
|
damage, & !< damage field
|
||||||
temperatureRate !< temperature change rate field
|
temperatureRate !< temperature change rate field
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
material_init, &
|
material_init, &
|
||||||
material_allocatePlasticState, &
|
material_allocatePlasticState, &
|
||||||
|
@ -219,43 +219,43 @@ subroutine material_init
|
||||||
integer, dimension(:), allocatable :: &
|
integer, dimension(:), allocatable :: &
|
||||||
CounterPhase, &
|
CounterPhase, &
|
||||||
CounterHomogenization
|
CounterHomogenization
|
||||||
|
|
||||||
myDebug = debug_level(debug_material)
|
myDebug = debug_level(debug_material)
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- material init -+>>>'; flush(6)
|
write(6,'(/,a)') ' <<<+- material init -+>>>'; flush(6)
|
||||||
|
|
||||||
call material_parsePhase()
|
call material_parsePhase()
|
||||||
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Phase parsed'; flush(6)
|
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Phase parsed'; flush(6)
|
||||||
|
|
||||||
call material_parseMicrostructure()
|
call material_parseMicrostructure()
|
||||||
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Microstructure parsed'; flush(6)
|
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Microstructure parsed'; flush(6)
|
||||||
|
|
||||||
call material_parseHomogenization()
|
call material_parseHomogenization()
|
||||||
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Homogenization parsed'; flush(6)
|
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Homogenization parsed'; flush(6)
|
||||||
|
|
||||||
call material_parseTexture()
|
call material_parseTexture()
|
||||||
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Texture parsed'; flush(6)
|
if (iand(myDebug,debug_levelBasic) /= 0) write(6,'(a)') ' Texture parsed'; flush(6)
|
||||||
|
|
||||||
material_Nphase = size(config_phase)
|
material_Nphase = size(config_phase)
|
||||||
material_Nhomogenization = size(config_homogenization)
|
material_Nhomogenization = size(config_homogenization)
|
||||||
|
|
||||||
|
|
||||||
allocate(plasticState(material_Nphase))
|
allocate(plasticState(material_Nphase))
|
||||||
allocate(sourceState (material_Nphase))
|
allocate(sourceState (material_Nphase))
|
||||||
do myPhase = 1,material_Nphase
|
do myPhase = 1,material_Nphase
|
||||||
allocate(sourceState(myPhase)%p(phase_Nsources(myPhase)))
|
allocate(sourceState(myPhase)%p(phase_Nsources(myPhase)))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
allocate(homogState (material_Nhomogenization))
|
allocate(homogState (material_Nhomogenization))
|
||||||
allocate(thermalState (material_Nhomogenization))
|
allocate(thermalState (material_Nhomogenization))
|
||||||
allocate(damageState (material_Nhomogenization))
|
allocate(damageState (material_Nhomogenization))
|
||||||
|
|
||||||
allocate(thermalMapping (material_Nhomogenization))
|
allocate(thermalMapping (material_Nhomogenization))
|
||||||
allocate(damageMapping (material_Nhomogenization))
|
allocate(damageMapping (material_Nhomogenization))
|
||||||
|
|
||||||
allocate(temperature (material_Nhomogenization))
|
allocate(temperature (material_Nhomogenization))
|
||||||
allocate(damage (material_Nhomogenization))
|
allocate(damage (material_Nhomogenization))
|
||||||
|
|
||||||
allocate(temperatureRate (material_Nhomogenization))
|
allocate(temperatureRate (material_Nhomogenization))
|
||||||
|
|
||||||
do m = 1,size(config_microstructure)
|
do m = 1,size(config_microstructure)
|
||||||
|
@ -269,7 +269,7 @@ subroutine material_init
|
||||||
call IO_error(151,m)
|
call IO_error(151,m)
|
||||||
enddo
|
enddo
|
||||||
if(homogenization_maxNgrains > size(microstructure_phase,1)) call IO_error(148)
|
if(homogenization_maxNgrains > size(microstructure_phase,1)) call IO_error(148)
|
||||||
|
|
||||||
debugOut: if (iand(myDebug,debug_levelExtensive) /= 0) then
|
debugOut: if (iand(myDebug,debug_levelExtensive) /= 0) then
|
||||||
write(6,'(/,a,/)') ' MATERIAL configuration'
|
write(6,'(/,a,/)') ' MATERIAL configuration'
|
||||||
write(6,'(a32,1x,a16,1x,a6)') 'homogenization ','type ','grains'
|
write(6,'(a32,1x,a16,1x,a6)') 'homogenization ','type ','grains'
|
||||||
|
@ -314,15 +314,15 @@ subroutine material_init
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
deallocate(microstructure_phase)
|
deallocate(microstructure_phase)
|
||||||
deallocate(microstructure_texture)
|
deallocate(microstructure_texture)
|
||||||
deallocate(texture_orientation)
|
deallocate(texture_orientation)
|
||||||
|
|
||||||
|
|
||||||
allocate(material_homogenizationAt,source=discretization_homogenizationAt)
|
allocate(material_homogenizationAt,source=discretization_homogenizationAt)
|
||||||
allocate(material_homogenizationMemberAt(discretization_nIP,discretization_nElem),source=0)
|
allocate(material_homogenizationMemberAt(discretization_nIP,discretization_nElem),source=0)
|
||||||
|
|
||||||
allocate(CounterHomogenization(size(config_homogenization)),source=0)
|
allocate(CounterHomogenization(size(config_homogenization)),source=0)
|
||||||
do e = 1, discretization_nElem
|
do e = 1, discretization_nElem
|
||||||
do i = 1, discretization_nIP
|
do i = 1, discretization_nIP
|
||||||
|
@ -331,9 +331,9 @@ subroutine material_init
|
||||||
material_homogenizationMemberAt(i,e) = CounterHomogenization(material_homogenizationAt(e))
|
material_homogenizationMemberAt(i,e) = CounterHomogenization(material_homogenizationAt(e))
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
allocate(material_phaseMemberAt(homogenization_maxNgrains,discretization_nIP,discretization_nElem),source=0)
|
allocate(material_phaseMemberAt(homogenization_maxNgrains,discretization_nIP,discretization_nElem),source=0)
|
||||||
|
|
||||||
allocate(CounterPhase(size(config_phase)),source=0)
|
allocate(CounterPhase(size(config_phase)),source=0)
|
||||||
do e = 1, discretization_nElem
|
do e = 1, discretization_nElem
|
||||||
do i = 1, discretization_nIP
|
do i = 1, discretization_nIP
|
||||||
|
@ -344,7 +344,7 @@ subroutine material_init
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
call config_deallocate('material.config/microstructure')
|
call config_deallocate('material.config/microstructure')
|
||||||
call config_deallocate('material.config/texture')
|
call config_deallocate('material.config/texture')
|
||||||
|
|
||||||
|
@ -379,7 +379,7 @@ subroutine material_parseHomogenization
|
||||||
character(len=pStringLen) :: tag
|
character(len=pStringLen) :: tag
|
||||||
|
|
||||||
logical, dimension(:), allocatable :: homogenization_active
|
logical, dimension(:), allocatable :: homogenization_active
|
||||||
|
|
||||||
allocate(homogenization_type(size(config_homogenization)), source=HOMOGENIZATION_undefined_ID)
|
allocate(homogenization_type(size(config_homogenization)), source=HOMOGENIZATION_undefined_ID)
|
||||||
allocate(thermal_type(size(config_homogenization)), source=THERMAL_isothermal_ID)
|
allocate(thermal_type(size(config_homogenization)), source=THERMAL_isothermal_ID)
|
||||||
allocate(damage_type (size(config_homogenization)), source=DAMAGE_none_ID)
|
allocate(damage_type (size(config_homogenization)), source=DAMAGE_none_ID)
|
||||||
|
@ -390,13 +390,13 @@ subroutine material_parseHomogenization
|
||||||
allocate(homogenization_active(size(config_homogenization)), source=.false.) !!!!!!!!!!!!!!!
|
allocate(homogenization_active(size(config_homogenization)), source=.false.) !!!!!!!!!!!!!!!
|
||||||
allocate(thermal_initialT(size(config_homogenization)), source=300.0_pReal)
|
allocate(thermal_initialT(size(config_homogenization)), source=300.0_pReal)
|
||||||
allocate(damage_initialPhi(size(config_homogenization)), source=1.0_pReal)
|
allocate(damage_initialPhi(size(config_homogenization)), source=1.0_pReal)
|
||||||
|
|
||||||
forall (h = 1:size(config_homogenization)) &
|
forall (h = 1:size(config_homogenization)) &
|
||||||
homogenization_active(h) = any(discretization_homogenizationAt == h)
|
homogenization_active(h) = any(discretization_homogenizationAt == h)
|
||||||
|
|
||||||
|
|
||||||
do h=1, size(config_homogenization)
|
do h=1, size(config_homogenization)
|
||||||
|
|
||||||
tag = config_homogenization(h)%getString('mech')
|
tag = config_homogenization(h)%getString('mech')
|
||||||
select case (trim(tag))
|
select case (trim(tag))
|
||||||
case(HOMOGENIZATION_NONE_label)
|
case(HOMOGENIZATION_NONE_label)
|
||||||
|
@ -411,12 +411,12 @@ subroutine material_parseHomogenization
|
||||||
case default
|
case default
|
||||||
call IO_error(500,ext_msg=trim(tag))
|
call IO_error(500,ext_msg=trim(tag))
|
||||||
end select
|
end select
|
||||||
|
|
||||||
homogenization_typeInstance(h) = count(homogenization_type==homogenization_type(h))
|
homogenization_typeInstance(h) = count(homogenization_type==homogenization_type(h))
|
||||||
|
|
||||||
if (config_homogenization(h)%keyExists('thermal')) then
|
if (config_homogenization(h)%keyExists('thermal')) then
|
||||||
thermal_initialT(h) = config_homogenization(h)%getFloat('t0',defaultVal=300.0_pReal)
|
thermal_initialT(h) = config_homogenization(h)%getFloat('t0',defaultVal=300.0_pReal)
|
||||||
|
|
||||||
tag = config_homogenization(h)%getString('thermal')
|
tag = config_homogenization(h)%getString('thermal')
|
||||||
select case (trim(tag))
|
select case (trim(tag))
|
||||||
case(THERMAL_isothermal_label)
|
case(THERMAL_isothermal_label)
|
||||||
|
@ -428,12 +428,12 @@ subroutine material_parseHomogenization
|
||||||
case default
|
case default
|
||||||
call IO_error(500,ext_msg=trim(tag))
|
call IO_error(500,ext_msg=trim(tag))
|
||||||
end select
|
end select
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (config_homogenization(h)%keyExists('damage')) then
|
if (config_homogenization(h)%keyExists('damage')) then
|
||||||
damage_initialPhi(h) = config_homogenization(h)%getFloat('initialdamage',defaultVal=1.0_pReal)
|
damage_initialPhi(h) = config_homogenization(h)%getFloat('initialdamage',defaultVal=1.0_pReal)
|
||||||
|
|
||||||
tag = config_homogenization(h)%getString('damage')
|
tag = config_homogenization(h)%getString('damage')
|
||||||
select case (trim(tag))
|
select case (trim(tag))
|
||||||
case(DAMAGE_NONE_label)
|
case(DAMAGE_NONE_label)
|
||||||
|
@ -445,17 +445,17 @@ subroutine material_parseHomogenization
|
||||||
case default
|
case default
|
||||||
call IO_error(500,ext_msg=trim(tag))
|
call IO_error(500,ext_msg=trim(tag))
|
||||||
end select
|
end select
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
do h=1, size(config_homogenization)
|
do h=1, size(config_homogenization)
|
||||||
homogenization_typeInstance(h) = count(homogenization_type(1:h) == homogenization_type(h))
|
homogenization_typeInstance(h) = count(homogenization_type(1:h) == homogenization_type(h))
|
||||||
thermal_typeInstance(h) = count(thermal_type (1:h) == thermal_type (h))
|
thermal_typeInstance(h) = count(thermal_type (1:h) == thermal_type (h))
|
||||||
damage_typeInstance(h) = count(damage_type (1:h) == damage_type (h))
|
damage_typeInstance(h) = count(damage_type (1:h) == damage_type (h))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
homogenization_maxNgrains = maxval(homogenization_Ngrains,homogenization_active)
|
homogenization_maxNgrains = maxval(homogenization_Ngrains,homogenization_active)
|
||||||
|
|
||||||
end subroutine material_parseHomogenization
|
end subroutine material_parseHomogenization
|
||||||
|
@ -476,30 +476,30 @@ subroutine material_parseMicrostructure
|
||||||
microstructure_fraction !< vol fraction of each constituent in microstructure
|
microstructure_fraction !< vol fraction of each constituent in microstructure
|
||||||
integer :: &
|
integer :: &
|
||||||
maxNconstituents !< max number of constituents in any phase
|
maxNconstituents !< max number of constituents in any phase
|
||||||
|
|
||||||
allocate(microstructure_Nconstituents(size(config_microstructure)), source=0)
|
allocate(microstructure_Nconstituents(size(config_microstructure)), source=0)
|
||||||
|
|
||||||
if(any(discretization_microstructureAt > size(config_microstructure))) &
|
if(any(discretization_microstructureAt > size(config_microstructure))) &
|
||||||
call IO_error(155,ext_msg='More microstructures in geometry than sections in material.config')
|
call IO_error(155,ext_msg='More microstructures in geometry than sections in material.config')
|
||||||
|
|
||||||
do m=1, size(config_microstructure)
|
do m=1, size(config_microstructure)
|
||||||
microstructure_Nconstituents(m) = config_microstructure(m)%countKeys('(constituent)')
|
microstructure_Nconstituents(m) = config_microstructure(m)%countKeys('(constituent)')
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
maxNconstituents = maxval(microstructure_Nconstituents)
|
maxNconstituents = maxval(microstructure_Nconstituents)
|
||||||
allocate(microstructure_phase (maxNconstituents,size(config_microstructure)),source=0)
|
allocate(microstructure_phase (maxNconstituents,size(config_microstructure)),source=0)
|
||||||
allocate(microstructure_texture (maxNconstituents,size(config_microstructure)),source=0)
|
allocate(microstructure_texture (maxNconstituents,size(config_microstructure)),source=0)
|
||||||
allocate(microstructure_fraction(maxNconstituents,size(config_microstructure)),source=0.0_pReal)
|
allocate(microstructure_fraction(maxNconstituents,size(config_microstructure)),source=0.0_pReal)
|
||||||
|
|
||||||
allocate(strings(1)) ! Intel 16.0 Bug
|
allocate(strings(1)) ! Intel 16.0 Bug
|
||||||
do m=1, size(config_microstructure)
|
do m=1, size(config_microstructure)
|
||||||
strings = config_microstructure(m)%getStrings('(constituent)',raw=.true.)
|
strings = config_microstructure(m)%getStrings('(constituent)',raw=.true.)
|
||||||
do c = 1, size(strings)
|
do c = 1, size(strings)
|
||||||
chunkPos = IO_stringPos(strings(c))
|
chunkPos = IO_stringPos(strings(c))
|
||||||
|
|
||||||
do i = 1,5,2
|
do i = 1,5,2
|
||||||
tag = IO_stringValue(strings(c),chunkPos,i)
|
tag = IO_stringValue(strings(c),chunkPos,i)
|
||||||
|
|
||||||
select case (tag)
|
select case (tag)
|
||||||
case('phase')
|
case('phase')
|
||||||
microstructure_phase(c,m) = IO_intValue(strings(c),chunkPos,i+1)
|
microstructure_phase(c,m) = IO_intValue(strings(c),chunkPos,i+1)
|
||||||
|
@ -508,13 +508,13 @@ subroutine material_parseMicrostructure
|
||||||
case('fraction')
|
case('fraction')
|
||||||
microstructure_fraction(c,m) = IO_floatValue(strings(c),chunkPos,i+1)
|
microstructure_fraction(c,m) = IO_floatValue(strings(c),chunkPos,i+1)
|
||||||
end select
|
end select
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
if (dNeq(sum(microstructure_fraction(:,m)),1.0_pReal)) call IO_error(153,ext_msg=config_name_microstructure(m))
|
if (dNeq(sum(microstructure_fraction(:,m)),1.0_pReal)) call IO_error(153,ext_msg=config_name_microstructure(m))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
|
||||||
end subroutine material_parseMicrostructure
|
end subroutine material_parseMicrostructure
|
||||||
|
|
||||||
|
|
||||||
|
@ -524,29 +524,29 @@ end subroutine material_parseMicrostructure
|
||||||
subroutine material_parsePhase
|
subroutine material_parsePhase
|
||||||
|
|
||||||
integer :: sourceCtr, kinematicsCtr, stiffDegradationCtr, p
|
integer :: sourceCtr, kinematicsCtr, stiffDegradationCtr, p
|
||||||
character(len=pStringLen), dimension(:), allocatable :: str
|
character(len=pStringLen), dimension(:), allocatable :: str
|
||||||
|
|
||||||
|
|
||||||
allocate(phase_elasticity(size(config_phase)),source=ELASTICITY_undefined_ID)
|
allocate(phase_elasticity(size(config_phase)),source=ELASTICITY_undefined_ID)
|
||||||
allocate(phase_plasticity(size(config_phase)),source=PLASTICITY_undefined_ID)
|
allocate(phase_plasticity(size(config_phase)),source=PLASTICITY_undefined_ID)
|
||||||
allocate(phase_Nsources(size(config_phase)), source=0)
|
allocate(phase_Nsources(size(config_phase)), source=0)
|
||||||
allocate(phase_Nkinematics(size(config_phase)), source=0)
|
allocate(phase_Nkinematics(size(config_phase)), source=0)
|
||||||
allocate(phase_NstiffnessDegradations(size(config_phase)),source=0)
|
allocate(phase_NstiffnessDegradations(size(config_phase)),source=0)
|
||||||
allocate(phase_localPlasticity(size(config_phase)), source=.false.)
|
allocate(phase_localPlasticity(size(config_phase)), source=.false.)
|
||||||
|
|
||||||
do p=1, size(config_phase)
|
do p=1, size(config_phase)
|
||||||
phase_Nsources(p) = config_phase(p)%countKeys('(source)')
|
phase_Nsources(p) = config_phase(p)%countKeys('(source)')
|
||||||
phase_Nkinematics(p) = config_phase(p)%countKeys('(kinematics)')
|
phase_Nkinematics(p) = config_phase(p)%countKeys('(kinematics)')
|
||||||
phase_NstiffnessDegradations(p) = config_phase(p)%countKeys('(stiffness_degradation)')
|
phase_NstiffnessDegradations(p) = config_phase(p)%countKeys('(stiffness_degradation)')
|
||||||
phase_localPlasticity(p) = .not. config_phase(p)%KeyExists('/nonlocal/')
|
phase_localPlasticity(p) = .not. config_phase(p)%KeyExists('/nonlocal/')
|
||||||
|
|
||||||
select case (config_phase(p)%getString('elasticity'))
|
select case (config_phase(p)%getString('elasticity'))
|
||||||
case (ELASTICITY_HOOKE_label)
|
case (ELASTICITY_HOOKE_label)
|
||||||
phase_elasticity(p) = ELASTICITY_HOOKE_ID
|
phase_elasticity(p) = ELASTICITY_HOOKE_ID
|
||||||
case default
|
case default
|
||||||
call IO_error(200,ext_msg=trim(config_phase(p)%getString('elasticity')))
|
call IO_error(200,ext_msg=trim(config_phase(p)%getString('elasticity')))
|
||||||
end select
|
end select
|
||||||
|
|
||||||
select case (config_phase(p)%getString('plasticity'))
|
select case (config_phase(p)%getString('plasticity'))
|
||||||
case (PLASTICITY_NONE_label)
|
case (PLASTICITY_NONE_label)
|
||||||
phase_plasticity(p) = PLASTICITY_NONE_ID
|
phase_plasticity(p) = PLASTICITY_NONE_ID
|
||||||
|
@ -565,9 +565,9 @@ subroutine material_parsePhase
|
||||||
case default
|
case default
|
||||||
call IO_error(201,ext_msg=trim(config_phase(p)%getString('plasticity')))
|
call IO_error(201,ext_msg=trim(config_phase(p)%getString('plasticity')))
|
||||||
end select
|
end select
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
allocate(phase_source(maxval(phase_Nsources),size(config_phase)), source=SOURCE_undefined_ID)
|
allocate(phase_source(maxval(phase_Nsources),size(config_phase)), source=SOURCE_undefined_ID)
|
||||||
allocate(phase_kinematics(maxval(phase_Nkinematics),size(config_phase)), source=KINEMATICS_undefined_ID)
|
allocate(phase_kinematics(maxval(phase_Nkinematics),size(config_phase)), source=KINEMATICS_undefined_ID)
|
||||||
allocate(phase_stiffnessDegradation(maxval(phase_NstiffnessDegradations),size(config_phase)), &
|
allocate(phase_stiffnessDegradation(maxval(phase_NstiffnessDegradations),size(config_phase)), &
|
||||||
|
@ -628,10 +628,10 @@ subroutine material_parsePhase
|
||||||
end select
|
end select
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
allocate(phase_plasticityInstance(size(config_phase)),source=0)
|
allocate(phase_plasticityInstance(size(config_phase)),source=0)
|
||||||
allocate(phase_elasticityInstance(size(config_phase)),source=0)
|
allocate(phase_elasticityInstance(size(config_phase)),source=0)
|
||||||
|
|
||||||
do p=1, size(config_phase)
|
do p=1, size(config_phase)
|
||||||
phase_elasticityInstance(p) = count(phase_elasticity(1:p) == phase_elasticity(p))
|
phase_elasticityInstance(p) = count(phase_elasticity(1:p) == phase_elasticity(p))
|
||||||
phase_plasticityInstance(p) = count(phase_plasticity(1:p) == phase_plasticity(p))
|
phase_plasticityInstance(p) = count(phase_plasticity(1:p) == phase_plasticity(p))
|
||||||
|
@ -646,7 +646,7 @@ end subroutine material_parsePhase
|
||||||
subroutine material_parseTexture
|
subroutine material_parseTexture
|
||||||
|
|
||||||
integer :: j,t
|
integer :: j,t
|
||||||
character(len=pStringLen), dimension(:), allocatable :: strings ! Values for given key in material config
|
character(len=pStringLen), dimension(:), allocatable :: strings ! Values for given key in material config
|
||||||
integer, dimension(:), allocatable :: chunkPos
|
integer, dimension(:), allocatable :: chunkPos
|
||||||
real(pReal), dimension(3,3) :: transformation ! maps texture to microstructure coordinate system
|
real(pReal), dimension(3,3) :: transformation ! maps texture to microstructure coordinate system
|
||||||
real(pReal), dimension(3) :: Eulers ! Euler angles in degrees from file
|
real(pReal), dimension(3) :: Eulers ! Euler angles in degrees from file
|
||||||
|
@ -662,7 +662,7 @@ subroutine material_parseTexture
|
||||||
allocate(texture_orientation(size(config_texture)))
|
allocate(texture_orientation(size(config_texture)))
|
||||||
|
|
||||||
do t=1, size(config_texture)
|
do t=1, size(config_texture)
|
||||||
|
|
||||||
strings = config_texture(t)%getStrings('(gauss)',raw= .true.)
|
strings = config_texture(t)%getStrings('(gauss)',raw= .true.)
|
||||||
chunkPos = IO_stringPos(strings(1))
|
chunkPos = IO_stringPos(strings(1))
|
||||||
do j = 1,5,2
|
do j = 1,5,2
|
||||||
|
@ -700,21 +700,21 @@ subroutine material_parseTexture
|
||||||
call transformation_%fromMatrix(transformation)
|
call transformation_%fromMatrix(transformation)
|
||||||
texture_orientation(t) = texture_orientation(t) * transformation_
|
texture_orientation(t) = texture_orientation(t) * transformation_
|
||||||
endif
|
endif
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
end subroutine material_parseTexture
|
end subroutine material_parseTexture
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief allocates the plastic state of a phase
|
!> @brief allocates the plastic state of a phase
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine material_allocatePlasticState(phase,NofMyPhase,&
|
subroutine material_allocatePlasticState(phase,NipcMyPhase,&
|
||||||
sizeState,sizeDotState,sizeDeltaState)
|
sizeState,sizeDotState,sizeDeltaState)
|
||||||
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
phase, &
|
phase, &
|
||||||
NofMyPhase, &
|
NipcMyPhase, &
|
||||||
sizeState, &
|
sizeState, &
|
||||||
sizeDotState, &
|
sizeDotState, &
|
||||||
sizeDeltaState
|
sizeDeltaState
|
||||||
|
@ -725,22 +725,22 @@ subroutine material_allocatePlasticState(phase,NofMyPhase,&
|
||||||
plasticState(phase)%offsetDeltaState = sizeState-sizeDeltaState ! deltaState occupies latter part of state by definition
|
plasticState(phase)%offsetDeltaState = sizeState-sizeDeltaState ! deltaState occupies latter part of state by definition
|
||||||
|
|
||||||
allocate(plasticState(phase)%atol (sizeState), source=0.0_pReal)
|
allocate(plasticState(phase)%atol (sizeState), source=0.0_pReal)
|
||||||
allocate(plasticState(phase)%state0 (sizeState,NofMyPhase), source=0.0_pReal)
|
allocate(plasticState(phase)%state0 (sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
allocate(plasticState(phase)%partionedState0 (sizeState,NofMyPhase), source=0.0_pReal)
|
allocate(plasticState(phase)%partionedState0 (sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
allocate(plasticState(phase)%subState0 (sizeState,NofMyPhase), source=0.0_pReal)
|
allocate(plasticState(phase)%subState0 (sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
allocate(plasticState(phase)%state (sizeState,NofMyPhase), source=0.0_pReal)
|
allocate(plasticState(phase)%state (sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
|
|
||||||
allocate(plasticState(phase)%dotState (sizeDotState,NofMyPhase), source=0.0_pReal)
|
allocate(plasticState(phase)%dotState (sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
if (numerics_integrator == 1) then
|
if (numerics_integrator == 1) then
|
||||||
allocate(plasticState(phase)%previousDotState (sizeDotState,NofMyPhase), source=0.0_pReal)
|
allocate(plasticState(phase)%previousDotState (sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
allocate(plasticState(phase)%previousDotState2 (sizeDotState,NofMyPhase), source=0.0_pReal)
|
allocate(plasticState(phase)%previousDotState2 (sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
endif
|
endif
|
||||||
if (numerics_integrator == 4) &
|
if (numerics_integrator == 4) &
|
||||||
allocate(plasticState(phase)%RK4dotState (sizeDotState,NofMyPhase), source=0.0_pReal)
|
allocate(plasticState(phase)%RK4dotState (sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
if (numerics_integrator == 5) &
|
if (numerics_integrator == 5) &
|
||||||
allocate(plasticState(phase)%RKCK45dotState (6,sizeDotState,NofMyPhase), source=0.0_pReal)
|
allocate(plasticState(phase)%RKCK45dotState (6,sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
|
|
||||||
allocate(plasticState(phase)%deltaState (sizeDeltaState,NofMyPhase), source=0.0_pReal)
|
allocate(plasticState(phase)%deltaState (sizeDeltaState,NipcMyPhase),source=0.0_pReal)
|
||||||
|
|
||||||
end subroutine material_allocatePlasticState
|
end subroutine material_allocatePlasticState
|
||||||
|
|
||||||
|
@ -748,37 +748,37 @@ end subroutine material_allocatePlasticState
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief allocates the source state of a phase
|
!> @brief allocates the source state of a phase
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine material_allocateSourceState(phase,of,NofMyPhase,&
|
subroutine material_allocateSourceState(phase,of,NipcMyPhase,&
|
||||||
sizeState,sizeDotState,sizeDeltaState)
|
sizeState,sizeDotState,sizeDeltaState)
|
||||||
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
phase, &
|
phase, &
|
||||||
of, &
|
of, &
|
||||||
NofMyPhase, &
|
NipcMyPhase, &
|
||||||
sizeState, sizeDotState,sizeDeltaState
|
sizeState, sizeDotState,sizeDeltaState
|
||||||
|
|
||||||
sourceState(phase)%p(of)%sizeState = sizeState
|
sourceState(phase)%p(of)%sizeState = sizeState
|
||||||
sourceState(phase)%p(of)%sizeDotState = sizeDotState
|
sourceState(phase)%p(of)%sizeDotState = sizeDotState
|
||||||
sourceState(phase)%p(of)%sizeDeltaState = sizeDeltaState
|
sourceState(phase)%p(of)%sizeDeltaState = sizeDeltaState
|
||||||
sourceState(phase)%p(of)%offsetDeltaState = sizeState-sizeDeltaState ! deltaState occupies latter part of state by definition
|
sourceState(phase)%p(of)%offsetDeltaState = sizeState-sizeDeltaState ! deltaState occupies latter part of state by definition
|
||||||
|
|
||||||
allocate(sourceState(phase)%p(of)%atol (sizeState), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%atol (sizeState), source=0.0_pReal)
|
||||||
allocate(sourceState(phase)%p(of)%state0 (sizeState,NofMyPhase), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%state0 (sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
allocate(sourceState(phase)%p(of)%partionedState0 (sizeState,NofMyPhase), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%partionedState0 (sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
allocate(sourceState(phase)%p(of)%subState0 (sizeState,NofMyPhase), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%subState0 (sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
allocate(sourceState(phase)%p(of)%state (sizeState,NofMyPhase), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%state (sizeState,NipcMyPhase), source=0.0_pReal)
|
||||||
|
|
||||||
allocate(sourceState(phase)%p(of)%dotState (sizeDotState,NofMyPhase), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%dotState (sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
if (numerics_integrator == 1) then
|
if (numerics_integrator == 1) then
|
||||||
allocate(sourceState(phase)%p(of)%previousDotState (sizeDotState,NofMyPhase), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%previousDotState (sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
allocate(sourceState(phase)%p(of)%previousDotState2 (sizeDotState,NofMyPhase), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%previousDotState2 (sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
endif
|
endif
|
||||||
if (numerics_integrator == 4) &
|
if (numerics_integrator == 4) &
|
||||||
allocate(sourceState(phase)%p(of)%RK4dotState (sizeDotState,NofMyPhase), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%RK4dotState (sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
if (numerics_integrator == 5) &
|
if (numerics_integrator == 5) &
|
||||||
allocate(sourceState(phase)%p(of)%RKCK45dotState (6,sizeDotState,NofMyPhase), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%RKCK45dotState (6,sizeDotState,NipcMyPhase),source=0.0_pReal)
|
||||||
|
|
||||||
allocate(sourceState(phase)%p(of)%deltaState (sizeDeltaState,NofMyPhase), source=0.0_pReal)
|
allocate(sourceState(phase)%p(of)%deltaState (sizeDeltaState,NipcMyPhase),source=0.0_pReal)
|
||||||
|
|
||||||
end subroutine material_allocateSourceState
|
end subroutine material_allocateSourceState
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ contains
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine source_damage_anisoBrittle_init
|
subroutine source_damage_anisoBrittle_init
|
||||||
|
|
||||||
integer :: Ninstance,sourceOffset,NofMyPhase,p
|
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||||
character(len=pStringLen) :: extmsg = ''
|
character(len=pStringLen) :: extmsg = ''
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- source_'//SOURCE_DAMAGE_ANISOBRITTLE_LABEL//' init -+>>>'; flush(6)
|
write(6,'(/,a)') ' <<<+- source_'//SOURCE_DAMAGE_ANISOBRITTLE_LABEL//' init -+>>>'; flush(6)
|
||||||
|
@ -107,8 +107,8 @@ subroutine source_damage_anisoBrittle_init
|
||||||
if (any(prm%critLoad < 0.0_pReal)) extmsg = trim(extmsg)//' anisobrittle_critLoad'
|
if (any(prm%critLoad < 0.0_pReal)) extmsg = trim(extmsg)//' anisobrittle_critLoad'
|
||||||
if (any(prm%critDisp < 0.0_pReal)) extmsg = trim(extmsg)//' anisobrittle_critDisp'
|
if (any(prm%critDisp < 0.0_pReal)) extmsg = trim(extmsg)//' anisobrittle_critDisp'
|
||||||
|
|
||||||
NofMyPhase = count(material_phaseAt==p) * discretization_nIP
|
NipcMyPhase = count(material_phaseAt==p) * discretization_nIP
|
||||||
call material_allocateSourceState(p,sourceOffset,NofMyPhase,1,1,0)
|
call material_allocateSourceState(p,sourceOffset,NipcMyPhase,1,1,0)
|
||||||
sourceState(p)%p(sourceOffset)%atol = config%getFloat('anisobrittle_atol',defaultVal=1.0e-3_pReal)
|
sourceState(p)%p(sourceOffset)%atol = config%getFloat('anisobrittle_atol',defaultVal=1.0e-3_pReal)
|
||||||
if(any(sourceState(p)%p(sourceOffset)%atol < 0.0_pReal)) extmsg = trim(extmsg)//' anisobrittle_atol'
|
if(any(sourceState(p)%p(sourceOffset)%atol < 0.0_pReal)) extmsg = trim(extmsg)//' anisobrittle_atol'
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ contains
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine source_damage_anisoDuctile_init
|
subroutine source_damage_anisoDuctile_init
|
||||||
|
|
||||||
integer :: Ninstance,sourceOffset,NofMyPhase,p
|
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||||
character(len=pStringLen) :: extmsg = ''
|
character(len=pStringLen) :: extmsg = ''
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- source_'//SOURCE_DAMAGE_ANISODUCTILE_LABEL//' init -+>>>'; flush(6)
|
write(6,'(/,a)') ' <<<+- source_'//SOURCE_DAMAGE_ANISODUCTILE_LABEL//' init -+>>>'; flush(6)
|
||||||
|
@ -94,8 +94,8 @@ subroutine source_damage_anisoDuctile_init
|
||||||
if (prm%N <= 0.0_pReal) extmsg = trim(extmsg)//' anisoductile_ratesensitivity'
|
if (prm%N <= 0.0_pReal) extmsg = trim(extmsg)//' anisoductile_ratesensitivity'
|
||||||
if (any(prm%critPlasticStrain < 0.0_pReal)) extmsg = trim(extmsg)//' anisoductile_criticalplasticstrain'
|
if (any(prm%critPlasticStrain < 0.0_pReal)) extmsg = trim(extmsg)//' anisoductile_criticalplasticstrain'
|
||||||
|
|
||||||
NofMyPhase=count(material_phaseAt==p) * discretization_nIP
|
NipcMyPhase=count(material_phaseAt==p) * discretization_nIP
|
||||||
call material_allocateSourceState(p,sourceOffset,NofMyPhase,1,1,0)
|
call material_allocateSourceState(p,sourceOffset,NipcMyPhase,1,1,0)
|
||||||
sourceState(p)%p(sourceOffset)%atol = config%getFloat('anisoductile_atol',defaultVal=1.0e-3_pReal)
|
sourceState(p)%p(sourceOffset)%atol = config%getFloat('anisoductile_atol',defaultVal=1.0e-3_pReal)
|
||||||
if(any(sourceState(p)%p(sourceOffset)%atol < 0.0_pReal)) extmsg = trim(extmsg)//' anisoductile_atol'
|
if(any(sourceState(p)%p(sourceOffset)%atol < 0.0_pReal)) extmsg = trim(extmsg)//' anisoductile_atol'
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ contains
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine source_damage_isoBrittle_init
|
subroutine source_damage_isoBrittle_init
|
||||||
|
|
||||||
integer :: Ninstance,sourceOffset,NofMyPhase,p
|
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||||
character(len=pStringLen) :: extmsg = ''
|
character(len=pStringLen) :: extmsg = ''
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- source_'//SOURCE_DAMAGE_ISOBRITTLE_LABEL//' init -+>>>'; flush(6)
|
write(6,'(/,a)') ' <<<+- source_'//SOURCE_DAMAGE_ISOBRITTLE_LABEL//' init -+>>>'; flush(6)
|
||||||
|
@ -82,8 +82,8 @@ subroutine source_damage_isoBrittle_init
|
||||||
if (prm%N <= 0.0_pReal) extmsg = trim(extmsg)//' isobrittle_n'
|
if (prm%N <= 0.0_pReal) extmsg = trim(extmsg)//' isobrittle_n'
|
||||||
if (prm%critStrainEnergy <= 0.0_pReal) extmsg = trim(extmsg)//' isobrittle_criticalstrainenergy'
|
if (prm%critStrainEnergy <= 0.0_pReal) extmsg = trim(extmsg)//' isobrittle_criticalstrainenergy'
|
||||||
|
|
||||||
NofMyPhase = count(material_phaseAt==p) * discretization_nIP
|
NipcMyPhase = count(material_phaseAt==p) * discretization_nIP
|
||||||
call material_allocateSourceState(p,sourceOffset,NofMyPhase,1,1,1)
|
call material_allocateSourceState(p,sourceOffset,NipcMyPhase,1,1,1)
|
||||||
sourceState(p)%p(sourceOffset)%atol = config%getFloat('isobrittle_atol',defaultVal=1.0e-3_pReal)
|
sourceState(p)%p(sourceOffset)%atol = config%getFloat('isobrittle_atol',defaultVal=1.0e-3_pReal)
|
||||||
if(any(sourceState(p)%p(sourceOffset)%atol < 0.0_pReal)) extmsg = trim(extmsg)//' isobrittle_atol'
|
if(any(sourceState(p)%p(sourceOffset)%atol < 0.0_pReal)) extmsg = trim(extmsg)//' isobrittle_atol'
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ contains
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine source_damage_isoDuctile_init
|
subroutine source_damage_isoDuctile_init
|
||||||
|
|
||||||
integer :: Ninstance,sourceOffset,NofMyPhase,p
|
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||||
character(len=pStringLen) :: extmsg = ''
|
character(len=pStringLen) :: extmsg = ''
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- source_'//SOURCE_DAMAGE_ISODUCTILE_LABEL//' init -+>>>'; flush(6)
|
write(6,'(/,a)') ' <<<+- source_'//SOURCE_DAMAGE_ISODUCTILE_LABEL//' init -+>>>'; flush(6)
|
||||||
|
@ -81,8 +81,8 @@ subroutine source_damage_isoDuctile_init
|
||||||
if (prm%N <= 0.0_pReal) extmsg = trim(extmsg)//' isoductile_ratesensitivity'
|
if (prm%N <= 0.0_pReal) extmsg = trim(extmsg)//' isoductile_ratesensitivity'
|
||||||
if (prm%critPlasticStrain <= 0.0_pReal) extmsg = trim(extmsg)//' isoductile_criticalplasticstrain'
|
if (prm%critPlasticStrain <= 0.0_pReal) extmsg = trim(extmsg)//' isoductile_criticalplasticstrain'
|
||||||
|
|
||||||
NofMyPhase=count(material_phaseAt==p) * discretization_nIP
|
NipcMyPhase=count(material_phaseAt==p) * discretization_nIP
|
||||||
call material_allocateSourceState(p,sourceOffset,NofMyPhase,1,1,0)
|
call material_allocateSourceState(p,sourceOffset,NipcMyPhase,1,1,0)
|
||||||
sourceState(p)%p(sourceOffset)%atol = config%getFloat('isoductile_atol',defaultVal=1.0e-3_pReal)
|
sourceState(p)%p(sourceOffset)%atol = config%getFloat('isoductile_atol',defaultVal=1.0e-3_pReal)
|
||||||
if(any(sourceState(p)%p(sourceOffset)%atol < 0.0_pReal)) extmsg = trim(extmsg)//' isoductile_atol'
|
if(any(sourceState(p)%p(sourceOffset)%atol < 0.0_pReal)) extmsg = trim(extmsg)//' isoductile_atol'
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ contains
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine source_thermal_dissipation_init
|
subroutine source_thermal_dissipation_init
|
||||||
|
|
||||||
integer :: Ninstance,sourceOffset,NofMyPhase,p
|
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- source_'//SOURCE_thermal_dissipation_label//' init -+>>>'; flush(6)
|
write(6,'(/,a)') ' <<<+- source_'//SOURCE_thermal_dissipation_label//' init -+>>>'; flush(6)
|
||||||
|
|
||||||
|
@ -66,8 +66,8 @@ subroutine source_thermal_dissipation_init
|
||||||
|
|
||||||
prm%kappa = config%getFloat('dissipation_coldworkcoeff')
|
prm%kappa = config%getFloat('dissipation_coldworkcoeff')
|
||||||
|
|
||||||
NofMyPhase = count(material_phaseAt==p) * discretization_nIP
|
NipcMyPhase = count(material_phaseAt==p) * discretization_nIP
|
||||||
call material_allocateSourceState(p,sourceOffset,NofMyPhase,0,0,0)
|
call material_allocateSourceState(p,sourceOffset,NipcMyPhase,0,0,0)
|
||||||
|
|
||||||
end associate
|
end associate
|
||||||
enddo
|
enddo
|
||||||
|
|
|
@ -43,7 +43,7 @@ contains
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine source_thermal_externalheat_init
|
subroutine source_thermal_externalheat_init
|
||||||
|
|
||||||
integer :: Ninstance,sourceOffset,NofMyPhase,p
|
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- source_'//SOURCE_thermal_externalheat_label//' init -+>>>'; flush(6)
|
write(6,'(/,a)') ' <<<+- source_'//SOURCE_thermal_externalheat_label//' init -+>>>'; flush(6)
|
||||||
|
|
||||||
|
@ -73,8 +73,8 @@ subroutine source_thermal_externalheat_init
|
||||||
|
|
||||||
prm%heat_rate = config%getFloats('externalheat_rate',requiredSize = size(prm%time))
|
prm%heat_rate = config%getFloats('externalheat_rate',requiredSize = size(prm%time))
|
||||||
|
|
||||||
NofMyPhase = count(material_phaseAt==p) * discretization_nIP
|
NipcMyPhase = count(material_phaseAt==p) * discretization_nIP
|
||||||
call material_allocateSourceState(p,sourceOffset,NofMyPhase,1,1,0)
|
call material_allocateSourceState(p,sourceOffset,NipcMyPhase,1,1,0)
|
||||||
|
|
||||||
end associate
|
end associate
|
||||||
enddo
|
enddo
|
||||||
|
|
Loading…
Reference in New Issue