0
-
Source:subtabulate.f90
0
-
Graph:subtabulate.gcno
0
-
Data:subtabulate.gcda
1
-
!! Provides module `SubTabulate`
4
-
!! Provides "subtabulation" functions (single and double) for creating interpolated ranges
6
-
! If x( 3 ) = -999.9 then subtabulation is performed
7
-
! i.e., a vector is generated with Nx points in [ x( 1 ), x( 2 ) ]
8
-
! If x( 2 ) = -999.9 then x( 1 ) is repeated into x( 2 )
13
-
INTEGER, PRIVATE :: ix
16
-
MODULE PROCEDURE SubTab_sngl, SubTab_dble
17
-
END INTERFACE SubTab
21
42
SUBROUTINE SubTab_sngl( x, Nx )
22
-
!! Subtabulate array `x`, creating interpolated array of length `Nx`
24
-
INTEGER, INTENT( IN ) :: Nx
25
-
REAL, INTENT( INOUT ) :: x( Nx )
28
42
IF ( Nx >= 3 ) THEN
29
7*
IF ( ABS( x( 3 ) - ( -999.9 ) ) < 0.01 ) THEN
30
6*
IF ( ABS( x( 2 ) - ( -999.9 ) ) < 0.01 ) x( 2 ) = x( 1 )
31
6*
deltax = ( x( 2 ) - x( 1 ) ) / ( Nx - 1 )
32
6616*
x( 1 : Nx ) = x( 1 ) + [ ( ix, ix = 0, Nx - 1 ) ] * deltax
36
42
END SUBROUTINE SubTab_sngl
38
14
SUBROUTINE SubTab_dble( x, Nx )
39
-
!! Subtabulate array `x`, creating interpolated array of length `Nx`
41
-
INTEGER, INTENT( IN ) :: Nx
42
-
REAL (KIND=8), INTENT( INOUT ) :: x( Nx )
43
-
REAL (KIND=8) :: deltax
45
14
IF ( Nx >= 3 ) THEN
46
14*
IF ( ABS( x( 3 ) - ( -999.9D0 ) ) < 0.01D0 ) THEN
47
14*
IF ( ABS( x( 2 ) - ( -999.9D0 ) ) < 0.01D0 ) x( 2 ) = x( 1 )
48
14*
deltax = ( x( 2 ) - x( 1 ) ) / ( Nx - 1 )
49
111914*
x( 1 : Nx ) = x( 1 ) + [ ( ix, ix = 0, Nx - 1 ) ] * deltax
53
14
END SUBROUTINE SubTab_dble
55
-
END MODULE SubTabulate