complex orientation initialization conflicts with phase field
- easier to do as pre processing (python) - ensures same solution independently of random number
This commit is contained in:
parent
43a59a5e9f
commit
0335207956
|
@ -382,13 +382,6 @@ Phenopowerlaw_singleSlip:
|
|||
- master
|
||||
- release
|
||||
|
||||
TextureComponents:
|
||||
stage: grid
|
||||
script: TextureComponents/test.py
|
||||
except:
|
||||
- master
|
||||
- release
|
||||
|
||||
|
||||
###################################################################################################
|
||||
Marc_compileIfort2018_1:
|
||||
|
|
|
@ -708,6 +708,8 @@ subroutine IO_error(error_ID,el,ip,g,instance,ext_msg)
|
|||
msg = 'too many systems requested'
|
||||
case (146_pInt)
|
||||
msg = 'number of values does not match'
|
||||
case (147_pInt)
|
||||
msg = 'not supported anymore'
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! material error messages and related messages in mesh
|
||||
|
|
|
@ -856,34 +856,9 @@ subroutine material_parseTexture
|
|||
if(dNeq(math_det33(texture_transformation(1:3,1:3,t)),1.0_pReal)) call IO_error(157_pInt,t)
|
||||
endif
|
||||
|
||||
if (config_texture(t)%keyExists('symmetry')) then
|
||||
select case (config_texture(t)%getString('symmetry'))
|
||||
case('orthotropic')
|
||||
texture_symmetry(t) = 4_pInt
|
||||
case('monoclinic')
|
||||
texture_symmetry(t) = 2_pInt
|
||||
case default
|
||||
texture_symmetry(t) = 1_pInt
|
||||
end select
|
||||
endif
|
||||
|
||||
if (config_texture(t)%keyExists('(random)')) then
|
||||
strings = config_texture(t)%getStrings('(random)',raw=.true.)
|
||||
do i = 1_pInt, size(strings)
|
||||
gauss = gauss + 1_pInt
|
||||
texture_Gauss(1:3,gauss,t) = math_sampleRandomOri()
|
||||
chunkPos = IO_stringPos(strings(i))
|
||||
do j = 1_pInt,3_pInt,2_pInt
|
||||
select case (IO_stringValue(strings(i),chunkPos,j))
|
||||
case('scatter')
|
||||
texture_Gauss(4,gauss,t) = IO_floatValue(strings(i),chunkPos,j+1_pInt)*inRad
|
||||
case('fraction')
|
||||
texture_Gauss(5,gauss,t) = IO_floatValue(strings(i),chunkPos,j+1_pInt)
|
||||
end select
|
||||
enddo
|
||||
enddo
|
||||
endif
|
||||
|
||||
if (config_texture(t)%keyExists('symmetry')) call IO_error(147,ext_msg='symmetry')
|
||||
if (config_texture(t)%keyExists('(random)')) call IO_error(147,ext_msg='(random)')
|
||||
if (config_texture(t)%keyExists('(fiber)')) call IO_error(147,ext_msg='(fiber)')
|
||||
|
||||
if (config_texture(t)%keyExists('(gauss)')) then
|
||||
gauss = gauss + 1_pInt
|
||||
|
@ -906,31 +881,6 @@ subroutine material_parseTexture
|
|||
enddo
|
||||
enddo
|
||||
endif
|
||||
|
||||
|
||||
if (config_texture(t)%keyExists('(fiber)')) then
|
||||
fiber = fiber + 1_pInt
|
||||
strings = config_texture(t)%getStrings('(fiber)',raw= .true.)
|
||||
do i = 1_pInt, size(strings)
|
||||
chunkPos = IO_stringPos(strings(i))
|
||||
do j = 1_pInt,11_pInt,2_pInt
|
||||
select case (IO_stringValue(strings(i),chunkPos,j))
|
||||
case('alpha1')
|
||||
texture_Fiber(1,fiber,t) = IO_floatValue(strings(i),chunkPos,j+1_pInt)*inRad
|
||||
case('alpha2')
|
||||
texture_Fiber(2,fiber,t) = IO_floatValue(strings(i),chunkPos,j+1_pInt)*inRad
|
||||
case('beta1')
|
||||
texture_Fiber(3,fiber,t) = IO_floatValue(strings(i),chunkPos,j+1_pInt)*inRad
|
||||
case('beta2')
|
||||
texture_Fiber(4,fiber,t) = IO_floatValue(strings(i),chunkPos,j+1_pInt)*inRad
|
||||
case('scatter')
|
||||
texture_Fiber(5,fiber,t) = IO_floatValue(strings(i),chunkPos,j+1_pInt)*inRad
|
||||
case('fraction')
|
||||
texture_Fiber(6,fiber,t) = IO_floatValue(strings(i),chunkPos,j+1_pInt)
|
||||
end select
|
||||
enddo
|
||||
enddo
|
||||
endif
|
||||
enddo
|
||||
|
||||
call config_deallocate('material.config/texture')
|
||||
|
@ -1040,11 +990,7 @@ subroutine material_populateGrains
|
|||
math_RtoEuler, &
|
||||
math_EulerToR, &
|
||||
math_mul33x33, &
|
||||
math_range, &
|
||||
math_sampleRandomOri, &
|
||||
math_sampleGaussOri, &
|
||||
math_sampleFiberOri, &
|
||||
math_symmetricEulers
|
||||
math_range
|
||||
use mesh, only: &
|
||||
theMesh, &
|
||||
mesh_ipVolume
|
||||
|
@ -1226,28 +1172,12 @@ subroutine material_populateGrains
|
|||
! has texture components
|
||||
gauss: do t = 1_pInt,texture_Ngauss(textureID) ! loop over Gauss components
|
||||
do g = 1_pInt,int(real(myNorientations,pReal)*texture_Gauss(5,t,textureID),pInt) ! loop over required grain count
|
||||
orientationOfGrain(:,grain+constituentGrain+g) = &
|
||||
math_sampleGaussOri(texture_Gauss(1:3,t,textureID),&
|
||||
texture_Gauss( 4,t,textureID))
|
||||
orientationOfGrain(:,grain+constituentGrain+g) = texture_Gauss(1:3,t,textureID)
|
||||
enddo
|
||||
constituentGrain = &
|
||||
constituentGrain + int(real(myNorientations,pReal)*texture_Gauss(5,t,textureID)) ! advance counter for grains of current constituent
|
||||
enddo gauss
|
||||
|
||||
fiber: do t = 1_pInt,texture_Nfiber(textureID) ! loop over fiber components
|
||||
do g = 1_pInt,int(real(myNorientations,pReal)*texture_Fiber(6,t,textureID),pInt) ! loop over required grain count
|
||||
orientationOfGrain(:,grain+constituentGrain+g) = &
|
||||
math_sampleFiberOri(texture_Fiber(1:2,t,textureID),&
|
||||
texture_Fiber(3:4,t,textureID),&
|
||||
texture_Fiber( 5,t,textureID))
|
||||
enddo
|
||||
constituentGrain = &
|
||||
constituentGrain + int(real(myNorientations,pReal)*texture_fiber(6,t,textureID),pInt) ! advance counter for grains of current constituent
|
||||
enddo fiber
|
||||
|
||||
random: do constituentGrain = constituentGrain+1_pInt,myNorientations ! fill remainder with random
|
||||
orientationOfGrain(:,grain+constituentGrain) = math_sampleRandomOri()
|
||||
enddo random
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! ...texture transformation
|
||||
|
@ -1261,25 +1191,6 @@ subroutine material_populateGrains
|
|||
)
|
||||
enddo
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! ...sample symmetry
|
||||
|
||||
symExtension = texture_symmetry(textureID) - 1_pInt
|
||||
if (symExtension > 0_pInt) then ! sample symmetry (number of additional equivalent orientations)
|
||||
constituentGrain = myNorientations ! start right after "real" orientations
|
||||
do j = 1_pInt,myNorientations ! loop over each "real" orientation
|
||||
symOrientation = math_symmetricEulers(texture_symmetry(textureID), &
|
||||
orientationOfGrain(1:3,grain+j)) ! get symmetric equivalents
|
||||
e = min(symExtension,NgrainsOfConstituent(i)-constituentGrain) ! do not overshoot end of constituent grain array
|
||||
if (e > 0_pInt) then
|
||||
orientationOfGrain(1:3,grain+constituentGrain+1: &
|
||||
grain+constituentGrain+e) = &
|
||||
symOrientation(1:3,1:e)
|
||||
constituentGrain = constituentGrain + e ! remainder shrinks by e
|
||||
endif
|
||||
enddo
|
||||
endif
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! shuffle grains within current constituent
|
||||
|
||||
|
|
Loading…
Reference in New Issue