TABLE OF CONTENTS
cgca_m3clvg/m3clvg_sm2 [ Submodules ]
[ Top ] [ cgca_m3clvg ] [ Submodules ]
NAME
m3clvg_sm2
SYNOPSIS
!$Id: m3clvg_sm2.f90 380 2017-03-22 11:03:09Z mexas $ submodule ( cgca_m3clvg ) m3clvg_sm2
DESCRIPTION
Submodule with aux routine for checking the misorientation thereshold.
AUTHOR
Anton Shterenlikht
COPYRIGHT
See LICENSE
CONTAINS
USES
Variables and routines of module cgca_m3clvg by host association.
USED BY
Module cgca_m3clvg
SOURCE
implicit none contains
m3clvg_sm2/cgca_tchk [ Subroutines ]
[ Top ] [ m3clvg_sm2 ] [ Subroutines ]
NAME
cgca_tchk
SYNOPSIS
module procedure cgca_tchk
DESCRIPTION
Generate num random unit normal vectors. Calculate the MAX of the MIN for all 26 cell neighbourhood unit vectors. Find the maximum value of all num normal vectors and return it as maxmin. And the opposite - calculate the MIN of the MAX for all 26 cell neighbourhood unit vectors. Find the min value of all num normal vectors and return as minmax.
NOTE
Any image can call this routine
SOURCE
real( kind=rlrg ) :: n(3), mag, prod, prodmax, prodmin integer( kind=ilrg ) :: i, x1, x2, x3 maxmin = 0.0_rlrg minmax = 1.0_rlrg do i=1,num prodmin = 1.0_rlrg prodmax = 0.0_rlrg call random_number(n) mag = sqrt( sum( n**2 ) ) n = n / mag do x3 = -1, 1 do x2 = -1, 1 do x1 = -1, 1 if ( x1 .eq. 0 .and. x2 .eq. 0 .and. x3 .eq. 0) cycle prod = abs( dot_product( e(:,x1,x2,x3), n ) ) if ( prod .lt. prodmin ) prodmin = prod if ( prod .gt. prodmax ) prodmax = prod end do end do end do if ( prodmin .gt. maxmin) maxmin = prodmin if ( prodmax .lt. minmax) minmax = prodmax end do end procedure cgca_tchk