monotonicMod.f90 Source File

Monotonicity testing utilities for input validation


Files dependent on this one

sourcefile~~monotonicmod.f90~~AfferentGraph sourcefile~monotonicmod.f90 monotonicMod.f90 sourcefile~bdry3dmod.f90 bdry3DMod.f90 sourcefile~bdry3dmod.f90->sourcefile~monotonicmod.f90 sourcefile~bdrymod.f90 bdryMod.f90 sourcefile~bdrymod.f90->sourcefile~monotonicmod.f90 sourcefile~beampattern.f90 beampattern.f90 sourcefile~beampattern.f90->sourcefile~monotonicmod.f90 sourcefile~refcoef.f90 RefCoef.f90 sourcefile~refcoef.f90->sourcefile~monotonicmod.f90 sourcefile~sourcereceiverpositions.f90 SourceReceiverPositions.f90 sourcefile~sourcereceiverpositions.f90->sourcefile~monotonicmod.f90 sourcefile~sspmod.f90 sspMod.f90 sourcefile~sspmod.f90->sourcefile~monotonicmod.f90 sourcefile~anglemod.f90 angleMod.f90 sourcefile~anglemod.f90->sourcefile~sourcereceiverpositions.f90 sourcefile~bellhop.f90 bellhop.f90 sourcefile~bellhop.f90->sourcefile~bdrymod.f90 sourcefile~bellhop.f90->sourcefile~beampattern.f90 sourcefile~bellhop.f90->sourcefile~refcoef.f90 sourcefile~bellhop.f90->sourcefile~sourcereceiverpositions.f90 sourcefile~bellhop.f90->sourcefile~sspmod.f90 sourcefile~bellhop.f90->sourcefile~anglemod.f90 sourcefile~influence.f90 influence.f90 sourcefile~bellhop.f90->sourcefile~influence.f90 sourcefile~readenvironmentbell.f90 ReadEnvironmentBell.f90 sourcefile~bellhop.f90->sourcefile~readenvironmentbell.f90 sourcefile~step.f90 Step.f90 sourcefile~bellhop.f90->sourcefile~step.f90 sourcefile~writeray.f90 WriteRay.f90 sourcefile~bellhop.f90->sourcefile~writeray.f90 sourcefile~bellhop3d.f90 bellhop3D.f90 sourcefile~bellhop3d.f90->sourcefile~bdry3dmod.f90 sourcefile~bellhop3d.f90->sourcefile~beampattern.f90 sourcefile~bellhop3d.f90->sourcefile~refcoef.f90 sourcefile~bellhop3d.f90->sourcefile~sourcereceiverpositions.f90 sourcefile~bellhop3d.f90->sourcefile~sspmod.f90 sourcefile~bellhop3d.f90->sourcefile~anglemod.f90 sourcefile~bellhop3d.f90->sourcefile~influence.f90 sourcefile~influence3d.f90 influence3D.f90 sourcefile~bellhop3d.f90->sourcefile~influence3d.f90 sourcefile~bellhop3d.f90->sourcefile~readenvironmentbell.f90 sourcefile~reflect3dmod.f90 Reflect3DMod.f90 sourcefile~bellhop3d.f90->sourcefile~reflect3dmod.f90 sourcefile~reflectmod.f90 ReflectMod.f90 sourcefile~bellhop3d.f90->sourcefile~reflectmod.f90 sourcefile~step3dmod.f90 Step3DMod.f90 sourcefile~bellhop3d.f90->sourcefile~step3dmod.f90 sourcefile~bellhop3d.f90->sourcefile~writeray.f90 sourcefile~influence.f90->sourcefile~sourcereceiverpositions.f90 sourcefile~influence.f90->sourcefile~sspmod.f90 sourcefile~influence.f90->sourcefile~writeray.f90 sourcefile~influence3d.f90->sourcefile~sourcereceiverpositions.f90 sourcefile~influence3d.f90->sourcefile~sspmod.f90 sourcefile~influence3d.f90->sourcefile~writeray.f90 sourcefile~readenvironmentbell.f90->sourcefile~bdrymod.f90 sourcefile~readenvironmentbell.f90->sourcefile~sourcereceiverpositions.f90 sourcefile~readenvironmentbell.f90->sourcefile~sspmod.f90 sourcefile~readenvironmentbell.f90->sourcefile~anglemod.f90 sourcefile~rwshdfile.f90 RWSHDFile.f90 sourcefile~readenvironmentbell.f90->sourcefile~rwshdfile.f90 sourcefile~reflect3dmod.f90->sourcefile~refcoef.f90 sourcefile~reflect3dmod.f90->sourcefile~sspmod.f90 sourcefile~reflectmod.f90->sourcefile~refcoef.f90 sourcefile~reflectmod.f90->sourcefile~sspmod.f90 sourcefile~rwshdfile.f90->sourcefile~sourcereceiverpositions.f90 sourcefile~step.f90->sourcefile~bdrymod.f90 sourcefile~step.f90->sourcefile~sspmod.f90 sourcefile~step3dmod.f90->sourcefile~bdry3dmod.f90 sourcefile~step3dmod.f90->sourcefile~sspmod.f90 sourcefile~writeray.f90->sourcefile~sspmod.f90

Source Code

!! Monotonicity testing utilities for input validation

MODULE monotonicMod
  !! Provides interface to test whether an input vector is strictly monotonically increasing

  IMPLICIT NONE
  PUBLIC

  INTERFACE monotonic
     MODULE PROCEDURE monotonic_sngl, monotonic_dble
  END INTERFACE monotonic

CONTAINS

  FUNCTION monotonic_sngl( x, N )
    !! Tests if single precision vector is monotonically increasing

    LOGICAL :: monotonic_sngl
    INTEGER,                       INTENT( IN ) :: N
    REAL (KIND=4), DIMENSION( N ), INTENT( IN ) :: x

    monotonic_sngl = .TRUE.
    IF ( N == 1 ) RETURN
    IF ( ANY( x( 2 : N ) <= x( 1 : N - 1 ) ) ) monotonic_sngl = .FALSE.

  END FUNCTION monotonic_sngl

  FUNCTION monotonic_dble( x, N )
    !! Tests if double precision vector is monotonically increasing

    LOGICAL :: monotonic_dble
    INTEGER,                       INTENT( IN ) :: N
    REAL (KIND=8), DIMENSION( N ), INTENT( IN ) :: x

    monotonic_dble = .TRUE.
    IF ( N == 1 ) RETURN
    IF ( ANY( x( 2 : N ) <= x( 1 : N - 1 ) ) ) monotonic_dble = .FALSE.

  END FUNCTION monotonic_dble

END MODULE monotonicMod