diff options
Diffstat (limited to 'src/EHFinder_fuzzy.F90')
-rw-r--r-- | src/EHFinder_fuzzy.F90 | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/EHFinder_fuzzy.F90 b/src/EHFinder_fuzzy.F90 new file mode 100644 index 0000000..a856fef --- /dev/null +++ b/src/EHFinder_fuzzy.F90 @@ -0,0 +1,83 @@ +! Module with routines for fuzzy comparisons. +! $Header$ +#include "cctk.h" + +module EHFinder_fuzzy + + use EHFinder_Constants + + interface fuzzy_eq + module procedure fuzzy_eq_0d, fuzzy_eq_1d, fuzzy_eq_2d, fuzzy_eq_3d + end interface + + interface fuzzy_ne + module procedure fuzzy_ne_0d, fuzzy_ne_1d, fuzzy_ne_2d, fuzzy_ne_3d + end interface + +contains + + function fuzzy_eq_0d ( x, y, eps ) + CCTK_REAL, intent(IN) :: x + CCTK_REAL, intent(IN) :: y, eps + logical :: fuzzy_eq_0d + + fuzzy_eq_0d = ( ( x .gt. y-eps ) .and. ( x .lt. y+eps ) ) + end function fuzzy_eq_0d + + function fuzzy_eq_1d ( x, y, eps ) + CCTK_REAL, intent(IN), dimension(:) :: x + CCTK_REAL, intent(IN) :: y, eps + logical, dimension(size(x,1)) :: fuzzy_eq_1d + + fuzzy_eq_1d = ( ( x .gt. y-eps ) .and. ( x .lt. y+eps ) ) + end function fuzzy_eq_1d + + function fuzzy_eq_2d ( x, y, eps ) + CCTK_REAL, intent(IN), dimension(:,:) :: x + CCTK_REAL, intent(IN) :: y, eps + logical, dimension(size(x,1),size(x,2)) :: fuzzy_eq_2d + + fuzzy_eq_2d = ( ( x .gt. y-eps ) .and. ( x .lt. y+eps ) ) + end function fuzzy_eq_2d + + function fuzzy_eq_3d ( x, y, eps ) + CCTK_REAL, intent(IN), dimension(:,:,:) :: x + CCTK_REAL, intent(IN) :: y, eps + logical, dimension(size(x,1),size(x,2),size(x,3)) :: fuzzy_eq_3d + + fuzzy_eq_3d = ( ( x .gt. y-eps ) .and. ( x .lt. y+eps ) ) + end function fuzzy_eq_3d + + function fuzzy_ne_0d ( x, y, eps ) + CCTK_REAL, intent(IN) :: x + CCTK_REAL, intent(IN) :: y, eps + logical :: fuzzy_ne_0d + + fuzzy_ne_0d = ( ( x .lt. y-eps ) .or. ( x .gt. y+eps ) ) + end function fuzzy_ne_0d + + function fuzzy_ne_1d ( x, y, eps ) + CCTK_REAL, intent(IN), dimension(:) :: x + CCTK_REAL, intent(IN) :: y, eps + logical, dimension(size(x,1)) :: fuzzy_ne_1d + + fuzzy_ne_1d = ( ( x .lt. y-eps ) .or. ( x .gt. y+eps ) ) + end function fuzzy_ne_1d + + function fuzzy_ne_2d ( x, y, eps ) + CCTK_REAL, intent(IN), dimension(:,:) :: x + CCTK_REAL, intent(IN) :: y, eps + logical, dimension(size(x,1),size(x,2)) :: fuzzy_ne_2d + + fuzzy_ne_2d = ( ( x .lt. y-eps ) .or. ( x .gt. y+eps ) ) + end function fuzzy_ne_2d + + function fuzzy_ne_3d ( x, y, eps ) + CCTK_REAL, intent(IN), dimension(:,:,:) :: x + CCTK_REAL, intent(IN) :: y, eps + logical, dimension(size(x,1),size(x,2),size(x,3)) :: fuzzy_ne_3d + + fuzzy_ne_3d = ( ( x .lt. y-eps ) .or. ( x .gt. y+eps ) ) + end function fuzzy_ne_3d + +end module EHFinder_fuzzy |