From 31f15ee146a92df24a59d24487de237620ff7c2a Mon Sep 17 00:00:00 2001 From: Luc Hantcherli Date: Thu, 5 Mar 2009 16:06:01 +0000 Subject: [PATCH] Add constitutive_dislobased.f90, containing the current dislocation based model for dislocation glide. Add corresponding changes in constitutive.f90 and IO.f90 Compilation errors in math.f90 corrected --- trunk/IO.f90 | 10 ++++++++++ trunk/constitutive.f90 | 36 +++++++++++++++++++++++++++--------- trunk/math.f90 | 4 ++-- 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/trunk/IO.f90 b/trunk/IO.f90 index 4ef768faa..8474bcd68 100644 --- a/trunk/IO.f90 +++ b/trunk/IO.f90 @@ -738,6 +738,16 @@ END FUNCTION msg='Non-positive w0.' case (209) msg='Negative latent hardening ratio.' + case (220) + msg='Negative initial dislocation density' + case (221) + msg='Negative Bugers vector' + case (222) + msg='Negative activation energy for edge dislocation glide' + case (223) + msg='Negative self diffusion energy' + case (224) + msg='Negative diffusion constant' case (300) msg='This material can only be used with elements with three direct stress components.' case (500) diff --git a/trunk/constitutive.f90 b/trunk/constitutive.f90 index 854d9c074..441ea36c9 100644 --- a/trunk/constitutive.f90 +++ b/trunk/constitutive.f90 @@ -40,7 +40,8 @@ subroutine constitutive_init() use mesh, only: mesh_maxNips,mesh_NcpElems,mesh_element,FE_Nips use material use constitutive_phenomenological - use constitutive_j2 + use constitutive_j2 + use constitutive_dislobased integer(pInt), parameter :: fileunit = 200 integer(pInt) e,i,g,myInstance @@ -48,7 +49,8 @@ subroutine constitutive_init() if(.not. IO_open_file(fileunit,material_configFile)) call IO_error (100) ! corrupt config file call constitutive_phenomenological_init(fileunit) ! parse all phases of this constitution - call constitutive_j2_init(fileunit) + call constitutive_j2_init(fileunit) + call constitutive_dislobased_init(fileunit) close(fileunit) @@ -106,7 +108,8 @@ function constitutive_homogenizedC(ipc,ip,el) use prec, only: pReal,pInt use material, only: phase_constitution,material_phase use constitutive_phenomenological - use constitutive_j2 + use constitutive_j2 + use constitutive_dislobased implicit none !* Definition of variables @@ -118,6 +121,8 @@ function constitutive_homogenizedC(ipc,ip,el) constitutive_homogenizedC = constitutive_phenomenological_homogenizedC(constitutive_state_new,ipc,ip,el) case (constitutive_j2_label) constitutive_homogenizedC = constitutive_j2_homogenizedC(constitutive_state_new,ipc,ip,el) + case (constitutive_dislobased_label) + constitutive_homogenizedC = constitutive_dislobased_homogenizedC(constitutive_state_new,ipc,ip,el) end select @@ -138,7 +143,8 @@ subroutine constitutive_microstructure(Temperature,ipc,ip,el) use prec, only: pReal,pInt use material, only: phase_constitution,material_phase use constitutive_phenomenological - use constitutive_j2 + use constitutive_j2 + use constitutive_dislobased implicit none !* Definition of variables @@ -150,6 +156,8 @@ real(pReal) Temperature call constitutive_phenomenological_microstructure(Temperature,constitutive_state_new,ipc,ip,el) case (constitutive_j2_label) call constitutive_j2_microstructure(Temperature,constitutive_state_new,ipc,ip,el) + case (constitutive_dislobased_label) + call constitutive_dislobased_microstructure(Temperature,constitutive_state_new,ipc,ip,el) end select @@ -172,7 +180,8 @@ subroutine constitutive_LpAndItsTangent(Lp,dLp_dTstar, Tstar_v,Temperature,ipc,i use prec, only: pReal,pInt use material, only: phase_constitution,material_phase use constitutive_phenomenological - use constitutive_j2 + use constitutive_j2 + use constitutive_dislobased implicit none !* Definition of variables @@ -187,6 +196,8 @@ subroutine constitutive_LpAndItsTangent(Lp,dLp_dTstar, Tstar_v,Temperature,ipc,i call constitutive_phenomenological_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state_new,ipc,ip,el) case (constitutive_j2_label) call constitutive_j2_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state_new,ipc,ip,el) + case (constitutive_dislobased_label) + call constitutive_dislobased_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state_new,ipc,ip,el) end select @@ -210,7 +221,8 @@ function constitutive_dotState(Tstar_v,Temperature,ipc,ip,el) use prec, only: pReal,pInt use material, only: phase_constitution,material_phase use constitutive_phenomenological - use constitutive_j2 + use constitutive_j2 + use constitutive_dislobased implicit none !* Definition of variables @@ -223,7 +235,9 @@ function constitutive_dotState(Tstar_v,Temperature,ipc,ip,el) case (constitutive_phenomenological_label) constitutive_dotState = constitutive_phenomenological_dotState(Tstar_v,Temperature,constitutive_state_new,ipc,ip,el) case (constitutive_j2_label) - constitutive_dotState = constitutive_j2_dotState(Tstar_v,Temperature,constitutive_state_new,ipc,ip,el) + constitutive_dotState = constitutive_j2_dotState(Tstar_v,Temperature,constitutive_state_new,ipc,ip,el) + case (constitutive_dislobased_label) + call constitutive_dislobased_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state_new,ipc,ip,el) end select return @@ -243,7 +257,8 @@ pure function constitutive_postResults(Tstar_v,Temperature,dt,ipc,ip,el) use prec, only: pReal,pInt use material, only: phase_constitution,material_phase use constitutive_phenomenological - use constitutive_j2 + use constitutive_j2 + use constitutive_dislobased implicit none !* Definition of variables @@ -257,7 +272,10 @@ pure function constitutive_postResults(Tstar_v,Temperature,dt,ipc,ip,el) case (constitutive_phenomenological_label) constitutive_postResults = constitutive_phenomenological_postResults(Tstar_v,Temperature,dt,constitutive_state_new,ipc,ip,el) case (constitutive_j2_label) - constitutive_postResults = constitutive_j2_postResults(Tstar_v,Temperature,dt,constitutive_state_new,ipc,ip,el) + constitutive_postResults = constitutive_j2_postResults(Tstar_v,Temperature,dt,constitutive_state_new,ipc,ip,el) + case (constitutive_dislobased_label) + call constitutive_dislobased_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state_new,ipc,ip,el) + end select return diff --git a/trunk/math.f90 b/trunk/math.f90 index 6e1df5e3c..e2bd3e960 100644 --- a/trunk/math.f90 +++ b/trunk/math.f90 @@ -544,7 +544,7 @@ end subroutine integer(pInt) i real(pReal), dimension(3), intent(in) :: A,B - real(pReal), dimension(3), C + real(pReal), dimension(3) :: C real(pReal) math_mul3x3 forall (i=1:3) C(i) = A(i)*B(i) @@ -566,7 +566,7 @@ end subroutine integer(pInt) i real(pReal), dimension(6), intent(in) :: A,B - real(pReal), dimension(6), C + real(pReal), dimension(6) :: C real(pReal) math_mul6x6 forall (i=1:6) C(i) = A(i)*B(i)