enumerators for case switch of outputs as already used in phenopowerlaw

removed obsolete output 'boundarylayer'
This commit is contained in:
Christoph Kords 2013-11-29 12:29:47 +00:00
parent f56cdafccb
commit b0695c0904
1 changed files with 462 additions and 221 deletions

View File

@ -186,6 +186,93 @@ logical, dimension(:), allocatable, private :: &
shortRangeStressCorrection, & !< flag indicating the use of the short range stress correction by a excess density gradient term shortRangeStressCorrection, & !< flag indicating the use of the short range stress correction by a excess density gradient term
probabilisticMultiplication probabilisticMultiplication
enum, bind(c)
enumerator :: rho_ID, &
delta_ID, &
rho_edge_ID, &
rho_screw_ID, &
rho_sgl_ID, &
delta_sgl_ID, &
rho_sgl_edge_ID, &
rho_sgl_edge_pos_ID, &
rho_sgl_edge_neg_ID, &
rho_sgl_screw_ID, &
rho_sgl_screw_pos_ID, &
rho_sgl_screw_neg_ID, &
rho_sgl_mobile_ID, &
rho_sgl_edge_mobile_ID, &
rho_sgl_edge_pos_mobile_ID, &
rho_sgl_edge_neg_mobile_ID, &
rho_sgl_screw_mobile_ID, &
rho_sgl_screw_pos_mobile_ID, &
rho_sgl_screw_neg_mobile_ID, &
rho_sgl_immobile_ID, &
rho_sgl_edge_immobile_ID, &
rho_sgl_edge_pos_immobile_ID, &
rho_sgl_edge_neg_immobile_ID, &
rho_sgl_screw_immobile_ID, &
rho_sgl_screw_pos_immobile_ID, &
rho_sgl_screw_neg_immobile_ID, &
rho_dip_ID, &
delta_dip_ID, &
rho_dip_edge_ID, &
rho_dip_screw_ID, &
excess_rho_ID, &
excess_rho_edge_ID, &
excess_rho_screw_ID, &
rho_forest_ID, &
shearrate_ID, &
resolvedstress_ID, &
resolvedstress_external_ID, &
resolvedstress_back_ID, &
resistance_ID, &
rho_dot_ID, &
rho_dot_sgl_ID, &
rho_dot_dip_ID, &
rho_dot_gen_ID, &
rho_dot_gen_edge_ID, &
rho_dot_gen_screw_ID, &
rho_dot_sgl2dip_ID, &
rho_dot_sgl2dip_edge_ID, &
rho_dot_sgl2dip_screw_ID, &
rho_dot_ann_ath_ID, &
rho_dot_ann_the_ID, &
rho_dot_ann_the_edge_ID, &
rho_dot_ann_the_screw_ID, &
rho_dot_edgejogs_ID, &
rho_dot_flux_ID, &
rho_dot_flux_edge_ID, &
rho_dot_flux_screw_ID, &
velocity_edge_pos_ID, &
velocity_edge_neg_ID, &
velocity_screw_pos_ID, &
velocity_screw_neg_ID, &
slipdirectionx_ID, &
slipdirectiony_ID, &
slipdirectionz_ID, &
slipnormalx_ID, &
slipnormaly_ID, &
slipnormalz_ID, &
fluxdensity_edge_posx_ID, &
fluxdensity_edge_posy_ID, &
fluxdensity_edge_posz_ID, &
fluxdensity_edge_negx_ID, &
fluxdensity_edge_negy_ID, &
fluxdensity_edge_negz_ID, &
fluxdensity_screw_posx_ID, &
fluxdensity_screw_posy_ID, &
fluxdensity_screw_posz_ID, &
fluxdensity_screw_negx_ID, &
fluxdensity_screw_negy_ID, &
fluxdensity_screw_negz_ID, &
maximumdipoleheight_edge_ID, &
maximumdipoleheight_screw_ID, &
accumulatedshear_ID, &
dislocationstress_ID
end enum
integer(kind(rho_ID)), dimension(:,:), allocatable, private :: &
constitutive_nonlocal_outputID !< ID of each post result output
public :: & public :: &
constitutive_nonlocal_init, & constitutive_nonlocal_init, &
constitutive_nonlocal_stateInit, & constitutive_nonlocal_stateInit, &
@ -431,19 +518,185 @@ do while (trim(line) /= '#EOF#')
case ('(output)') case ('(output)')
Noutput(i) = Noutput(i) + 1_pInt Noutput(i) = Noutput(i) + 1_pInt
constitutive_nonlocal_output(Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt)) constitutive_nonlocal_output(Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt))
case ('lattice_structure') select case(IO_lc(IO_stringValue(line,positions,2_pInt)))
structure = IO_lc(IO_stringValue(line,positions,2_pInt)) case('rho')
select case(structure(1:3)) constitutive_nonlocal_outputID(Noutput(i),i) = rho_ID
case(LATTICE_iso_label) case('delta')
constitutive_nonlocal_structureID(i) = LATTICE_iso_ID constitutive_nonlocal_outputID(Noutput(i),i) = delta_ID
case(LATTICE_fcc_label) case('rho_edge')
constitutive_nonlocal_structureID(i) = LATTICE_fcc_ID constitutive_nonlocal_outputID(Noutput(i),i) = rho_edge_ID
case(LATTICE_bcc_label) case('rho_screw')
constitutive_nonlocal_structureID(i) = LATTICE_bcc_ID constitutive_nonlocal_outputID(Noutput(i),i) = rho_screw_ID
case(LATTICE_hex_label) case('rho_sgl')
constitutive_nonlocal_structureID(i) = LATTICE_hex_ID constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_ID
case(LATTICE_ort_label) case('delta_sgl')
constitutive_nonlocal_structureID(i) = LATTICE_ort_ID constitutive_nonlocal_outputID(Noutput(i),i) = delta_sgl_ID
case('rho_sgl_edge')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_edge_ID
case('rho_sgl_edge_pos')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_edge_pos_ID
case('rho_sgl_edge_neg')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_edge_neg_ID
case('rho_sgl_screw')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_screw_ID
case('rho_sgl_screw_pos')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_screw_pos_ID
case('rho_sgl_screw_neg')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_screw_neg_ID
case('rho_sgl_mobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_mobile_ID
case('rho_sgl_edge_mobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_edge_mobile_ID
case('rho_sgl_edge_pos_mobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_edge_pos_mobile_ID
case('rho_sgl_edge_neg_mobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_edge_neg_mobile_ID
case('rho_sgl_screw_mobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_screw_mobile_ID
case('rho_sgl_screw_pos_mobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_screw_pos_mobile_ID
case('rho_sgl_screw_neg_mobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_screw_neg_mobile_ID
case('rho_sgl_immobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_immobile_ID
case('rho_sgl_edge_immobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_edge_immobile_ID
case('rho_sgl_edge_pos_immobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_edge_pos_immobile_ID
case('rho_sgl_edge_neg_immobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_edge_neg_immobile_ID
case('rho_sgl_screw_immobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_screw_immobile_ID
case('rho_sgl_screw_pos_immobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_screw_pos_immobile_ID
case('rho_sgl_screw_neg_immobile')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_sgl_screw_neg_immobile_ID
case('rho_dip')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dip_ID
case('delta_dip')
constitutive_nonlocal_outputID(Noutput(i),i) = delta_dip_ID
case('rho_dip_edge')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dip_edge_ID
case('rho_dip_screw')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dip_screw_ID
case('excess_rho')
constitutive_nonlocal_outputID(Noutput(i),i) = excess_rho_ID
case('excess_rho_edge')
constitutive_nonlocal_outputID(Noutput(i),i) = excess_rho_edge_ID
case('excess_rho_screw')
constitutive_nonlocal_outputID(Noutput(i),i) = excess_rho_screw_ID
case('rho_forest')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_forest_ID
case('shearrate')
constitutive_nonlocal_outputID(Noutput(i),i) = shearrate_ID
case('resolvedstress')
constitutive_nonlocal_outputID(Noutput(i),i) = resolvedstress_ID
case('resolvedstress_external')
constitutive_nonlocal_outputID(Noutput(i),i) = resolvedstress_external_ID
case('resolvedstress_back')
constitutive_nonlocal_outputID(Noutput(i),i) = resolvedstress_back_ID
case('resistance')
constitutive_nonlocal_outputID(Noutput(i),i) = resistance_ID
case('rho_dot')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_ID
case('rho_dot_sgl')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_sgl_ID
case('rho_dot_dip')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_dip_ID
case('rho_dot_gen')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_gen_ID
case('rho_dot_gen_edge')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_gen_edge_ID
case('rho_dot_gen_screw')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_gen_screw_ID
case('rho_dot_sgl2dip')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_sgl2dip_ID
case('rho_dot_sgl2dip_edge')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_sgl2dip_edge_ID
case('rho_dot_sgl2dip_screw')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_sgl2dip_screw_ID
case('rho_dot_ann_ath')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_ann_ath_ID
case('rho_dot_ann_the')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_ann_the_ID
case('rho_dot_ann_the_edge')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_ann_the_edge_ID
case('rho_dot_ann_the_screw')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_ann_the_screw_ID
case('rho_dot_edgejogs')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_edgejogs_ID
case('rho_dot_flux')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_flux_ID
case('rho_dot_flux_edge')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_flux_edge_ID
case('rho_dot_flux_screw')
constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_flux_screw_ID
case('velocity_edge_pos')
constitutive_nonlocal_outputID(Noutput(i),i) = velocity_edge_pos_ID
case('velocity_edge_neg')
constitutive_nonlocal_outputID(Noutput(i),i) = velocity_edge_neg_ID
case('velocity_screw_pos')
constitutive_nonlocal_outputID(Noutput(i),i) = velocity_screw_pos_ID
case('velocity_screw_neg')
constitutive_nonlocal_outputID(Noutput(i),i) = velocity_screw_neg_ID
case('slipdirection.x')
constitutive_nonlocal_outputID(Noutput(i),i) = slipdirectionx_ID
case('slipdirection.y')
constitutive_nonlocal_outputID(Noutput(i),i) = slipdirectiony_ID
case('slipdirection.z')
constitutive_nonlocal_outputID(Noutput(i),i) = slipdirectionz_ID
case('slipnormal.x')
constitutive_nonlocal_outputID(Noutput(i),i) = slipnormalx_ID
case('slipnormal.y')
constitutive_nonlocal_outputID(Noutput(i),i) = slipnormaly_ID
case('slipnormal.z')
constitutive_nonlocal_outputID(Noutput(i),i) = slipnormalz_ID
case('fluxdensity_edge_pos.x')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_edge_posx_ID
case('fluxdensity_edge_pos.y')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_edge_posy_ID
case('fluxdensity_edge_pos.z')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_edge_posz_ID
case('fluxdensity_edge_neg.x')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_edge_negx_ID
case('fluxdensity_edge_neg.y')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_edge_negy_ID
case('fluxdensity_edge_neg.z')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_edge_negz_ID
case('fluxdensity_screw_pos.x')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_screw_posx_ID
case('fluxdensity_screw_pos.y')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_screw_posy_ID
case('fluxdensity_screw_pos.z')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_screw_posz_ID
case('fluxdensity_screw_neg.x')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_screw_negx_ID
case('fluxdensity_screw_neg.y')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_screw_negy_ID
case('fluxdensity_screw_neg.z')
constitutive_nonlocal_outputID(Noutput(i),i) = fluxdensity_screw_negz_ID
case('maximumdipoleheight_edge')
constitutive_nonlocal_outputID(Noutput(i),i) = maximumdipoleheight_edge_ID
case('maximumdipoleheight_screw')
constitutive_nonlocal_outputID(Noutput(i),i) = maximumdipoleheight_screw_ID
case('accumulatedshear')
constitutive_nonlocal_outputID(Noutput(i),i) = accumulatedshear_ID
case('dislocationstress')
constitutive_nonlocal_outputID(Noutput(i),i) = dislocationstress_ID
end select
case ('lattice_structure')
structure = IO_lc(IO_stringValue(line,positions,2_pInt))
select case(structure(1:3))
case(LATTICE_iso_label)
constitutive_nonlocal_structureID(i) = LATTICE_iso_ID
case(LATTICE_fcc_label)
constitutive_nonlocal_structureID(i) = LATTICE_fcc_ID
case(LATTICE_bcc_label)
constitutive_nonlocal_structureID(i) = LATTICE_bcc_ID
case(LATTICE_hex_label)
constitutive_nonlocal_structureID(i) = LATTICE_hex_ID
case(LATTICE_ort_label)
constitutive_nonlocal_structureID(i) = LATTICE_ort_ID
end select end select
configNchunks = lattice_configNchunks(constitutive_nonlocal_structureID(i)) configNchunks = lattice_configNchunks(constitutive_nonlocal_structureID(i))
Nchunks_SlipFamilies = configNchunks(1) Nchunks_SlipFamilies = configNchunks(1)
@ -451,24 +704,24 @@ do while (trim(line) /= '#EOF#')
Nchunks_nonSchmid = configNchunks(7) Nchunks_nonSchmid = configNchunks(7)
case ('c/a_ratio','covera_ratio') case ('c/a_ratio','covera_ratio')
CoverA(i) = IO_floatValue(line,positions,2_pInt) CoverA(i) = IO_floatValue(line,positions,2_pInt)
case ('c11') case ('c11')
Cslip66(1,1,i) = IO_floatValue(line,positions,2_pInt) Cslip66(1,1,i) = IO_floatValue(line,positions,2_pInt)
case ('c12') case ('c12')
Cslip66(1,2,i) = IO_floatValue(line,positions,2_pInt) Cslip66(1,2,i) = IO_floatValue(line,positions,2_pInt)
case ('c13') case ('c13')
Cslip66(1,3,i) = IO_floatValue(line,positions,2_pInt) Cslip66(1,3,i) = IO_floatValue(line,positions,2_pInt)
case ('c22') case ('c22')
Cslip66(2,2,i) = IO_floatValue(line,positions,2_pInt) Cslip66(2,2,i) = IO_floatValue(line,positions,2_pInt)
case ('c23') case ('c23')
Cslip66(2,3,i) = IO_floatValue(line,positions,2_pInt) Cslip66(2,3,i) = IO_floatValue(line,positions,2_pInt)
case ('c33') case ('c33')
Cslip66(3,3,i) = IO_floatValue(line,positions,2_pInt) Cslip66(3,3,i) = IO_floatValue(line,positions,2_pInt)
case ('c44') case ('c44')
Cslip66(4,4,i) = IO_floatValue(line,positions,2_pInt) Cslip66(4,4,i) = IO_floatValue(line,positions,2_pInt)
case ('c55') case ('c55')
Cslip66(5,5,i) = IO_floatValue(line,positions,2_pInt) Cslip66(5,5,i) = IO_floatValue(line,positions,2_pInt)
case ('c66') case ('c66')
Cslip66(6,6,i) = IO_floatValue(line,positions,2_pInt) Cslip66(6,6,i) = IO_floatValue(line,positions,2_pInt)
case ('nslip') case ('nslip')
if (positions(1) < 1_pInt + Nchunks_SlipFamilies) & if (positions(1) < 1_pInt + Nchunks_SlipFamilies) &
call IO_warning(50_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_NONLOCAL_LABEL//')') call IO_warning(50_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_NONLOCAL_LABEL//')')
@ -779,7 +1032,7 @@ allocate(nonSchmidProjection(3,3,4,maxTotalNslip,maxNmatIDs))
nonSchmidProjection = 0.0_pReal nonSchmidProjection = 0.0_pReal
do i = 1,maxNmatIDs instancesLoop: do i = 1,maxNmatIDs
structID = constitutive_nonlocal_structure(i) ! lattice structure of this instance structID = constitutive_nonlocal_structure(i) ! lattice structure of this instance
@ -859,92 +1112,91 @@ do i = 1,maxNmatIDs
!*** determine size of postResults array !*** determine size of postResults array
do o = 1_pInt,Noutput(i) outputsLoop: do o = 1_pInt,Noutput(i)
select case(constitutive_nonlocal_output(o,i)) select case(constitutive_nonlocal_outputID(o,i))
case( 'rho', & case( rho_ID, &
'delta', & delta_ID, &
'rho_edge', & rho_edge_ID, &
'rho_screw', & rho_screw_ID, &
'rho_sgl', & rho_sgl_ID, &
'delta_sgl', & delta_sgl_ID, &
'rho_sgl_edge', & rho_sgl_edge_ID, &
'rho_sgl_edge_pos', & rho_sgl_edge_pos_ID, &
'rho_sgl_edge_neg', & rho_sgl_edge_neg_ID, &
'rho_sgl_screw', & rho_sgl_screw_ID, &
'rho_sgl_screw_pos', & rho_sgl_screw_pos_ID, &
'rho_sgl_screw_neg', & rho_sgl_screw_neg_ID, &
'rho_sgl_mobile', & rho_sgl_mobile_ID, &
'rho_sgl_edge_mobile', & rho_sgl_edge_mobile_ID, &
'rho_sgl_edge_pos_mobile', & rho_sgl_edge_pos_mobile_ID, &
'rho_sgl_edge_neg_mobile', & rho_sgl_edge_neg_mobile_ID, &
'rho_sgl_screw_mobile', & rho_sgl_screw_mobile_ID, &
'rho_sgl_screw_pos_mobile', & rho_sgl_screw_pos_mobile_ID, &
'rho_sgl_screw_neg_mobile', & rho_sgl_screw_neg_mobile_ID, &
'rho_sgl_immobile', & rho_sgl_immobile_ID, &
'rho_sgl_edge_immobile', & rho_sgl_edge_immobile_ID, &
'rho_sgl_edge_pos_immobile', & rho_sgl_edge_pos_immobile_ID, &
'rho_sgl_edge_neg_immobile', & rho_sgl_edge_neg_immobile_ID, &
'rho_sgl_screw_immobile', & rho_sgl_screw_immobile_ID, &
'rho_sgl_screw_pos_immobile', & rho_sgl_screw_pos_immobile_ID, &
'rho_sgl_screw_neg_immobile', & rho_sgl_screw_neg_immobile_ID, &
'rho_dip', & rho_dip_ID, &
'delta_dip', & delta_dip_ID, &
'rho_dip_edge', & rho_dip_edge_ID, &
'rho_dip_screw', & rho_dip_screw_ID, &
'excess_rho', & excess_rho_ID, &
'excess_rho_edge', & excess_rho_edge_ID, &
'excess_rho_screw', & excess_rho_screw_ID, &
'rho_forest', & rho_forest_ID, &
'shearrate', & shearrate_ID, &
'resolvedstress', & resolvedstress_ID, &
'resolvedstress_external', & resolvedstress_external_ID, &
'resolvedstress_back', & resolvedstress_back_ID, &
'resistance', & resistance_ID, &
'rho_dot', & rho_dot_ID, &
'rho_dot_sgl', & rho_dot_sgl_ID, &
'rho_dot_dip', & rho_dot_dip_ID, &
'rho_dot_gen', & rho_dot_gen_ID, &
'rho_dot_gen_edge', & rho_dot_gen_edge_ID, &
'rho_dot_gen_screw', & rho_dot_gen_screw_ID, &
'rho_dot_sgl2dip', & rho_dot_sgl2dip_ID, &
'rho_dot_sgl2dip_edge', & rho_dot_sgl2dip_edge_ID, &
'rho_dot_sgl2dip_screw', & rho_dot_sgl2dip_screw_ID, &
'rho_dot_ann_ath', & rho_dot_ann_ath_ID, &
'rho_dot_ann_the', & rho_dot_ann_the_ID, &
'rho_dot_ann_the_edge', & rho_dot_ann_the_edge_ID, &
'rho_dot_ann_the_screw', & rho_dot_ann_the_screw_ID, &
'rho_dot_edgejogs', & rho_dot_edgejogs_ID, &
'rho_dot_flux', & rho_dot_flux_ID, &
'rho_dot_flux_edge', & rho_dot_flux_edge_ID, &
'rho_dot_flux_screw', & rho_dot_flux_screw_ID, &
'velocity_edge_pos', & velocity_edge_pos_ID, &
'velocity_edge_neg', & velocity_edge_neg_ID, &
'velocity_screw_pos', & velocity_screw_pos_ID, &
'velocity_screw_neg', & velocity_screw_neg_ID, &
'slipdirection.x', & slipdirectionx_ID, &
'slipdirection.y', & slipdirectiony_ID, &
'slipdirection.z', & slipdirectionz_ID, &
'slipnormal.x', & slipnormalx_ID, &
'slipnormal.y', & slipnormaly_ID, &
'slipnormal.z', & slipnormalz_ID, &
'fluxdensity_edge_pos.x', & fluxdensity_edge_posx_ID, &
'fluxdensity_edge_pos.y', & fluxdensity_edge_posy_ID, &
'fluxdensity_edge_pos.z', & fluxdensity_edge_posz_ID, &
'fluxdensity_edge_neg.x', & fluxdensity_edge_negx_ID, &
'fluxdensity_edge_neg.y', & fluxdensity_edge_negy_ID, &
'fluxdensity_edge_neg.z', & fluxdensity_edge_negz_ID, &
'fluxdensity_screw_pos.x', & fluxdensity_screw_posx_ID, &
'fluxdensity_screw_pos.y', & fluxdensity_screw_posy_ID, &
'fluxdensity_screw_pos.z', & fluxdensity_screw_posz_ID, &
'fluxdensity_screw_neg.x', & fluxdensity_screw_negx_ID, &
'fluxdensity_screw_neg.y', & fluxdensity_screw_negy_ID, &
'fluxdensity_screw_neg.z', & fluxdensity_screw_negz_ID, &
'maximumdipoleheight_edge', & maximumdipoleheight_edge_ID, &
'maximumdipoleheight_screw', & maximumdipoleheight_screw_ID, &
'accumulatedshear', & accumulatedshear_ID )
'boundarylayer' )
mySize = totalNslip(i) mySize = totalNslip(i)
case('dislocationstress') case(dislocationstress_ID)
mySize = 6_pInt mySize = 6_pInt
case default case default
call IO_error(212_pInt,ext_msg=constitutive_nonlocal_output(o,i)//& call IO_error(212_pInt,ext_msg=constitutive_nonlocal_output(o,i)//&
@ -955,7 +1207,7 @@ do i = 1,maxNmatIDs
constitutive_nonlocal_sizePostResult(o,i) = mySize constitutive_nonlocal_sizePostResult(o,i) = mySize
constitutive_nonlocal_sizePostResults(i) = constitutive_nonlocal_sizePostResults(i) + mySize constitutive_nonlocal_sizePostResults(i) = constitutive_nonlocal_sizePostResults(i) + mySize
endif endif
enddo enddo outputsLoop
!*** elasticity matrix and shear modulus according to material.config !*** elasticity matrix and shear modulus according to material.config
@ -1036,7 +1288,7 @@ do i = 1,maxNmatIDs
+ lattice_Sslip(1:3,1:3,1,slipSystemLattice(s,i),structID) + lattice_Sslip(1:3,1:3,1,slipSystemLattice(s,i),structID)
enddo enddo
enddo enddo instancesLoop
end subroutine constitutive_nonlocal_init end subroutine constitutive_nonlocal_init
@ -3047,7 +3299,7 @@ ipLoop: do neighbor_ip = 1_pInt,FE_Nips(FE_geomtype(mesh_element(2,neighbor_el))
.or. deltaX /= 0_pInt .or. deltaY /= 0_pInt .or. deltaZ /= 0_pInt) then .or. deltaX /= 0_pInt .or. deltaY /= 0_pInt .or. deltaZ /= 0_pInt) then
neighbor_coords = mesh_cellCenterCoordinates(neighbor_ip,neighbor_el) & neighbor_coords = mesh_cellCenterCoordinates(neighbor_ip,neighbor_el) &
+ (/real(deltaX,pReal), real(deltaY,pReal), real(deltaZ,pReal)/) * meshSize + [real(deltaX,pReal), real(deltaY,pReal), real(deltaZ,pReal)] * meshSize
connection = neighbor_coords - coords connection = neighbor_coords - coords
distance = sqrt(sum(connection * connection)) distance = sqrt(sum(connection * connection))
if (distance > cutoffRadius(matID)) then if (distance > cutoffRadius(matID)) then
@ -3373,345 +3625,344 @@ forall (s = 1_pInt:ns) &
lattice_sn(1:3,slipSystemLattice(s,matID),structID)) lattice_sn(1:3,slipSystemLattice(s,matID),structID))
do o = 1_pInt,phase_Noutput(material_phase(ipc,ip,el)) outputsLoop: do o = 1_pInt,phase_Noutput(material_phase(ipc,ip,el))
select case(constitutive_nonlocal_output(o,matID)) select case(constitutive_nonlocal_outputID(o,matID))
case (rho_ID)
case ('rho')
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl),2) + sum(rhoDip,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl),2) + sum(rhoDip,2)
cs = cs + ns cs = cs + ns
case ('rho_sgl') case (rho_sgl_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl),2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl),2)
cs = cs + ns cs = cs + ns
case ('rho_sgl_mobile') case (rho_sgl_mobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl(1:ns,1:4)),2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl(1:ns,1:4)),2)
cs = cs + ns cs = cs + ns
case ('rho_sgl_immobile') case (rho_sgl_immobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoSgl(1:ns,5:8),2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoSgl(1:ns,5:8),2)
cs = cs + ns cs = cs + ns
case ('rho_dip') case (rho_dip_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDip,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDip,2)
cs = cs + ns cs = cs + ns
case ('rho_edge') case (rho_edge_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl(1:ns,(/1,2,5,6/))),2) + rhoDip(1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl(1:ns,[1,2,5,6])),2) + rhoDip(1:ns,1)
cs = cs + ns cs = cs + ns
case ('rho_sgl_edge') case (rho_sgl_edge_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl(1:ns,(/1,2,5,6/))),2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl(1:ns,[1,2,5,6])),2)
cs = cs + ns cs = cs + ns
case ('rho_sgl_edge_mobile') case (rho_sgl_edge_mobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoSgl(1:ns,1:2),2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoSgl(1:ns,1:2),2)
cs = cs + ns cs = cs + ns
case ('rho_sgl_edge_immobile') case (rho_sgl_edge_immobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoSgl(1:ns,5:6),2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoSgl(1:ns,5:6),2)
cs = cs + ns cs = cs + ns
case ('rho_sgl_edge_pos') case (rho_sgl_edge_pos_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,1) + abs(rhoSgl(1:ns,5)) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,1) + abs(rhoSgl(1:ns,5))
cs = cs + ns cs = cs + ns
case ('rho_sgl_edge_pos_mobile') case (rho_sgl_edge_pos_mobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,1)
cs = cs + ns cs = cs + ns
case ('rho_sgl_edge_pos_immobile') case (rho_sgl_edge_pos_immobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,5) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,5)
cs = cs + ns cs = cs + ns
case ('rho_sgl_edge_neg') case (rho_sgl_edge_neg_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,2) + abs(rhoSgl(1:ns,6)) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,2) + abs(rhoSgl(1:ns,6))
cs = cs + ns cs = cs + ns
case ('rho_sgl_edge_neg_mobile') case (rho_sgl_edge_neg_mobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,2)
cs = cs + ns cs = cs + ns
case ('rho_sgl_edge_neg_immobile') case (rho_sgl_edge_neg_immobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,6) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,6)
cs = cs + ns cs = cs + ns
case ('rho_dip_edge') case (rho_dip_edge_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDip(1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDip(1:ns,1)
cs = cs + ns cs = cs + ns
case ('rho_screw') case (rho_screw_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl(1:ns,(/3,4,7,8/))),2) + rhoDip(1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl(1:ns,[3,4,7,8])),2) + rhoDip(1:ns,2)
cs = cs + ns cs = cs + ns
case ('rho_sgl_screw') case (rho_sgl_screw_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl(1:ns,(/3,4,7,8/))),2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(abs(rhoSgl(1:ns,[3,4,7,8])),2)
cs = cs + ns cs = cs + ns
case ('rho_sgl_screw_mobile') case (rho_sgl_screw_mobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoSgl(1:ns,3:4),2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoSgl(1:ns,3:4),2)
cs = cs + ns cs = cs + ns
case ('rho_sgl_screw_immobile') case (rho_sgl_screw_immobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoSgl(1:ns,7:8),2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoSgl(1:ns,7:8),2)
cs = cs + ns cs = cs + ns
case ('rho_sgl_screw_pos') case (rho_sgl_screw_pos_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,3) + abs(rhoSgl(1:ns,7)) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,3) + abs(rhoSgl(1:ns,7))
cs = cs + ns cs = cs + ns
case ('rho_sgl_screw_pos_mobile') case (rho_sgl_screw_pos_mobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,3) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,3)
cs = cs + ns cs = cs + ns
case ('rho_sgl_screw_pos_immobile') case (rho_sgl_screw_pos_immobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,7) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,7)
cs = cs + ns cs = cs + ns
case ('rho_sgl_screw_neg') case (rho_sgl_screw_neg_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,4) + abs(rhoSgl(1:ns,8)) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,4) + abs(rhoSgl(1:ns,8))
cs = cs + ns cs = cs + ns
case ('rho_sgl_screw_neg_mobile') case (rho_sgl_screw_neg_mobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,4) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,4)
cs = cs + ns cs = cs + ns
case ('rho_sgl_screw_neg_immobile') case (rho_sgl_screw_neg_immobile_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,8) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,8)
cs = cs + ns cs = cs + ns
case ('rho_dip_screw') case (rho_dip_screw_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDip(1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDip(1:ns,2)
cs = cs + ns cs = cs + ns
case ('excess_rho') case (excess_rho_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = (rhoSgl(1:ns,1) + abs(rhoSgl(1:ns,5))) & constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = (rhoSgl(1:ns,1) + abs(rhoSgl(1:ns,5))) &
- (rhoSgl(1:ns,2) + abs(rhoSgl(1:ns,6))) & - (rhoSgl(1:ns,2) + abs(rhoSgl(1:ns,6))) &
+ (rhoSgl(1:ns,3) + abs(rhoSgl(1:ns,7))) & + (rhoSgl(1:ns,3) + abs(rhoSgl(1:ns,7))) &
- (rhoSgl(1:ns,4) + abs(rhoSgl(1:ns,8))) - (rhoSgl(1:ns,4) + abs(rhoSgl(1:ns,8)))
cs = cs + ns cs = cs + ns
case ('excess_rho_edge') case (excess_rho_edge_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = (rhoSgl(1:ns,1) + abs(rhoSgl(1:ns,5))) & constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = (rhoSgl(1:ns,1) + abs(rhoSgl(1:ns,5))) &
- (rhoSgl(1:ns,2) + abs(rhoSgl(1:ns,6))) - (rhoSgl(1:ns,2) + abs(rhoSgl(1:ns,6)))
cs = cs + ns cs = cs + ns
case ('excess_rho_screw') case (excess_rho_screw_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = (rhoSgl(1:ns,3) + abs(rhoSgl(1:ns,7))) & constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = (rhoSgl(1:ns,3) + abs(rhoSgl(1:ns,7))) &
- (rhoSgl(1:ns,4) + abs(rhoSgl(1:ns,8))) - (rhoSgl(1:ns,4) + abs(rhoSgl(1:ns,8)))
cs = cs + ns cs = cs + ns
case ('rho_forest') case (rho_forest_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoForest constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoForest
cs = cs + ns cs = cs + ns
case ('delta') case (delta_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = 1.0_pReal / sqrt(sum(abs(rhoSgl),2) + sum(rhoDip,2)) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = 1.0_pReal / sqrt(sum(abs(rhoSgl),2) + sum(rhoDip,2))
cs = cs + ns cs = cs + ns
case ('delta_sgl') case (delta_sgl_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = 1.0_pReal / sqrt(sum(abs(rhoSgl),2)) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = 1.0_pReal / sqrt(sum(abs(rhoSgl),2))
cs = cs + ns cs = cs + ns
case ('delta_dip') case (delta_dip_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = 1.0_pReal / sqrt(sum(rhoDip,2)) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = 1.0_pReal / sqrt(sum(rhoDip,2))
cs = cs + ns cs = cs + ns
case ('shearrate') case (shearrate_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(gdot,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(gdot,2)
cs = cs + ns cs = cs + ns
case ('resolvedstress') case (resolvedstress_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = tau constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = tau
cs = cs + ns cs = cs + ns
case ('resolvedstress_back') case (resolvedstress_back_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = tauBack constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = tauBack
cs = cs + ns cs = cs + ns
case ('resolvedstress_external') case (resolvedstress_external_ID)
do s = 1_pInt,ns do s = 1_pInt,ns
sLattice = slipSystemLattice(s,matID) sLattice = slipSystemLattice(s,matID)
constitutive_nonlocal_postResults(cs+s) = math_mul6x6(Tstar_v, lattice_Sslip_v(1:6,1,sLattice,structID)) constitutive_nonlocal_postResults(cs+s) = math_mul6x6(Tstar_v, lattice_Sslip_v(1:6,1,sLattice,structID))
enddo enddo
cs = cs + ns cs = cs + ns
case ('resistance') case (resistance_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = tauThreshold constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = tauThreshold
cs = cs + ns cs = cs + ns
case ('rho_dot') case (rho_dot_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotSgl,2) + sum(rhoDotDip,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotSgl,2) + sum(rhoDotDip,2)
cs = cs + ns cs = cs + ns
case ('rho_dot_sgl') case (rho_dot_sgl_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotSgl,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotSgl,2)
cs = cs + ns cs = cs + ns
case ('rho_dot_dip') case (rho_dot_dip_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotDip,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotDip,2)
cs = cs + ns cs = cs + ns
case ('rho_dot_gen') case (rho_dot_gen_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotMultiplicationOutput(1:ns,1,ipc,ip,el) & constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotMultiplicationOutput(1:ns,1,ipc,ip,el) &
+ rhoDotMultiplicationOutput(1:ns,2,ipc,ip,el) + rhoDotMultiplicationOutput(1:ns,2,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_gen_edge') case (rho_dot_gen_edge_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotMultiplicationOutput(1:ns,1,ipc,ip,el) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotMultiplicationOutput(1:ns,1,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_gen_screw') case (rho_dot_gen_screw_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotMultiplicationOutput(1:ns,2,ipc,ip,el) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotMultiplicationOutput(1:ns,2,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_sgl2dip') case (rho_dot_sgl2dip_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotSingle2DipoleGlideOutput(1:ns,1,ipc,ip,el) & constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotSingle2DipoleGlideOutput(1:ns,1,ipc,ip,el) &
+ rhoDotSingle2DipoleGlideOutput(1:ns,2,ipc,ip,el) + rhoDotSingle2DipoleGlideOutput(1:ns,2,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_sgl2dip_edge') case (rho_dot_sgl2dip_edge_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotSingle2DipoleGlideOutput(1:ns,1,ipc,ip,el) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotSingle2DipoleGlideOutput(1:ns,1,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_sgl2dip_screw') case (rho_dot_sgl2dip_screw_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotSingle2DipoleGlideOutput(1:ns,2,ipc,ip,el) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotSingle2DipoleGlideOutput(1:ns,2,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_ann_ath') case (rho_dot_ann_ath_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotAthermalAnnihilationOutput(1:ns,1,ipc,ip,el) & constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotAthermalAnnihilationOutput(1:ns,1,ipc,ip,el) &
+ rhoDotAthermalAnnihilationOutput(1:ns,2,ipc,ip,el) + rhoDotAthermalAnnihilationOutput(1:ns,2,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_ann_the') case (rho_dot_ann_the_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotThermalAnnihilationOutput(1:ns,1,ipc,ip,el) & constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotThermalAnnihilationOutput(1:ns,1,ipc,ip,el) &
+ rhoDotThermalAnnihilationOutput(1:ns,2,ipc,ip,el) + rhoDotThermalAnnihilationOutput(1:ns,2,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_ann_the_edge') case (rho_dot_ann_the_edge_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotThermalAnnihilationOutput(1:ns,1,ipc,ip,el) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotThermalAnnihilationOutput(1:ns,1,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_ann_the_screw') case (rho_dot_ann_the_screw_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotThermalAnnihilationOutput(1:ns,2,ipc,ip,el) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotThermalAnnihilationOutput(1:ns,2,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_edgejogs') case (rho_dot_edgejogs_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotEdgeJogsOutput(1:ns,ipc,ip,el) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotEdgeJogsOutput(1:ns,ipc,ip,el)
cs = cs + ns cs = cs + ns
case ('rho_dot_flux') case (rho_dot_flux_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotFluxOutput(1:ns,1:4,ipc,ip,el),2) & constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotFluxOutput(1:ns,1:4,ipc,ip,el),2) &
+ sum(abs(rhoDotFluxOutput(1:ns,5:8,ipc,ip,el)),2) + sum(abs(rhoDotFluxOutput(1:ns,5:8,ipc,ip,el)),2)
cs = cs + ns cs = cs + ns
case ('rho_dot_flux_edge') case (rho_dot_flux_edge_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotFluxOutput(1:ns,1:2,ipc,ip,el),2) & constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotFluxOutput(1:ns,1:2,ipc,ip,el),2) &
+ sum(abs(rhoDotFluxOutput(1:ns,5:6,ipc,ip,el)),2) + sum(abs(rhoDotFluxOutput(1:ns,5:6,ipc,ip,el)),2)
cs = cs + ns cs = cs + ns
case ('rho_dot_flux_screw') case (rho_dot_flux_screw_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotFluxOutput(1:ns,3:4,ipc,ip,el),2) & constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotFluxOutput(1:ns,3:4,ipc,ip,el),2) &
+ sum(abs(rhoDotFluxOutput(1:ns,7:8,ipc,ip,el)),2) + sum(abs(rhoDotFluxOutput(1:ns,7:8,ipc,ip,el)),2)
cs = cs + ns cs = cs + ns
case ('velocity_edge_pos') case (velocity_edge_pos_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = v(1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = v(1:ns,1)
cs = cs + ns cs = cs + ns
case ('velocity_edge_neg') case (velocity_edge_neg_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = v(1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = v(1:ns,2)
cs = cs + ns cs = cs + ns
case ('velocity_screw_pos') case (velocity_screw_pos_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = v(1:ns,3) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = v(1:ns,3)
cs = cs + ns cs = cs + ns
case ('velocity_screw_neg') case (velocity_screw_neg_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = v(1:ns,4) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = v(1:ns,4)
cs = cs + ns cs = cs + ns
case ('slipdirection.x') case (slipdirectionx_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = m_currentconf(1,1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = m_currentconf(1,1:ns,1)
cs = cs + ns cs = cs + ns
case ('slipdirection.y') case (slipdirectiony_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = m_currentconf(2,1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = m_currentconf(2,1:ns,1)
cs = cs + ns cs = cs + ns
case ('slipdirection.z') case (slipdirectionz_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = m_currentconf(3,1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = m_currentconf(3,1:ns,1)
cs = cs + ns cs = cs + ns
case ('slipnormal.x') case (slipnormalx_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = n_currentconf(1,1:ns) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = n_currentconf(1,1:ns)
cs = cs + ns cs = cs + ns
case ('slipnormal.y') case (slipnormaly_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = n_currentconf(2,1:ns) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = n_currentconf(2,1:ns)
cs = cs + ns cs = cs + ns
case ('slipnormal.z') case (slipnormalz_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = n_currentconf(3,1:ns) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = n_currentconf(3,1:ns)
cs = cs + ns cs = cs + ns
case ('fluxdensity_edge_pos.x') case (fluxdensity_edge_posx_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,1) * v(1:ns,1) * m_currentconf(1,1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,1) * v(1:ns,1) * m_currentconf(1,1:ns,1)
cs = cs + ns cs = cs + ns
case ('fluxdensity_edge_pos.y') case (fluxdensity_edge_posy_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,1) * v(1:ns,1) * m_currentconf(2,1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,1) * v(1:ns,1) * m_currentconf(2,1:ns,1)
cs = cs + ns cs = cs + ns
case ('fluxdensity_edge_pos.z') case (fluxdensity_edge_posz_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,1) * v(1:ns,1) * m_currentconf(3,1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,1) * v(1:ns,1) * m_currentconf(3,1:ns,1)
cs = cs + ns cs = cs + ns
case ('fluxdensity_edge_neg.x') case (fluxdensity_edge_negx_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,2) * v(1:ns,2) * m_currentconf(1,1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,2) * v(1:ns,2) * m_currentconf(1,1:ns,1)
cs = cs + ns cs = cs + ns
case ('fluxdensity_edge_neg.y') case (fluxdensity_edge_negy_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,2) * v(1:ns,2) * m_currentconf(2,1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,2) * v(1:ns,2) * m_currentconf(2,1:ns,1)
cs = cs + ns cs = cs + ns
case ('fluxdensity_edge_neg.z') case (fluxdensity_edge_negz_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,2) * v(1:ns,2) * m_currentconf(3,1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,2) * v(1:ns,2) * m_currentconf(3,1:ns,1)
cs = cs + ns cs = cs + ns
case ('fluxdensity_screw_pos.x') case (fluxdensity_screw_posx_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,3) * v(1:ns,3) * m_currentconf(1,1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,3) * v(1:ns,3) * m_currentconf(1,1:ns,2)
cs = cs + ns cs = cs + ns
case ('fluxdensity_screw_pos.y') case (fluxdensity_screw_posy_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,3) * v(1:ns,3) * m_currentconf(2,1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,3) * v(1:ns,3) * m_currentconf(2,1:ns,2)
cs = cs + ns cs = cs + ns
case ('fluxdensity_screw_pos.z') case (fluxdensity_screw_posz_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,3) * v(1:ns,3) * m_currentconf(3,1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoSgl(1:ns,3) * v(1:ns,3) * m_currentconf(3,1:ns,2)
cs = cs + ns cs = cs + ns
case ('fluxdensity_screw_neg.x') case (fluxdensity_screw_negx_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,4) * v(1:ns,4) * m_currentconf(1,1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,4) * v(1:ns,4) * m_currentconf(1,1:ns,2)
cs = cs + ns cs = cs + ns
case ('fluxdensity_screw_neg.y') case (fluxdensity_screw_negy_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,4) * v(1:ns,4) * m_currentconf(2,1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,4) * v(1:ns,4) * m_currentconf(2,1:ns,2)
cs = cs + ns cs = cs + ns
case ('fluxdensity_screw_neg.z') case (fluxdensity_screw_negz_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,4) * v(1:ns,4) * m_currentconf(3,1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = - rhoSgl(1:ns,4) * v(1:ns,4) * m_currentconf(3,1:ns,2)
cs = cs + ns cs = cs + ns
case ('maximumdipoleheight_edge') case (maximumdipoleheight_edge_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = dUpper(1:ns,1) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = dUpper(1:ns,1)
cs = cs + ns cs = cs + ns
case ('maximumdipoleheight_screw') case (maximumdipoleheight_screw_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = dUpper(1:ns,2) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = dUpper(1:ns,2)
cs = cs + ns cs = cs + ns
case('dislocationstress') case(dislocationstress_ID)
sigma = constitutive_nonlocal_dislocationstress(state, Fe, ipc, ip, el) sigma = constitutive_nonlocal_dislocationstress(state, Fe, ipc, ip, el)
constitutive_nonlocal_postResults(cs+1_pInt) = sigma(1,1) constitutive_nonlocal_postResults(cs+1_pInt) = sigma(1,1)
constitutive_nonlocal_postResults(cs+2_pInt) = sigma(2,2) constitutive_nonlocal_postResults(cs+2_pInt) = sigma(2,2)
@ -3721,22 +3972,12 @@ do o = 1_pInt,phase_Noutput(material_phase(ipc,ip,el))
constitutive_nonlocal_postResults(cs+6_pInt) = sigma(3,1) constitutive_nonlocal_postResults(cs+6_pInt) = sigma(3,1)
cs = cs + 6_pInt cs = cs + 6_pInt
case('accumulatedshear') case(accumulatedshear_ID)
constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = state(ipc,ip,el)%p(iGamma(1:ns,matID)) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = state(ipc,ip,el)%p(iGamma(1:ns,matID))
cs = cs + ns cs = cs + ns
case('boundarylayer') end select
do s = 1_pInt,ns enddo outputsLoop
if (sum(abs(rhoSgl(s,1:8))) > 0.0_pReal) then
constitutive_nonlocal_postResults(cs+s) = maxval(abs(rhoSgl(s,5:8))/(rhoSgl(s,1:4)+abs(rhoSgl(s,5:8))))
else
constitutive_nonlocal_postResults(cs+s) = 0.0_pReal
endif
enddo
cs = cs + ns
end select
enddo
end function constitutive_nonlocal_postResults end function constitutive_nonlocal_postResults