From 629295242feb0e139a551dc6923876eae570f4bb Mon Sep 17 00:00:00 2001 From: Christoph Kords Date: Tue, 7 Jan 2014 15:55:28 +0000 Subject: [PATCH] added two new outputs: "rho_dot_flux_mobile" and "rho_dot_sgl_mobile" corrected outputs of dislocation density rates: take into account that blocked dislocation density is a signed quantity --- code/config/Phase_Nonlocal_Aluminum.config | 2 ++ code/constitutive_nonlocal.f90 | 29 ++++++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/code/config/Phase_Nonlocal_Aluminum.config b/code/config/Phase_Nonlocal_Aluminum.config index e8f941ded..034960060 100644 --- a/code/config/Phase_Nonlocal_Aluminum.config +++ b/code/config/Phase_Nonlocal_Aluminum.config @@ -46,6 +46,7 @@ plasticity nonlocal (output) resistance (output) rho_dot (output) rho_dot_sgl +(output) rho_dot_sgl_mobile (output) rho_dot_dip (output) rho_dot_gen (output) rho_dot_gen_edge @@ -59,6 +60,7 @@ plasticity nonlocal (output) rho_dot_ann_the_screw (output) rho_dot_edgejogs (output) rho_dot_flux +(output) rho_dot_flux_mobile (output) rho_dot_flux_edge (output) rho_dot_flux_screw (output) velocity_edge_pos diff --git a/code/constitutive_nonlocal.f90 b/code/constitutive_nonlocal.f90 index ce0833c46..9f4907323 100644 --- a/code/constitutive_nonlocal.f90 +++ b/code/constitutive_nonlocal.f90 @@ -229,6 +229,7 @@ enum, bind(c) resistance_ID, & rho_dot_ID, & rho_dot_sgl_ID, & + rho_dot_sgl_mobile_ID, & rho_dot_dip_ID, & rho_dot_gen_ID, & rho_dot_gen_edge_ID, & @@ -242,6 +243,7 @@ enum, bind(c) rho_dot_ann_the_screw_ID, & rho_dot_edgejogs_ID, & rho_dot_flux_ID, & + rho_dot_flux_mobile_ID, & rho_dot_flux_edge_ID, & rho_dot_flux_screw_ID, & velocity_edge_pos_ID, & @@ -549,6 +551,8 @@ do while (trim(line) /= IO_EOF) 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_sgl_mobile') + constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_sgl_mobile_ID case('rho_dot_dip') constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_dip_ID case('rho_dot_gen') @@ -575,6 +579,8 @@ do while (trim(line) /= IO_EOF) 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_mobile') + constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_flux_mobile_ID case('rho_dot_flux_edge') constitutive_nonlocal_outputID(Noutput(i),i) = rho_dot_flux_edge_ID case('rho_dot_flux_screw') @@ -1076,6 +1082,7 @@ instancesLoop: do i = 1,maxNmatIDs resistance_ID, & rho_dot_ID, & rho_dot_sgl_ID, & + rho_dot_sgl_mobile_ID, & rho_dot_dip_ID, & rho_dot_gen_ID, & rho_dot_gen_edge_ID, & @@ -1089,6 +1096,7 @@ instancesLoop: do i = 1,maxNmatIDs rho_dot_ann_the_screw_ID, & rho_dot_edgejogs_ID, & rho_dot_flux_ID, & + rho_dot_flux_mobile_ID, & rho_dot_flux_edge_ID, & rho_dot_flux_screw_ID, & velocity_edge_pos_ID, & @@ -3711,11 +3719,18 @@ outputsLoop: do o = 1_pInt,phase_Noutput(material_phase(ipc,ip,el)) cs = cs + ns 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(1:ns,1:4),2) & + + sum(rhoDotSgl(1:ns,5:8)*sign(1.0_pReal,rhoSgl(1:ns,5:8)),2) & + + sum(rhoDotDip,2) cs = cs + ns 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(1:ns,1:4),2) & + + sum(rhoDotSgl(1:ns,5:8)*sign(1.0_pReal,rhoSgl(1:ns,5:8)),2) + cs = cs + ns + + case (rho_dot_sgl_mobile_ID) + constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotSgl(1:ns,1:4),2) cs = cs + ns case (rho_dot_dip_ID) @@ -3770,19 +3785,23 @@ outputsLoop: do o = 1_pInt,phase_Noutput(material_phase(ipc,ip,el)) constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = rhoDotEdgeJogsOutput(1:ns,ipc,ip,el) cs = cs + ns + case (rho_dot_flux_mobile_ID) + constitutive_nonlocal_postResults(cs+1_pInt:cs+ns) = sum(rhoDotFluxOutput(1:ns,1:4,ipc,ip,el),2) + cs = cs + ns + case (rho_dot_flux_ID) 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(rhoDotFluxOutput(1:ns,5:8,ipc,ip,el)*sign(1.0_pReal,rhoSgl(1:ns,5:8)),2) cs = cs + ns case (rho_dot_flux_edge_ID) 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(rhoDotFluxOutput(1:ns,5:6,ipc,ip,el)*sign(1.0_pReal,rhoSgl(1:ns,5:6)),2) cs = cs + ns case (rho_dot_flux_screw_ID) 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(rhoDotFluxOutput(1:ns,7:8,ipc,ip,el)*sign(1.0_pReal,rhoSgl(1:ns,7:8)),2) cs = cs + ns case (velocity_edge_pos_ID)