Corrected the treatment of interaction coefficients in constitutive_dislo
This commit is contained in:
parent
57ed908129
commit
9043b4374e
|
@ -262,12 +262,11 @@ character(len=80) function constitutive_Parse_MaterialPart(file)
|
||||||
!*********************************************************************
|
!*********************************************************************
|
||||||
use prec, only: pInt,pReal
|
use prec, only: pInt,pReal
|
||||||
use IO
|
use IO
|
||||||
use crystal, only: crystal_MaxMaxNslipOfStructure
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
!* Definition of variables
|
!* Definition of variables
|
||||||
character(len=80) line,tag
|
character(len=80) line,tag
|
||||||
integer(pInt), parameter :: maxNchunks = 2
|
integer(pInt), parameter :: maxNchunks = 7
|
||||||
integer(pInt) i,file,section
|
integer(pInt) i,file,section
|
||||||
integer(pInt), dimension(1+2*maxNchunks) :: positions
|
integer(pInt), dimension(1+2*maxNchunks) :: positions
|
||||||
|
|
||||||
|
@ -305,7 +304,7 @@ do while(.true.)
|
||||||
case ('rho0') !* conversion in 1/mm²
|
case ('rho0') !* conversion in 1/mm²
|
||||||
material_rho0(section)=IO_floatValue(line,positions,2)/1.0e6_pReal
|
material_rho0(section)=IO_floatValue(line,positions,2)/1.0e6_pReal
|
||||||
case ('interaction_coefficients')
|
case ('interaction_coefficients')
|
||||||
do i=1,crystal_MaxMaxNslipOfStructure
|
do i=1,6
|
||||||
material_SlipIntCoeff(i,section)=IO_floatValue(line,positions,i+1)
|
material_SlipIntCoeff(i,section)=IO_floatValue(line,positions,i+1)
|
||||||
enddo
|
enddo
|
||||||
case ('bg') !* conversion in mm
|
case ('bg') !* conversion in mm
|
||||||
|
@ -613,6 +612,7 @@ enddo
|
||||||
|
|
||||||
!* publish globals
|
!* publish globals
|
||||||
constitutive_maxNgrains = maxval(texture_Ngrains)
|
constitutive_maxNgrains = maxval(texture_Ngrains)
|
||||||
|
material_maxNslip = maxval(material_Nslip) ! max # of slip systems among materials present
|
||||||
constitutive_maxNstatevars = maxval(material_Nslip) + 0_pInt
|
constitutive_maxNstatevars = maxval(material_Nslip) + 0_pInt
|
||||||
constitutive_maxNresults = 1_pInt
|
constitutive_maxNresults = 1_pInt
|
||||||
|
|
||||||
|
@ -645,17 +645,17 @@ allocate(constitutive_state_old(constitutive_maxNstatevars,constitutive_maxNgrai
|
||||||
constitutive_state_old=0.0_pReal
|
constitutive_state_old=0.0_pReal
|
||||||
allocate(constitutive_state_new(constitutive_maxNstatevars,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems))
|
allocate(constitutive_state_new(constitutive_maxNstatevars,constitutive_maxNgrains,mesh_maxNips,mesh_NcpElems))
|
||||||
constitutive_state_new=0.0_pReal
|
constitutive_state_new=0.0_pReal
|
||||||
allocate(constitutive_Pforest(constitutive_maxNstatevars,constitutive_maxNstatevars,material_maxN))
|
allocate(constitutive_Pforest(material_maxNslip,constitutive_material_maxNslip,material_maxN))
|
||||||
constitutive_Pforest=0.0_pReal
|
constitutive_Pforest=0.0_pReal
|
||||||
allocate(constitutive_Pparallel(constitutive_maxNstatevars,constitutive_maxNstatevars,material_maxN))
|
allocate(constitutive_Pparallel(material_maxNslip,material_maxNslip,material_maxN))
|
||||||
constitutive_Pparallel=0.0_pReal
|
constitutive_Pparallel=0.0_pReal
|
||||||
allocate(constitutive_rho_p(constitutive_maxNstatevars)) ; constitutive_rho_p=0.0_pReal
|
allocate(constitutive_rho_p(material_maxNslip)) ; constitutive_rho_p=0.0_pReal
|
||||||
allocate(constitutive_rho_f(constitutive_maxNstatevars)) ; constitutive_rho_f=0.0_pReal
|
allocate(constitutive_rho_f(material_maxNslip)) ; constitutive_rho_f=0.0_pReal
|
||||||
allocate(constitutive_rho_m(constitutive_maxNstatevars)) ; constitutive_rho_m=0.0_pReal
|
allocate(constitutive_rho_m(material_maxNslip)) ; constitutive_rho_m=0.0_pReal
|
||||||
allocate(constitutive_passing_stress(constitutive_maxNstatevars)) ; constitutive_passing_stress=0.0_pReal
|
allocate(constitutive_passing_stress(material_maxNslip)) ; constitutive_passing_stress=0.0_pReal
|
||||||
allocate(constitutive_jump_width(constitutive_maxNstatevars)) ; constitutive_jump_width=0.0_pReal
|
allocate(constitutive_jump_width(material_maxNslip)) ; constitutive_jump_width=0.0_pReal
|
||||||
allocate(constitutive_activation_volume(constitutive_maxNstatevars)) ; constitutive_activation_volume=0.0_pReal
|
allocate(constitutive_activation_volume(material_maxNslip)) ; constitutive_activation_volume=0.0_pReal
|
||||||
allocate(constitutive_g0_slip(constitutive_maxNstatevars)) ; constitutive_g0_slip=0.0_pReal
|
allocate(constitutive_g0_slip(material_maxNslip)) ; constitutive_g0_slip=0.0_pReal
|
||||||
|
|
||||||
!* Assignment of all grains in all IPs of all cp-elements
|
!* Assignment of all grains in all IPs of all cp-elements
|
||||||
do e=1,mesh_NcpElems
|
do e=1,mesh_NcpElems
|
||||||
|
@ -716,23 +716,15 @@ enddo ! cp_element
|
||||||
!* Construction of the hardening matrices
|
!* Construction of the hardening matrices
|
||||||
do i=1,material_maxN
|
do i=1,material_maxN
|
||||||
!* Iteration over the systems
|
!* Iteration over the systems
|
||||||
do j=1,constitutive_maxNstatevars
|
do j=1,material_Nslip(i)
|
||||||
do k=1,constitutive_maxNstatevars
|
do k=1,material_Nslip(i)
|
||||||
!* Hardening type *
|
|
||||||
do l=1,constitutive_maxNstatevars
|
|
||||||
if (crystal_SlipIntType(j,k,i)==l) then
|
|
||||||
K_inter=material_SlipIntCoeff(l,i)
|
|
||||||
else
|
|
||||||
K_inter=0.0_pReal
|
|
||||||
endif
|
|
||||||
enddo
|
|
||||||
!* Projection of the dislocation *
|
!* Projection of the dislocation *
|
||||||
x=dot_product(crystal_sn(:,j,i),crystal_st(:,k,i))
|
x=dot_product(crystal_sn(:,j,i),crystal_st(:,k,i))
|
||||||
y=1.0_pReal-x**(2.0_pReal)
|
y=1.0_pReal-x**(2.0_pReal)
|
||||||
!* Interaction matrix *
|
!* Interaction matrix *
|
||||||
constitutive_Pforest(j,k,i)=abs(x)*K_inter
|
constitutive_Pforest(j,k,i)=abs(x)*material_SlipIntCoeff(crystal_SlipIntType(j,k,i),i)
|
||||||
if (y>0.0_pReal) then
|
if (y>0.0_pReal) then
|
||||||
constitutive_Pparallel(j,k,i)=sqrt(y)*K_inter
|
constitutive_Pparallel(j,k,i)=sqrt(y)*material_SlipIntCoeff(crystal_SlipIntType(j,k,i),i)
|
||||||
else
|
else
|
||||||
constitutive_Pparallel(j,k,i)=0.0_pReal
|
constitutive_Pparallel(j,k,i)=0.0_pReal
|
||||||
endif
|
endif
|
||||||
|
@ -788,10 +780,8 @@ real(pReal), dimension(constitutive_Nstatevars(ipc,ip,el)) :: state
|
||||||
matID = constitutive_matID(ipc,ip,el)
|
matID = constitutive_matID(ipc,ip,el)
|
||||||
|
|
||||||
!* Quantities derivated from state
|
!* Quantities derivated from state
|
||||||
constitutive_rho_f=matmul(constitutive_Pforest(1:constitutive_Nstatevars(ipc,ip,el),&
|
constitutive_rho_f=matmul(constitutive_Pforest (1:material_Nslip(matID),1:material_Nslip(matID),matID),state)
|
||||||
1:constitutive_Nstatevars(ipc,ip,el),matID),state)
|
constitutive_rho_p=matmul(constitutive_Pparallel(1:material_Nslip(matID),1:material_Nslip(matID),matID),state)
|
||||||
constitutive_rho_p=matmul(constitutive_Pparallel(1:constitutive_Nstatevars(ipc,ip,el),&
|
|
||||||
1:constitutive_Nstatevars(ipc,ip,el),matID),state)
|
|
||||||
do i=1,material_Nslip(matID)
|
do i=1,material_Nslip(matID)
|
||||||
constitutive_passing_stress(i)=material_tau0(matID)+material_c1(matID)*material_Gmod(matID)*material_bg(matID)*&
|
constitutive_passing_stress(i)=material_tau0(matID)+material_c1(matID)*material_Gmod(matID)*material_bg(matID)*&
|
||||||
sqrt(constitutive_rho_p(i))
|
sqrt(constitutive_rho_p(i))
|
||||||
|
|
Loading…
Reference in New Issue