moved stiffness tensor calculation to lattice
introduced 'isotropic' and 'orthorhombic' lattice types to use corresponding symmetries in stiffness tensor. intended to be used with non-crystal plasticity models (j2, constitutive_none with isotropic, cubic or orthotropic elasticity).
This commit is contained in:
parent
0e52915435
commit
fd94c786f0
|
@ -99,10 +99,16 @@ crystallite 2
|
||||||
elasticity hooke
|
elasticity hooke
|
||||||
plasticity none
|
plasticity none
|
||||||
|
|
||||||
lattice_structure fcc
|
lattice_structure orthorhombic
|
||||||
c11 106.75e9
|
c11 106.75e9
|
||||||
|
c22 106.75e9
|
||||||
|
c33 106.75e9
|
||||||
c12 60.41e9
|
c12 60.41e9
|
||||||
|
c13 60.41e9
|
||||||
|
c23 60.41e9
|
||||||
c44 28.34e9
|
c44 28.34e9
|
||||||
|
c55 28.34e9
|
||||||
|
c66 28.34e9
|
||||||
|
|
||||||
[Aluminum_J2isotropic]
|
[Aluminum_J2isotropic]
|
||||||
|
|
||||||
|
@ -112,6 +118,7 @@ plasticity j2
|
||||||
(output) flowstress
|
(output) flowstress
|
||||||
(output) strainrate
|
(output) strainrate
|
||||||
|
|
||||||
|
lattice_structure isotropic
|
||||||
c11 110.9e9
|
c11 110.9e9
|
||||||
c12 58.34e9
|
c12 58.34e9
|
||||||
taylorfactor 3
|
taylorfactor 3
|
||||||
|
|
|
@ -57,11 +57,6 @@ integer(pInt), dimension(:), allocatable :: constitutive_dislotwin
|
||||||
integer(pInt), dimension(:,:), allocatable :: constitutive_dislotwin_Nslip, & ! number of active slip systems for each family and instance
|
integer(pInt), dimension(:,:), allocatable :: constitutive_dislotwin_Nslip, & ! number of active slip systems for each family and instance
|
||||||
constitutive_dislotwin_Ntwin ! number of active twin systems for each family and instance
|
constitutive_dislotwin_Ntwin ! number of active twin systems for each family and instance
|
||||||
real(pReal), dimension(:), allocatable :: constitutive_dislotwin_CoverA, & ! c/a ratio for hex type lattice
|
real(pReal), dimension(:), allocatable :: constitutive_dislotwin_CoverA, & ! c/a ratio for hex type lattice
|
||||||
constitutive_dislotwin_C11, & ! C11 element in elasticity matrix
|
|
||||||
constitutive_dislotwin_C12, & ! C12 element in elasticity matrix
|
|
||||||
constitutive_dislotwin_C13, & ! C13 element in elasticity matrix
|
|
||||||
constitutive_dislotwin_C33, & ! C33 element in elasticity matrix
|
|
||||||
constitutive_dislotwin_C44, & ! C44 element in elasticity matrix
|
|
||||||
constitutive_dislotwin_Gmod, & ! shear modulus
|
constitutive_dislotwin_Gmod, & ! shear modulus
|
||||||
constitutive_dislotwin_CAtomicVolume, & ! atomic volume in Bugers vector unit
|
constitutive_dislotwin_CAtomicVolume, & ! atomic volume in Bugers vector unit
|
||||||
constitutive_dislotwin_D0, & ! prefactor for self-diffusion coefficient
|
constitutive_dislotwin_D0, & ! prefactor for self-diffusion coefficient
|
||||||
|
@ -186,16 +181,6 @@ allocate(constitutive_dislotwin_totalNtwin(maxNinstance))
|
||||||
constitutive_dislotwin_totalNtwin = 0_pInt
|
constitutive_dislotwin_totalNtwin = 0_pInt
|
||||||
allocate(constitutive_dislotwin_CoverA(maxNinstance))
|
allocate(constitutive_dislotwin_CoverA(maxNinstance))
|
||||||
constitutive_dislotwin_CoverA = 0.0_pReal
|
constitutive_dislotwin_CoverA = 0.0_pReal
|
||||||
allocate(constitutive_dislotwin_C11(maxNinstance))
|
|
||||||
constitutive_dislotwin_C11 = 0.0_pReal
|
|
||||||
allocate(constitutive_dislotwin_C12(maxNinstance))
|
|
||||||
constitutive_dislotwin_C12 = 0.0_pReal
|
|
||||||
allocate(constitutive_dislotwin_C13(maxNinstance))
|
|
||||||
constitutive_dislotwin_C13 = 0.0_pReal
|
|
||||||
allocate(constitutive_dislotwin_C33(maxNinstance))
|
|
||||||
constitutive_dislotwin_C33 = 0.0_pReal
|
|
||||||
allocate(constitutive_dislotwin_C44(maxNinstance))
|
|
||||||
constitutive_dislotwin_C44 = 0.0_pReal
|
|
||||||
allocate(constitutive_dislotwin_Gmod(maxNinstance))
|
allocate(constitutive_dislotwin_Gmod(maxNinstance))
|
||||||
constitutive_dislotwin_Gmod = 0.0_pReal
|
constitutive_dislotwin_Gmod = 0.0_pReal
|
||||||
allocate(constitutive_dislotwin_CAtomicVolume(maxNinstance))
|
allocate(constitutive_dislotwin_CAtomicVolume(maxNinstance))
|
||||||
|
@ -301,15 +286,23 @@ do ! read thru sections of
|
||||||
case ('covera_ratio')
|
case ('covera_ratio')
|
||||||
constitutive_dislotwin_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_dislotwin_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c11')
|
case ('c11')
|
||||||
constitutive_dislotwin_C11(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_dislotwin_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c12')
|
case ('c12')
|
||||||
constitutive_dislotwin_C12(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_dislotwin_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c13')
|
case ('c13')
|
||||||
constitutive_dislotwin_C13(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_dislotwin_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c22')
|
||||||
|
constitutive_dislotwin_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c23')
|
||||||
|
constitutive_dislotwin_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c33')
|
case ('c33')
|
||||||
constitutive_dislotwin_C33(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_dislotwin_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c44')
|
case ('c44')
|
||||||
constitutive_dislotwin_C44(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_dislotwin_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c55')
|
||||||
|
constitutive_dislotwin_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c66')
|
||||||
|
constitutive_dislotwin_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('nslip')
|
case ('nslip')
|
||||||
forall (j = 1_pInt:lattice_maxNslipFamily) &
|
forall (j = 1_pInt:lattice_maxNslipFamily) &
|
||||||
constitutive_dislotwin_Nslip(j,i) = IO_intValue(line,positions,1_pInt+j)
|
constitutive_dislotwin_Nslip(j,i) = IO_intValue(line,positions,1_pInt+j)
|
||||||
|
@ -549,32 +542,12 @@ do i = 1_pInt,maxNinstance
|
||||||
|
|
||||||
|
|
||||||
!* Elasticity matrix and shear modulus according to material.config
|
!* Elasticity matrix and shear modulus according to material.config
|
||||||
select case (myStructure)
|
constitutive_dislotwin_Cslip_66(:,:,i) = lattice_symmetrizeC66(constitutive_dislotwin_structureName(i),&
|
||||||
case(1_pInt:2_pInt) ! cubic(s)
|
constitutive_dislotwin_Cslip_66)
|
||||||
forall(k=1_pInt:3_pInt)
|
constitutive_dislotwin_Gmod(i) = &
|
||||||
forall(j=1_pInt:3_pInt) &
|
0.2_pReal*(constitutive_dislotwin_Cslip_66(1,1,i)-constitutive_dislotwin_Cslip_66(1,2,i))+0.3_pReal*constitutive_dislotwin_Cslip_66(4,4,i)
|
||||||
constitutive_dislotwin_Cslip_66(k,j,i) = constitutive_dislotwin_C12(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(k,k,i) = constitutive_dislotwin_C11(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(k+3_pInt,k+3_pInt,i) = constitutive_dislotwin_C44(i)
|
|
||||||
end forall
|
|
||||||
case(3_pInt:) ! all hex
|
|
||||||
constitutive_dislotwin_Cslip_66(1,1,i) = constitutive_dislotwin_C11(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(2,2,i) = constitutive_dislotwin_C11(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(3,3,i) = constitutive_dislotwin_C33(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(1,2,i) = constitutive_dislotwin_C12(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(2,1,i) = constitutive_dislotwin_C12(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(1,3,i) = constitutive_dislotwin_C13(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(3,1,i) = constitutive_dislotwin_C13(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(2,3,i) = constitutive_dislotwin_C13(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(3,2,i) = constitutive_dislotwin_C13(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(4,4,i) = constitutive_dislotwin_C44(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(5,5,i) = constitutive_dislotwin_C44(i)
|
|
||||||
constitutive_dislotwin_Cslip_66(6,6,i) = 0.5_pReal*(constitutive_dislotwin_C11(i)-constitutive_dislotwin_C12(i))
|
|
||||||
end select
|
|
||||||
constitutive_dislotwin_Cslip_66(:,:,i) = math_Mandel3333to66(math_Voigt66to3333(constitutive_dislotwin_Cslip_66(:,:,i)))
|
constitutive_dislotwin_Cslip_66(:,:,i) = math_Mandel3333to66(math_Voigt66to3333(constitutive_dislotwin_Cslip_66(:,:,i)))
|
||||||
constitutive_dislotwin_Cslip_3333(:,:,:,:,i) = math_Voigt66to3333(constitutive_dislotwin_Cslip_66(:,:,i))
|
constitutive_dislotwin_Cslip_3333(:,:,:,:,i) = math_Voigt66to3333(constitutive_dislotwin_Cslip_66(:,:,i))
|
||||||
constitutive_dislotwin_Gmod(i) = &
|
|
||||||
0.2_pReal*(constitutive_dislotwin_C11(i)-constitutive_dislotwin_C12(i))+0.3_pReal*constitutive_dislotwin_C44(i)
|
|
||||||
|
|
||||||
|
|
||||||
!* Process slip related parameters ------------------------------------------------
|
!* Process slip related parameters ------------------------------------------------
|
||||||
|
|
|
@ -60,11 +60,12 @@ module constitutive_j2
|
||||||
constitutive_j2_output ! name of each post result output
|
constitutive_j2_output ! name of each post result output
|
||||||
|
|
||||||
integer(pInt), dimension(:), allocatable, private :: &
|
integer(pInt), dimension(:), allocatable, private :: &
|
||||||
constitutive_j2_Noutput
|
constitutive_j2_Noutput !< name of each post result output
|
||||||
|
|
||||||
|
character(len=32), dimension(:), allocatable, private :: &
|
||||||
|
constitutive_j2_structureName
|
||||||
|
|
||||||
real(pReal), dimension(:), allocatable, private :: &
|
real(pReal), dimension(:), allocatable, private :: &
|
||||||
constitutive_j2_C11, &
|
|
||||||
constitutive_j2_C12, &
|
|
||||||
!* Visco-plastic constitutive_j2 parameters
|
!* Visco-plastic constitutive_j2 parameters
|
||||||
constitutive_j2_fTaylor, &
|
constitutive_j2_fTaylor, &
|
||||||
constitutive_j2_tau0, &
|
constitutive_j2_tau0, &
|
||||||
|
@ -120,6 +121,7 @@ subroutine constitutive_j2_init(myFile)
|
||||||
debug_level, &
|
debug_level, &
|
||||||
debug_constitutive, &
|
debug_constitutive, &
|
||||||
debug_levelBasic
|
debug_levelBasic
|
||||||
|
use lattice, only: lattice_symmetrizeC66
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: myFile
|
integer(pInt), intent(in) :: myFile
|
||||||
|
@ -156,10 +158,8 @@ subroutine constitutive_j2_init(myFile)
|
||||||
constitutive_j2_output = ''
|
constitutive_j2_output = ''
|
||||||
allocate(constitutive_j2_Noutput(maxNinstance))
|
allocate(constitutive_j2_Noutput(maxNinstance))
|
||||||
constitutive_j2_Noutput = 0_pInt
|
constitutive_j2_Noutput = 0_pInt
|
||||||
allocate(constitutive_j2_C11(maxNinstance))
|
allocate(constitutive_j2_structureName(maxNinstance))
|
||||||
constitutive_j2_C11 = 0.0_pReal
|
constitutive_j2_structureName = ''
|
||||||
allocate(constitutive_j2_C12(maxNinstance))
|
|
||||||
constitutive_j2_C12 = 0.0_pReal
|
|
||||||
allocate(constitutive_j2_Cslip_66(6,6,maxNinstance))
|
allocate(constitutive_j2_Cslip_66(6,6,maxNinstance))
|
||||||
constitutive_j2_Cslip_66 = 0.0_pReal
|
constitutive_j2_Cslip_66 = 0.0_pReal
|
||||||
allocate(constitutive_j2_fTaylor(maxNinstance))
|
allocate(constitutive_j2_fTaylor(maxNinstance))
|
||||||
|
@ -213,10 +213,26 @@ subroutine constitutive_j2_init(myFile)
|
||||||
case ('(output)')
|
case ('(output)')
|
||||||
constitutive_j2_Noutput(i) = constitutive_j2_Noutput(i) + 1_pInt
|
constitutive_j2_Noutput(i) = constitutive_j2_Noutput(i) + 1_pInt
|
||||||
constitutive_j2_output(constitutive_j2_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt))
|
constitutive_j2_output(constitutive_j2_Noutput(i),i) = IO_lc(IO_stringValue(line,positions,2_pInt))
|
||||||
|
case ('lattice_structure')
|
||||||
|
constitutive_j2_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
|
||||||
case ('c11')
|
case ('c11')
|
||||||
constitutive_j2_C11(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_j2_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c12')
|
case ('c12')
|
||||||
constitutive_j2_C12(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_j2_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c13')
|
||||||
|
constitutive_j2_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c22')
|
||||||
|
constitutive_j2_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c23')
|
||||||
|
constitutive_j2_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c33')
|
||||||
|
constitutive_j2_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c44')
|
||||||
|
constitutive_j2_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c55')
|
||||||
|
constitutive_j2_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c66')
|
||||||
|
constitutive_j2_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('tau0')
|
case ('tau0')
|
||||||
constitutive_j2_tau0(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_j2_tau0(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('gdot0')
|
case ('gdot0')
|
||||||
|
@ -250,6 +266,7 @@ subroutine constitutive_j2_init(myFile)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
100 do i = 1_pInt,maxNinstance ! sanity checks
|
100 do i = 1_pInt,maxNinstance ! sanity checks
|
||||||
|
if (constitutive_j2_structureName(i) == '') call IO_error(205_pInt,e=i)
|
||||||
if (constitutive_j2_tau0(i) < 0.0_pReal) call IO_error(211_pInt,ext_msg='tau0 (' &
|
if (constitutive_j2_tau0(i) < 0.0_pReal) call IO_error(211_pInt,ext_msg='tau0 (' &
|
||||||
//constitutive_j2_label//')')
|
//constitutive_j2_label//')')
|
||||||
if (constitutive_j2_gdot0(i) <= 0.0_pReal) call IO_error(211_pInt,ext_msg='gdot0 (' &
|
if (constitutive_j2_gdot0(i) <= 0.0_pReal) call IO_error(211_pInt,ext_msg='gdot0 (' &
|
||||||
|
@ -287,13 +304,8 @@ subroutine constitutive_j2_init(myFile)
|
||||||
constitutive_j2_sizeDotState(i) = 1_pInt
|
constitutive_j2_sizeDotState(i) = 1_pInt
|
||||||
constitutive_j2_sizeState(i) = 1_pInt
|
constitutive_j2_sizeState(i) = 1_pInt
|
||||||
|
|
||||||
forall(k=1_pInt:3_pInt)
|
constitutive_j2_Cslip_66(:,:,i) = lattice_symmetrizeC66(constitutive_j2_structureName(i),&
|
||||||
forall(j=1_pInt:3_pInt)
|
constitutive_j2_Cslip_66)
|
||||||
constitutive_j2_Cslip_66(k,j,i) = constitutive_j2_C12(i)
|
|
||||||
end forall
|
|
||||||
constitutive_j2_Cslip_66(k,k,i) = constitutive_j2_C11(i)
|
|
||||||
constitutive_j2_Cslip_66(k+3,k+3,i) = 0.5_pReal*(constitutive_j2_C11(i)-constitutive_j2_C12(i))
|
|
||||||
end forall
|
|
||||||
constitutive_j2_Cslip_66(1:6,1:6,i) = &
|
constitutive_j2_Cslip_66(1:6,1:6,i) = &
|
||||||
math_Mandel3333to66(math_Voigt66to3333(constitutive_j2_Cslip_66(1:6,1:6,i)))
|
math_Mandel3333to66(math_Voigt66to3333(constitutive_j2_Cslip_66(1:6,1:6,i)))
|
||||||
|
|
||||||
|
|
|
@ -46,8 +46,7 @@ module constitutive_none
|
||||||
integer(pInt), dimension(:), allocatable, public :: &
|
integer(pInt), dimension(:), allocatable, public :: &
|
||||||
constitutive_none_sizeDotState, &
|
constitutive_none_sizeDotState, &
|
||||||
constitutive_none_sizeState, &
|
constitutive_none_sizeState, &
|
||||||
constitutive_none_sizePostResults, &
|
constitutive_none_sizePostResults
|
||||||
constitutive_none_structure
|
|
||||||
|
|
||||||
character(len=32), dimension(:), allocatable, private :: &
|
character(len=32), dimension(:), allocatable, private :: &
|
||||||
constitutive_none_structureName
|
constitutive_none_structureName
|
||||||
|
@ -55,14 +54,6 @@ module constitutive_none
|
||||||
integer(pInt), dimension(:,:), allocatable, target, public :: &
|
integer(pInt), dimension(:,:), allocatable, target, public :: &
|
||||||
constitutive_none_sizePostResult ! size of each post result output
|
constitutive_none_sizePostResult ! size of each post result output
|
||||||
|
|
||||||
real(pReal), dimension(:), allocatable, private :: &
|
|
||||||
constitutive_none_CoverA, &
|
|
||||||
constitutive_none_C11, &
|
|
||||||
constitutive_none_C12, &
|
|
||||||
constitutive_none_C13, &
|
|
||||||
constitutive_none_C33, &
|
|
||||||
constitutive_none_C44
|
|
||||||
|
|
||||||
real(pReal), dimension(:,:,:), allocatable, private :: &
|
real(pReal), dimension(:,:,:), allocatable, private :: &
|
||||||
constitutive_none_Cslip_66
|
constitutive_none_Cslip_66
|
||||||
|
|
||||||
|
@ -100,7 +91,7 @@ subroutine constitutive_none_init(myFile)
|
||||||
debug_level, &
|
debug_level, &
|
||||||
debug_constitutive, &
|
debug_constitutive, &
|
||||||
debug_levelBasic
|
debug_levelBasic
|
||||||
use lattice, only: lattice_initializeStructure, lattice_symmetryType
|
use lattice, only: lattice_symmetrizeC66
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: myFile
|
integer(pInt), intent(in) :: myFile
|
||||||
|
@ -132,20 +123,6 @@ subroutine constitutive_none_init(myFile)
|
||||||
constitutive_none_sizePostResults = 0_pInt
|
constitutive_none_sizePostResults = 0_pInt
|
||||||
allocate(constitutive_none_structureName(maxNinstance))
|
allocate(constitutive_none_structureName(maxNinstance))
|
||||||
constitutive_none_structureName = ''
|
constitutive_none_structureName = ''
|
||||||
allocate(constitutive_none_structure(maxNinstance))
|
|
||||||
constitutive_none_structure = 0_pInt
|
|
||||||
allocate(constitutive_none_CoverA(maxNinstance))
|
|
||||||
constitutive_none_CoverA = 0.0_pReal
|
|
||||||
allocate(constitutive_none_C11(maxNinstance))
|
|
||||||
constitutive_none_C11 = 0.0_pReal
|
|
||||||
allocate(constitutive_none_C12(maxNinstance))
|
|
||||||
constitutive_none_C12 = 0.0_pReal
|
|
||||||
allocate(constitutive_none_C13(maxNinstance))
|
|
||||||
constitutive_none_C13 = 0.0_pReal
|
|
||||||
allocate(constitutive_none_C33(maxNinstance))
|
|
||||||
constitutive_none_C33 = 0.0_pReal
|
|
||||||
allocate(constitutive_none_C44(maxNinstance))
|
|
||||||
constitutive_none_C44 = 0.0_pReal
|
|
||||||
allocate(constitutive_none_Cslip_66(6,6,maxNinstance))
|
allocate(constitutive_none_Cslip_66(6,6,maxNinstance))
|
||||||
constitutive_none_Cslip_66 = 0.0_pReal
|
constitutive_none_Cslip_66 = 0.0_pReal
|
||||||
|
|
||||||
|
@ -172,60 +149,40 @@ subroutine constitutive_none_init(myFile)
|
||||||
cycle
|
cycle
|
||||||
case ('lattice_structure')
|
case ('lattice_structure')
|
||||||
constitutive_none_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
|
constitutive_none_structureName(i) = IO_lc(IO_stringValue(line,positions,2_pInt))
|
||||||
case ('covera_ratio')
|
|
||||||
constitutive_none_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
|
||||||
case ('c11')
|
case ('c11')
|
||||||
constitutive_none_C11(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_none_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c12')
|
case ('c12')
|
||||||
constitutive_none_C12(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_none_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c13')
|
case ('c13')
|
||||||
constitutive_none_C13(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_none_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c22')
|
||||||
|
constitutive_none_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c23')
|
||||||
|
constitutive_none_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c33')
|
case ('c33')
|
||||||
constitutive_none_C33(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_none_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c44')
|
case ('c44')
|
||||||
constitutive_none_C44(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_none_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c55')
|
||||||
|
constitutive_none_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c66')
|
||||||
|
constitutive_none_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case default
|
case default
|
||||||
call IO_error(210_pInt,ext_msg=tag//' ('//constitutive_none_label//')')
|
call IO_error(210_pInt,ext_msg=tag//' ('//constitutive_none_label//')')
|
||||||
end select
|
end select
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
100 do i = 1_pInt,maxNinstance ! sanity checks
|
100 do i = 1_pInt,maxNinstance
|
||||||
constitutive_none_structure(i) = lattice_initializeStructure(constitutive_none_structureName(i), & ! get structure
|
if (constitutive_none_structureName(i) == '') call IO_error(205_pInt,e=i)
|
||||||
constitutive_none_CoverA(i))
|
|
||||||
myStructure = constitutive_none_structure(i)
|
|
||||||
if (myStructure < 1_pInt) call IO_error(205_pInt,e=i)
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
do i = 1_pInt,maxNinstance
|
do i = 1_pInt,maxNinstance
|
||||||
constitutive_none_sizeDotState(i) = 1_pInt
|
constitutive_none_sizeDotState(i) = 1_pInt
|
||||||
constitutive_none_sizeState(i) = 1_pInt
|
constitutive_none_sizeState(i) = 1_pInt
|
||||||
|
|
||||||
myStructure = constitutive_none_structure(i)
|
constitutive_none_Cslip_66(:,:,i) = lattice_symmetrizeC66(constitutive_none_structureName(i),&
|
||||||
|
constitutive_none_Cslip_66)
|
||||||
select case (lattice_symmetryType(myStructure)) ! assign elasticity tensor
|
|
||||||
case(1_pInt) ! cubic(s)
|
|
||||||
forall(k=1_pInt:3_pInt)
|
|
||||||
forall(j=1_pInt:3_pInt) &
|
|
||||||
constitutive_none_Cslip_66(k,j,i) = constitutive_none_C12(i)
|
|
||||||
constitutive_none_Cslip_66(k,k,i) = constitutive_none_C11(i)
|
|
||||||
constitutive_none_Cslip_66(k+3_pInt,k+3_pInt,i) = constitutive_none_C44(i)
|
|
||||||
end forall
|
|
||||||
case(2_pInt) ! hex
|
|
||||||
constitutive_none_Cslip_66(1,1,i) = constitutive_none_C11(i)
|
|
||||||
constitutive_none_Cslip_66(2,2,i) = constitutive_none_C11(i)
|
|
||||||
constitutive_none_Cslip_66(3,3,i) = constitutive_none_C33(i)
|
|
||||||
constitutive_none_Cslip_66(1,2,i) = constitutive_none_C12(i)
|
|
||||||
constitutive_none_Cslip_66(2,1,i) = constitutive_none_C12(i)
|
|
||||||
constitutive_none_Cslip_66(1,3,i) = constitutive_none_C13(i)
|
|
||||||
constitutive_none_Cslip_66(3,1,i) = constitutive_none_C13(i)
|
|
||||||
constitutive_none_Cslip_66(2,3,i) = constitutive_none_C13(i)
|
|
||||||
constitutive_none_Cslip_66(3,2,i) = constitutive_none_C13(i)
|
|
||||||
constitutive_none_Cslip_66(4,4,i) = constitutive_none_C44(i)
|
|
||||||
constitutive_none_Cslip_66(5,5,i) = constitutive_none_C44(i)
|
|
||||||
constitutive_none_Cslip_66(6,6,i) = 0.5_pReal*(constitutive_none_C11(i)- &
|
|
||||||
constitutive_none_C12(i))
|
|
||||||
end select
|
|
||||||
constitutive_none_Cslip_66(:,:,i) = &
|
constitutive_none_Cslip_66(:,:,i) = &
|
||||||
math_Mandel3333to66(math_Voigt66to3333(constitutive_none_Cslip_66(:,:,i)))
|
math_Mandel3333to66(math_Voigt66to3333(constitutive_none_Cslip_66(:,:,i)))
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ constitutive_nonlocal_output ! name of e
|
||||||
integer(pInt), dimension(:), allocatable, private :: &
|
integer(pInt), dimension(:), allocatable, private :: &
|
||||||
constitutive_nonlocal_Noutput ! number of outputs per instance of this plasticity
|
constitutive_nonlocal_Noutput ! number of outputs per instance of this plasticity
|
||||||
|
|
||||||
character(len=32), dimension(:), allocatable, private :: &
|
character(len=32), dimension(:), allocatable, public :: &
|
||||||
constitutive_nonlocal_structureName ! name of the lattice structure
|
constitutive_nonlocal_structureName ! name of the lattice structure
|
||||||
|
|
||||||
integer(pInt), dimension(:), allocatable, public :: &
|
integer(pInt), dimension(:), allocatable, public :: &
|
||||||
|
@ -104,11 +104,6 @@ constitutive_nonlocal_colinearSystem ! colinear
|
||||||
|
|
||||||
real(pReal), dimension(:), allocatable, private :: &
|
real(pReal), dimension(:), allocatable, private :: &
|
||||||
constitutive_nonlocal_CoverA, & ! c/a ratio for hex type lattice
|
constitutive_nonlocal_CoverA, & ! c/a ratio for hex type lattice
|
||||||
constitutive_nonlocal_C11, & ! C11 element in elasticity matrix
|
|
||||||
constitutive_nonlocal_C12, & ! C12 element in elasticity matrix
|
|
||||||
constitutive_nonlocal_C13, & ! C13 element in elasticity matrix
|
|
||||||
constitutive_nonlocal_C33, & ! C33 element in elasticity matrix
|
|
||||||
constitutive_nonlocal_C44, & ! C44 element in elasticity matrix
|
|
||||||
constitutive_nonlocal_Gmod, & ! shear modulus
|
constitutive_nonlocal_Gmod, & ! shear modulus
|
||||||
constitutive_nonlocal_nu, & ! poisson's ratio
|
constitutive_nonlocal_nu, & ! poisson's ratio
|
||||||
constitutive_nonlocal_atomicVolume, & ! atomic volume
|
constitutive_nonlocal_atomicVolume, & ! atomic volume
|
||||||
|
@ -235,6 +230,7 @@ use lattice, only: lattice_maxNslipFamily, &
|
||||||
lattice_maxNinteraction, &
|
lattice_maxNinteraction, &
|
||||||
lattice_NslipSystem, &
|
lattice_NslipSystem, &
|
||||||
lattice_initializeStructure, &
|
lattice_initializeStructure, &
|
||||||
|
lattice_symmetrizeC66, &
|
||||||
lattice_sd, &
|
lattice_sd, &
|
||||||
lattice_sn, &
|
lattice_sn, &
|
||||||
lattice_st, &
|
lattice_st, &
|
||||||
|
@ -312,11 +308,6 @@ constitutive_nonlocal_slipSystemLattice = 0_pInt
|
||||||
constitutive_nonlocal_totalNslip = 0_pInt
|
constitutive_nonlocal_totalNslip = 0_pInt
|
||||||
|
|
||||||
allocate(constitutive_nonlocal_CoverA(maxNinstance))
|
allocate(constitutive_nonlocal_CoverA(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_C11(maxNinstance))
|
|
||||||
allocate(constitutive_nonlocal_C12(maxNinstance))
|
|
||||||
allocate(constitutive_nonlocal_C13(maxNinstance))
|
|
||||||
allocate(constitutive_nonlocal_C33(maxNinstance))
|
|
||||||
allocate(constitutive_nonlocal_C44(maxNinstance))
|
|
||||||
allocate(constitutive_nonlocal_Gmod(maxNinstance))
|
allocate(constitutive_nonlocal_Gmod(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_nu(maxNinstance))
|
allocate(constitutive_nonlocal_nu(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_atomicVolume(maxNinstance))
|
allocate(constitutive_nonlocal_atomicVolume(maxNinstance))
|
||||||
|
@ -350,11 +341,6 @@ allocate(constitutive_nonlocal_fEdgeMultiplication(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_linetensionEffect(maxNinstance))
|
allocate(constitutive_nonlocal_linetensionEffect(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_edgeJogFactor(maxNinstance))
|
allocate(constitutive_nonlocal_edgeJogFactor(maxNinstance))
|
||||||
constitutive_nonlocal_CoverA = 0.0_pReal
|
constitutive_nonlocal_CoverA = 0.0_pReal
|
||||||
constitutive_nonlocal_C11 = 0.0_pReal
|
|
||||||
constitutive_nonlocal_C12 = 0.0_pReal
|
|
||||||
constitutive_nonlocal_C13 = 0.0_pReal
|
|
||||||
constitutive_nonlocal_C33 = 0.0_pReal
|
|
||||||
constitutive_nonlocal_C44 = 0.0_pReal
|
|
||||||
constitutive_nonlocal_Gmod = 0.0_pReal
|
constitutive_nonlocal_Gmod = 0.0_pReal
|
||||||
constitutive_nonlocal_atomicVolume = 0.0_pReal
|
constitutive_nonlocal_atomicVolume = 0.0_pReal
|
||||||
constitutive_nonlocal_Dsd0 = -1.0_pReal
|
constitutive_nonlocal_Dsd0 = -1.0_pReal
|
||||||
|
@ -445,15 +431,23 @@ do
|
||||||
case ('c/a_ratio','covera_ratio')
|
case ('c/a_ratio','covera_ratio')
|
||||||
constitutive_nonlocal_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_nonlocal_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c11')
|
case ('c11')
|
||||||
constitutive_nonlocal_C11(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_nonlocal_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c12')
|
case ('c12')
|
||||||
constitutive_nonlocal_C12(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_nonlocal_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c13')
|
case ('c13')
|
||||||
constitutive_nonlocal_C13(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_nonlocal_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c22')
|
||||||
|
constitutive_nonlocal_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c23')
|
||||||
|
constitutive_nonlocal_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c33')
|
case ('c33')
|
||||||
constitutive_nonlocal_C33(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_nonlocal_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c44')
|
case ('c44')
|
||||||
constitutive_nonlocal_C44(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_nonlocal_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c55')
|
||||||
|
constitutive_nonlocal_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c66')
|
||||||
|
constitutive_nonlocal_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('nslip')
|
case ('nslip')
|
||||||
forall (f = 1_pInt:lattice_maxNslipFamily) &
|
forall (f = 1_pInt:lattice_maxNslipFamily) &
|
||||||
constitutive_nonlocal_Nslip(f,i) = IO_intValue(line,positions,1_pInt+f)
|
constitutive_nonlocal_Nslip(f,i) = IO_intValue(line,positions,1_pInt+f)
|
||||||
|
@ -850,36 +844,17 @@ do i = 1,maxNinstance
|
||||||
|
|
||||||
!*** elasticity matrix and shear modulus according to material.config
|
!*** elasticity matrix and shear modulus according to material.config
|
||||||
|
|
||||||
select case (myStructure)
|
constitutive_nonlocal_Cslip_66(:,:,i) = lattice_symmetrizeC66(constitutive_nonlocal_structureName(i),&
|
||||||
case(1_pInt:2_pInt) ! cubic(s)
|
constitutive_nonlocal_Cslip_66)
|
||||||
forall(k=1_pInt:3_pInt)
|
constitutive_nonlocal_Gmod(i) = 0.2_pReal * ( constitutive_nonlocal_Cslip_66(1,1,i) - constitutive_nonlocal_Cslip_66(1,2,i) &
|
||||||
forall(j=1_pInt:3_pInt) constitutive_nonlocal_Cslip_66(k,j,i) = constitutive_nonlocal_C12(i)
|
+ 3.0_pReal*constitutive_nonlocal_Cslip_66(4,4,i) ) ! (C11iso-C12iso)/2 with C11iso=(3*C11+2*C12+4*C44)/5 and C12iso=(C11+4*C12-2*C44)/5
|
||||||
constitutive_nonlocal_Cslip_66(k,k,i) = constitutive_nonlocal_C11(i)
|
constitutive_nonlocal_nu(i) = ( constitutive_nonlocal_Cslip_66(1,1,i) + 4.0_pReal*constitutive_nonlocal_Cslip_66(1,2,i) &
|
||||||
constitutive_nonlocal_Cslip_66(k+3_pInt,k+3_pInt,i) = constitutive_nonlocal_C44(i)
|
- 2.0_pReal*constitutive_nonlocal_Cslip_66(1,2,i) ) &
|
||||||
end forall
|
/ ( 4.0_pReal*constitutive_nonlocal_Cslip_66(1,1,i) + 6.0_pReal*constitutive_nonlocal_Cslip_66(1,2,i) &
|
||||||
case(3_pInt:) ! all hex
|
+ 2.0_pReal*constitutive_nonlocal_Cslip_66(4,4,i) )
|
||||||
constitutive_nonlocal_Cslip_66(1,1,i) = constitutive_nonlocal_C11(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(2,2,i) = constitutive_nonlocal_C11(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(3,3,i) = constitutive_nonlocal_C33(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(1,2,i) = constitutive_nonlocal_C12(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(2,1,i) = constitutive_nonlocal_C12(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(1,3,i) = constitutive_nonlocal_C13(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(3,1,i) = constitutive_nonlocal_C13(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(2,3,i) = constitutive_nonlocal_C13(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(3,2,i) = constitutive_nonlocal_C13(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(4,4,i) = constitutive_nonlocal_C44(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(5,5,i) = constitutive_nonlocal_C44(i)
|
|
||||||
constitutive_nonlocal_Cslip_66(6,6,i) = 0.5_pReal*(constitutive_nonlocal_C11(i)- constitutive_nonlocal_C12(i))
|
|
||||||
end select
|
|
||||||
constitutive_nonlocal_Cslip_66(1:6,1:6,i) = math_Mandel3333to66(math_Voigt66to3333(constitutive_nonlocal_Cslip_66(1:6,1:6,i)))
|
constitutive_nonlocal_Cslip_66(1:6,1:6,i) = math_Mandel3333to66(math_Voigt66to3333(constitutive_nonlocal_Cslip_66(1:6,1:6,i)))
|
||||||
constitutive_nonlocal_Cslip_3333(1:3,1:3,1:3,1:3,i) = math_Voigt66to3333(constitutive_nonlocal_Cslip_66(1:6,1:6,i))
|
constitutive_nonlocal_Cslip_3333(1:3,1:3,1:3,1:3,i) = math_Voigt66to3333(constitutive_nonlocal_Cslip_66(1:6,1:6,i))
|
||||||
|
! C12iso/(C11iso+C12iso) with C11iso=(3*C11+2*C12+4*C44)/5 and C12iso=(C11+4*C12-2*C44)/5
|
||||||
constitutive_nonlocal_Gmod(i) = 0.2_pReal * ( constitutive_nonlocal_C11(i) - constitutive_nonlocal_C12(i) &
|
|
||||||
+ 3.0_pReal*constitutive_nonlocal_C44(i) ) ! (C11iso-C12iso)/2 with C11iso=(3*C11+2*C12+4*C44)/5 and C12iso=(C11+4*C12-2*C44)/5
|
|
||||||
constitutive_nonlocal_nu(i) = ( constitutive_nonlocal_C11(i) + 4.0_pReal*constitutive_nonlocal_C12(i) &
|
|
||||||
- 2.0_pReal*constitutive_nonlocal_C44(i) ) &
|
|
||||||
/ ( 4.0_pReal*constitutive_nonlocal_C11(i) + 6.0_pReal*constitutive_nonlocal_C12(i) &
|
|
||||||
+ 2.0_pReal*constitutive_nonlocal_C44(i) ) ! C12iso/(C11iso+C12iso) with C11iso=(3*C11+2*C12+4*C44)/5 and C12iso=(C11+4*C12-2*C44)/5
|
|
||||||
|
|
||||||
do s1 = 1_pInt,ns
|
do s1 = 1_pInt,ns
|
||||||
f = constitutive_nonlocal_slipFamily(s1,i)
|
f = constitutive_nonlocal_slipFamily(s1,i)
|
||||||
|
|
|
@ -53,16 +53,11 @@ module constitutive_phenopowerlaw
|
||||||
character(len=64), dimension(:,:), allocatable, target, public :: &
|
character(len=64), dimension(:,:), allocatable, target, public :: &
|
||||||
constitutive_phenopowerlaw_output !< name of each post result output
|
constitutive_phenopowerlaw_output !< name of each post result output
|
||||||
|
|
||||||
character(len=32), dimension(:), allocatable, private :: &
|
character(len=32), dimension(:), allocatable, public :: &
|
||||||
constitutive_phenopowerlaw_structureName
|
constitutive_phenopowerlaw_structureName
|
||||||
|
|
||||||
real(pReal), dimension(:), allocatable, private :: &
|
real(pReal), dimension(:), allocatable, private :: &
|
||||||
constitutive_phenopowerlaw_CoverA, & !< c/a of the crystal (input parameter)
|
constitutive_phenopowerlaw_CoverA, & !< c/a of the crystal (input parameter)
|
||||||
constitutive_phenopowerlaw_C11, & !< component 11 of the stiffness matrix (input parameter)
|
|
||||||
constitutive_phenopowerlaw_C12, & !< component 12 of the stiffness matrix (input parameter)
|
|
||||||
constitutive_phenopowerlaw_C13, & !< component 13 of the stiffness matrix (input parameter)
|
|
||||||
constitutive_phenopowerlaw_C33, & !< component 33 of the stiffness matrix (input parameter)
|
|
||||||
constitutive_phenopowerlaw_C44, & !< component 44 of the stiffness matrix (input parameter)
|
|
||||||
constitutive_phenopowerlaw_gdot0_slip, & !< reference shear strain rate for slip (input parameter)
|
constitutive_phenopowerlaw_gdot0_slip, & !< reference shear strain rate for slip (input parameter)
|
||||||
constitutive_phenopowerlaw_gdot0_twin, & !< reference shear strain rate for twin (input parameter)
|
constitutive_phenopowerlaw_gdot0_twin, & !< reference shear strain rate for twin (input parameter)
|
||||||
constitutive_phenopowerlaw_n_slip, & !< stress exponent for slip (input parameter)
|
constitutive_phenopowerlaw_n_slip, & !< stress exponent for slip (input parameter)
|
||||||
|
@ -127,7 +122,7 @@ subroutine constitutive_phenopowerlaw_init(myFile)
|
||||||
use debug, only: debug_level,&
|
use debug, only: debug_level,&
|
||||||
debug_constitutive,&
|
debug_constitutive,&
|
||||||
debug_levelBasic
|
debug_levelBasic
|
||||||
use lattice, only: lattice_initializeStructure, lattice_symmetryType, &
|
use lattice, only: lattice_initializeStructure, lattice_symmetrizeC66, &
|
||||||
lattice_maxNslipFamily, lattice_maxNtwinFamily, &
|
lattice_maxNslipFamily, lattice_maxNtwinFamily, &
|
||||||
lattice_maxNinteraction, lattice_NslipSystem, lattice_NtwinSystem, &
|
lattice_maxNinteraction, lattice_NslipSystem, lattice_NtwinSystem, &
|
||||||
lattice_interactionSlipSlip, &
|
lattice_interactionSlipSlip, &
|
||||||
|
@ -182,16 +177,6 @@ subroutine constitutive_phenopowerlaw_init(myFile)
|
||||||
constitutive_phenopowerlaw_totalNtwin = 0_pInt
|
constitutive_phenopowerlaw_totalNtwin = 0_pInt
|
||||||
allocate(constitutive_phenopowerlaw_CoverA(maxNinstance))
|
allocate(constitutive_phenopowerlaw_CoverA(maxNinstance))
|
||||||
constitutive_phenopowerlaw_CoverA = 0.0_pReal
|
constitutive_phenopowerlaw_CoverA = 0.0_pReal
|
||||||
allocate(constitutive_phenopowerlaw_C11(maxNinstance))
|
|
||||||
constitutive_phenopowerlaw_C11 = 0.0_pReal
|
|
||||||
allocate(constitutive_phenopowerlaw_C12(maxNinstance))
|
|
||||||
constitutive_phenopowerlaw_C12 = 0.0_pReal
|
|
||||||
allocate(constitutive_phenopowerlaw_C13(maxNinstance))
|
|
||||||
constitutive_phenopowerlaw_C13 = 0.0_pReal
|
|
||||||
allocate(constitutive_phenopowerlaw_C33(maxNinstance))
|
|
||||||
constitutive_phenopowerlaw_C33 = 0.0_pReal
|
|
||||||
allocate(constitutive_phenopowerlaw_C44(maxNinstance))
|
|
||||||
constitutive_phenopowerlaw_C44 = 0.0_pReal
|
|
||||||
allocate(constitutive_phenopowerlaw_Cslip_66(6,6,maxNinstance))
|
allocate(constitutive_phenopowerlaw_Cslip_66(6,6,maxNinstance))
|
||||||
constitutive_phenopowerlaw_Cslip_66 = 0.0_pReal
|
constitutive_phenopowerlaw_Cslip_66 = 0.0_pReal
|
||||||
allocate(constitutive_phenopowerlaw_gdot0_slip(maxNinstance))
|
allocate(constitutive_phenopowerlaw_gdot0_slip(maxNinstance))
|
||||||
|
@ -274,15 +259,23 @@ subroutine constitutive_phenopowerlaw_init(myFile)
|
||||||
case ('covera_ratio')
|
case ('covera_ratio')
|
||||||
constitutive_phenopowerlaw_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c11')
|
case ('c11')
|
||||||
constitutive_phenopowerlaw_C11(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c12')
|
case ('c12')
|
||||||
constitutive_phenopowerlaw_C12(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c13')
|
case ('c13')
|
||||||
constitutive_phenopowerlaw_C13(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c22')
|
||||||
|
constitutive_phenopowerlaw_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c23')
|
||||||
|
constitutive_phenopowerlaw_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c33')
|
case ('c33')
|
||||||
constitutive_phenopowerlaw_C33(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c44')
|
case ('c44')
|
||||||
constitutive_phenopowerlaw_C44(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c55')
|
||||||
|
constitutive_phenopowerlaw_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('c66')
|
||||||
|
constitutive_phenopowerlaw_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('nslip')
|
case ('nslip')
|
||||||
forall (j = 1_pInt:lattice_maxNslipFamily)&
|
forall (j = 1_pInt:lattice_maxNslipFamily)&
|
||||||
constitutive_phenopowerlaw_Nslip(j,i) = IO_intValue(line,positions,1_pInt+j)
|
constitutive_phenopowerlaw_Nslip(j,i) = IO_intValue(line,positions,1_pInt+j)
|
||||||
|
@ -448,29 +441,9 @@ subroutine constitutive_phenopowerlaw_init(myFile)
|
||||||
|
|
||||||
myStructure = constitutive_phenopowerlaw_structure(i)
|
myStructure = constitutive_phenopowerlaw_structure(i)
|
||||||
|
|
||||||
select case (lattice_symmetryType(myStructure)) ! assign elasticity tensor
|
constitutive_phenopowerlaw_Cslip_66(:,:,i) = lattice_symmetrizeC66(constitutive_phenopowerlaw_structureName(i),&
|
||||||
case(1_pInt) ! cubic(s)
|
constitutive_phenopowerlaw_Cslip_66)
|
||||||
forall(k=1_pInt:3_pInt)
|
! assign elasticity tensor
|
||||||
forall(j=1_pInt:3_pInt) &
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(k,j,i) = constitutive_phenopowerlaw_C12(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(k,k,i) = constitutive_phenopowerlaw_C11(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(k+3_pInt,k+3_pInt,i) = constitutive_phenopowerlaw_C44(i)
|
|
||||||
end forall
|
|
||||||
case(2_pInt) ! hex
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(1,1,i) = constitutive_phenopowerlaw_C11(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(2,2,i) = constitutive_phenopowerlaw_C11(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(3,3,i) = constitutive_phenopowerlaw_C33(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(1,2,i) = constitutive_phenopowerlaw_C12(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(2,1,i) = constitutive_phenopowerlaw_C12(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(1,3,i) = constitutive_phenopowerlaw_C13(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(3,1,i) = constitutive_phenopowerlaw_C13(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(2,3,i) = constitutive_phenopowerlaw_C13(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(3,2,i) = constitutive_phenopowerlaw_C13(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(4,4,i) = constitutive_phenopowerlaw_C44(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(5,5,i) = constitutive_phenopowerlaw_C44(i)
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(6,6,i) = 0.5_pReal*(constitutive_phenopowerlaw_C11(i)- &
|
|
||||||
constitutive_phenopowerlaw_C12(i))
|
|
||||||
end select
|
|
||||||
constitutive_phenopowerlaw_Cslip_66(:,:,i) = &
|
constitutive_phenopowerlaw_Cslip_66(:,:,i) = &
|
||||||
math_Mandel3333to66(math_Voigt66to3333(constitutive_phenopowerlaw_Cslip_66(:,:,i)))
|
math_Mandel3333to66(math_Voigt66to3333(constitutive_phenopowerlaw_Cslip_66(:,:,i)))
|
||||||
|
|
||||||
|
|
|
@ -114,11 +114,6 @@ integer(pInt), dimension(:,:), allocatable :: &
|
||||||
|
|
||||||
real(pReal), dimension(:), allocatable :: &
|
real(pReal), dimension(:), allocatable :: &
|
||||||
constitutive_titanmod_CoverA, & ! c/a ratio for hex type lattice
|
constitutive_titanmod_CoverA, & ! c/a ratio for hex type lattice
|
||||||
constitutive_titanmod_C11, & ! C11 element in elasticity matrix
|
|
||||||
constitutive_titanmod_C12, & ! C12 element in elasticity matrix
|
|
||||||
constitutive_titanmod_C13, & ! C13 element in elasticity matrix
|
|
||||||
constitutive_titanmod_C33, & ! C33 element in elasticity matrix
|
|
||||||
constitutive_titanmod_C44, & ! C44 element in elasticity matrix
|
|
||||||
constitutive_titanmod_debyefrequency, & !Debye frequency
|
constitutive_titanmod_debyefrequency, & !Debye frequency
|
||||||
constitutive_titanmod_kinkf0, & !Debye frequency
|
constitutive_titanmod_kinkf0, & !Debye frequency
|
||||||
constitutive_titanmod_Gmod, & ! shear modulus
|
constitutive_titanmod_Gmod, & ! shear modulus
|
||||||
|
@ -298,16 +293,6 @@ allocate(constitutive_titanmod_totalNtwin(maxNinstance))
|
||||||
constitutive_titanmod_totalNtwin = 0_pInt
|
constitutive_titanmod_totalNtwin = 0_pInt
|
||||||
allocate(constitutive_titanmod_CoverA(maxNinstance))
|
allocate(constitutive_titanmod_CoverA(maxNinstance))
|
||||||
constitutive_titanmod_CoverA = 0.0_pReal
|
constitutive_titanmod_CoverA = 0.0_pReal
|
||||||
allocate(constitutive_titanmod_C11(maxNinstance))
|
|
||||||
constitutive_titanmod_C11 = 0.0_pReal
|
|
||||||
allocate(constitutive_titanmod_C12(maxNinstance))
|
|
||||||
constitutive_titanmod_C12 = 0.0_pReal
|
|
||||||
allocate(constitutive_titanmod_C13(maxNinstance))
|
|
||||||
constitutive_titanmod_C13 = 0.0_pReal
|
|
||||||
allocate(constitutive_titanmod_C33(maxNinstance))
|
|
||||||
constitutive_titanmod_C33 = 0.0_pReal
|
|
||||||
allocate(constitutive_titanmod_C44(maxNinstance))
|
|
||||||
constitutive_titanmod_C44 = 0.0_pReal
|
|
||||||
allocate(constitutive_titanmod_debyefrequency(maxNinstance))
|
allocate(constitutive_titanmod_debyefrequency(maxNinstance))
|
||||||
constitutive_titanmod_debyefrequency = 0.0_pReal
|
constitutive_titanmod_debyefrequency = 0.0_pReal
|
||||||
allocate(constitutive_titanmod_kinkf0(maxNinstance))
|
allocate(constitutive_titanmod_kinkf0(maxNinstance))
|
||||||
|
@ -446,20 +431,32 @@ enddo
|
||||||
constitutive_titanmod_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_titanmod_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
write(6,*) tag,constitutive_titanmod_CoverA(i)
|
write(6,*) tag,constitutive_titanmod_CoverA(i)
|
||||||
case ('c11')
|
case ('c11')
|
||||||
constitutive_titanmod_C11(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_titanmod_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
write(6,*) tag,constitutive_titanmod_C11(i)
|
write(6,*) tag,constitutive_titanmod_Cslip_66(1,1,i)
|
||||||
case ('c12')
|
case ('c12')
|
||||||
constitutive_titanmod_C12(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_titanmod_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
write(6,*) tag,constitutive_titanmod_C12(i)
|
write(6,*) tag,constitutive_titanmod_Cslip_66(1,1,i)
|
||||||
case ('c13')
|
case ('c13')
|
||||||
constitutive_titanmod_C13(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_titanmod_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
write(6,*) tag,constitutive_titanmod_C13(i)
|
write(6,*) tag,constitutive_titanmod_Cslip_66(1,1,i)
|
||||||
|
case ('c22')
|
||||||
|
constitutive_titanmod_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
write(6,*) tag,constitutive_titanmod_Cslip_66(2,2,i)
|
||||||
|
case ('c23')
|
||||||
|
constitutive_titanmod_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
write(6,*) tag,constitutive_titanmod_Cslip_66(2,3,i)
|
||||||
case ('c33')
|
case ('c33')
|
||||||
constitutive_titanmod_C33(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_titanmod_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
write(6,*) tag,constitutive_titanmod_C33(i)
|
write(6,*) tag,constitutive_titanmod_Cslip_66(3,3,i)
|
||||||
case ('c44')
|
case ('c44')
|
||||||
constitutive_titanmod_C44(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_titanmod_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
write(6,*) tag,constitutive_titanmod_C44(i)
|
write(6,*) tag,constitutive_titanmod_Cslip_66(4,4,i)
|
||||||
|
case ('c55')
|
||||||
|
constitutive_titanmod_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
write(6,*) tag,constitutive_titanmod_Cslip_66(5,5,i)
|
||||||
|
case ('c66')
|
||||||
|
constitutive_titanmod_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
write(6,*) tag,constitutive_titanmod_Cslip_66(6,6,i)
|
||||||
case ('debyefrequency')
|
case ('debyefrequency')
|
||||||
constitutive_titanmod_debyefrequency(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_titanmod_debyefrequency(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
write(6,*) tag,constitutive_titanmod_debyefrequency(i)
|
write(6,*) tag,constitutive_titanmod_debyefrequency(i)
|
||||||
|
@ -870,32 +867,12 @@ do i = 1_pInt,maxNinstance
|
||||||
write(6,*) 'Determining elasticity matrix'
|
write(6,*) 'Determining elasticity matrix'
|
||||||
|
|
||||||
!* Elasticity matrix and shear modulus according to material.config
|
!* Elasticity matrix and shear modulus according to material.config
|
||||||
select case (myStructure)
|
constitutive_titanmod_Cslip_66(:,:,i) = lattice_symmetrizeC66(constitutive_titanmod_structureName(i),&
|
||||||
case(1_pInt:2_pInt) ! cubic(s)
|
constitutive_titanmod_Cslip_66)
|
||||||
forall(k=1_pInt:3_pInt)
|
constitutive_titanmod_Gmod(i) = &
|
||||||
forall(j=1_pInt:3_pInt) &
|
0.2_pReal*(constitutive_titanmod_Cslip_66(1,1,i)-constitutive_titanmod_Cslip_66(1,2,i))+0.3_pReal*constitutive_titanmod_Cslip_66(4,4,i)
|
||||||
constitutive_titanmod_Cslip_66(k,j,i) = constitutive_titanmod_C12(i)
|
|
||||||
constitutive_titanmod_Cslip_66(k,k,i) = constitutive_titanmod_C11(i)
|
|
||||||
constitutive_titanmod_Cslip_66(k+3_pInt,k+3_pInt,i) = constitutive_titanmod_C44(i)
|
|
||||||
end forall
|
|
||||||
case(3_pInt:) ! all hex
|
|
||||||
constitutive_titanmod_Cslip_66(1,1,i) = constitutive_titanmod_C11(i)
|
|
||||||
constitutive_titanmod_Cslip_66(2,2,i) = constitutive_titanmod_C11(i)
|
|
||||||
constitutive_titanmod_Cslip_66(3,3,i) = constitutive_titanmod_C33(i)
|
|
||||||
constitutive_titanmod_Cslip_66(1,2,i) = constitutive_titanmod_C12(i)
|
|
||||||
constitutive_titanmod_Cslip_66(2,1,i) = constitutive_titanmod_C12(i)
|
|
||||||
constitutive_titanmod_Cslip_66(1,3,i) = constitutive_titanmod_C13(i)
|
|
||||||
constitutive_titanmod_Cslip_66(3,1,i) = constitutive_titanmod_C13(i)
|
|
||||||
constitutive_titanmod_Cslip_66(2,3,i) = constitutive_titanmod_C13(i)
|
|
||||||
constitutive_titanmod_Cslip_66(3,2,i) = constitutive_titanmod_C13(i)
|
|
||||||
constitutive_titanmod_Cslip_66(4,4,i) = constitutive_titanmod_C44(i)
|
|
||||||
constitutive_titanmod_Cslip_66(5,5,i) = constitutive_titanmod_C44(i)
|
|
||||||
constitutive_titanmod_Cslip_66(6,6,i) = 0.5_pReal*(constitutive_titanmod_C11(i)-constitutive_titanmod_C12(i))
|
|
||||||
end select
|
|
||||||
constitutive_titanmod_Cslip_66(:,:,i) = math_Mandel3333to66(math_Voigt66to3333(constitutive_titanmod_Cslip_66(:,:,i)))
|
constitutive_titanmod_Cslip_66(:,:,i) = math_Mandel3333to66(math_Voigt66to3333(constitutive_titanmod_Cslip_66(:,:,i)))
|
||||||
constitutive_titanmod_Cslip_3333(:,:,:,:,i) = math_Voigt66to3333(constitutive_titanmod_Cslip_66(:,:,i))
|
constitutive_titanmod_Cslip_3333(:,:,:,:,i) = math_Voigt66to3333(constitutive_titanmod_Cslip_66(:,:,i))
|
||||||
constitutive_titanmod_Gmod(i) = &
|
|
||||||
0.2_pReal*(constitutive_titanmod_C11(i)-constitutive_titanmod_C12(i))+0.3_pReal*constitutive_titanmod_C44(i)
|
|
||||||
|
|
||||||
!* Construction of the twin elasticity matrices
|
!* Construction of the twin elasticity matrices
|
||||||
do j=1_pInt,lattice_maxNtwinFamily
|
do j=1_pInt,lattice_maxNtwinFamily
|
||||||
|
|
|
@ -139,13 +139,13 @@ subroutine crystallite_init(Temperature)
|
||||||
|
|
||||||
use constitutive, only: constitutive_microstructure
|
use constitutive, only: constitutive_microstructure
|
||||||
use constitutive_phenopowerlaw, only: constitutive_phenopowerlaw_label, &
|
use constitutive_phenopowerlaw, only: constitutive_phenopowerlaw_label, &
|
||||||
constitutive_phenopowerlaw_structure
|
constitutive_phenopowerlaw_structureName
|
||||||
use constitutive_titanmod, only: constitutive_titanmod_label, &
|
use constitutive_titanmod, only: constitutive_titanmod_label, &
|
||||||
constitutive_titanmod_structure
|
constitutive_titanmod_structureName
|
||||||
use constitutive_dislotwin, only: constitutive_dislotwin_label, &
|
use constitutive_dislotwin, only: constitutive_dislotwin_label, &
|
||||||
constitutive_dislotwin_structure
|
constitutive_dislotwin_structureName
|
||||||
use constitutive_nonlocal, only: constitutive_nonlocal_label, &
|
use constitutive_nonlocal, only: constitutive_nonlocal_label, &
|
||||||
constitutive_nonlocal_structure
|
constitutive_nonlocal_structureName
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), parameter :: myFile = 200_pInt, &
|
integer(pInt), parameter :: myFile = 200_pInt, &
|
||||||
|
@ -169,7 +169,6 @@ subroutine crystallite_init(Temperature)
|
||||||
p, &
|
p, &
|
||||||
output, &
|
output, &
|
||||||
mySize, &
|
mySize, &
|
||||||
myStructure, & ! lattice structure
|
|
||||||
myPhase, &
|
myPhase, &
|
||||||
myMat
|
myMat
|
||||||
character(len=64) tag
|
character(len=64) tag
|
||||||
|
@ -351,19 +350,16 @@ do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
||||||
myMat = phase_plasticityInstance(myPhase)
|
myMat = phase_plasticityInstance(myPhase)
|
||||||
select case (phase_plasticity(myPhase))
|
select case (phase_plasticity(myPhase))
|
||||||
case (constitutive_phenopowerlaw_label)
|
case (constitutive_phenopowerlaw_label)
|
||||||
myStructure = constitutive_phenopowerlaw_structure(myMat)
|
crystallite_symmetryID(g,i,e) = lattice_symmetryType(constitutive_phenopowerlaw_structureName(myMat))
|
||||||
case (constitutive_titanmod_label)
|
case (constitutive_titanmod_label)
|
||||||
myStructure = constitutive_titanmod_structure(myMat)
|
crystallite_symmetryID(g,i,e) = lattice_symmetryType(constitutive_titanmod_structureName(myMat))
|
||||||
case (constitutive_dislotwin_label)
|
case (constitutive_dislotwin_label)
|
||||||
myStructure = constitutive_dislotwin_structure(myMat)
|
crystallite_symmetryID(g,i,e) = lattice_symmetryType(constitutive_dislotwin_structureName(myMat))
|
||||||
case (constitutive_nonlocal_label)
|
case (constitutive_nonlocal_label)
|
||||||
myStructure = constitutive_nonlocal_structure(myMat)
|
crystallite_symmetryID(g,i,e) = lattice_symmetryType(constitutive_nonlocal_structureName(myMat))
|
||||||
case default
|
case default
|
||||||
myStructure = -1_pInt ! does this happen for j2 material?
|
crystallite_symmetryID(g,i,e) = 0_pInt ! does this happen for j2 material?
|
||||||
end select
|
end select
|
||||||
if (myStructure > 0_pInt) then
|
|
||||||
crystallite_symmetryID(g,i,e) = lattice_symmetryType(myStructure) ! structure = 1(fcc) or 2(bcc) => 1; 3(hex)=>2
|
|
||||||
endif
|
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
|
@ -681,7 +681,8 @@ module lattice
|
||||||
public :: &
|
public :: &
|
||||||
lattice_init, &
|
lattice_init, &
|
||||||
lattice_initializeStructure, &
|
lattice_initializeStructure, &
|
||||||
lattice_symmetryType
|
lattice_symmetryType, &
|
||||||
|
lattice_symmetrizeC66
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -690,15 +691,15 @@ contains
|
||||||
!> @brief Maps structure to symmetry type
|
!> @brief Maps structure to symmetry type
|
||||||
!> @details fcc(1) and bcc(2) are cubic(1) hex(3+) is hexagonal(2)
|
!> @details fcc(1) and bcc(2) are cubic(1) hex(3+) is hexagonal(2)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
integer(pInt) pure function lattice_symmetryType(structID)
|
integer(pInt) pure function lattice_symmetryType(structName)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: structID
|
character(len=32), intent(in) :: structName
|
||||||
|
|
||||||
select case(structID)
|
select case(structName(1:3))
|
||||||
case (1_pInt,2_pInt)
|
case ('fcc','bcc')
|
||||||
lattice_symmetryType = 1_pInt
|
lattice_symmetryType = 1_pInt
|
||||||
case (3_pInt:)
|
case ('hex')
|
||||||
lattice_symmetryType = 2_pInt
|
lattice_symmetryType = 2_pInt
|
||||||
case default
|
case default
|
||||||
lattice_symmetryType = 0_pInt
|
lattice_symmetryType = 0_pInt
|
||||||
|
@ -709,6 +710,70 @@ integer(pInt) pure function lattice_symmetryType(structID)
|
||||||
end function lattice_symmetryType
|
end function lattice_symmetryType
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief Symmetrizes stiffness matrix according to lattice type
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
pure function lattice_symmetrizeC66(structName,C66)
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
character(len=32), intent(in) :: structName
|
||||||
|
real(pReal), dimension(6,6), intent(in) :: C66
|
||||||
|
real(pReal), dimension(6,6) :: lattice_symmetrizeC66
|
||||||
|
integer(pInt) :: j,k
|
||||||
|
|
||||||
|
lattice_symmetrizeC66 = 0.0_pReal
|
||||||
|
|
||||||
|
select case(structName(1:3))
|
||||||
|
case ('iso')
|
||||||
|
forall(k=1_pInt:3_pInt)
|
||||||
|
forall(j=1_pInt:3_pInt)
|
||||||
|
lattice_symmetrizeC66(k,j) = C66(1,2)
|
||||||
|
end forall
|
||||||
|
lattice_symmetrizeC66(k,k) = C66(1,1)
|
||||||
|
lattice_symmetrizeC66(k+3,k+3) = 0.5_pReal*(C66(1,1)-C66(1,2))
|
||||||
|
end forall
|
||||||
|
case ('fcc','bcc')
|
||||||
|
forall(k=1_pInt:3_pInt)
|
||||||
|
forall(j=1_pInt:3_pInt)
|
||||||
|
lattice_symmetrizeC66(k,j) = C66(1,2)
|
||||||
|
lattice_symmetrizeC66(k,k) = C66(1,1)
|
||||||
|
lattice_symmetrizeC66(k+3_pInt,k+3_pInt) = C66(4,4)
|
||||||
|
end forall
|
||||||
|
end forall
|
||||||
|
case ('hex')
|
||||||
|
lattice_symmetrizeC66(1,1) = C66(1,1)
|
||||||
|
lattice_symmetrizeC66(2,2) = C66(1,1)
|
||||||
|
lattice_symmetrizeC66(3,3) = C66(3,3)
|
||||||
|
lattice_symmetrizeC66(1,2) = C66(1,2)
|
||||||
|
lattice_symmetrizeC66(2,1) = C66(1,2)
|
||||||
|
lattice_symmetrizeC66(1,3) = C66(1,3)
|
||||||
|
lattice_symmetrizeC66(3,1) = C66(1,3)
|
||||||
|
lattice_symmetrizeC66(2,3) = C66(1,3)
|
||||||
|
lattice_symmetrizeC66(3,2) = C66(1,3)
|
||||||
|
lattice_symmetrizeC66(4,4) = C66(4,4)
|
||||||
|
lattice_symmetrizeC66(5,5) = C66(4,4)
|
||||||
|
lattice_symmetrizeC66(6,6) = 0.5_pReal*(C66(1,1)-C66(1,2))
|
||||||
|
case ('ort')
|
||||||
|
lattice_symmetrizeC66(1,1) = C66(1,1)
|
||||||
|
lattice_symmetrizeC66(2,2) = C66(2,2)
|
||||||
|
lattice_symmetrizeC66(3,3) = C66(3,3)
|
||||||
|
lattice_symmetrizeC66(1,2) = C66(1,2)
|
||||||
|
lattice_symmetrizeC66(2,1) = C66(1,2)
|
||||||
|
lattice_symmetrizeC66(1,3) = C66(1,3)
|
||||||
|
lattice_symmetrizeC66(3,1) = C66(1,3)
|
||||||
|
lattice_symmetrizeC66(2,3) = C66(2,3)
|
||||||
|
lattice_symmetrizeC66(3,2) = C66(2,3)
|
||||||
|
lattice_symmetrizeC66(4,4) = C66(4,4)
|
||||||
|
lattice_symmetrizeC66(5,5) = C66(5,5)
|
||||||
|
lattice_symmetrizeC66(6,6) = C66(6,6)
|
||||||
|
end select
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
end function lattice_symmetrizeC66
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Module initialization
|
!> @brief Module initialization
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue