Merge branch 'misc-improvements' into 'development'
Misc improvements See merge request damask/DAMASK!189
This commit is contained in:
commit
f0fdcd0dee
|
@ -9,7 +9,7 @@ source $ENV_ROOT/CONFIG
|
|||
|
||||
set path = ($DAMASK_ROOT/bin $path)
|
||||
|
||||
set SOLVER=`which DAMASK_spectral`
|
||||
set SOLVER=`which DAMASK_grid`
|
||||
if ( "x$DAMASK_NUM_THREADS" == "x" ) then
|
||||
set DAMASK_NUM_THREADS=1
|
||||
endif
|
||||
|
|
|
@ -35,7 +35,7 @@ cd $DAMASK_ROOT >/dev/null; BRANCH=$(git branch 2>/dev/null| grep -E '^\* '); cd
|
|||
|
||||
PATH=${DAMASK_ROOT}/bin:$PATH
|
||||
|
||||
SOLVER=$(type -p DAMASK_spectral || true 2>/dev/null)
|
||||
SOLVER=$(type -p DAMASK_grid || true 2>/dev/null)
|
||||
[ "x$SOLVER" == "x" ] && SOLVER=$(blink 'Not found!')
|
||||
|
||||
[ "x$DAMASK_NUM_THREADS" == "x" ] && DAMASK_NUM_THREADS=1
|
||||
|
|
|
@ -27,7 +27,7 @@ cd $DAMASK_ROOT >/dev/null; BRANCH=$(git branch 2>/dev/null| grep -E '^\* '); cd
|
|||
|
||||
PATH=${DAMASK_ROOT}/bin:$PATH
|
||||
|
||||
SOLVER=$(which DAMASK_spectral || true 2>/dev/null)
|
||||
SOLVER=$(which DAMASK_grid || true 2>/dev/null)
|
||||
[[ "x$SOLVER" == "x" ]] && SOLVER=$(blink 'Not found!')
|
||||
|
||||
[[ "x$DAMASK_NUM_THREADS" == "x" ]] && DAMASK_NUM_THREADS=1
|
||||
|
|
|
@ -805,7 +805,7 @@ class Rotation:
|
|||
"""Rotation matrix to Bunge-Euler angles."""
|
||||
with np.errstate(invalid='ignore',divide='ignore'):
|
||||
zeta = 1.0/np.sqrt(1.0-om[...,2,2:3]**2)
|
||||
eu = np.where(np.isclose(np.abs(om[...,2,2:3]),1.0,1e-9),
|
||||
eu = np.where(np.isclose(np.abs(om[...,2,2:3]),1.0,0.0),
|
||||
np.block([np.arctan2(om[...,0,1:2],om[...,0,0:1]),
|
||||
np.pi*0.5*(1-om[...,2,2:3]),
|
||||
np.zeros(om.shape[:-2]+(1,)),
|
||||
|
|
|
@ -150,7 +150,7 @@ def om2qu(a):
|
|||
|
||||
def om2eu(om):
|
||||
"""Rotation matrix to Bunge-Euler angles."""
|
||||
if not np.isclose(np.abs(om[2,2]),1.0,1.e-9):
|
||||
if not np.isclose(np.abs(om[2,2]),1.0,0.0):
|
||||
zeta = 1.0/np.sqrt(1.0-om[2,2]**2)
|
||||
eu = np.array([np.arctan2(om[2,0]*zeta,-om[2,1]*zeta),
|
||||
np.arccos(om[2,2]),
|
||||
|
|
|
@ -733,7 +733,7 @@ end subroutine inputRead_microstructureAndHomogenization
|
|||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Calculates cell node coordinates from element node coordinates
|
||||
!> @brief Determine cell connectivity and definition of cell nodes
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine buildCells(connectivity_cell,cellNodeDefinition, &
|
||||
elem,connectivity_elem)
|
||||
|
@ -747,7 +747,8 @@ subroutine buildCells(connectivity_cell,cellNodeDefinition, &
|
|||
integer,dimension(:), allocatable :: candidates_local
|
||||
integer,dimension(:,:), allocatable :: parentsAndWeights,candidates_global
|
||||
|
||||
integer :: e, n, c, p, s,i,m,j,nParentNodes,nCellNode,Nelem,candidateID
|
||||
integer :: e,n,c,p,s,i,m,j,&
|
||||
nParentNodes,nCellNode,Nelem,candidateID
|
||||
|
||||
Nelem = size(connectivity_elem,2)
|
||||
|
||||
|
@ -761,9 +762,7 @@ subroutine buildCells(connectivity_cell,cellNodeDefinition, &
|
|||
do e = 1, Nelem
|
||||
do c = 1, elem%NcellNodes
|
||||
realNode: if (count(elem%cellNodeParentNodeWeights(:,c) /= 0) == 1) then
|
||||
where(connectivity_cell(:,:,e) == -c)
|
||||
connectivity_cell(:,:,e) = connectivity_elem(c,e)
|
||||
end where
|
||||
where(connectivity_cell(:,:,e) == -c) connectivity_cell(:,:,e) = connectivity_elem(c,e)
|
||||
endif realNode
|
||||
enddo
|
||||
enddo
|
||||
|
@ -890,7 +889,7 @@ end subroutine buildCells
|
|||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Calculates cell node coordinates from element node coordinates
|
||||
!> @brief Calculate cell node coordinates from element node coordinates
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine buildCellNodes(node_cell, &
|
||||
definition,node_elem)
|
||||
|
@ -920,7 +919,7 @@ end subroutine buildCellNodes
|
|||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Calculates IP coordinates as center of cell
|
||||
!> @brief Calculate IP coordinates as center of cell
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine buildIPcoordinates(IPcoordinates, &
|
||||
connectivity_cell,node_cell)
|
||||
|
|
|
@ -464,6 +464,8 @@ subroutine selfTest
|
|||
real(pReal), dimension(4) :: qu
|
||||
type(quaternion) :: q, q_2
|
||||
|
||||
if(dNeq(abs(P),1.0_pReal)) call IO_error(0,ext_msg='P not in {-1,+1}')
|
||||
|
||||
call random_number(qu)
|
||||
qu = (qu-0.5_pReal) * 2.0_pReal
|
||||
q = quaternion(qu)
|
||||
|
|
|
@ -574,6 +574,7 @@ end function om2qu
|
|||
!---------------------------------------------------------------------------------------------------
|
||||
!> @author Marc De Graef, Carnegie Mellon University
|
||||
!> @brief orientation matrix to Euler angles
|
||||
!> @details Two step check for special cases to avoid invalid operations (not needed for python)
|
||||
!---------------------------------------------------------------------------------------------------
|
||||
pure function om2eu(om) result(eu)
|
||||
|
||||
|
@ -581,16 +582,16 @@ pure function om2eu(om) result(eu)
|
|||
real(pReal), dimension(3) :: eu
|
||||
real(pReal) :: zeta
|
||||
|
||||
if (abs(om(3,3)) < 1.0_pReal) then
|
||||
zeta = 1.0_pReal/sqrt(1.0_pReal-om(3,3)**2.0_pReal)
|
||||
if (dNeq(abs(om(3,3)),1.0_pReal,1.e-8_pReal)) then
|
||||
zeta = 1.0_pReal/sqrt(math_clip(1.0_pReal-om(3,3)**2.0_pReal,1e-64_pReal,1.0_pReal))
|
||||
eu = [atan2(om(3,1)*zeta,-om(3,2)*zeta), &
|
||||
acos(om(3,3)), &
|
||||
acos(math_clip(om(3,3),-1.0_pReal,1.0_pReal)), &
|
||||
atan2(om(1,3)*zeta, om(2,3)*zeta)]
|
||||
else
|
||||
eu = [atan2(om(1,2),om(1,1)), 0.5_pReal*PI*(1.0_pReal-om(3,3)),0.0_pReal ]
|
||||
end if
|
||||
|
||||
where(eu<0.0_pReal) eu = mod(eu+2.0_pReal*PI,[2.0_pReal*PI,PI,2.0_pReal*PI])
|
||||
where(abs(eu) < 1.e-8_pReal) eu = 0.0_pReal
|
||||
where(eu<0.0_pReal) eu = mod(eu+2.0_pReal*PI,[2.0_pReal*PI,PI,2.0_pReal*PI])
|
||||
|
||||
end function om2eu
|
||||
|
||||
|
|
Loading…
Reference in New Issue