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:
parent
599ba2453c
commit
31f15ee146
10
trunk/IO.f90
10
trunk/IO.f90
|
@ -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)
|
||||||
|
|
|
@ -40,7 +40,8 @@ subroutine constitutive_init()
|
||||||
use mesh, only: mesh_maxNips,mesh_NcpElems,mesh_element,FE_Nips
|
use mesh, only: mesh_maxNips,mesh_NcpElems,mesh_element,FE_Nips
|
||||||
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
|
||||||
|
@ -48,7 +49,8 @@ subroutine constitutive_init()
|
||||||
if(.not. IO_open_file(fileunit,material_configFile)) call IO_error (100) ! corrupt config file
|
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_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)
|
||||||
|
|
||||||
|
@ -106,7 +108,8 @@ function constitutive_homogenizedC(ipc,ip,el)
|
||||||
use prec, only: pReal,pInt
|
use prec, only: pReal,pInt
|
||||||
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
|
||||||
|
|
||||||
|
@ -138,7 +143,8 @@ subroutine constitutive_microstructure(Temperature,ipc,ip,el)
|
||||||
use prec, only: pReal,pInt
|
use prec, only: pReal,pInt
|
||||||
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
|
||||||
|
|
||||||
|
@ -172,7 +180,8 @@ subroutine constitutive_LpAndItsTangent(Lp,dLp_dTstar, Tstar_v,Temperature,ipc,i
|
||||||
use prec, only: pReal,pInt
|
use prec, only: pReal,pInt
|
||||||
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
|
||||||
|
|
||||||
|
@ -210,7 +221,8 @@ function constitutive_dotState(Tstar_v,Temperature,ipc,ip,el)
|
||||||
use prec, only: pReal,pInt
|
use prec, only: pReal,pInt
|
||||||
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
|
||||||
|
@ -223,7 +235,9 @@ function constitutive_dotState(Tstar_v,Temperature,ipc,ip,el)
|
||||||
case (constitutive_phenomenological_label)
|
case (constitutive_phenomenological_label)
|
||||||
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
|
||||||
|
@ -243,7 +257,8 @@ pure function constitutive_postResults(Tstar_v,Temperature,dt,ipc,ip,el)
|
||||||
use prec, only: pReal,pInt
|
use prec, only: pReal,pInt
|
||||||
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
|
||||||
|
@ -257,7 +272,10 @@ pure function constitutive_postResults(Tstar_v,Temperature,dt,ipc,ip,el)
|
||||||
case (constitutive_phenomenological_label)
|
case (constitutive_phenomenological_label)
|
||||||
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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue