MODULE Numeric_Kinds_Module IMPLICIT NONE SAVE ! Integers INTEGER, PARAMETER :: I1_Kind=SELECTED_INT_KIND(1) ! 1 byte integer INTEGER, PARAMETER :: I2_Kind=SELECTED_INT_KIND(3) ! 2 byte integer INTEGER, PARAMETER :: I4_Kind=SELECTED_INT_KIND(7) ! 4 byte integer INTEGER, PARAMETER :: I8_Kind=SELECTED_INT_KIND(14) ! 8 byte integer INTEGER, PARAMETER :: IW_Kind=I4_Kind ! Reals INTEGER, PARAMETER :: SP_Kind=SELECTED_REAL_KIND(6,30) ! Single precsion INTEGER, PARAMETER :: DP_Kind=SELECTED_REAL_KIND(14,300) ! Double precsion INTEGER, PARAMETER :: QP_Kind=SELECTED_REAL_KIND(25,1000) ! Quadruple precision INTEGER, PARAMETER :: WP_Kind=DP_Kind ! Define commonly used reals REAL (KIND=WP_Kind), PARAMETER :: Zero= 0.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: One= 1.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Two= 2.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Three= 3.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Four= 4.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Five= 5.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Six= 6.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Seven= 7.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Eight= 8.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Nine= 9.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Ten= 10.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Eleven=11.0_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Twelve=12.0_WP_Kind ! Define commonly used fractions REAL (KIND=WP_Kind), PARAMETER :: Half= 0.5_WP_Kind REAL (KIND=WP_Kind), PARAMETER :: Fourth= 0.25_WP_Kind ! Define commonly used Pi constants REAL (KIND=WP_Kind), PARAMETER :: Pi4=ATAN(One) REAL (KIND=WP_Kind), PARAMETER :: Pi2=Two*Pi4 REAL (KIND=WP_Kind), PARAMETER :: Pi =Four*Pi4 REAL (Kind=WP_Kind), PARAMETER :: TwoPi= Two*Pi END MODULE Numeric_Kinds_Module