introduced new keyword 'rotation' to specify texture rotation

ATTENTION: so far it is read but NOT yet applied!!!
waiting for updated code for orientation assignement
This commit is contained in:
Franz Roters 2013-05-02 08:35:37 +00:00
parent 294428e01b
commit d2416abdb4
3 changed files with 35 additions and 3 deletions

View File

@ -1447,6 +1447,8 @@ subroutine IO_error(error_ID,e,i,g,ext_msg)
msg = 'microstructure index out of bounds' msg = 'microstructure index out of bounds'
case (156_pInt) case (156_pInt)
msg = 'reading from ODF file' msg = 'reading from ODF file'
case (157_pInt)
msg = 'illegal texture rotation specified'
case (160_pInt) case (160_pInt)
msg = 'no entries in config part' msg = 'no entries in config part'
case (170_pInt) case (170_pInt)

View File

@ -455,11 +455,12 @@ dSFE_dT 0.0002 # temperature dependance of stacking fault e
#-------------------# #-------------------#
<texture> <texture>
#-------------------# #-------------------#
#/echo/ # uncomment to output texture part #/echo/ # uncomment to output texture part
[Rolling] [Rolling]
hybridIA DP_EBSD.linearODF hybridIA DP_EBSD.linearODF
symmetry orthotropic # or monoclinic symmetry orthotropic # or monoclinic
rotation x +z -y # model coordinate x-, y-, z-axis correspond to which axis during texture measurement?
[random] [random]
@ -476,6 +477,7 @@ symmetry orthotropic # or monoclinic
(gauss) phi1 209.805 Phi 29.206 phi2 63.435 scatter 0.000 fraction 1.000 (gauss) phi1 209.805 Phi 29.206 phi2 63.435 scatter 0.000 fraction 1.000
[fiber example] [fiber example]
rotation x y -z # model coordinate x-, y-, z-axis correspond to which axis during texture measurement? this was a left handed coordinate system!
# fiber axis in spherical coordinates: alpha crystal system, beta sample system # fiber axis in spherical coordinates: alpha crystal system, beta sample system
(fiber) alpha1 123 alpha2 123 beta1 12 beta2 45 scatter 15 fraction 0.333 (fiber) alpha1 123 alpha2 123 beta1 12 beta2 45 scatter 15 fraction 0.333

View File

@ -115,7 +115,8 @@ module material
real(pReal), dimension(:,:,:), allocatable, private :: & real(pReal), dimension(:,:,:), allocatable, private :: &
material_volume, & !< volume of each grain,IP,element material_volume, & !< volume of each grain,IP,element
texture_Gauss, & !< data of each Gauss component texture_Gauss, & !< data of each Gauss component
texture_Fiber !< data of each Fiber component texture_Fiber, & !< data of each Fiber component
texture_Rotation !< rotation of each texture
logical, dimension(:), allocatable, private :: & logical, dimension(:), allocatable, private :: &
homogenization_active homogenization_active
@ -567,7 +568,9 @@ subroutine material_parseTexture(myFile,myPart)
IO_stringPos IO_stringPos
use math, only: & use math, only: &
inRad, & inRad, &
math_sampleRandomOri math_sampleRandomOri, &
math_I3, &
math_inv33
implicit none implicit none
character(len=*), intent(in) :: myPart character(len=*), intent(in) :: myPart
@ -600,6 +603,10 @@ subroutine material_parseTexture(myFile,myPart)
texture_maxNfiber = maxval(texture_Nfiber) texture_maxNfiber = maxval(texture_Nfiber)
allocate(texture_Gauss (5,texture_maxNgauss,Nsections)); texture_Gauss = 0.0_pReal allocate(texture_Gauss (5,texture_maxNgauss,Nsections)); texture_Gauss = 0.0_pReal
allocate(texture_Fiber (6,texture_maxNfiber,Nsections)); texture_Fiber = 0.0_pReal allocate(texture_Fiber (6,texture_maxNfiber,Nsections)); texture_Fiber = 0.0_pReal
allocate(texture_Rotation(3,3,Nsections));
do j =1_pInt, Nsections
texture_Rotation(1:3,1:3,j) = math_I3
enddo
rewind(myFile) rewind(myFile)
line = '' ! to have in initialized line = '' ! to have in initialized
@ -628,6 +635,27 @@ subroutine material_parseTexture(myFile,myPart)
tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key
textureType: select case(tag) textureType: select case(tag)
case ('rotation') textureType
do j = 1_pInt, 3_pInt
tag = IO_lc(IO_stringValue(line,positions,j+1_pInt))
select case (tag)
case('x', '+x')
texture_Rotation(1_pInt:3_pInt,j,section) = (/1.0_pReal, 0.0_pReal, 0.0_pReal/) ! original axis is now +x-axis
case('-x')
texture_Rotation(1_pInt:3_pInt,j,section) = (/-1.0_pReal, 0.0_pReal, 0.0_pReal/) ! original axis is now -x-axis
case('y', '+y')
texture_Rotation(1_pInt:3_pInt,j,section) = (/0.0_pReal, 1.0_pReal, 0.0_pReal/) ! original axis is now +y-axis
case('-y')
texture_Rotation(1_pInt:3_pInt,j,section) = (/0.0_pReal, -1.0_pReal, 0.0_pReal/) ! original axis is now -y-axis
case('z', '+z')
texture_Rotation(1_pInt:3_pInt,j,section) = (/0.0_pReal, 0.0_pReal, 1.0_pReal/) ! original axis is now +z-axis
case('-z')
texture_Rotation(1_pInt:3_pInt,j,section) = (/0.0_pReal, 0.0_pReal, -1.0_pReal/) ! original axis is now -z-axis
case default
call IO_error(156_pInt)
end select
enddo
case ('hybridia') textureType case ('hybridia') textureType
texture_ODFfile(section) = IO_stringValue(line,positions,2_pInt) texture_ODFfile(section) = IO_stringValue(line,positions,2_pInt)