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
This commit is contained in:
Luc Hantcherli 2009-03-05 16:06:01 +00:00
parent 599ba2453c
commit 31f15ee146
3 changed files with 39 additions and 11 deletions

View File

@ -738,6 +738,16 @@ END FUNCTION
msg='Non-positive w0.' msg='Non-positive w0.'
case (209) case (209)
msg='Negative latent hardening ratio.' 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) case (300)
msg='This material can only be used with elements with three direct stress components.' msg='This material can only be used with elements with three direct stress components.'
case (500) case (500)

View File

@ -41,6 +41,7 @@ subroutine constitutive_init()
use material use material
use constitutive_phenomenological use constitutive_phenomenological
use constitutive_j2 use constitutive_j2
use constitutive_dislobased
integer(pInt), parameter :: fileunit = 200 integer(pInt), parameter :: fileunit = 200
integer(pInt) e,i,g,myInstance integer(pInt) e,i,g,myInstance
@ -49,6 +50,7 @@ subroutine constitutive_init()
call constitutive_phenomenological_init(fileunit) ! parse all phases of this constitution 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) close(fileunit)
@ -107,6 +109,7 @@ function constitutive_homogenizedC(ipc,ip,el)
use material, only: phase_constitution,material_phase use material, only: phase_constitution,material_phase
use constitutive_phenomenological use constitutive_phenomenological
use constitutive_j2 use constitutive_j2
use constitutive_dislobased
implicit none implicit none
!* Definition of variables !* Definition of variables
@ -118,6 +121,8 @@ function constitutive_homogenizedC(ipc,ip,el)
constitutive_homogenizedC = constitutive_phenomenological_homogenizedC(constitutive_state_new,ipc,ip,el) constitutive_homogenizedC = constitutive_phenomenological_homogenizedC(constitutive_state_new,ipc,ip,el)
case (constitutive_j2_label) case (constitutive_j2_label)
constitutive_homogenizedC = constitutive_j2_homogenizedC(constitutive_state_new,ipc,ip,el) 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 end select
@ -139,6 +144,7 @@ subroutine constitutive_microstructure(Temperature,ipc,ip,el)
use material, only: phase_constitution,material_phase use material, only: phase_constitution,material_phase
use constitutive_phenomenological use constitutive_phenomenological
use constitutive_j2 use constitutive_j2
use constitutive_dislobased
implicit none implicit none
!* Definition of variables !* Definition of variables
@ -150,6 +156,8 @@ real(pReal) Temperature
call constitutive_phenomenological_microstructure(Temperature,constitutive_state_new,ipc,ip,el) call constitutive_phenomenological_microstructure(Temperature,constitutive_state_new,ipc,ip,el)
case (constitutive_j2_label) case (constitutive_j2_label)
call constitutive_j2_microstructure(Temperature,constitutive_state_new,ipc,ip,el) 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 end select
@ -173,6 +181,7 @@ subroutine constitutive_LpAndItsTangent(Lp,dLp_dTstar, Tstar_v,Temperature,ipc,i
use material, only: phase_constitution,material_phase use material, only: phase_constitution,material_phase
use constitutive_phenomenological use constitutive_phenomenological
use constitutive_j2 use constitutive_j2
use constitutive_dislobased
implicit none implicit none
!* Definition of variables !* 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) call constitutive_phenomenological_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state_new,ipc,ip,el)
case (constitutive_j2_label) case (constitutive_j2_label)
call constitutive_j2_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state_new,ipc,ip,el) 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 end select
@ -211,6 +222,7 @@ function constitutive_dotState(Tstar_v,Temperature,ipc,ip,el)
use material, only: phase_constitution,material_phase use material, only: phase_constitution,material_phase
use constitutive_phenomenological use constitutive_phenomenological
use constitutive_j2 use constitutive_j2
use constitutive_dislobased
implicit none implicit none
!* Definition of variables !* Definition of variables
@ -224,6 +236,8 @@ function constitutive_dotState(Tstar_v,Temperature,ipc,ip,el)
constitutive_dotState = constitutive_phenomenological_dotState(Tstar_v,Temperature,constitutive_state_new,ipc,ip,el) constitutive_dotState = constitutive_phenomenological_dotState(Tstar_v,Temperature,constitutive_state_new,ipc,ip,el)
case (constitutive_j2_label) 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 end select
return return
@ -244,6 +258,7 @@ pure function constitutive_postResults(Tstar_v,Temperature,dt,ipc,ip,el)
use material, only: phase_constitution,material_phase use material, only: phase_constitution,material_phase
use constitutive_phenomenological use constitutive_phenomenological
use constitutive_j2 use constitutive_j2
use constitutive_dislobased
implicit none implicit none
!* Definition of variables !* Definition of variables
@ -258,6 +273,9 @@ pure function constitutive_postResults(Tstar_v,Temperature,dt,ipc,ip,el)
constitutive_postResults = constitutive_phenomenological_postResults(Tstar_v,Temperature,dt,constitutive_state_new,ipc,ip,el) constitutive_postResults = constitutive_phenomenological_postResults(Tstar_v,Temperature,dt,constitutive_state_new,ipc,ip,el)
case (constitutive_j2_label) 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 end select
return return

View File

@ -544,7 +544,7 @@ end subroutine
integer(pInt) i integer(pInt) i
real(pReal), dimension(3), intent(in) :: A,B real(pReal), dimension(3), intent(in) :: A,B
real(pReal), dimension(3), C real(pReal), dimension(3) :: C
real(pReal) math_mul3x3 real(pReal) math_mul3x3
forall (i=1:3) C(i) = A(i)*B(i) forall (i=1:3) C(i) = A(i)*B(i)
@ -566,7 +566,7 @@ end subroutine
integer(pInt) i integer(pInt) i
real(pReal), dimension(6), intent(in) :: A,B real(pReal), dimension(6), intent(in) :: A,B
real(pReal), dimension(6), C real(pReal), dimension(6) :: C
real(pReal) math_mul6x6 real(pReal) math_mul6x6
forall (i=1:6) C(i) = A(i)*B(i) forall (i=1:6) C(i) = A(i)*B(i)