diff --git a/annotated.html b/annotated.html index 97be86b9..7bfc9a79 100644 --- a/annotated.html +++ b/annotated.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/bicubic__interp__mod_8F90.html b/bicubic__interp__mod_8F90.html index b524a502..1ae3ce7b 100644 --- a/bicubic__interp__mod_8F90.html +++ b/bicubic__interp__mod_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/bicubic__interp__mod_8F90_source.html b/bicubic__interp__mod_8F90_source.html index 32bb7b9f..b31c8184 100644 --- a/bicubic__interp__mod_8F90_source.html +++ b/bicubic__interp__mod_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/bilinear__interp__mod_8F90.html b/bilinear__interp__mod_8F90.html index 23ef2200..f289e4f4 100644 --- a/bilinear__interp__mod_8F90.html +++ b/bilinear__interp__mod_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/bilinear__interp__mod_8F90_source.html b/bilinear__interp__mod_8F90_source.html index b02bd4fc..810f6f11 100644 --- a/bilinear__interp__mod_8F90_source.html +++ b/bilinear__interp__mod_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/budget__interp__mod_8F90.html b/budget__interp__mod_8F90.html index 1649db1a..932a1ffd 100644 --- a/budget__interp__mod_8F90.html +++ b/budget__interp__mod_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/budget__interp__mod_8F90_source.html b/budget__interp__mod_8F90_source.html index e65f6bc7..b4cc3add 100644 --- a/budget__interp__mod_8F90_source.html +++ b/budget__interp__mod_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/classes.html b/classes.html index 393d4108..b64bf5d2 100644 --- a/classes.html +++ b/classes.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/dir_49e56c817e5e54854c35e136979f97ca.html b/dir_49e56c817e5e54854c35e136979f97ca.html index e0675537..ad5da577 100644 --- a/dir_49e56c817e5e54854c35e136979f97ca.html +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 9a85d633..b4bd3e34 100644 --- a/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -182,9 +182,6 @@ file  ipxwafs3.F90 [code]  Expand or contract wafs grids using neighbor interpolation and accout for bitmapped data.
  -file  lapack_gen.F [code] - Two Numerical Recipes routines for matrix inversion From Numerical Recipes.
-  file  movect.F90 [code]  Move a vector along a great circle.
  diff --git a/earth__radius__mod_8F90.html b/earth__radius__mod_8F90.html index f3c95df8..455d429f 100644 --- a/earth__radius__mod_8F90.html +++ b/earth__radius__mod_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/earth__radius__mod_8F90_source.html b/earth__radius__mod_8F90_source.html index a98dfc76..209f1e37 100644 --- a/earth__radius__mod_8F90_source.html +++ b/earth__radius__mod_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/fftpack_8F.html b/fftpack_8F.html index b07498cc..2627441e 100644 --- a/fftpack_8F.html +++ b/fftpack_8F.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -253,9 +253,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 116 of file fftpack.F.

+

Definition at line 120 of file fftpack.F.

-

References rfftb(), and rffti().

+

References rfftb(), and rffti().

@@ -334,7 +334,7 @@

- real  + real, dimension(*)  wrk, @@ -346,13 +346,13 @@

- real  + real, optional  z, - integer  + integer, optional  nz  @@ -388,7 +388,7 @@

Definition at line 32 of file fftpack.F.

-

References rfftb(), and rffti().

+

References rfftb(), and rffti().

Referenced by spffte().

@@ -469,7 +469,7 @@

- real  + real, dimension(*)  wrk, @@ -481,13 +481,13 @@

- real  + real, optional  z, - integer  + integer, optional  nz  @@ -521,9 +521,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 158 of file fftpack.F.

+

Definition at line 162 of file fftpack.F.

-

References rfftf(), and rffti().

+

References rfftf(), and rffti().

Referenced by spffte().

@@ -562,7 +562,7 @@

- dimension(1)  + dimension(*)  WA1  @@ -586,9 +586,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 530 of file fftpack.F.

+

Definition at line 546 of file fftpack.F.

-

Referenced by rfftb1().

+

Referenced by rfftb1().

@@ -625,13 +625,13 @@

- dimension(1)  + dimension(*)  WA1, - dimension(1)  + dimension(*)  WA2  @@ -657,9 +657,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 569 of file fftpack.F.

+

Definition at line 591 of file fftpack.F.

-

Referenced by rfftb1().

+

Referenced by rfftb1().

@@ -696,19 +696,19 @@

- dimension(1)  + dimension(*)  WA1, - dimension(1)  + dimension(*)  WA2, - dimension(1)  + dimension(*)  WA3  @@ -734,9 +734,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 619 of file fftpack.F.

+

Definition at line 641 of file fftpack.F.

-

Referenced by rfftb1().

+

Referenced by rfftb1().

@@ -773,25 +773,25 @@

- dimension(1)  + dimension(*)  WA1, - dimension(1)  + dimension(*)  WA2, - dimension(1)  + dimension(*)  WA3, - dimension(1)  + dimension(*)  WA4  @@ -818,9 +818,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 690 of file fftpack.F.

+

Definition at line 718 of file fftpack.F.

-

Referenced by rfftb1().

+

Referenced by rfftb1().

@@ -887,7 +887,7 @@

- dimension(1)  + dimension(*)  WA  @@ -916,9 +916,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 768 of file fftpack.F.

+

Definition at line 796 of file fftpack.F.

-

Referenced by rfftb1().

+

Referenced by rfftb1().

@@ -955,7 +955,7 @@

- dimension(1)  + dimension(*)  WA1  @@ -979,9 +979,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 946 of file fftpack.F.

+

Definition at line 974 of file fftpack.F.

-

Referenced by rfftf1().

+

Referenced by rfftf1().

@@ -1018,13 +1018,13 @@

- dimension(1)  + dimension(*)  WA1, - dimension(1)  + dimension(*)  WA2  @@ -1049,9 +1049,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 984 of file fftpack.F.

+

Definition at line 1018 of file fftpack.F.

-

Referenced by rfftf1().

+

Referenced by rfftf1().

@@ -1088,19 +1088,19 @@

- dimension(1)  + dimension(*)  WA1, - dimension(1)  + dimension(*)  WA2, - dimension(1)  + dimension(*)  WA3  @@ -1126,9 +1126,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 1031 of file fftpack.F.

+

Definition at line 1065 of file fftpack.F.

-

Referenced by rfftf1().

+

Referenced by rfftf1().

@@ -1165,25 +1165,25 @@

- dimension(1)  + dimension(*)  WA1, - dimension(1)  + dimension(*)  WA2, - dimension(1)  + dimension(*)  WA3, - dimension(1)  + dimension(*)  WA4  @@ -1210,9 +1210,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 1098 of file fftpack.F.

+

Definition at line 1138 of file fftpack.F.

-

Referenced by rfftf1().

+

Referenced by rfftf1().

@@ -1279,7 +1279,7 @@

- dimension(1)  + dimension(*)  WA  @@ -1308,9 +1308,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 1172 of file fftpack.F.

+

Definition at line 1212 of file fftpack.F.

-

Referenced by rfftf1().

+

Referenced by rfftf1().

@@ -1329,13 +1329,13 @@

- dimension(1)  + dimension(*)  R, - dimension(1)  + dimension(*)  WSAVE  @@ -1357,11 +1357,11 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 296 of file fftpack.F.

+

Definition at line 304 of file fftpack.F.

-

References rfftb1().

+

References rfftb1().

-

Referenced by csfft(), dcrft(), and scrft().

+

Referenced by csfft(), dcrft(), and scrft().

@@ -1380,25 +1380,25 @@

- dimension(1)  + real, dimension(*)  C, - dimension(1)  + real, dimension(*)  CH, - dimension(1)  + real, dimension(*)  WA, - dimension(*)  + real, dimension(*)  IFAC  @@ -1422,11 +1422,11 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 325 of file fftpack.F.

+

Definition at line 333 of file fftpack.F.

-

References radb2(), radb3(), radb4(), radb5(), and radbg().

+

References radb2(), radb3(), radb4(), radb5(), and radbg().

-

Referenced by rfftb().

+

Referenced by rfftb().

@@ -1445,13 +1445,13 @@

- dimension(1)  + dimension(*)  R, - dimension(1)  + dimension(*)  WSAVE  @@ -1473,11 +1473,11 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 282 of file fftpack.F.

+

Definition at line 290 of file fftpack.F.

-

References rfftf1().

+

References rfftf1().

-

Referenced by drcft(), scfft(), and srcft().

+

Referenced by drcft(), scfft(), and srcft().

@@ -1496,25 +1496,25 @@

- dimension(1)  + real, dimension(*)  C, - dimension(1)  + real, dimension(*)  CH, - dimension(1)  + real, dimension(*)  WA, - dimension(*)  + real, dimension(*)  IFAC  @@ -1538,11 +1538,11 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 394 of file fftpack.F.

+

Definition at line 402 of file fftpack.F.

-

References radf2(), radf3(), radf4(), radf5(), and radfg().

+

References radf2(), radf3(), radf4(), radf5(), and radfg().

-

Referenced by rfftf().

+

Referenced by rfftf().

@@ -1561,7 +1561,7 @@

- dimension(1)  + dimension(*)  WSAVE  @@ -1582,11 +1582,11 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 309 of file fftpack.F.

+

Definition at line 317 of file fftpack.F.

-

References rffti1().

+

References rffti1().

-

Referenced by csfft(), dcrft(), drcft(), scfft(), scrft(), and srcft().

+

Referenced by csfft(), dcrft(), drcft(), scfft(), scrft(), and srcft().

@@ -1605,13 +1605,13 @@

- dimension(1)  + real, dimension(*)  WA, - dimension(*)  + real, dimension(*)  IFAC  @@ -1633,9 +1633,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 461 of file fftpack.F.

+

Definition at line 469 of file fftpack.F.

-

Referenced by rffti().

+

Referenced by rffti().

@@ -1717,9 +1717,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 249 of file fftpack.F.

+

Definition at line 257 of file fftpack.F.

-

References rfftf(), and rffti().

+

References rfftf(), and rffti().

@@ -1798,7 +1798,7 @@

- real  + real, dimension(*)  wrk, @@ -1810,13 +1810,13 @@

- real  + real, optional  z, - integer  + integer, optional  nz  @@ -1850,9 +1850,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 78 of file fftpack.F.

+

Definition at line 80 of file fftpack.F.

-

References rfftb(), and rffti().

+

References rfftb(), and rffti().

Referenced by spfft(), spfft1(), and spffte().

@@ -1933,7 +1933,7 @@

- real  + real, dimension(*)  wrk, @@ -1945,13 +1945,13 @@

- real  + real, optional  z, - integer  + integer, optional  nz  @@ -1985,9 +1985,9 @@

Author
Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-

Definition at line 207 of file fftpack.F.

+

Definition at line 213 of file fftpack.F.

-

References rfftf(), and rffti().

+

References rfftf(), and rffti().

Referenced by spfft(), spfft1(), and spffte().

diff --git a/fftpack_8F_source.html b/fftpack_8F_source.html index 15984ee2..4c82f5e5 100644 --- a/fftpack_8F_source.html +++ b/fftpack_8F_source.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -121,1330 +121,1370 @@
33  & table,n1,wrk,n2,z,nz)
34 
35  implicit none
-
36  integer init,ldx,ldy,n,m,isign,n1,n2,nz,i,j
-
37  real x(2*ldx,*),y(ldy,*),scale,table(44002),wrk,z
-
38 
-
39  IF (init.ne.0) THEN
-
40  CALL rffti(n,table)
-
41  ELSE
-
42 !OCL NOVREC
-
43  DO j=1,m
-
44  y(1,j)=x(1,j)
-
45  DO i=2,n
-
46  y(i,j)=x(i+1,j)
-
47  ENDDO
-
48  CALL rfftb(n,y(1,j),table)
-
49  DO i=1,n
-
50  y(i,j)=scale*y(i,j)
-
51  ENDDO
-
52  ENDDO
-
53  ENDIF
-
54 
-
55  RETURN
-
56  END
-
57 
-
58 C> scrft
-
59 C>
-
60 C> @param init
-
61 C> @param x
-
62 C> @param ldx
-
63 C> @param y
-
64 C> @param ldy
-
65 C> @param n
-
66 C> @param m
-
67 C> @param isign
-
68 C> @param scale
-
69 C> @param table
-
70 C> @param n1
-
71 C> @param wrk
-
72 C> @param n2
-
73 C> @param z
-
74 C> @param nz
-
75 C>
-
76 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
77 
-
78  SUBROUTINE scrft(init,x,ldx,y,ldy,n,m,isign,scale,
-
79  & table,n1,wrk,n2,z,nz)
-
80 
-
81  implicit none
-
82  integer init,ldx,ldy,n,m,isign,n1,n2,nz,i,j
-
83  real x(2*ldx,*),y(ldy,*),scale,table(44002),wrk,z
-
84 
-
85  IF (init.ne.0) THEN
-
86  CALL rffti(n,table)
-
87  ELSE
-
88 !OCL NOVREC
-
89  DO j=1,m
-
90  y(1,j)=x(1,j)
-
91  DO i=2,n
-
92  y(i,j)=x(i+1,j)
-
93  ENDDO
-
94  CALL rfftb(n,y(1,j),table)
-
95  DO i=1,n
-
96  y(i,j)=scale*y(i,j)
+
36  integer init,ldx,ldy,n,m,isign,n1,n2,i,j
+
37  real x(2*ldx,*),y(ldy,*),scale,table(44002),wrk(*)
+
38  real, optional :: z
+
39  integer, optional :: nz
+
40 
+
41  IF (init.ne.0) THEN
+
42  CALL rffti(n,table)
+
43  ELSE
+
44 !OCL NOVREC
+
45  DO j=1,m
+
46  y(1,j)=x(1,j)
+
47  DO i=2,n
+
48  y(i,j)=x(i+1,j)
+
49  ENDDO
+
50  CALL rfftb(n,y(1,j),table)
+
51  DO i=1,n
+
52  y(i,j)=scale*y(i,j)
+
53  ENDDO
+
54  ENDDO
+
55  ENDIF
+
56 
+
57  RETURN
+
58  END
+
59 
+
60 C> scrft
+
61 C>
+
62 C> @param init
+
63 C> @param x
+
64 C> @param ldx
+
65 C> @param y
+
66 C> @param ldy
+
67 C> @param n
+
68 C> @param m
+
69 C> @param isign
+
70 C> @param scale
+
71 C> @param table
+
72 C> @param n1
+
73 C> @param wrk
+
74 C> @param n2
+
75 C> @param z
+
76 C> @param nz
+
77 C>
+
78 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
79 
+
80  SUBROUTINE scrft(init,x,ldx,y,ldy,n,m,isign,scale,
+
81  & table,n1,wrk,n2,z,nz)
+
82 
+
83  implicit none
+
84  integer init,ldx,ldy,n,m,isign,n1,n2,i,j
+
85  real x(2*ldx,*),y(ldy,*),scale,table(44002),wrk(*)
+
86  real, optional :: z
+
87  integer, optional :: nz
+
88 
+
89  IF (init.ne.0) THEN
+
90  CALL rffti(n,table)
+
91  ELSE
+
92 !OCL NOVREC
+
93  DO j=1,m
+
94  y(1,j)=x(1,j)
+
95  DO i=2,n
+
96  y(i,j)=x(i+1,j)
97  ENDDO
-
98  ENDDO
-
99  ENDIF
-
100 
-
101  RETURN
-
102  END
-
103 
-
104 C> csfft
-
105 C>
-
106 C> @param isign
-
107 C> @param n
-
108 C> @param scale
-
109 C> @param x
-
110 C> @param y
-
111 C> @param table
-
112 C> @param work
-
113 C> @param isys
-
114 C>
-
115 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
116  SUBROUTINE csfft(isign,n,scale,x,y,table,work,isys)
-
117 
-
118  implicit none
-
119  integer isign,n,isys,i
-
120  real scale,x(*),y(*),table(*),work(*)
+
98  CALL rfftb(n,y(1,j),table)
+
99  DO i=1,n
+
100  y(i,j)=scale*y(i,j)
+
101  ENDDO
+
102  ENDDO
+
103  ENDIF
+
104 
+
105  RETURN
+
106  END
+
107 
+
108 C> csfft
+
109 C>
+
110 C> @param isign
+
111 C> @param n
+
112 C> @param scale
+
113 C> @param x
+
114 C> @param y
+
115 C> @param table
+
116 C> @param work
+
117 C> @param isys
+
118 C>
+
119 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
120  SUBROUTINE csfft(isign,n,scale,x,y,table,work,isys)
121 
-
122  IF (isign.eq.0) THEN
-
123  CALL rffti(n,table)
-
124  ENDIF
-
125  IF (isign.eq.1) THEN
-
126  y(1)=x(1)
-
127  DO i=2,n
-
128  y(i)=x(i+1)
-
129  ENDDO
-
130  CALL rfftb(n,y,table)
-
131  DO i=1,n
-
132  y(i)=scale*y(i)
+
122  implicit none
+
123  integer isign,n,isys,i
+
124  real scale,x(*),y(*),table(*),work(*)
+
125 
+
126  IF (isign.eq.0) THEN
+
127  CALL rffti(n,table)
+
128  ENDIF
+
129  IF (isign.eq.1) THEN
+
130  y(1)=x(1)
+
131  DO i=2,n
+
132  y(i)=x(i+1)
133  ENDDO
-
134  ENDIF
-
135 
-
136  RETURN
-
137  END
-
138 
-
139 C> drcft
-
140 C>
-
141 C> @param init
-
142 C> @param x
-
143 C> @param ldx
-
144 C> @param y
-
145 C> @param ldy
-
146 C> @param n
-
147 C> @param m
-
148 C> @param isign
-
149 C> @param scale
-
150 C> @param table
-
151 C> @param n1
-
152 C> @param wrk
-
153 C> @param n2
-
154 C> @param z
-
155 C> @param nz
-
156 C>
-
157 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
158  SUBROUTINE drcft(init,x,ldx,y,ldy,n,m,isign,scale,
-
159  & table,n1,wrk,n2,z,nz)
-
160 
-
161  implicit none
-
162  integer init,ldx,ldy,n,m,isign,n1,n2,nz,i,j
-
163  real x(ldx,*),y(2*ldy,*),scale,table(44002),wrk,z
+
134  CALL rfftb(n,y,table)
+
135  DO i=1,n
+
136  y(i)=scale*y(i)
+
137  ENDDO
+
138  ENDIF
+
139 
+
140  RETURN
+
141  END
+
142 
+
143 C> drcft
+
144 C>
+
145 C> @param init
+
146 C> @param x
+
147 C> @param ldx
+
148 C> @param y
+
149 C> @param ldy
+
150 C> @param n
+
151 C> @param m
+
152 C> @param isign
+
153 C> @param scale
+
154 C> @param table
+
155 C> @param n1
+
156 C> @param wrk
+
157 C> @param n2
+
158 C> @param z
+
159 C> @param nz
+
160 C>
+
161 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
162  SUBROUTINE drcft(init,x,ldx,y,ldy,n,m,isign,scale,
+
163  & table,n1,wrk,n2,z,nz)
164 
-
165  IF (init.ne.0) THEN
-
166  CALL rffti(n,table)
-
167  ELSE
-
168  DO j=1,m
-
169  DO i=1,n
-
170  y(i,j)=x(i,j)
-
171  ENDDO
-
172  CALL rfftf(n,y(1,j),table)
-
173  DO i=1,n
-
174  y(i,j)=scale*y(i,j)
-
175  ENDDO
-
176  DO i=n,2,-1
-
177  y(i+1,j)=y(i,j)
-
178  ENDDO
-
179  y(2,j)=0.
-
180 C 01/17/2013 vvvvvvvvvvvvv E.Mirvis added ver 2.0.1 by S.Moorthi request. No +|- demo.
-
181  y(n+2,j) = 0.
-
182  ENDDO
-
183  ENDIF
-
184 
-
185  RETURN
-
186  END
-
187 
-
188 C> srcft
-
189 C>
-
190 C> @param init
-
191 C> @param x
-
192 C> @param ldx
-
193 C> @param y
-
194 C> @param ldy
-
195 C> @param n
-
196 C> @param m
-
197 C> @param isign
-
198 C> @param scale
-
199 C> @param table
-
200 C> @param n1
-
201 C> @param wrk
-
202 C> @param n2
-
203 C> @param z
-
204 C> @param nz
-
205 C>
-
206 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
207  SUBROUTINE srcft(init,x,ldx,y,ldy,n,m,isign,scale,
-
208  & table,n1,wrk,n2,z,nz)
-
209 
-
210  implicit none
-
211  integer init,ldx,ldy,n,m,isign,n1,n2,nz,i,j
-
212  real x(ldx,*),y(2*ldy,*),scale,table(44002),wrk,z
-
213 
-
214  IF (init.ne.0) THEN
-
215  CALL rffti(n,table)
-
216  ELSE
-
217  DO j=1,m
-
218  DO i=1,n
-
219  y(i,j)=x(i,j)
-
220  ENDDO
-
221  CALL rfftf(n,y(1,j),table)
-
222  DO i=1,n
-
223  y(i,j)=scale*y(i,j)
-
224  ENDDO
-
225  DO i=n,2,-1
-
226  y(i+1,j)=y(i,j)
-
227  ENDDO
-
228  y(2,j)=0.
-
229  y(n+2,j) = 0.
-
230 C 01/17/2013 ^^^^^^^^^^E.Mirvis added ver 2.0.1 by S.Moorthi request. No +|- demo.
-
231  ENDDO
-
232  ENDIF
-
233 
-
234  RETURN
-
235  END
-
236 
-
237 C> scfft
-
238 C>
-
239 C> @param isign
-
240 C> @param n
-
241 C> @param scale
-
242 C> @param x
-
243 C> @param y
-
244 C> @param table
-
245 C> @param work
-
246 C> @param isys
-
247 C>
-
248 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
249  SUBROUTINE scfft(isign,n,scale,x,y,table,work,isys)
-
250 
-
251  implicit none
-
252  integer isign,n,isys,i
-
253  real scale,x(*),y(*),table(*),work(*)
-
254 
-
255  IF (isign.eq.0) THEN
-
256  CALL rffti(n,table)
-
257  ENDIF
-
258  IF (isign.eq.-1) THEN
-
259  DO i=1,n
-
260  y(i)=x(i)
-
261  ENDDO
-
262  CALL rfftf(n,y,table)
-
263  DO i=1,n
-
264  y(i)=scale*y(i)
-
265  ENDDO
-
266  DO i=n,2,-1
-
267  y(i+1)=y(i)
-
268  ENDDO
-
269  y(2)=0.
-
270  ENDIF
-
271 
-
272  RETURN
-
273  END
-
274 
-
275 C> RFFTF
-
276 C>
-
277 C> @param N
-
278 C> @param R
-
279 C> @param WSAVE
-
280 C>
-
281 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
282  SUBROUTINE rfftf (N,R,WSAVE)
-
283  dimension r(1) ,wsave(1)
-
284  IF (n .EQ. 1) RETURN
-
285  CALL rfftf1 (n,r,wsave,wsave(n+1),wsave(2*n+1))
-
286  RETURN
-
287  END
-
288 
-
289 C> RFFTB
-
290 C>
-
291 C> @param N
-
292 C> @param R
-
293 C> @param WSAVE
-
294 C>
-
295 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
296  SUBROUTINE rfftb (N,R,WSAVE)
-
297  dimension r(1) ,wsave(1)
-
298  IF (n .EQ. 1) RETURN
-
299  CALL rfftb1 (n,r,wsave,wsave(n+1),wsave(2*n+1))
-
300  RETURN
-
301  END
-
302 
-
303 C> RFFTI
-
304 C>
-
305 C> @param N
-
306 C> @param WSAVE
-
307 C>
-
308 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
309  SUBROUTINE rffti (N,WSAVE)
-
310  dimension wsave(1)
-
311  IF (n .EQ. 1) RETURN
-
312  CALL rffti1 (n,wsave(n+1),wsave(2*n+1))
-
313  RETURN
-
314  END
-
315 
-
316 C> RFFTB1
-
317 C>
-
318 C> @param N
-
319 C> @param C
-
320 C> @param CH
-
321 C> @param WA
-
322 C> @param IFAC
-
323 C>
-
324 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
325  SUBROUTINE rfftb1 (N,C,CH,WA,IFAC)
-
326  dimension ch(1) ,c(1) ,wa(1) ,ifac(*)
-
327  nf = ifac(2)
-
328  na = 0
-
329  l1 = 1
-
330  iw = 1
-
331  DO 116 k1=1,nf
-
332  ip = ifac(k1+2)
-
333  l2 = ip*l1
-
334  ido = n/l2
-
335  idl1 = ido*l1
-
336  IF (ip .NE. 4) GO TO 103
-
337  ix2 = iw+ido
-
338  ix3 = ix2+ido
-
339  IF (na .NE. 0) GO TO 101
-
340  CALL radb4 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3))
-
341  GO TO 102
-
342  101 CALL radb4 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3))
-
343  102 na = 1-na
-
344  GO TO 115
-
345  103 IF (ip .NE. 2) GO TO 106
-
346  IF (na .NE. 0) GO TO 104
-
347  CALL radb2 (ido,l1,c,ch,wa(iw))
-
348  GO TO 105
-
349  104 CALL radb2 (ido,l1,ch,c,wa(iw))
-
350  105 na = 1-na
-
351  GO TO 115
-
352  106 IF (ip .NE. 3) GO TO 109
-
353  ix2 = iw+ido
-
354  IF (na .NE. 0) GO TO 107
-
355  CALL radb3 (ido,l1,c,ch,wa(iw),wa(ix2))
-
356  GO TO 108
-
357  107 CALL radb3 (ido,l1,ch,c,wa(iw),wa(ix2))
-
358  108 na = 1-na
+
165  implicit none
+
166  integer init,ldx,ldy,n,m,isign,n1,n2,i,j
+
167  real x(ldx,*),y(2*ldy,*),scale,table(44002),wrk(*)
+
168  real, optional :: z
+
169  integer, optional :: nz
+
170 
+
171  IF (init.ne.0) THEN
+
172  CALL rffti(n,table)
+
173  ELSE
+
174  DO j=1,m
+
175  DO i=1,n
+
176  y(i,j)=x(i,j)
+
177  ENDDO
+
178  CALL rfftf(n,y(1,j),table)
+
179  DO i=1,n
+
180  y(i,j)=scale*y(i,j)
+
181  ENDDO
+
182  DO i=n,2,-1
+
183  y(i+1,j)=y(i,j)
+
184  ENDDO
+
185  y(2,j)=0.
+
186 C 01/17/2013 vvvvvvvvvvvvv E.Mirvis added ver 2.0.1 by S.Moorthi request. No +|- demo.
+
187  y(n+2,j) = 0.
+
188  ENDDO
+
189  ENDIF
+
190 
+
191  RETURN
+
192  END
+
193 
+
194 C> srcft
+
195 C>
+
196 C> @param init
+
197 C> @param x
+
198 C> @param ldx
+
199 C> @param y
+
200 C> @param ldy
+
201 C> @param n
+
202 C> @param m
+
203 C> @param isign
+
204 C> @param scale
+
205 C> @param table
+
206 C> @param n1
+
207 C> @param wrk
+
208 C> @param n2
+
209 C> @param z
+
210 C> @param nz
+
211 C>
+
212 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
213  SUBROUTINE srcft(init,x,ldx,y,ldy,n,m,isign,scale,
+
214  & table,n1,wrk,n2,z,nz)
+
215 
+
216  implicit none
+
217  integer init,ldx,ldy,n,m,isign,n1,n2,i,j
+
218  real x(ldx,*),y(2*ldy,*),scale,table(44002),wrk(*)
+
219  real, optional :: z
+
220  integer, optional :: nz
+
221 
+
222  IF (init.ne.0) THEN
+
223  CALL rffti(n,table)
+
224  ELSE
+
225  DO j=1,m
+
226  DO i=1,n
+
227  y(i,j)=x(i,j)
+
228  ENDDO
+
229  CALL rfftf(n,y(1,j),table)
+
230  DO i=1,n
+
231  y(i,j)=scale*y(i,j)
+
232  ENDDO
+
233  DO i=n,2,-1
+
234  y(i+1,j)=y(i,j)
+
235  ENDDO
+
236  y(2,j)=0.
+
237  y(n+2,j) = 0.
+
238 C 01/17/2013 ^^^^^^^^^^E.Mirvis added ver 2.0.1 by S.Moorthi request. No +|- demo.
+
239  ENDDO
+
240  ENDIF
+
241 
+
242  RETURN
+
243  END
+
244 
+
245 C> scfft
+
246 C>
+
247 C> @param isign
+
248 C> @param n
+
249 C> @param scale
+
250 C> @param x
+
251 C> @param y
+
252 C> @param table
+
253 C> @param work
+
254 C> @param isys
+
255 C>
+
256 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
257  SUBROUTINE scfft(isign,n,scale,x,y,table,work,isys)
+
258 
+
259  implicit none
+
260  integer isign,n,isys,i
+
261  real scale,x(*),y(*),table(*),work(*)
+
262 
+
263  IF (isign.eq.0) THEN
+
264  CALL rffti(n,table)
+
265  ENDIF
+
266  IF (isign.eq.-1) THEN
+
267  DO i=1,n
+
268  y(i)=x(i)
+
269  ENDDO
+
270  CALL rfftf(n,y,table)
+
271  DO i=1,n
+
272  y(i)=scale*y(i)
+
273  ENDDO
+
274  DO i=n,2,-1
+
275  y(i+1)=y(i)
+
276  ENDDO
+
277  y(2)=0.
+
278  ENDIF
+
279 
+
280  RETURN
+
281  END
+
282 
+
283 C> RFFTF
+
284 C>
+
285 C> @param N
+
286 C> @param R
+
287 C> @param WSAVE
+
288 C>
+
289 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
290  SUBROUTINE rfftf (N,R,WSAVE)
+
291  dimension r(*) ,wsave(*)
+
292  IF (n .EQ. 1) RETURN
+
293  CALL rfftf1 (n,r,wsave,wsave(n+1),wsave(2*n+1))
+
294  RETURN
+
295  END
+
296 
+
297 C> RFFTB
+
298 C>
+
299 C> @param N
+
300 C> @param R
+
301 C> @param WSAVE
+
302 C>
+
303 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
304  SUBROUTINE rfftb (N,R,WSAVE)
+
305  dimension r(*) ,wsave(*)
+
306  IF (n .EQ. 1) RETURN
+
307  CALL rfftb1 (n,r,wsave,wsave(n+1),wsave(2*n+1))
+
308  RETURN
+
309  END
+
310 
+
311 C> RFFTI
+
312 C>
+
313 C> @param N
+
314 C> @param WSAVE
+
315 C>
+
316 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
317  SUBROUTINE rffti (N,WSAVE)
+
318  dimension wsave(*)
+
319  IF (n .EQ. 1) RETURN
+
320  CALL rffti1 (n,wsave(n+1),wsave(2*n+1))
+
321  RETURN
+
322  END
+
323 
+
324 C> RFFTB1
+
325 C>
+
326 C> @param N
+
327 C> @param C
+
328 C> @param CH
+
329 C> @param WA
+
330 C> @param IFAC
+
331 C>
+
332 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
333  SUBROUTINE rfftb1 (N,C,CH,WA,IFAC)
+
334  REAL CH(*) ,C(*) ,WA(*) ,IFAC(*)
+
335  NF = int(ifac(2))
+
336  na = 0
+
337  l1 = 1
+
338  iw = 1
+
339  DO 116 k1=1,nf
+
340  ip = int(ifac(k1+2))
+
341  l2 = ip*l1
+
342  ido = n/l2
+
343  idl1 = ido*l1
+
344  IF (ip .NE. 4) GO TO 103
+
345  ix2 = iw+ido
+
346  ix3 = ix2+ido
+
347  IF (na .NE. 0) GO TO 101
+
348  CALL radb4 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3))
+
349  GO TO 102
+
350  101 CALL radb4 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3))
+
351  102 na = 1-na
+
352  GO TO 115
+
353  103 IF (ip .NE. 2) GO TO 106
+
354  IF (na .NE. 0) GO TO 104
+
355  CALL radb2 (ido,l1,c,ch,wa(iw))
+
356  GO TO 105
+
357  104 CALL radb2 (ido,l1,ch,c,wa(iw))
+
358  105 na = 1-na
359  GO TO 115
-
360  109 IF (ip .NE. 5) GO TO 112
+
360  106 IF (ip .NE. 3) GO TO 109
361  ix2 = iw+ido
-
362  ix3 = ix2+ido
-
363  ix4 = ix3+ido
-
364  IF (na .NE. 0) GO TO 110
-
365  CALL radb5 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3),wa(ix4))
-
366  GO TO 111
-
367  110 CALL radb5 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3),wa(ix4))
-
368  111 na = 1-na
-
369  GO TO 115
-
370  112 IF (na .NE. 0) GO TO 113
-
371  CALL radbg (ido,ip,l1,idl1,c,c,c,ch,ch,wa(iw))
-
372  GO TO 114
-
373  113 CALL radbg (ido,ip,l1,idl1,ch,ch,ch,c,c,wa(iw))
-
374  114 IF (ido .EQ. 1) na = 1-na
-
375  115 l1 = l2
-
376  iw = iw+(ip-1)*ido
-
377  116 CONTINUE
-
378  IF (na .EQ. 0) RETURN
-
379  DO 117 i=1,n
-
380  c(i) = ch(i)
-
381  117 CONTINUE
-
382  RETURN
-
383  END
-
384 
-
385 C> RFFTF1
-
386 C>
-
387 C> @param N
-
388 C> @param C
-
389 C> @param CH
-
390 C> @param WA
-
391 C> @param IFAC
-
392 C>
-
393 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
394  SUBROUTINE rfftf1 (N,C,CH,WA,IFAC)
-
395  dimension ch(1) ,c(1) ,wa(1) ,ifac(*)
-
396  nf = ifac(2)
-
397  na = 1
-
398  l2 = n
-
399  iw = n
-
400  DO 111 k1=1,nf
-
401  kh = nf-k1
-
402  ip = ifac(kh+3)
-
403  l1 = l2/ip
-
404  ido = n/l2
-
405  idl1 = ido*l1
-
406  iw = iw-(ip-1)*ido
-
407  na = 1-na
-
408  IF (ip .NE. 4) GO TO 102
-
409  ix2 = iw+ido
-
410  ix3 = ix2+ido
-
411  IF (na .NE. 0) GO TO 101
-
412  CALL radf4 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3))
-
413  GO TO 110
-
414  101 CALL radf4 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3))
-
415  GO TO 110
-
416  102 IF (ip .NE. 2) GO TO 104
-
417  IF (na .NE. 0) GO TO 103
-
418  CALL radf2 (ido,l1,c,ch,wa(iw))
-
419  GO TO 110
-
420  103 CALL radf2 (ido,l1,ch,c,wa(iw))
+
362  IF (na .NE. 0) GO TO 107
+
363  CALL radb3 (ido,l1,c,ch,wa(iw),wa(ix2))
+
364  GO TO 108
+
365  107 CALL radb3 (ido,l1,ch,c,wa(iw),wa(ix2))
+
366  108 na = 1-na
+
367  GO TO 115
+
368  109 IF (ip .NE. 5) GO TO 112
+
369  ix2 = iw+ido
+
370  ix3 = ix2+ido
+
371  ix4 = ix3+ido
+
372  IF (na .NE. 0) GO TO 110
+
373  CALL radb5 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3),wa(ix4))
+
374  GO TO 111
+
375  110 CALL radb5 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3),wa(ix4))
+
376  111 na = 1-na
+
377  GO TO 115
+
378  112 IF (na .NE. 0) GO TO 113
+
379  CALL radbg (ido,ip,l1,idl1,c,c,c,ch,ch,wa(iw))
+
380  GO TO 114
+
381  113 CALL radbg (ido,ip,l1,idl1,ch,ch,ch,c,c,wa(iw))
+
382  114 IF (ido .EQ. 1) na = 1-na
+
383  115 l1 = l2
+
384  iw = iw+(ip-1)*ido
+
385  116 CONTINUE
+
386  IF (na .EQ. 0) RETURN
+
387  DO 117 i=1,n
+
388  c(i) = ch(i)
+
389  117 CONTINUE
+
390  RETURN
+
391  END
+
392 
+
393 C> RFFTF1
+
394 C>
+
395 C> @param N
+
396 C> @param C
+
397 C> @param CH
+
398 C> @param WA
+
399 C> @param IFAC
+
400 C>
+
401 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
402  SUBROUTINE rfftf1 (N,C,CH,WA,IFAC)
+
403  REAL CH(*) ,C(*) ,WA(*) ,IFAC(*)
+
404  NF = int(ifac(2))
+
405  na = 1
+
406  l2 = n
+
407  iw = n
+
408  DO 111 k1=1,nf
+
409  kh = nf-k1
+
410  ip = int(ifac(kh+3))
+
411  l1 = l2/ip
+
412  ido = n/l2
+
413  idl1 = ido*l1
+
414  iw = iw-(ip-1)*ido
+
415  na = 1-na
+
416  IF (ip .NE. 4) GO TO 102
+
417  ix2 = iw+ido
+
418  ix3 = ix2+ido
+
419  IF (na .NE. 0) GO TO 101
+
420  CALL radf4 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3))
421  GO TO 110
-
422  104 IF (ip .NE. 3) GO TO 106
-
423  ix2 = iw+ido
-
424  IF (na .NE. 0) GO TO 105
-
425  CALL radf3 (ido,l1,c,ch,wa(iw),wa(ix2))
-
426  GO TO 110
-
427  105 CALL radf3 (ido,l1,ch,c,wa(iw),wa(ix2))
-
428  GO TO 110
-
429  106 IF (ip .NE. 5) GO TO 108
-
430  ix2 = iw+ido
-
431  ix3 = ix2+ido
-
432  ix4 = ix3+ido
-
433  IF (na .NE. 0) GO TO 107
-
434  CALL radf5 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3),wa(ix4))
-
435  GO TO 110
-
436  107 CALL radf5 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3),wa(ix4))
-
437  GO TO 110
-
438  108 IF (ido .EQ. 1) na = 1-na
-
439  IF (na .NE. 0) GO TO 109
-
440  CALL radfg (ido,ip,l1,idl1,c,c,c,ch,ch,wa(iw))
-
441  na = 1
-
442  GO TO 110
-
443  109 CALL radfg (ido,ip,l1,idl1,ch,ch,ch,c,c,wa(iw))
-
444  na = 0
-
445  110 l2 = l1
-
446  111 CONTINUE
-
447  IF (na .EQ. 1) RETURN
-
448  DO 112 i=1,n
-
449  c(i) = ch(i)
-
450  112 CONTINUE
-
451  RETURN
-
452  END
-
453 
-
454 C> RFFTI1
-
455 C>
-
456 C> @param N
-
457 C> @param WA
-
458 C> @param IFAC
-
459 C>
-
460 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
461  SUBROUTINE rffti1 (N,WA,IFAC)
-
462  dimension wa(1) ,ifac(*) ,ntryh(4)
-
463  DATA ntryh(1),ntryh(2),ntryh(3),ntryh(4)/4,2,3,5/
-
464  nl = n
-
465  nf = 0
-
466  j = 0
-
467  101 j = j+1
-
468  IF (j-4) 102,102,103
-
469  102 ntry = ntryh(j)
-
470  GO TO 104
-
471  103 ntry = ntry+2
-
472  104 nq = nl/ntry
-
473  nr = nl-ntry*nq
-
474  IF (nr) 101,105,101
-
475  105 nf = nf+1
-
476  ifac(nf+2) = ntry
-
477  nl = nq
-
478  IF (ntry .NE. 2) GO TO 107
-
479  IF (nf .EQ. 1) GO TO 107
-
480  DO 106 i=2,nf
-
481  ib = nf-i+2
-
482  ifac(ib+2) = ifac(ib+1)
-
483  106 CONTINUE
-
484  ifac(3) = 2
-
485  107 IF (nl .NE. 1) GO TO 104
-
486  ifac(1) = n
-
487  ifac(2) = nf
-
488  tpi = 6.28318530717959
-
489  argh = tpi/float(n)
-
490  is = 0
-
491  nfm1 = nf-1
-
492  l1 = 1
-
493  IF (nfm1 .EQ. 0) RETURN
-
494 !OCL NOVREC
-
495  DO 110 k1=1,nfm1
-
496  ip = ifac(k1+2)
-
497  ld = 0
-
498  l2 = l1*ip
-
499  ido = n/l2
-
500  ipm = ip-1
-
501  DO 109 j=1,ipm
-
502  ld = ld+l1
-
503  i = is
-
504  argld = float(ld)*argh
-
505  fi = 0
-
506 !OCL SCALAR
-
507  DO 108 ii=3,ido,2
-
508  i = i+2
-
509  fi = fi+1
-
510  arg = fi*argld
-
511  wa(i-1) = cos(arg)
-
512  wa(i) = sin(arg)
-
513  108 CONTINUE
-
514  is = is+ido
-
515  109 CONTINUE
-
516  l1 = l2
-
517  110 CONTINUE
-
518  RETURN
-
519  END
-
520 
-
521 C> RADB2
-
522 C>
-
523 C> @param IDO
-
524 C> @param L1
-
525 C> @param CC
-
526 C> @param CH
-
527 C> @param WA1
-
528 C>
-
529 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
530  SUBROUTINE radb2 (IDO,L1,CC,CH,WA1)
-
531  dimension cc(ido,2,l1) ,ch(ido,l1,2) ,
-
532  1 wa1(1)
-
533  DO 101 k=1,l1
-
534  ch(1,k,1) = cc(1,1,k)+cc(ido,2,k)
-
535  ch(1,k,2) = cc(1,1,k)-cc(ido,2,k)
-
536  101 CONTINUE
-
537  IF (ido-2) 107,105,102
-
538  102 idp2 = ido+2
-
539 !OCL NOVREC
-
540  DO 104 k=1,l1
-
541  DO 103 i=3,ido,2
-
542  ic = idp2-i
-
543  ch(i-1,k,1) = cc(i-1,1,k)+cc(ic-1,2,k)
-
544  tr2 = cc(i-1,1,k)-cc(ic-1,2,k)
-
545  ch(i,k,1) = cc(i,1,k)-cc(ic,2,k)
-
546  ti2 = cc(i,1,k)+cc(ic,2,k)
-
547  ch(i-1,k,2) = wa1(i-2)*tr2-wa1(i-1)*ti2
-
548  ch(i,k,2) = wa1(i-2)*ti2+wa1(i-1)*tr2
-
549  103 CONTINUE
-
550  104 CONTINUE
-
551  IF (mod(ido,2) .EQ. 1) RETURN
-
552  105 DO 106 k=1,l1
-
553  ch(ido,k,1) = cc(ido,1,k)+cc(ido,1,k)
-
554  ch(ido,k,2) = -(cc(1,2,k)+cc(1,2,k))
-
555  106 CONTINUE
-
556  107 RETURN
-
557  END
-
558 
-
559 C> RADB3
-
560 C>
-
561 C> @param IDO
-
562 C> @param L1
-
563 C> @param CC
-
564 C> @param CH
-
565 C> @param WA1
-
566 C> @param WA2
-
567 C>
-
568 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
569  SUBROUTINE radb3 (IDO,L1,CC,CH,WA1,WA2)
-
570  dimension cc(ido,3,l1) ,ch(ido,l1,3) ,
-
571  1 wa1(1) ,wa2(1)
-
572  DATA taur,taui /-.5,.866025403784439/
-
573  DO 101 k=1,l1
-
574  tr2 = cc(ido,2,k)+cc(ido,2,k)
-
575  cr2 = cc(1,1,k)+taur*tr2
-
576  ch(1,k,1) = cc(1,1,k)+tr2
-
577  ci3 = taui*(cc(1,3,k)+cc(1,3,k))
-
578  ch(1,k,2) = cr2-ci3
-
579  ch(1,k,3) = cr2+ci3
-
580  101 CONTINUE
-
581  IF (ido .EQ. 1) RETURN
-
582  idp2 = ido+2
-
583 !OCL NOVREC
-
584  DO 103 k=1,l1
-
585  DO 102 i=3,ido,2
-
586  ic = idp2-i
-
587  tr2 = cc(i-1,3,k)+cc(ic-1,2,k)
-
588  cr2 = cc(i-1,1,k)+taur*tr2
-
589  ch(i-1,k,1) = cc(i-1,1,k)+tr2
-
590  ti2 = cc(i,3,k)-cc(ic,2,k)
-
591  ci2 = cc(i,1,k)+taur*ti2
-
592  ch(i,k,1) = cc(i,1,k)+ti2
-
593  cr3 = taui*(cc(i-1,3,k)-cc(ic-1,2,k))
-
594  ci3 = taui*(cc(i,3,k)+cc(ic,2,k))
-
595  dr2 = cr2-ci3
-
596  dr3 = cr2+ci3
-
597  di2 = ci2+cr3
-
598  di3 = ci2-cr3
-
599  ch(i-1,k,2) = wa1(i-2)*dr2-wa1(i-1)*di2
-
600  ch(i,k,2) = wa1(i-2)*di2+wa1(i-1)*dr2
-
601  ch(i-1,k,3) = wa2(i-2)*dr3-wa2(i-1)*di3
-
602  ch(i,k,3) = wa2(i-2)*di3+wa2(i-1)*dr3
-
603  102 CONTINUE
-
604  103 CONTINUE
-
605  RETURN
-
606  END
-
607 
-
608 C> RADB4
-
609 C>
-
610 C> @param IDO
-
611 C> @param L1
-
612 C> @param CC
-
613 C> @param CH
-
614 C> @param WA1
-
615 C> @param WA2
-
616 C> @param WA3
-
617 C>
-
618 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
619  SUBROUTINE radb4 (IDO,L1,CC,CH,WA1,WA2,WA3)
-
620  dimension cc(ido,4,l1) ,ch(ido,l1,4) ,
-
621  1 wa1(1) ,wa2(1) ,wa3(1)
-
622  DATA sqrt2 /1.414213562373095/
-
623  DO 101 k=1,l1
-
624  tr1 = cc(1,1,k)-cc(ido,4,k)
-
625  tr2 = cc(1,1,k)+cc(ido,4,k)
-
626  tr3 = cc(ido,2,k)+cc(ido,2,k)
-
627  tr4 = cc(1,3,k)+cc(1,3,k)
-
628  ch(1,k,1) = tr2+tr3
-
629  ch(1,k,2) = tr1-tr4
-
630  ch(1,k,3) = tr2-tr3
-
631  ch(1,k,4) = tr1+tr4
-
632  101 CONTINUE
-
633  IF (ido-2) 107,105,102
-
634  102 idp2 = ido+2
-
635 !OCL NOVREC
-
636  DO 104 k=1,l1
-
637  DO 103 i=3,ido,2
-
638  ic = idp2-i
-
639  ti1 = cc(i,1,k)+cc(ic,4,k)
-
640  ti2 = cc(i,1,k)-cc(ic,4,k)
-
641  ti3 = cc(i,3,k)-cc(ic,2,k)
-
642  tr4 = cc(i,3,k)+cc(ic,2,k)
-
643  tr1 = cc(i-1,1,k)-cc(ic-1,4,k)
-
644  tr2 = cc(i-1,1,k)+cc(ic-1,4,k)
-
645  ti4 = cc(i-1,3,k)-cc(ic-1,2,k)
-
646  tr3 = cc(i-1,3,k)+cc(ic-1,2,k)
-
647  ch(i-1,k,1) = tr2+tr3
-
648  cr3 = tr2-tr3
-
649  ch(i,k,1) = ti2+ti3
-
650  ci3 = ti2-ti3
-
651  cr2 = tr1-tr4
-
652  cr4 = tr1+tr4
-
653  ci2 = ti1+ti4
-
654  ci4 = ti1-ti4
-
655  ch(i-1,k,2) = wa1(i-2)*cr2-wa1(i-1)*ci2
-
656  ch(i,k,2) = wa1(i-2)*ci2+wa1(i-1)*cr2
-
657  ch(i-1,k,3) = wa2(i-2)*cr3-wa2(i-1)*ci3
-
658  ch(i,k,3) = wa2(i-2)*ci3+wa2(i-1)*cr3
-
659  ch(i-1,k,4) = wa3(i-2)*cr4-wa3(i-1)*ci4
-
660  ch(i,k,4) = wa3(i-2)*ci4+wa3(i-1)*cr4
-
661  103 CONTINUE
-
662  104 CONTINUE
-
663  IF (mod(ido,2) .EQ. 1) RETURN
-
664  105 CONTINUE
-
665  DO 106 k=1,l1
-
666  ti1 = cc(1,2,k)+cc(1,4,k)
-
667  ti2 = cc(1,4,k)-cc(1,2,k)
-
668  tr1 = cc(ido,1,k)-cc(ido,3,k)
-
669  tr2 = cc(ido,1,k)+cc(ido,3,k)
-
670  ch(ido,k,1) = tr2+tr2
-
671  ch(ido,k,2) = sqrt2*(tr1-ti1)
-
672  ch(ido,k,3) = ti2+ti2
-
673  ch(ido,k,4) = -sqrt2*(tr1+ti1)
-
674  106 CONTINUE
-
675  107 RETURN
-
676  END
-
677 
-
678 C> RADB5
-
679 C>
-
680 C> @param IDO
-
681 C> @param L1
-
682 C> @param CC
-
683 C> @param CH
-
684 C> @param WA1
-
685 C> @param WA2
-
686 C> @param WA3
-
687 C> @param WA4
-
688 C>
-
689 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
690  SUBROUTINE radb5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
-
691  dimension cc(ido,5,l1) ,ch(ido,l1,5) ,
-
692  1 wa1(1) ,wa2(1) ,wa3(1) ,wa4(1)
-
693  DATA tr11,ti11,tr12,ti12 /.309016994374947,.951056516295154,
-
694  1-.809016994374947,.587785252292473/
-
695  DO 101 k=1,l1
-
696  ti5 = cc(1,3,k)+cc(1,3,k)
-
697  ti4 = cc(1,5,k)+cc(1,5,k)
-
698  tr2 = cc(ido,2,k)+cc(ido,2,k)
-
699  tr3 = cc(ido,4,k)+cc(ido,4,k)
-
700  ch(1,k,1) = cc(1,1,k)+tr2+tr3
-
701  cr2 = cc(1,1,k)+tr11*tr2+tr12*tr3
-
702  cr3 = cc(1,1,k)+tr12*tr2+tr11*tr3
-
703  ci5 = ti11*ti5+ti12*ti4
-
704  ci4 = ti12*ti5-ti11*ti4
-
705  ch(1,k,2) = cr2-ci5
-
706  ch(1,k,3) = cr3-ci4
-
707  ch(1,k,4) = cr3+ci4
-
708  ch(1,k,5) = cr2+ci5
-
709  101 CONTINUE
-
710  IF (ido .EQ. 1) RETURN
-
711  idp2 = ido+2
-
712  DO 103 k=1,l1
-
713  DO 102 i=3,ido,2
-
714  ic = idp2-i
-
715  ti5 = cc(i,3,k)+cc(ic,2,k)
-
716  ti2 = cc(i,3,k)-cc(ic,2,k)
-
717  ti4 = cc(i,5,k)+cc(ic,4,k)
-
718  ti3 = cc(i,5,k)-cc(ic,4,k)
-
719  tr5 = cc(i-1,3,k)-cc(ic-1,2,k)
-
720  tr2 = cc(i-1,3,k)+cc(ic-1,2,k)
-
721  tr4 = cc(i-1,5,k)-cc(ic-1,4,k)
-
722  tr3 = cc(i-1,5,k)+cc(ic-1,4,k)
-
723  ch(i-1,k,1) = cc(i-1,1,k)+tr2+tr3
-
724  ch(i,k,1) = cc(i,1,k)+ti2+ti3
-
725  cr2 = cc(i-1,1,k)+tr11*tr2+tr12*tr3
-
726  ci2 = cc(i,1,k)+tr11*ti2+tr12*ti3
-
727  cr3 = cc(i-1,1,k)+tr12*tr2+tr11*tr3
-
728  ci3 = cc(i,1,k)+tr12*ti2+tr11*ti3
-
729  cr5 = ti11*tr5+ti12*tr4
-
730  ci5 = ti11*ti5+ti12*ti4
-
731  cr4 = ti12*tr5-ti11*tr4
-
732  ci4 = ti12*ti5-ti11*ti4
-
733  dr3 = cr3-ci4
-
734  dr4 = cr3+ci4
-
735  di3 = ci3+cr4
-
736  di4 = ci3-cr4
-
737  dr5 = cr2+ci5
-
738  dr2 = cr2-ci5
-
739  di5 = ci2-cr5
-
740  di2 = ci2+cr5
-
741  ch(i-1,k,2) = wa1(i-2)*dr2-wa1(i-1)*di2
-
742  ch(i,k,2) = wa1(i-2)*di2+wa1(i-1)*dr2
-
743  ch(i-1,k,3) = wa2(i-2)*dr3-wa2(i-1)*di3
-
744  ch(i,k,3) = wa2(i-2)*di3+wa2(i-1)*dr3
-
745  ch(i-1,k,4) = wa3(i-2)*dr4-wa3(i-1)*di4
-
746  ch(i,k,4) = wa3(i-2)*di4+wa3(i-1)*dr4
-
747  ch(i-1,k,5) = wa4(i-2)*dr5-wa4(i-1)*di5
-
748  ch(i,k,5) = wa4(i-2)*di5+wa4(i-1)*dr5
-
749  102 CONTINUE
-
750  103 CONTINUE
-
751  RETURN
-
752  END
-
753 
-
754 C> RADBG
-
755 C>
-
756 C> @param IDO
-
757 C> @param IP
-
758 C> @param L1
-
759 C> @param IDL1
-
760 C> @param CC
-
761 C> @param C1
-
762 C> @param C2
-
763 C> @param CH
-
764 C> @param CH2
-
765 C> @param WA
-
766 C>
-
767 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
768  SUBROUTINE radbg (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
-
769  dimension ch(ido,l1,ip) ,cc(ido,ip,l1) ,
-
770  1 c1(ido,l1,ip) ,c2(idl1,ip),
-
771  2 ch2(idl1,ip) ,wa(1)
-
772  DATA tpi/6.28318530717959/
-
773  arg = tpi/float(ip)
-
774  dcp = cos(arg)
-
775  dsp = sin(arg)
-
776  idp2 = ido+2
-
777  nbd = (ido-1)/2
-
778  ipp2 = ip+2
-
779  ipph = (ip+1)/2
-
780  IF (ido .LT. l1) GO TO 103
-
781  DO 102 k=1,l1
-
782  DO 101 i=1,ido
-
783  ch(i,k,1) = cc(i,1,k)
-
784  101 CONTINUE
-
785  102 CONTINUE
-
786  GO TO 106
-
787  103 DO 105 i=1,ido
-
788  DO 104 k=1,l1
-
789  ch(i,k,1) = cc(i,1,k)
-
790  104 CONTINUE
-
791  105 CONTINUE
-
792 !OCL NOVREC
-
793  106 DO 108 j=2,ipph
-
794  jc = ipp2-j
-
795  j2 = j+j
-
796  DO 107 k=1,l1
-
797  ch(1,k,j) = cc(ido,j2-2,k)+cc(ido,j2-2,k)
-
798  ch(1,k,jc) = cc(1,j2-1,k)+cc(1,j2-1,k)
-
799  107 CONTINUE
-
800  108 CONTINUE
-
801  IF (ido .EQ. 1) GO TO 116
-
802  IF (nbd .LT. l1) GO TO 112
-
803 !OCL NOVREC
-
804  DO 111 j=2,ipph
-
805  jc = ipp2-j
-
806  DO 110 k=1,l1
-
807  DO 109 i=3,ido,2
-
808  ic = idp2-i
-
809  ch(i-1,k,j) = cc(i-1,2*j-1,k)+cc(ic-1,2*j-2,k)
-
810  ch(i-1,k,jc) = cc(i-1,2*j-1,k)-cc(ic-1,2*j-2,k)
-
811  ch(i,k,j) = cc(i,2*j-1,k)-cc(ic,2*j-2,k)
-
812  ch(i,k,jc) = cc(i,2*j-1,k)+cc(ic,2*j-2,k)
-
813  109 CONTINUE
-
814  110 CONTINUE
-
815  111 CONTINUE
-
816  GO TO 116
-
817  112 DO 115 j=2,ipph
-
818  jc = ipp2-j
-
819  DO 114 i=3,ido,2
-
820  ic = idp2-i
-
821  DO 113 k=1,l1
-
822  ch(i-1,k,j) = cc(i-1,2*j-1,k)+cc(ic-1,2*j-2,k)
-
823  ch(i-1,k,jc) = cc(i-1,2*j-1,k)-cc(ic-1,2*j-2,k)
-
824  ch(i,k,j) = cc(i,2*j-1,k)-cc(ic,2*j-2,k)
-
825  ch(i,k,jc) = cc(i,2*j-1,k)+cc(ic,2*j-2,k)
-
826  113 CONTINUE
-
827  114 CONTINUE
-
828  115 CONTINUE
-
829  116 ar1 = 1.
-
830  ai1 = 0.
+
422  101 CALL radf4 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3))
+
423  GO TO 110
+
424  102 IF (ip .NE. 2) GO TO 104
+
425  IF (na .NE. 0) GO TO 103
+
426  CALL radf2 (ido,l1,c,ch,wa(iw))
+
427  GO TO 110
+
428  103 CALL radf2 (ido,l1,ch,c,wa(iw))
+
429  GO TO 110
+
430  104 IF (ip .NE. 3) GO TO 106
+
431  ix2 = iw+ido
+
432  IF (na .NE. 0) GO TO 105
+
433  CALL radf3 (ido,l1,c,ch,wa(iw),wa(ix2))
+
434  GO TO 110
+
435  105 CALL radf3 (ido,l1,ch,c,wa(iw),wa(ix2))
+
436  GO TO 110
+
437  106 IF (ip .NE. 5) GO TO 108
+
438  ix2 = iw+ido
+
439  ix3 = ix2+ido
+
440  ix4 = ix3+ido
+
441  IF (na .NE. 0) GO TO 107
+
442  CALL radf5 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3),wa(ix4))
+
443  GO TO 110
+
444  107 CALL radf5 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3),wa(ix4))
+
445  GO TO 110
+
446  108 IF (ido .EQ. 1) na = 1-na
+
447  IF (na .NE. 0) GO TO 109
+
448  CALL radfg (ido,ip,l1,idl1,c,c,c,ch,ch,wa(iw))
+
449  na = 1
+
450  GO TO 110
+
451  109 CALL radfg (ido,ip,l1,idl1,ch,ch,ch,c,c,wa(iw))
+
452  na = 0
+
453  110 l2 = l1
+
454  111 CONTINUE
+
455  IF (na .EQ. 1) RETURN
+
456  DO 112 i=1,n
+
457  c(i) = ch(i)
+
458  112 CONTINUE
+
459  RETURN
+
460  END
+
461 
+
462 C> RFFTI1
+
463 C>
+
464 C> @param N
+
465 C> @param WA
+
466 C> @param IFAC
+
467 C>
+
468 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
469  SUBROUTINE rffti1 (N,WA,IFAC)
+
470  REAL WA(*) ,IFAC(*) ,NTRYH(4)
+
471  DATA NTRYH(1),NTRYH(2),NTRYH(3),NTRYH(4)/4,2,3,5/
+
472  NL = n
+
473  nf = 0
+
474  j = 0
+
475  101 j = j+1
+
476  IF ((j-4).LE.0) THEN
+
477  GO TO 102
+
478  ELSE
+
479  GO TO 103
+
480  ENDIF
+
481  102 ntry = int(ntryh(j))
+
482  GO TO 104
+
483  103 ntry = ntry+2
+
484  104 nq = nl/ntry
+
485  nr = nl-ntry*nq
+
486  IF (nr.EQ.0) THEN
+
487  GO TO 105
+
488  ELSE
+
489  GO TO 101
+
490  ENDIF
+
491  105 nf = nf+1
+
492  ifac(nf+2) = ntry
+
493  nl = nq
+
494  IF (ntry .NE. 2) GO TO 107
+
495  IF (nf .EQ. 1) GO TO 107
+
496  DO 106 i=2,nf
+
497  ib = nf-i+2
+
498  ifac(ib+2) = ifac(ib+1)
+
499  106 CONTINUE
+
500  ifac(3) = 2
+
501  107 IF (nl .NE. 1) GO TO 104
+
502  ifac(1) = n
+
503  ifac(2) = nf
+
504  tpi = 6.28318530717959
+
505  argh = tpi/float(n)
+
506  is = 0
+
507  nfm1 = nf-1
+
508  l1 = 1
+
509  IF (nfm1 .EQ. 0) RETURN
+
510 !OCL NOVREC
+
511  DO 110 k1=1,nfm1
+
512  ip = int(ifac(k1+2))
+
513  ld = 0
+
514  l2 = l1*ip
+
515  ido = n/l2
+
516  ipm = ip-1
+
517  DO 109 j=1,ipm
+
518  ld = ld+l1
+
519  i = is
+
520  argld = float(ld)*argh
+
521  fi = 0
+
522 !OCL SCALAR
+
523  DO 108 ii=3,ido,2
+
524  i = i+2
+
525  fi = fi+1
+
526  arg = fi*argld
+
527  wa(i-1) = cos(arg)
+
528  wa(i) = sin(arg)
+
529  108 CONTINUE
+
530  is = is+ido
+
531  109 CONTINUE
+
532  l1 = l2
+
533  110 CONTINUE
+
534  RETURN
+
535  END
+
536 
+
537 C> RADB2
+
538 C>
+
539 C> @param IDO
+
540 C> @param L1
+
541 C> @param CC
+
542 C> @param CH
+
543 C> @param WA1
+
544 C>
+
545 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
546  SUBROUTINE radb2 (IDO,L1,CC,CH,WA1)
+
547  dimension cc(ido,2,l1) ,ch(ido,l1,2) ,
+
548  1 wa1(*)
+
549  DO 101 k=1,l1
+
550  ch(1,k,1) = cc(1,1,k)+cc(ido,2,k)
+
551  ch(1,k,2) = cc(1,1,k)-cc(ido,2,k)
+
552  101 CONTINUE
+
553  IF (ido.LT.2) THEN
+
554  GO TO 107
+
555  ELSEIF (ido.EQ.2) THEN
+
556  GO TO 105
+
557  ELSE
+
558  GO TO 102
+
559  ENDIF
+
560  102 idp2 = ido+2
+
561 !OCL NOVREC
+
562  DO 104 k=1,l1
+
563  DO 103 i=3,ido,2
+
564  ic = idp2-i
+
565  ch(i-1,k,1) = cc(i-1,1,k)+cc(ic-1,2,k)
+
566  tr2 = cc(i-1,1,k)-cc(ic-1,2,k)
+
567  ch(i,k,1) = cc(i,1,k)-cc(ic,2,k)
+
568  ti2 = cc(i,1,k)+cc(ic,2,k)
+
569  ch(i-1,k,2) = wa1(i-2)*tr2-wa1(i-1)*ti2
+
570  ch(i,k,2) = wa1(i-2)*ti2+wa1(i-1)*tr2
+
571  103 CONTINUE
+
572  104 CONTINUE
+
573  IF (mod(ido,2) .EQ. 1) RETURN
+
574  105 DO 106 k=1,l1
+
575  ch(ido,k,1) = cc(ido,1,k)+cc(ido,1,k)
+
576  ch(ido,k,2) = -(cc(1,2,k)+cc(1,2,k))
+
577  106 CONTINUE
+
578  107 RETURN
+
579  END
+
580 
+
581 C> RADB3
+
582 C>
+
583 C> @param IDO
+
584 C> @param L1
+
585 C> @param CC
+
586 C> @param CH
+
587 C> @param WA1
+
588 C> @param WA2
+
589 C>
+
590 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
591  SUBROUTINE radb3 (IDO,L1,CC,CH,WA1,WA2)
+
592  dimension cc(ido,3,l1) ,ch(ido,l1,3) ,
+
593  1 wa1(*) ,wa2(*)
+
594  DATA taur,taui /-.5,.866025403784439/
+
595  DO 101 k=1,l1
+
596  tr2 = cc(ido,2,k)+cc(ido,2,k)
+
597  cr2 = cc(1,1,k)+taur*tr2
+
598  ch(1,k,1) = cc(1,1,k)+tr2
+
599  ci3 = taui*(cc(1,3,k)+cc(1,3,k))
+
600  ch(1,k,2) = cr2-ci3
+
601  ch(1,k,3) = cr2+ci3
+
602  101 CONTINUE
+
603  IF (ido .EQ. 1) RETURN
+
604  idp2 = ido+2
+
605 !OCL NOVREC
+
606  DO 103 k=1,l1
+
607  DO 102 i=3,ido,2
+
608  ic = idp2-i
+
609  tr2 = cc(i-1,3,k)+cc(ic-1,2,k)
+
610  cr2 = cc(i-1,1,k)+taur*tr2
+
611  ch(i-1,k,1) = cc(i-1,1,k)+tr2
+
612  ti2 = cc(i,3,k)-cc(ic,2,k)
+
613  ci2 = cc(i,1,k)+taur*ti2
+
614  ch(i,k,1) = cc(i,1,k)+ti2
+
615  cr3 = taui*(cc(i-1,3,k)-cc(ic-1,2,k))
+
616  ci3 = taui*(cc(i,3,k)+cc(ic,2,k))
+
617  dr2 = cr2-ci3
+
618  dr3 = cr2+ci3
+
619  di2 = ci2+cr3
+
620  di3 = ci2-cr3
+
621  ch(i-1,k,2) = wa1(i-2)*dr2-wa1(i-1)*di2
+
622  ch(i,k,2) = wa1(i-2)*di2+wa1(i-1)*dr2
+
623  ch(i-1,k,3) = wa2(i-2)*dr3-wa2(i-1)*di3
+
624  ch(i,k,3) = wa2(i-2)*di3+wa2(i-1)*dr3
+
625  102 CONTINUE
+
626  103 CONTINUE
+
627  RETURN
+
628  END
+
629 
+
630 C> RADB4
+
631 C>
+
632 C> @param IDO
+
633 C> @param L1
+
634 C> @param CC
+
635 C> @param CH
+
636 C> @param WA1
+
637 C> @param WA2
+
638 C> @param WA3
+
639 C>
+
640 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
641  SUBROUTINE radb4 (IDO,L1,CC,CH,WA1,WA2,WA3)
+
642  dimension cc(ido,4,l1) ,ch(ido,l1,4) ,
+
643  1 wa1(*) ,wa2(*) ,wa3(*)
+
644  DATA sqrt2 /1.414213562373095/
+
645  DO 101 k=1,l1
+
646  tr1 = cc(1,1,k)-cc(ido,4,k)
+
647  tr2 = cc(1,1,k)+cc(ido,4,k)
+
648  tr3 = cc(ido,2,k)+cc(ido,2,k)
+
649  tr4 = cc(1,3,k)+cc(1,3,k)
+
650  ch(1,k,1) = tr2+tr3
+
651  ch(1,k,2) = tr1-tr4
+
652  ch(1,k,3) = tr2-tr3
+
653  ch(1,k,4) = tr1+tr4
+
654  101 CONTINUE
+
655  IF (ido.LT.2) THEN
+
656  GO TO 107
+
657  ELSEIF (ido.EQ.2) THEN
+
658  GO TO 105
+
659  ELSE
+
660  GO TO 102
+
661  ENDIF
+
662  102 idp2 = ido+2
+
663 !OCL NOVREC
+
664  DO 104 k=1,l1
+
665  DO 103 i=3,ido,2
+
666  ic = idp2-i
+
667  ti1 = cc(i,1,k)+cc(ic,4,k)
+
668  ti2 = cc(i,1,k)-cc(ic,4,k)
+
669  ti3 = cc(i,3,k)-cc(ic,2,k)
+
670  tr4 = cc(i,3,k)+cc(ic,2,k)
+
671  tr1 = cc(i-1,1,k)-cc(ic-1,4,k)
+
672  tr2 = cc(i-1,1,k)+cc(ic-1,4,k)
+
673  ti4 = cc(i-1,3,k)-cc(ic-1,2,k)
+
674  tr3 = cc(i-1,3,k)+cc(ic-1,2,k)
+
675  ch(i-1,k,1) = tr2+tr3
+
676  cr3 = tr2-tr3
+
677  ch(i,k,1) = ti2+ti3
+
678  ci3 = ti2-ti3
+
679  cr2 = tr1-tr4
+
680  cr4 = tr1+tr4
+
681  ci2 = ti1+ti4
+
682  ci4 = ti1-ti4
+
683  ch(i-1,k,2) = wa1(i-2)*cr2-wa1(i-1)*ci2
+
684  ch(i,k,2) = wa1(i-2)*ci2+wa1(i-1)*cr2
+
685  ch(i-1,k,3) = wa2(i-2)*cr3-wa2(i-1)*ci3
+
686  ch(i,k,3) = wa2(i-2)*ci3+wa2(i-1)*cr3
+
687  ch(i-1,k,4) = wa3(i-2)*cr4-wa3(i-1)*ci4
+
688  ch(i,k,4) = wa3(i-2)*ci4+wa3(i-1)*cr4
+
689  103 CONTINUE
+
690  104 CONTINUE
+
691  IF (mod(ido,2) .EQ. 1) RETURN
+
692  105 CONTINUE
+
693  DO 106 k=1,l1
+
694  ti1 = cc(1,2,k)+cc(1,4,k)
+
695  ti2 = cc(1,4,k)-cc(1,2,k)
+
696  tr1 = cc(ido,1,k)-cc(ido,3,k)
+
697  tr2 = cc(ido,1,k)+cc(ido,3,k)
+
698  ch(ido,k,1) = tr2+tr2
+
699  ch(ido,k,2) = sqrt2*(tr1-ti1)
+
700  ch(ido,k,3) = ti2+ti2
+
701  ch(ido,k,4) = -sqrt2*(tr1+ti1)
+
702  106 CONTINUE
+
703  107 RETURN
+
704  END
+
705 
+
706 C> RADB5
+
707 C>
+
708 C> @param IDO
+
709 C> @param L1
+
710 C> @param CC
+
711 C> @param CH
+
712 C> @param WA1
+
713 C> @param WA2
+
714 C> @param WA3
+
715 C> @param WA4
+
716 C>
+
717 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
718  SUBROUTINE radb5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
+
719  dimension cc(ido,5,l1) ,ch(ido,l1,5) ,
+
720  1 wa1(*) ,wa2(*) ,wa3(*) ,wa4(*)
+
721  DATA tr11,ti11,tr12,ti12 /.309016994374947,.951056516295154,
+
722  1-.809016994374947,.587785252292473/
+
723  DO 101 k=1,l1
+
724  ti5 = cc(1,3,k)+cc(1,3,k)
+
725  ti4 = cc(1,5,k)+cc(1,5,k)
+
726  tr2 = cc(ido,2,k)+cc(ido,2,k)
+
727  tr3 = cc(ido,4,k)+cc(ido,4,k)
+
728  ch(1,k,1) = cc(1,1,k)+tr2+tr3
+
729  cr2 = cc(1,1,k)+tr11*tr2+tr12*tr3
+
730  cr3 = cc(1,1,k)+tr12*tr2+tr11*tr3
+
731  ci5 = ti11*ti5+ti12*ti4
+
732  ci4 = ti12*ti5-ti11*ti4
+
733  ch(1,k,2) = cr2-ci5
+
734  ch(1,k,3) = cr3-ci4
+
735  ch(1,k,4) = cr3+ci4
+
736  ch(1,k,5) = cr2+ci5
+
737  101 CONTINUE
+
738  IF (ido .EQ. 1) RETURN
+
739  idp2 = ido+2
+
740  DO 103 k=1,l1
+
741  DO 102 i=3,ido,2
+
742  ic = idp2-i
+
743  ti5 = cc(i,3,k)+cc(ic,2,k)
+
744  ti2 = cc(i,3,k)-cc(ic,2,k)
+
745  ti4 = cc(i,5,k)+cc(ic,4,k)
+
746  ti3 = cc(i,5,k)-cc(ic,4,k)
+
747  tr5 = cc(i-1,3,k)-cc(ic-1,2,k)
+
748  tr2 = cc(i-1,3,k)+cc(ic-1,2,k)
+
749  tr4 = cc(i-1,5,k)-cc(ic-1,4,k)
+
750  tr3 = cc(i-1,5,k)+cc(ic-1,4,k)
+
751  ch(i-1,k,1) = cc(i-1,1,k)+tr2+tr3
+
752  ch(i,k,1) = cc(i,1,k)+ti2+ti3
+
753  cr2 = cc(i-1,1,k)+tr11*tr2+tr12*tr3
+
754  ci2 = cc(i,1,k)+tr11*ti2+tr12*ti3
+
755  cr3 = cc(i-1,1,k)+tr12*tr2+tr11*tr3
+
756  ci3 = cc(i,1,k)+tr12*ti2+tr11*ti3
+
757  cr5 = ti11*tr5+ti12*tr4
+
758  ci5 = ti11*ti5+ti12*ti4
+
759  cr4 = ti12*tr5-ti11*tr4
+
760  ci4 = ti12*ti5-ti11*ti4
+
761  dr3 = cr3-ci4
+
762  dr4 = cr3+ci4
+
763  di3 = ci3+cr4
+
764  di4 = ci3-cr4
+
765  dr5 = cr2+ci5
+
766  dr2 = cr2-ci5
+
767  di5 = ci2-cr5
+
768  di2 = ci2+cr5
+
769  ch(i-1,k,2) = wa1(i-2)*dr2-wa1(i-1)*di2
+
770  ch(i,k,2) = wa1(i-2)*di2+wa1(i-1)*dr2
+
771  ch(i-1,k,3) = wa2(i-2)*dr3-wa2(i-1)*di3
+
772  ch(i,k,3) = wa2(i-2)*di3+wa2(i-1)*dr3
+
773  ch(i-1,k,4) = wa3(i-2)*dr4-wa3(i-1)*di4
+
774  ch(i,k,4) = wa3(i-2)*di4+wa3(i-1)*dr4
+
775  ch(i-1,k,5) = wa4(i-2)*dr5-wa4(i-1)*di5
+
776  ch(i,k,5) = wa4(i-2)*di5+wa4(i-1)*dr5
+
777  102 CONTINUE
+
778  103 CONTINUE
+
779  RETURN
+
780  END
+
781 
+
782 C> RADBG
+
783 C>
+
784 C> @param IDO
+
785 C> @param IP
+
786 C> @param L1
+
787 C> @param IDL1
+
788 C> @param CC
+
789 C> @param C1
+
790 C> @param C2
+
791 C> @param CH
+
792 C> @param CH2
+
793 C> @param WA
+
794 C>
+
795 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
796  SUBROUTINE radbg (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
+
797  dimension ch(ido,l1,ip) ,cc(ido,ip,l1) ,
+
798  1 c1(ido,l1,ip) ,c2(idl1,ip),
+
799  2 ch2(idl1,ip) ,wa(*)
+
800  DATA tpi/6.28318530717959/
+
801  arg = tpi/float(ip)
+
802  dcp = cos(arg)
+
803  dsp = sin(arg)
+
804  idp2 = ido+2
+
805  nbd = (ido-1)/2
+
806  ipp2 = ip+2
+
807  ipph = (ip+1)/2
+
808  IF (ido .LT. l1) GO TO 103
+
809  DO 102 k=1,l1
+
810  DO 101 i=1,ido
+
811  ch(i,k,1) = cc(i,1,k)
+
812  101 CONTINUE
+
813  102 CONTINUE
+
814  GO TO 106
+
815  103 DO 105 i=1,ido
+
816  DO 104 k=1,l1
+
817  ch(i,k,1) = cc(i,1,k)
+
818  104 CONTINUE
+
819  105 CONTINUE
+
820 !OCL NOVREC
+
821  106 DO 108 j=2,ipph
+
822  jc = ipp2-j
+
823  j2 = j+j
+
824  DO 107 k=1,l1
+
825  ch(1,k,j) = cc(ido,j2-2,k)+cc(ido,j2-2,k)
+
826  ch(1,k,jc) = cc(1,j2-1,k)+cc(1,j2-1,k)
+
827  107 CONTINUE
+
828  108 CONTINUE
+
829  IF (ido .EQ. 1) GO TO 116
+
830  IF (nbd .LT. l1) GO TO 112
831 !OCL NOVREC
-
832  DO 120 l=2,ipph
-
833  lc = ipp2-l
-
834  ar1h = dcp*ar1-dsp*ai1
-
835  ai1 = dcp*ai1+dsp*ar1
-
836  ar1 = ar1h
-
837  DO 117 ik=1,idl1
-
838  c2(ik,l) = ch2(ik,1)+ar1*ch2(ik,2)
-
839  c2(ik,lc) = ai1*ch2(ik,ip)
-
840  117 CONTINUE
-
841  dc2 = ar1
-
842  ds2 = ai1
-
843  ar2 = ar1
-
844  ai2 = ai1
-
845 !OCL NOVREC
-
846  DO 119 j=3,ipph
-
847  jc = ipp2-j
-
848  ar2h = dc2*ar2-ds2*ai2
-
849  ai2 = dc2*ai2+ds2*ar2
-
850  ar2 = ar2h
-
851  DO 118 ik=1,idl1
-
852  c2(ik,l) = c2(ik,l)+ar2*ch2(ik,j)
-
853  c2(ik,lc) = c2(ik,lc)+ai2*ch2(ik,jc)
-
854  118 CONTINUE
-
855  119 CONTINUE
-
856  120 CONTINUE
-
857 !OCL NOVREC
-
858  DO 122 j=2,ipph
-
859  DO 121 ik=1,idl1
-
860  ch2(ik,1) = ch2(ik,1)+ch2(ik,j)
-
861  121 CONTINUE
-
862  122 CONTINUE
-
863 !OCL NOVREC
-
864  DO 124 j=2,ipph
-
865  jc = ipp2-j
-
866  DO 123 k=1,l1
-
867  ch(1,k,j) = c1(1,k,j)-c1(1,k,jc)
-
868  ch(1,k,jc) = c1(1,k,j)+c1(1,k,jc)
-
869  123 CONTINUE
-
870  124 CONTINUE
-
871  IF (ido .EQ. 1) GO TO 132
-
872  IF (nbd .LT. l1) GO TO 128
+
832  DO 111 j=2,ipph
+
833  jc = ipp2-j
+
834  DO 110 k=1,l1
+
835  DO 109 i=3,ido,2
+
836  ic = idp2-i
+
837  ch(i-1,k,j) = cc(i-1,2*j-1,k)+cc(ic-1,2*j-2,k)
+
838  ch(i-1,k,jc) = cc(i-1,2*j-1,k)-cc(ic-1,2*j-2,k)
+
839  ch(i,k,j) = cc(i,2*j-1,k)-cc(ic,2*j-2,k)
+
840  ch(i,k,jc) = cc(i,2*j-1,k)+cc(ic,2*j-2,k)
+
841  109 CONTINUE
+
842  110 CONTINUE
+
843  111 CONTINUE
+
844  GO TO 116
+
845  112 DO 115 j=2,ipph
+
846  jc = ipp2-j
+
847  DO 114 i=3,ido,2
+
848  ic = idp2-i
+
849  DO 113 k=1,l1
+
850  ch(i-1,k,j) = cc(i-1,2*j-1,k)+cc(ic-1,2*j-2,k)
+
851  ch(i-1,k,jc) = cc(i-1,2*j-1,k)-cc(ic-1,2*j-2,k)
+
852  ch(i,k,j) = cc(i,2*j-1,k)-cc(ic,2*j-2,k)
+
853  ch(i,k,jc) = cc(i,2*j-1,k)+cc(ic,2*j-2,k)
+
854  113 CONTINUE
+
855  114 CONTINUE
+
856  115 CONTINUE
+
857  116 ar1 = 1.
+
858  ai1 = 0.
+
859 !OCL NOVREC
+
860  DO 120 l=2,ipph
+
861  lc = ipp2-l
+
862  ar1h = dcp*ar1-dsp*ai1
+
863  ai1 = dcp*ai1+dsp*ar1
+
864  ar1 = ar1h
+
865  DO 117 ik=1,idl1
+
866  c2(ik,l) = ch2(ik,1)+ar1*ch2(ik,2)
+
867  c2(ik,lc) = ai1*ch2(ik,ip)
+
868  117 CONTINUE
+
869  dc2 = ar1
+
870  ds2 = ai1
+
871  ar2 = ar1
+
872  ai2 = ai1
873 !OCL NOVREC
-
874  DO 127 j=2,ipph
-
875  jc = ipp2-j
-
876  DO 126 k=1,l1
-
877  DO 125 i=3,ido,2
-
878  ch(i-1,k,j) = c1(i-1,k,j)-c1(i,k,jc)
-
879  ch(i-1,k,jc) = c1(i-1,k,j)+c1(i,k,jc)
-
880  ch(i,k,j) = c1(i,k,j)+c1(i-1,k,jc)
-
881  ch(i,k,jc) = c1(i,k,j)-c1(i-1,k,jc)
-
882  125 CONTINUE
-
883  126 CONTINUE
-
884  127 CONTINUE
-
885  GO TO 132
-
886  128 DO 131 j=2,ipph
-
887  jc = ipp2-j
-
888  DO 130 i=3,ido,2
-
889  DO 129 k=1,l1
-
890  ch(i-1,k,j) = c1(i-1,k,j)-c1(i,k,jc)
-
891  ch(i-1,k,jc) = c1(i-1,k,j)+c1(i,k,jc)
-
892  ch(i,k,j) = c1(i,k,j)+c1(i-1,k,jc)
-
893  ch(i,k,jc) = c1(i,k,j)-c1(i-1,k,jc)
-
894  129 CONTINUE
-
895  130 CONTINUE
-
896  131 CONTINUE
-
897  132 CONTINUE
-
898  IF (ido .EQ. 1) RETURN
-
899  DO 133 ik=1,idl1
-
900  c2(ik,1) = ch2(ik,1)
-
901  133 CONTINUE
-
902  DO 135 j=2,ip
-
903  DO 134 k=1,l1
-
904  c1(1,k,j) = ch(1,k,j)
-
905  134 CONTINUE
-
906  135 CONTINUE
-
907  IF (nbd .GT. l1) GO TO 139
-
908  is = -ido
-
909  DO 138 j=2,ip
-
910  is = is+ido
-
911  idij = is
-
912  DO 137 i=3,ido,2
-
913  idij = idij+2
-
914  DO 136 k=1,l1
-
915  c1(i-1,k,j) = wa(idij-1)*ch(i-1,k,j)-wa(idij)*ch(i,k,j)
-
916  c1(i,k,j) = wa(idij-1)*ch(i,k,j)+wa(idij)*ch(i-1,k,j)
-
917  136 CONTINUE
-
918  137 CONTINUE
-
919  138 CONTINUE
-
920  GO TO 143
-
921  139 is = -ido
-
922 !OCL NOVREC
-
923  DO 142 j=2,ip
-
924  is = is+ido
-
925  DO 141 k=1,l1
-
926  idij = is
-
927  DO 140 i=3,ido,2
-
928  idij = idij+2
-
929  c1(i-1,k,j) = wa(idij-1)*ch(i-1,k,j)-wa(idij)*ch(i,k,j)
-
930  c1(i,k,j) = wa(idij-1)*ch(i,k,j)+wa(idij)*ch(i-1,k,j)
-
931  140 CONTINUE
-
932  141 CONTINUE
-
933  142 CONTINUE
-
934  143 RETURN
-
935  END
-
936 
-
937 C> RADBG
-
938 C>
-
939 C> @param IDO
-
940 C> @param L1
-
941 C> @param CC
-
942 C> @param CH
-
943 C> @param WA1
-
944 C>
-
945 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
946  SUBROUTINE radf2 (IDO,L1,CC,CH,WA1)
-
947  dimension ch(ido,2,l1) ,cc(ido,l1,2) ,
-
948  1 wa1(1)
-
949  DO 101 k=1,l1
-
950  ch(1,1,k) = cc(1,k,1)+cc(1,k,2)
-
951  ch(ido,2,k) = cc(1,k,1)-cc(1,k,2)
-
952  101 CONTINUE
-
953  IF (ido-2) 107,105,102
-
954  102 idp2 = ido+2
-
955  DO 104 k=1,l1
-
956  DO 103 i=3,ido,2
-
957  ic = idp2-i
-
958  tr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
-
959  ti2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
-
960  ch(i,1,k) = cc(i,k,1)+ti2
-
961  ch(ic,2,k) = ti2-cc(i,k,1)
-
962  ch(i-1,1,k) = cc(i-1,k,1)+tr2
-
963  ch(ic-1,2,k) = cc(i-1,k,1)-tr2
-
964  103 CONTINUE
-
965  104 CONTINUE
-
966  IF (mod(ido,2) .EQ. 1) RETURN
-
967  105 DO 106 k=1,l1
-
968  ch(1,2,k) = -cc(ido,k,2)
-
969  ch(ido,1,k) = cc(ido,k,1)
-
970  106 CONTINUE
-
971  107 RETURN
-
972  END
-
973 
-
974 C> RADF3
-
975 C>
-
976 C> @param IDO
-
977 C> @param L1
-
978 C> @param CC
-
979 C> @param CH
-
980 C> @param WA1
-
981 C> @param WA2
-
982 C>
-
983 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
984  SUBROUTINE radf3 (IDO,L1,CC,CH,WA1,WA2)
-
985  dimension ch(ido,3,l1) ,cc(ido,l1,3) ,
-
986  1 wa1(1) ,wa2(1)
-
987  DATA taur,taui /-.5,.866025403784439/
-
988  DO 101 k=1,l1
-
989  cr2 = cc(1,k,2)+cc(1,k,3)
-
990  ch(1,1,k) = cc(1,k,1)+cr2
-
991  ch(1,3,k) = taui*(cc(1,k,3)-cc(1,k,2))
-
992  ch(ido,2,k) = cc(1,k,1)+taur*cr2
-
993  101 CONTINUE
-
994  IF (ido .EQ. 1) RETURN
-
995  idp2 = ido+2
-
996  DO 103 k=1,l1
-
997  DO 102 i=3,ido,2
-
998  ic = idp2-i
-
999  dr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
-
1000  di2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
-
1001  dr3 = wa2(i-2)*cc(i-1,k,3)+wa2(i-1)*cc(i,k,3)
-
1002  di3 = wa2(i-2)*cc(i,k,3)-wa2(i-1)*cc(i-1,k,3)
-
1003  cr2 = dr2+dr3
-
1004  ci2 = di2+di3
-
1005  ch(i-1,1,k) = cc(i-1,k,1)+cr2
-
1006  ch(i,1,k) = cc(i,k,1)+ci2
-
1007  tr2 = cc(i-1,k,1)+taur*cr2
-
1008  ti2 = cc(i,k,1)+taur*ci2
-
1009  tr3 = taui*(di2-di3)
-
1010  ti3 = taui*(dr3-dr2)
-
1011  ch(i-1,3,k) = tr2+tr3
-
1012  ch(ic-1,2,k) = tr2-tr3
-
1013  ch(i,3,k) = ti2+ti3
-
1014  ch(ic,2,k) = ti3-ti2
-
1015  102 CONTINUE
-
1016  103 CONTINUE
-
1017  RETURN
-
1018  END
-
1019 
-
1020 C> RADF4
-
1021 C>
-
1022 C> @param IDO
-
1023 C> @param L1
-
1024 C> @param CC
-
1025 C> @param CH
-
1026 C> @param WA1
-
1027 C> @param WA2
-
1028 C> @param WA3
-
1029 C>
-
1030 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
1031  SUBROUTINE radf4 (IDO,L1,CC,CH,WA1,WA2,WA3)
-
1032  dimension cc(ido,l1,4) ,ch(ido,4,l1) ,
-
1033  1 wa1(1) ,wa2(1) ,wa3(1)
-
1034  DATA hsqt2 /.7071067811865475/
-
1035  DO 101 k=1,l1
-
1036  tr1 = cc(1,k,2)+cc(1,k,4)
-
1037  tr2 = cc(1,k,1)+cc(1,k,3)
-
1038  ch(1,1,k) = tr1+tr2
-
1039  ch(ido,4,k) = tr2-tr1
-
1040  ch(ido,2,k) = cc(1,k,1)-cc(1,k,3)
-
1041  ch(1,3,k) = cc(1,k,4)-cc(1,k,2)
-
1042  101 CONTINUE
-
1043  IF (ido-2) 107,105,102
-
1044  102 idp2 = ido+2
-
1045 !OCL NOVREC
-
1046  DO 104 k=1,l1
-
1047  DO 103 i=3,ido,2
-
1048  ic = idp2-i
-
1049  cr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
-
1050  ci2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
-
1051  cr3 = wa2(i-2)*cc(i-1,k,3)+wa2(i-1)*cc(i,k,3)
-
1052  ci3 = wa2(i-2)*cc(i,k,3)-wa2(i-1)*cc(i-1,k,3)
-
1053  cr4 = wa3(i-2)*cc(i-1,k,4)+wa3(i-1)*cc(i,k,4)
-
1054  ci4 = wa3(i-2)*cc(i,k,4)-wa3(i-1)*cc(i-1,k,4)
-
1055  tr1 = cr2+cr4
-
1056  tr4 = cr4-cr2
-
1057  ti1 = ci2+ci4
-
1058  ti4 = ci2-ci4
-
1059  ti2 = cc(i,k,1)+ci3
-
1060  ti3 = cc(i,k,1)-ci3
-
1061  tr2 = cc(i-1,k,1)+cr3
-
1062  tr3 = cc(i-1,k,1)-cr3
-
1063  ch(i-1,1,k) = tr1+tr2
-
1064  ch(ic-1,4,k) = tr2-tr1
-
1065  ch(i,1,k) = ti1+ti2
-
1066  ch(ic,4,k) = ti1-ti2
-
1067  ch(i-1,3,k) = ti4+tr3
-
1068  ch(ic-1,2,k) = tr3-ti4
-
1069  ch(i,3,k) = tr4+ti3
-
1070  ch(ic,2,k) = tr4-ti3
-
1071  103 CONTINUE
-
1072  104 CONTINUE
-
1073  IF (mod(ido,2) .EQ. 1) RETURN
-
1074  105 CONTINUE
-
1075  DO 106 k=1,l1
-
1076  ti1 = -hsqt2*(cc(ido,k,2)+cc(ido,k,4))
-
1077  tr1 = hsqt2*(cc(ido,k,2)-cc(ido,k,4))
-
1078  ch(ido,1,k) = tr1+cc(ido,k,1)
-
1079  ch(ido,3,k) = cc(ido,k,1)-tr1
-
1080  ch(1,2,k) = ti1-cc(ido,k,3)
-
1081  ch(1,4,k) = ti1+cc(ido,k,3)
-
1082  106 CONTINUE
-
1083  107 RETURN
-
1084  END
-
1085 
-
1086 C> RADF5
-
1087 C>
-
1088 C> @param IDO
-
1089 C> @param L1
-
1090 C> @param CC
-
1091 C> @param CH
-
1092 C> @param WA1
-
1093 C> @param WA2
-
1094 C> @param WA3
-
1095 C> @param WA4
-
1096 C>
-
1097 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
1098  SUBROUTINE radf5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
-
1099  dimension cc(ido,l1,5) ,ch(ido,5,l1) ,
-
1100  1 wa1(1) ,wa2(1) ,wa3(1) ,wa4(1)
-
1101  DATA tr11,ti11,tr12,ti12 /.309016994374947,.951056516295154,
-
1102  1-.809016994374947,.587785252292473/
-
1103  DO 101 k=1,l1
-
1104  cr2 = cc(1,k,5)+cc(1,k,2)
-
1105  ci5 = cc(1,k,5)-cc(1,k,2)
-
1106  cr3 = cc(1,k,4)+cc(1,k,3)
-
1107  ci4 = cc(1,k,4)-cc(1,k,3)
-
1108  ch(1,1,k) = cc(1,k,1)+cr2+cr3
-
1109  ch(ido,2,k) = cc(1,k,1)+tr11*cr2+tr12*cr3
-
1110  ch(1,3,k) = ti11*ci5+ti12*ci4
-
1111  ch(ido,4,k) = cc(1,k,1)+tr12*cr2+tr11*cr3
-
1112  ch(1,5,k) = ti12*ci5-ti11*ci4
-
1113  101 CONTINUE
-
1114  IF (ido .EQ. 1) RETURN
-
1115  idp2 = ido+2
-
1116  DO 103 k=1,l1
-
1117  DO 102 i=3,ido,2
-
1118  ic = idp2-i
-
1119  dr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
-
1120  di2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
-
1121  dr3 = wa2(i-2)*cc(i-1,k,3)+wa2(i-1)*cc(i,k,3)
-
1122  di3 = wa2(i-2)*cc(i,k,3)-wa2(i-1)*cc(i-1,k,3)
-
1123  dr4 = wa3(i-2)*cc(i-1,k,4)+wa3(i-1)*cc(i,k,4)
-
1124  di4 = wa3(i-2)*cc(i,k,4)-wa3(i-1)*cc(i-1,k,4)
-
1125  dr5 = wa4(i-2)*cc(i-1,k,5)+wa4(i-1)*cc(i,k,5)
-
1126  di5 = wa4(i-2)*cc(i,k,5)-wa4(i-1)*cc(i-1,k,5)
-
1127  cr2 = dr2+dr5
-
1128  ci5 = dr5-dr2
-
1129  cr5 = di2-di5
-
1130  ci2 = di2+di5
-
1131  cr3 = dr3+dr4
-
1132  ci4 = dr4-dr3
-
1133  cr4 = di3-di4
-
1134  ci3 = di3+di4
-
1135  ch(i-1,1,k) = cc(i-1,k,1)+cr2+cr3
-
1136  ch(i,1,k) = cc(i,k,1)+ci2+ci3
-
1137  tr2 = cc(i-1,k,1)+tr11*cr2+tr12*cr3
-
1138  ti2 = cc(i,k,1)+tr11*ci2+tr12*ci3
-
1139  tr3 = cc(i-1,k,1)+tr12*cr2+tr11*cr3
-
1140  ti3 = cc(i,k,1)+tr12*ci2+tr11*ci3
-
1141  tr5 = ti11*cr5+ti12*cr4
-
1142  ti5 = ti11*ci5+ti12*ci4
-
1143  tr4 = ti12*cr5-ti11*cr4
-
1144  ti4 = ti12*ci5-ti11*ci4
-
1145  ch(i-1,3,k) = tr2+tr5
-
1146  ch(ic-1,2,k) = tr2-tr5
-
1147  ch(i,3,k) = ti2+ti5
-
1148  ch(ic,2,k) = ti5-ti2
-
1149  ch(i-1,5,k) = tr3+tr4
-
1150  ch(ic-1,4,k) = tr3-tr4
-
1151  ch(i,5,k) = ti3+ti4
-
1152  ch(ic,4,k) = ti4-ti3
-
1153  102 CONTINUE
-
1154  103 CONTINUE
-
1155  RETURN
-
1156  END
-
1157 
-
1158 C> RADFG
-
1159 C>
-
1160 C> @param IDO
-
1161 C> @param IP
-
1162 C> @param L1
-
1163 C> @param IDL1
-
1164 C> @param CC
-
1165 C> @param C1
-
1166 C> @param C2
-
1167 C> @param CH
-
1168 C> @param CH2
-
1169 C> @param WA
-
1170 C>
-
1171 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
-
1172  SUBROUTINE radfg (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
-
1173  dimension ch(ido,l1,ip) ,cc(ido,ip,l1) ,
-
1174  1 c1(ido,l1,ip) ,c2(idl1,ip),
-
1175  2 ch2(idl1,ip) ,wa(1)
-
1176  DATA tpi/6.28318530717959/
-
1177  arg = tpi/float(ip)
-
1178  dcp = cos(arg)
-
1179  dsp = sin(arg)
-
1180  ipph = (ip+1)/2
-
1181  ipp2 = ip+2
-
1182  idp2 = ido+2
-
1183  nbd = (ido-1)/2
-
1184  IF (ido .EQ. 1) GO TO 119
-
1185  DO 101 ik=1,idl1
-
1186  ch2(ik,1) = c2(ik,1)
-
1187  101 CONTINUE
-
1188  DO 103 j=2,ip
-
1189  DO 102 k=1,l1
-
1190  ch(1,k,j) = c1(1,k,j)
-
1191  102 CONTINUE
-
1192  103 CONTINUE
-
1193  IF (nbd .GT. l1) GO TO 107
-
1194  is = -ido
-
1195  DO 106 j=2,ip
-
1196  is = is+ido
-
1197  idij = is
-
1198  DO 105 i=3,ido,2
-
1199  idij = idij+2
-
1200  DO 104 k=1,l1
-
1201  ch(i-1,k,j) = wa(idij-1)*c1(i-1,k,j)+wa(idij)*c1(i,k,j)
-
1202  ch(i,k,j) = wa(idij-1)*c1(i,k,j)-wa(idij)*c1(i-1,k,j)
-
1203  104 CONTINUE
-
1204  105 CONTINUE
-
1205  106 CONTINUE
-
1206  GO TO 111
-
1207  107 is = -ido
-
1208  DO 110 j=2,ip
-
1209  is = is+ido
-
1210  DO 109 k=1,l1
-
1211  idij = is
-
1212  DO 108 i=3,ido,2
-
1213  idij = idij+2
-
1214  ch(i-1,k,j) = wa(idij-1)*c1(i-1,k,j)+wa(idij)*c1(i,k,j)
-
1215  ch(i,k,j) = wa(idij-1)*c1(i,k,j)-wa(idij)*c1(i-1,k,j)
-
1216  108 CONTINUE
-
1217  109 CONTINUE
-
1218  110 CONTINUE
-
1219  111 IF (nbd .LT. l1) GO TO 115
-
1220  DO 114 j=2,ipph
-
1221  jc = ipp2-j
-
1222  DO 113 k=1,l1
-
1223  DO 112 i=3,ido,2
-
1224  c1(i-1,k,j) = ch(i-1,k,j)+ch(i-1,k,jc)
-
1225  c1(i-1,k,jc) = ch(i,k,j)-ch(i,k,jc)
-
1226  c1(i,k,j) = ch(i,k,j)+ch(i,k,jc)
-
1227  c1(i,k,jc) = ch(i-1,k,jc)-ch(i-1,k,j)
-
1228  112 CONTINUE
-
1229  113 CONTINUE
-
1230  114 CONTINUE
-
1231  GO TO 121
-
1232  115 DO 118 j=2,ipph
-
1233  jc = ipp2-j
-
1234  DO 117 i=3,ido,2
-
1235  DO 116 k=1,l1
-
1236  c1(i-1,k,j) = ch(i-1,k,j)+ch(i-1,k,jc)
-
1237  c1(i-1,k,jc) = ch(i,k,j)-ch(i,k,jc)
-
1238  c1(i,k,j) = ch(i,k,j)+ch(i,k,jc)
-
1239  c1(i,k,jc) = ch(i-1,k,jc)-ch(i-1,k,j)
-
1240  116 CONTINUE
-
1241  117 CONTINUE
-
1242  118 CONTINUE
-
1243  GO TO 121
-
1244  119 DO 120 ik=1,idl1
-
1245  c2(ik,1) = ch2(ik,1)
-
1246  120 CONTINUE
-
1247  121 DO 123 j=2,ipph
-
1248  jc = ipp2-j
-
1249  DO 122 k=1,l1
-
1250  c1(1,k,j) = ch(1,k,j)+ch(1,k,jc)
-
1251  c1(1,k,jc) = ch(1,k,jc)-ch(1,k,j)
-
1252  122 CONTINUE
-
1253  123 CONTINUE
-
1254 C
-
1255  ar1 = 1.
-
1256  ai1 = 0.
-
1257  DO 127 l=2,ipph
-
1258  lc = ipp2-l
-
1259  ar1h = dcp*ar1-dsp*ai1
-
1260  ai1 = dcp*ai1+dsp*ar1
-
1261  ar1 = ar1h
-
1262  DO 124 ik=1,idl1
-
1263  ch2(ik,l) = c2(ik,1)+ar1*c2(ik,2)
-
1264  ch2(ik,lc) = ai1*c2(ik,ip)
-
1265  124 CONTINUE
-
1266  dc2 = ar1
-
1267  ds2 = ai1
-
1268  ar2 = ar1
-
1269  ai2 = ai1
-
1270  DO 126 j=3,ipph
-
1271  jc = ipp2-j
-
1272  ar2h = dc2*ar2-ds2*ai2
-
1273  ai2 = dc2*ai2+ds2*ar2
-
1274  ar2 = ar2h
-
1275  DO 125 ik=1,idl1
-
1276  ch2(ik,l) = ch2(ik,l)+ar2*c2(ik,j)
-
1277  ch2(ik,lc) = ch2(ik,lc)+ai2*c2(ik,jc)
-
1278  125 CONTINUE
-
1279  126 CONTINUE
-
1280  127 CONTINUE
-
1281  DO 129 j=2,ipph
-
1282  DO 128 ik=1,idl1
-
1283  ch2(ik,1) = ch2(ik,1)+c2(ik,j)
-
1284  128 CONTINUE
-
1285  129 CONTINUE
-
1286 C
-
1287  IF (ido .LT. l1) GO TO 132
-
1288  DO 131 k=1,l1
-
1289  DO 130 i=1,ido
-
1290  cc(i,1,k) = ch(i,k,1)
-
1291  130 CONTINUE
-
1292  131 CONTINUE
-
1293  GO TO 135
-
1294  132 DO 134 i=1,ido
-
1295  DO 133 k=1,l1
-
1296  cc(i,1,k) = ch(i,k,1)
-
1297  133 CONTINUE
-
1298  134 CONTINUE
-
1299  135 DO 137 j=2,ipph
-
1300  jc = ipp2-j
-
1301  j2 = j+j
-
1302  DO 136 k=1,l1
-
1303  cc(ido,j2-2,k) = ch(1,k,j)
-
1304  cc(1,j2-1,k) = ch(1,k,jc)
-
1305  136 CONTINUE
-
1306  137 CONTINUE
-
1307  IF (ido .EQ. 1) RETURN
-
1308  IF (nbd .LT. l1) GO TO 141
-
1309  DO 140 j=2,ipph
-
1310  jc = ipp2-j
-
1311  j2 = j+j
-
1312  DO 139 k=1,l1
-
1313  DO 138 i=3,ido,2
-
1314  ic = idp2-i
-
1315  cc(i-1,j2-1,k) = ch(i-1,k,j)+ch(i-1,k,jc)
-
1316  cc(ic-1,j2-2,k) = ch(i-1,k,j)-ch(i-1,k,jc)
-
1317  cc(i,j2-1,k) = ch(i,k,j)+ch(i,k,jc)
-
1318  cc(ic,j2-2,k) = ch(i,k,jc)-ch(i,k,j)
-
1319  138 CONTINUE
-
1320  139 CONTINUE
-
1321  140 CONTINUE
-
1322  RETURN
-
1323  141 DO 144 j=2,ipph
-
1324  jc = ipp2-j
-
1325  j2 = j+j
-
1326  DO 143 i=3,ido,2
-
1327  ic = idp2-i
-
1328  DO 142 k=1,l1
-
1329  cc(i-1,j2-1,k) = ch(i-1,k,j)+ch(i-1,k,jc)
-
1330  cc(ic-1,j2-2,k) = ch(i-1,k,j)-ch(i-1,k,jc)
-
1331  cc(i,j2-1,k) = ch(i,k,j)+ch(i,k,jc)
-
1332  cc(ic,j2-2,k) = ch(i,k,jc)-ch(i,k,j)
-
1333  142 CONTINUE
-
1334  143 CONTINUE
-
1335  144 CONTINUE
-
1336  RETURN
-
1337  END
-
subroutine radb5(IDO, L1, CC, CH, WA1, WA2, WA3, WA4)
RADB5.
Definition: fftpack.F:691
-
subroutine scfft(isign, n, scale, x, y, table, work, isys)
scfft
Definition: fftpack.F:250
-
subroutine radb4(IDO, L1, CC, CH, WA1, WA2, WA3)
RADB4.
Definition: fftpack.F:620
-
subroutine rffti(N, WSAVE)
RFFTI.
Definition: fftpack.F:310
-
subroutine radf3(IDO, L1, CC, CH, WA1, WA2)
RADF3.
Definition: fftpack.F:985
-
subroutine drcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
drcft
Definition: fftpack.F:160
-
subroutine radb3(IDO, L1, CC, CH, WA1, WA2)
RADB3
Definition: fftpack.F:570
-
subroutine radf5(IDO, L1, CC, CH, WA1, WA2, WA3, WA4)
RADF5.
Definition: fftpack.F:1099
-
subroutine radf2(IDO, L1, CC, CH, WA1)
RADBG.
Definition: fftpack.F:947
+
874  DO 119 j=3,ipph
+
875  jc = ipp2-j
+
876  ar2h = dc2*ar2-ds2*ai2
+
877  ai2 = dc2*ai2+ds2*ar2
+
878  ar2 = ar2h
+
879  DO 118 ik=1,idl1
+
880  c2(ik,l) = c2(ik,l)+ar2*ch2(ik,j)
+
881  c2(ik,lc) = c2(ik,lc)+ai2*ch2(ik,jc)
+
882  118 CONTINUE
+
883  119 CONTINUE
+
884  120 CONTINUE
+
885 !OCL NOVREC
+
886  DO 122 j=2,ipph
+
887  DO 121 ik=1,idl1
+
888  ch2(ik,1) = ch2(ik,1)+ch2(ik,j)
+
889  121 CONTINUE
+
890  122 CONTINUE
+
891 !OCL NOVREC
+
892  DO 124 j=2,ipph
+
893  jc = ipp2-j
+
894  DO 123 k=1,l1
+
895  ch(1,k,j) = c1(1,k,j)-c1(1,k,jc)
+
896  ch(1,k,jc) = c1(1,k,j)+c1(1,k,jc)
+
897  123 CONTINUE
+
898  124 CONTINUE
+
899  IF (ido .EQ. 1) GO TO 132
+
900  IF (nbd .LT. l1) GO TO 128
+
901 !OCL NOVREC
+
902  DO 127 j=2,ipph
+
903  jc = ipp2-j
+
904  DO 126 k=1,l1
+
905  DO 125 i=3,ido,2
+
906  ch(i-1,k,j) = c1(i-1,k,j)-c1(i,k,jc)
+
907  ch(i-1,k,jc) = c1(i-1,k,j)+c1(i,k,jc)
+
908  ch(i,k,j) = c1(i,k,j)+c1(i-1,k,jc)
+
909  ch(i,k,jc) = c1(i,k,j)-c1(i-1,k,jc)
+
910  125 CONTINUE
+
911  126 CONTINUE
+
912  127 CONTINUE
+
913  GO TO 132
+
914  128 DO 131 j=2,ipph
+
915  jc = ipp2-j
+
916  DO 130 i=3,ido,2
+
917  DO 129 k=1,l1
+
918  ch(i-1,k,j) = c1(i-1,k,j)-c1(i,k,jc)
+
919  ch(i-1,k,jc) = c1(i-1,k,j)+c1(i,k,jc)
+
920  ch(i,k,j) = c1(i,k,j)+c1(i-1,k,jc)
+
921  ch(i,k,jc) = c1(i,k,j)-c1(i-1,k,jc)
+
922  129 CONTINUE
+
923  130 CONTINUE
+
924  131 CONTINUE
+
925  132 CONTINUE
+
926  IF (ido .EQ. 1) RETURN
+
927  DO 133 ik=1,idl1
+
928  c2(ik,1) = ch2(ik,1)
+
929  133 CONTINUE
+
930  DO 135 j=2,ip
+
931  DO 134 k=1,l1
+
932  c1(1,k,j) = ch(1,k,j)
+
933  134 CONTINUE
+
934  135 CONTINUE
+
935  IF (nbd .GT. l1) GO TO 139
+
936  is = -ido
+
937  DO 138 j=2,ip
+
938  is = is+ido
+
939  idij = is
+
940  DO 137 i=3,ido,2
+
941  idij = idij+2
+
942  DO 136 k=1,l1
+
943  c1(i-1,k,j) = wa(idij-1)*ch(i-1,k,j)-wa(idij)*ch(i,k,j)
+
944  c1(i,k,j) = wa(idij-1)*ch(i,k,j)+wa(idij)*ch(i-1,k,j)
+
945  136 CONTINUE
+
946  137 CONTINUE
+
947  138 CONTINUE
+
948  GO TO 143
+
949  139 is = -ido
+
950 !OCL NOVREC
+
951  DO 142 j=2,ip
+
952  is = is+ido
+
953  DO 141 k=1,l1
+
954  idij = is
+
955  DO 140 i=3,ido,2
+
956  idij = idij+2
+
957  c1(i-1,k,j) = wa(idij-1)*ch(i-1,k,j)-wa(idij)*ch(i,k,j)
+
958  c1(i,k,j) = wa(idij-1)*ch(i,k,j)+wa(idij)*ch(i-1,k,j)
+
959  140 CONTINUE
+
960  141 CONTINUE
+
961  142 CONTINUE
+
962  143 RETURN
+
963  END
+
964 
+
965 C> RADBG
+
966 C>
+
967 C> @param IDO
+
968 C> @param L1
+
969 C> @param CC
+
970 C> @param CH
+
971 C> @param WA1
+
972 C>
+
973 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
974  SUBROUTINE radf2 (IDO,L1,CC,CH,WA1)
+
975  dimension ch(ido,2,l1) ,cc(ido,l1,2) ,
+
976  1 wa1(*)
+
977  DO 101 k=1,l1
+
978  ch(1,1,k) = cc(1,k,1)+cc(1,k,2)
+
979  ch(ido,2,k) = cc(1,k,1)-cc(1,k,2)
+
980  101 CONTINUE
+
981  IF (ido.LT.2) THEN
+
982  GO TO 107
+
983  ELSEIF (ido.EQ.2) THEN
+
984  GO TO 105
+
985  ELSE
+
986  GO TO 102
+
987  ENDIF
+
988  102 idp2 = ido+2
+
989  DO 104 k=1,l1
+
990  DO 103 i=3,ido,2
+
991  ic = idp2-i
+
992  tr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
+
993  ti2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
+
994  ch(i,1,k) = cc(i,k,1)+ti2
+
995  ch(ic,2,k) = ti2-cc(i,k,1)
+
996  ch(i-1,1,k) = cc(i-1,k,1)+tr2
+
997  ch(ic-1,2,k) = cc(i-1,k,1)-tr2
+
998  103 CONTINUE
+
999  104 CONTINUE
+
1000  IF (mod(ido,2) .EQ. 1) RETURN
+
1001  105 DO 106 k=1,l1
+
1002  ch(1,2,k) = -cc(ido,k,2)
+
1003  ch(ido,1,k) = cc(ido,k,1)
+
1004  106 CONTINUE
+
1005  107 RETURN
+
1006  END
+
1007 
+
1008 C> RADF3
+
1009 C>
+
1010 C> @param IDO
+
1011 C> @param L1
+
1012 C> @param CC
+
1013 C> @param CH
+
1014 C> @param WA1
+
1015 C> @param WA2
+
1016 C>
+
1017 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
1018  SUBROUTINE radf3 (IDO,L1,CC,CH,WA1,WA2)
+
1019  dimension ch(ido,3,l1) ,cc(ido,l1,3) ,
+
1020  1 wa1(*) ,wa2(*)
+
1021  DATA taur,taui /-.5,.866025403784439/
+
1022  DO 101 k=1,l1
+
1023  cr2 = cc(1,k,2)+cc(1,k,3)
+
1024  ch(1,1,k) = cc(1,k,1)+cr2
+
1025  ch(1,3,k) = taui*(cc(1,k,3)-cc(1,k,2))
+
1026  ch(ido,2,k) = cc(1,k,1)+taur*cr2
+
1027  101 CONTINUE
+
1028  IF (ido .EQ. 1) RETURN
+
1029  idp2 = ido+2
+
1030  DO 103 k=1,l1
+
1031  DO 102 i=3,ido,2
+
1032  ic = idp2-i
+
1033  dr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
+
1034  di2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
+
1035  dr3 = wa2(i-2)*cc(i-1,k,3)+wa2(i-1)*cc(i,k,3)
+
1036  di3 = wa2(i-2)*cc(i,k,3)-wa2(i-1)*cc(i-1,k,3)
+
1037  cr2 = dr2+dr3
+
1038  ci2 = di2+di3
+
1039  ch(i-1,1,k) = cc(i-1,k,1)+cr2
+
1040  ch(i,1,k) = cc(i,k,1)+ci2
+
1041  tr2 = cc(i-1,k,1)+taur*cr2
+
1042  ti2 = cc(i,k,1)+taur*ci2
+
1043  tr3 = taui*(di2-di3)
+
1044  ti3 = taui*(dr3-dr2)
+
1045  ch(i-1,3,k) = tr2+tr3
+
1046  ch(ic-1,2,k) = tr2-tr3
+
1047  ch(i,3,k) = ti2+ti3
+
1048  ch(ic,2,k) = ti3-ti2
+
1049  102 CONTINUE
+
1050  103 CONTINUE
+
1051  RETURN
+
1052  END
+
1053 
+
1054 C> RADF4
+
1055 C>
+
1056 C> @param IDO
+
1057 C> @param L1
+
1058 C> @param CC
+
1059 C> @param CH
+
1060 C> @param WA1
+
1061 C> @param WA2
+
1062 C> @param WA3
+
1063 C>
+
1064 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
1065  SUBROUTINE radf4 (IDO,L1,CC,CH,WA1,WA2,WA3)
+
1066  dimension cc(ido,l1,4) ,ch(ido,4,l1) ,
+
1067  1 wa1(*) ,wa2(*) ,wa3(*)
+
1068  DATA hsqt2 /.7071067811865475/
+
1069  DO 101 k=1,l1
+
1070  tr1 = cc(1,k,2)+cc(1,k,4)
+
1071  tr2 = cc(1,k,1)+cc(1,k,3)
+
1072  ch(1,1,k) = tr1+tr2
+
1073  ch(ido,4,k) = tr2-tr1
+
1074  ch(ido,2,k) = cc(1,k,1)-cc(1,k,3)
+
1075  ch(1,3,k) = cc(1,k,4)-cc(1,k,2)
+
1076  101 CONTINUE
+
1077  IF (ido.LT.2) THEN
+
1078  GO TO 107
+
1079  ELSEIF (ido.EQ.2) THEN
+
1080  GO TO 105
+
1081  ELSE
+
1082  GO TO 102
+
1083  ENDIF
+
1084  102 idp2 = ido+2
+
1085 !OCL NOVREC
+
1086  DO 104 k=1,l1
+
1087  DO 103 i=3,ido,2
+
1088  ic = idp2-i
+
1089  cr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
+
1090  ci2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
+
1091  cr3 = wa2(i-2)*cc(i-1,k,3)+wa2(i-1)*cc(i,k,3)
+
1092  ci3 = wa2(i-2)*cc(i,k,3)-wa2(i-1)*cc(i-1,k,3)
+
1093  cr4 = wa3(i-2)*cc(i-1,k,4)+wa3(i-1)*cc(i,k,4)
+
1094  ci4 = wa3(i-2)*cc(i,k,4)-wa3(i-1)*cc(i-1,k,4)
+
1095  tr1 = cr2+cr4
+
1096  tr4 = cr4-cr2
+
1097  ti1 = ci2+ci4
+
1098  ti4 = ci2-ci4
+
1099  ti2 = cc(i,k,1)+ci3
+
1100  ti3 = cc(i,k,1)-ci3
+
1101  tr2 = cc(i-1,k,1)+cr3
+
1102  tr3 = cc(i-1,k,1)-cr3
+
1103  ch(i-1,1,k) = tr1+tr2
+
1104  ch(ic-1,4,k) = tr2-tr1
+
1105  ch(i,1,k) = ti1+ti2
+
1106  ch(ic,4,k) = ti1-ti2
+
1107  ch(i-1,3,k) = ti4+tr3
+
1108  ch(ic-1,2,k) = tr3-ti4
+
1109  ch(i,3,k) = tr4+ti3
+
1110  ch(ic,2,k) = tr4-ti3
+
1111  103 CONTINUE
+
1112  104 CONTINUE
+
1113  IF (mod(ido,2) .EQ. 1) RETURN
+
1114  105 CONTINUE
+
1115  DO 106 k=1,l1
+
1116  ti1 = -hsqt2*(cc(ido,k,2)+cc(ido,k,4))
+
1117  tr1 = hsqt2*(cc(ido,k,2)-cc(ido,k,4))
+
1118  ch(ido,1,k) = tr1+cc(ido,k,1)
+
1119  ch(ido,3,k) = cc(ido,k,1)-tr1
+
1120  ch(1,2,k) = ti1-cc(ido,k,3)
+
1121  ch(1,4,k) = ti1+cc(ido,k,3)
+
1122  106 CONTINUE
+
1123  107 RETURN
+
1124  END
+
1125 
+
1126 C> RADF5
+
1127 C>
+
1128 C> @param IDO
+
1129 C> @param L1
+
1130 C> @param CC
+
1131 C> @param CH
+
1132 C> @param WA1
+
1133 C> @param WA2
+
1134 C> @param WA3
+
1135 C> @param WA4
+
1136 C>
+
1137 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
1138  SUBROUTINE radf5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
+
1139  dimension cc(ido,l1,5) ,ch(ido,5,l1) ,
+
1140  1 wa1(*) ,wa2(*) ,wa3(*) ,wa4(*)
+
1141  DATA tr11,ti11,tr12,ti12 /.309016994374947,.951056516295154,
+
1142  1-.809016994374947,.587785252292473/
+
1143  DO 101 k=1,l1
+
1144  cr2 = cc(1,k,5)+cc(1,k,2)
+
1145  ci5 = cc(1,k,5)-cc(1,k,2)
+
1146  cr3 = cc(1,k,4)+cc(1,k,3)
+
1147  ci4 = cc(1,k,4)-cc(1,k,3)
+
1148  ch(1,1,k) = cc(1,k,1)+cr2+cr3
+
1149  ch(ido,2,k) = cc(1,k,1)+tr11*cr2+tr12*cr3
+
1150  ch(1,3,k) = ti11*ci5+ti12*ci4
+
1151  ch(ido,4,k) = cc(1,k,1)+tr12*cr2+tr11*cr3
+
1152  ch(1,5,k) = ti12*ci5-ti11*ci4
+
1153  101 CONTINUE
+
1154  IF (ido .EQ. 1) RETURN
+
1155  idp2 = ido+2
+
1156  DO 103 k=1,l1
+
1157  DO 102 i=3,ido,2
+
1158  ic = idp2-i
+
1159  dr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
+
1160  di2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
+
1161  dr3 = wa2(i-2)*cc(i-1,k,3)+wa2(i-1)*cc(i,k,3)
+
1162  di3 = wa2(i-2)*cc(i,k,3)-wa2(i-1)*cc(i-1,k,3)
+
1163  dr4 = wa3(i-2)*cc(i-1,k,4)+wa3(i-1)*cc(i,k,4)
+
1164  di4 = wa3(i-2)*cc(i,k,4)-wa3(i-1)*cc(i-1,k,4)
+
1165  dr5 = wa4(i-2)*cc(i-1,k,5)+wa4(i-1)*cc(i,k,5)
+
1166  di5 = wa4(i-2)*cc(i,k,5)-wa4(i-1)*cc(i-1,k,5)
+
1167  cr2 = dr2+dr5
+
1168  ci5 = dr5-dr2
+
1169  cr5 = di2-di5
+
1170  ci2 = di2+di5
+
1171  cr3 = dr3+dr4
+
1172  ci4 = dr4-dr3
+
1173  cr4 = di3-di4
+
1174  ci3 = di3+di4
+
1175  ch(i-1,1,k) = cc(i-1,k,1)+cr2+cr3
+
1176  ch(i,1,k) = cc(i,k,1)+ci2+ci3
+
1177  tr2 = cc(i-1,k,1)+tr11*cr2+tr12*cr3
+
1178  ti2 = cc(i,k,1)+tr11*ci2+tr12*ci3
+
1179  tr3 = cc(i-1,k,1)+tr12*cr2+tr11*cr3
+
1180  ti3 = cc(i,k,1)+tr12*ci2+tr11*ci3
+
1181  tr5 = ti11*cr5+ti12*cr4
+
1182  ti5 = ti11*ci5+ti12*ci4
+
1183  tr4 = ti12*cr5-ti11*cr4
+
1184  ti4 = ti12*ci5-ti11*ci4
+
1185  ch(i-1,3,k) = tr2+tr5
+
1186  ch(ic-1,2,k) = tr2-tr5
+
1187  ch(i,3,k) = ti2+ti5
+
1188  ch(ic,2,k) = ti5-ti2
+
1189  ch(i-1,5,k) = tr3+tr4
+
1190  ch(ic-1,4,k) = tr3-tr4
+
1191  ch(i,5,k) = ti3+ti4
+
1192  ch(ic,4,k) = ti4-ti3
+
1193  102 CONTINUE
+
1194  103 CONTINUE
+
1195  RETURN
+
1196  END
+
1197 
+
1198 C> RADFG
+
1199 C>
+
1200 C> @param IDO
+
1201 C> @param IP
+
1202 C> @param L1
+
1203 C> @param IDL1
+
1204 C> @param CC
+
1205 C> @param C1
+
1206 C> @param C2
+
1207 C> @param CH
+
1208 C> @param CH2
+
1209 C> @param WA
+
1210 C>
+
1211 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
+
1212  SUBROUTINE radfg (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
+
1213  dimension ch(ido,l1,ip) ,cc(ido,ip,l1) ,
+
1214  1 c1(ido,l1,ip) ,c2(idl1,ip),
+
1215  2 ch2(idl1,ip) ,wa(*)
+
1216  DATA tpi/6.28318530717959/
+
1217  arg = tpi/float(ip)
+
1218  dcp = cos(arg)
+
1219  dsp = sin(arg)
+
1220  ipph = (ip+1)/2
+
1221  ipp2 = ip+2
+
1222  idp2 = ido+2
+
1223  nbd = (ido-1)/2
+
1224  IF (ido .EQ. 1) GO TO 119
+
1225  DO 101 ik=1,idl1
+
1226  ch2(ik,1) = c2(ik,1)
+
1227  101 CONTINUE
+
1228  DO 103 j=2,ip
+
1229  DO 102 k=1,l1
+
1230  ch(1,k,j) = c1(1,k,j)
+
1231  102 CONTINUE
+
1232  103 CONTINUE
+
1233  IF (nbd .GT. l1) GO TO 107
+
1234  is = -ido
+
1235  DO 106 j=2,ip
+
1236  is = is+ido
+
1237  idij = is
+
1238  DO 105 i=3,ido,2
+
1239  idij = idij+2
+
1240  DO 104 k=1,l1
+
1241  ch(i-1,k,j) = wa(idij-1)*c1(i-1,k,j)+wa(idij)*c1(i,k,j)
+
1242  ch(i,k,j) = wa(idij-1)*c1(i,k,j)-wa(idij)*c1(i-1,k,j)
+
1243  104 CONTINUE
+
1244  105 CONTINUE
+
1245  106 CONTINUE
+
1246  GO TO 111
+
1247  107 is = -ido
+
1248  DO 110 j=2,ip
+
1249  is = is+ido
+
1250  DO 109 k=1,l1
+
1251  idij = is
+
1252  DO 108 i=3,ido,2
+
1253  idij = idij+2
+
1254  ch(i-1,k,j) = wa(idij-1)*c1(i-1,k,j)+wa(idij)*c1(i,k,j)
+
1255  ch(i,k,j) = wa(idij-1)*c1(i,k,j)-wa(idij)*c1(i-1,k,j)
+
1256  108 CONTINUE
+
1257  109 CONTINUE
+
1258  110 CONTINUE
+
1259  111 IF (nbd .LT. l1) GO TO 115
+
1260  DO 114 j=2,ipph
+
1261  jc = ipp2-j
+
1262  DO 113 k=1,l1
+
1263  DO 112 i=3,ido,2
+
1264  c1(i-1,k,j) = ch(i-1,k,j)+ch(i-1,k,jc)
+
1265  c1(i-1,k,jc) = ch(i,k,j)-ch(i,k,jc)
+
1266  c1(i,k,j) = ch(i,k,j)+ch(i,k,jc)
+
1267  c1(i,k,jc) = ch(i-1,k,jc)-ch(i-1,k,j)
+
1268  112 CONTINUE
+
1269  113 CONTINUE
+
1270  114 CONTINUE
+
1271  GO TO 121
+
1272  115 DO 118 j=2,ipph
+
1273  jc = ipp2-j
+
1274  DO 117 i=3,ido,2
+
1275  DO 116 k=1,l1
+
1276  c1(i-1,k,j) = ch(i-1,k,j)+ch(i-1,k,jc)
+
1277  c1(i-1,k,jc) = ch(i,k,j)-ch(i,k,jc)
+
1278  c1(i,k,j) = ch(i,k,j)+ch(i,k,jc)
+
1279  c1(i,k,jc) = ch(i-1,k,jc)-ch(i-1,k,j)
+
1280  116 CONTINUE
+
1281  117 CONTINUE
+
1282  118 CONTINUE
+
1283  GO TO 121
+
1284  119 DO 120 ik=1,idl1
+
1285  c2(ik,1) = ch2(ik,1)
+
1286  120 CONTINUE
+
1287  121 DO 123 j=2,ipph
+
1288  jc = ipp2-j
+
1289  DO 122 k=1,l1
+
1290  c1(1,k,j) = ch(1,k,j)+ch(1,k,jc)
+
1291  c1(1,k,jc) = ch(1,k,jc)-ch(1,k,j)
+
1292  122 CONTINUE
+
1293  123 CONTINUE
+
1294 C
+
1295  ar1 = 1.
+
1296  ai1 = 0.
+
1297  DO 127 l=2,ipph
+
1298  lc = ipp2-l
+
1299  ar1h = dcp*ar1-dsp*ai1
+
1300  ai1 = dcp*ai1+dsp*ar1
+
1301  ar1 = ar1h
+
1302  DO 124 ik=1,idl1
+
1303  ch2(ik,l) = c2(ik,1)+ar1*c2(ik,2)
+
1304  ch2(ik,lc) = ai1*c2(ik,ip)
+
1305  124 CONTINUE
+
1306  dc2 = ar1
+
1307  ds2 = ai1
+
1308  ar2 = ar1
+
1309  ai2 = ai1
+
1310  DO 126 j=3,ipph
+
1311  jc = ipp2-j
+
1312  ar2h = dc2*ar2-ds2*ai2
+
1313  ai2 = dc2*ai2+ds2*ar2
+
1314  ar2 = ar2h
+
1315  DO 125 ik=1,idl1
+
1316  ch2(ik,l) = ch2(ik,l)+ar2*c2(ik,j)
+
1317  ch2(ik,lc) = ch2(ik,lc)+ai2*c2(ik,jc)
+
1318  125 CONTINUE
+
1319  126 CONTINUE
+
1320  127 CONTINUE
+
1321  DO 129 j=2,ipph
+
1322  DO 128 ik=1,idl1
+
1323  ch2(ik,1) = ch2(ik,1)+c2(ik,j)
+
1324  128 CONTINUE
+
1325  129 CONTINUE
+
1326 C
+
1327  IF (ido .LT. l1) GO TO 132
+
1328  DO 131 k=1,l1
+
1329  DO 130 i=1,ido
+
1330  cc(i,1,k) = ch(i,k,1)
+
1331  130 CONTINUE
+
1332  131 CONTINUE
+
1333  GO TO 135
+
1334  132 DO 134 i=1,ido
+
1335  DO 133 k=1,l1
+
1336  cc(i,1,k) = ch(i,k,1)
+
1337  133 CONTINUE
+
1338  134 CONTINUE
+
1339  135 DO 137 j=2,ipph
+
1340  jc = ipp2-j
+
1341  j2 = j+j
+
1342  DO 136 k=1,l1
+
1343  cc(ido,j2-2,k) = ch(1,k,j)
+
1344  cc(1,j2-1,k) = ch(1,k,jc)
+
1345  136 CONTINUE
+
1346  137 CONTINUE
+
1347  IF (ido .EQ. 1) RETURN
+
1348  IF (nbd .LT. l1) GO TO 141
+
1349  DO 140 j=2,ipph
+
1350  jc = ipp2-j
+
1351  j2 = j+j
+
1352  DO 139 k=1,l1
+
1353  DO 138 i=3,ido,2
+
1354  ic = idp2-i
+
1355  cc(i-1,j2-1,k) = ch(i-1,k,j)+ch(i-1,k,jc)
+
1356  cc(ic-1,j2-2,k) = ch(i-1,k,j)-ch(i-1,k,jc)
+
1357  cc(i,j2-1,k) = ch(i,k,j)+ch(i,k,jc)
+
1358  cc(ic,j2-2,k) = ch(i,k,jc)-ch(i,k,j)
+
1359  138 CONTINUE
+
1360  139 CONTINUE
+
1361  140 CONTINUE
+
1362  RETURN
+
1363  141 DO 144 j=2,ipph
+
1364  jc = ipp2-j
+
1365  j2 = j+j
+
1366  DO 143 i=3,ido,2
+
1367  ic = idp2-i
+
1368  DO 142 k=1,l1
+
1369  cc(i-1,j2-1,k) = ch(i-1,k,j)+ch(i-1,k,jc)
+
1370  cc(ic-1,j2-2,k) = ch(i-1,k,j)-ch(i-1,k,jc)
+
1371  cc(i,j2-1,k) = ch(i,k,j)+ch(i,k,jc)
+
1372  cc(ic,j2-2,k) = ch(i,k,jc)-ch(i,k,j)
+
1373  142 CONTINUE
+
1374  143 CONTINUE
+
1375  144 CONTINUE
+
1376  RETURN
+
1377  END
+
subroutine radb5(IDO, L1, CC, CH, WA1, WA2, WA3, WA4)
RADB5.
Definition: fftpack.F:719
+
subroutine scfft(isign, n, scale, x, y, table, work, isys)
scfft
Definition: fftpack.F:258
+
subroutine radb4(IDO, L1, CC, CH, WA1, WA2, WA3)
RADB4.
Definition: fftpack.F:642
+
subroutine rffti(N, WSAVE)
RFFTI.
Definition: fftpack.F:318
+
subroutine radf3(IDO, L1, CC, CH, WA1, WA2)
RADF3.
Definition: fftpack.F:1019
+
subroutine drcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
drcft
Definition: fftpack.F:164
+
subroutine radb3(IDO, L1, CC, CH, WA1, WA2)
RADB3
Definition: fftpack.F:592
+
subroutine radf5(IDO, L1, CC, CH, WA1, WA2, WA3, WA4)
RADF5.
Definition: fftpack.F:1139
+
subroutine radf2(IDO, L1, CC, CH, WA1)
RADBG.
Definition: fftpack.F:975
subroutine dcrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
dcrft
Definition: fftpack.F:34
-
subroutine rfftb(N, R, WSAVE)
RFFTB.
Definition: fftpack.F:297
-
subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
scrft
Definition: fftpack.F:80
-
subroutine rfftf1(N, C, CH, WA, IFAC)
RFFTF1.
Definition: fftpack.F:395
-
subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
srcft
Definition: fftpack.F:209
-
subroutine csfft(isign, n, scale, x, y, table, work, isys)
csfft
Definition: fftpack.F:117
-
subroutine radfg(IDO, IP, L1, IDL1, CC, C1, C2, CH, CH2, WA)
RADFG.
Definition: fftpack.F:1173
-
subroutine rffti1(N, WA, IFAC)
RFFTI1.
Definition: fftpack.F:462
-
subroutine radb2(IDO, L1, CC, CH, WA1)
RADB2.
Definition: fftpack.F:531
-
subroutine radf4(IDO, L1, CC, CH, WA1, WA2, WA3)
RADF4.
Definition: fftpack.F:1032
-
subroutine radbg(IDO, IP, L1, IDL1, CC, C1, C2, CH, CH2, WA)
RADBG.
Definition: fftpack.F:769
-
subroutine rfftb1(N, C, CH, WA, IFAC)
RFFTB1.
Definition: fftpack.F:326
-
subroutine rfftf(N, R, WSAVE)
RFFTF.
Definition: fftpack.F:283
+
subroutine rfftb(N, R, WSAVE)
RFFTB.
Definition: fftpack.F:305
+
subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
scrft
Definition: fftpack.F:82
+
subroutine rfftf1(N, C, CH, WA, IFAC)
RFFTF1.
Definition: fftpack.F:403
+
subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
srcft
Definition: fftpack.F:215
+
subroutine csfft(isign, n, scale, x, y, table, work, isys)
csfft
Definition: fftpack.F:121
+
subroutine radfg(IDO, IP, L1, IDL1, CC, C1, C2, CH, CH2, WA)
RADFG.
Definition: fftpack.F:1213
+
subroutine rffti1(N, WA, IFAC)
RFFTI1.
Definition: fftpack.F:470
+
subroutine radb2(IDO, L1, CC, CH, WA1)
RADB2.
Definition: fftpack.F:547
+
subroutine radf4(IDO, L1, CC, CH, WA1, WA2, WA3)
RADF4.
Definition: fftpack.F:1066
+
subroutine radbg(IDO, IP, L1, IDL1, CC, C1, C2, CH, CH2, WA)
RADBG.
Definition: fftpack.F:797
+
subroutine rfftb1(N, C, CH, WA, IFAC)
RFFTB1.
Definition: fftpack.F:334
+
subroutine rfftf(N, R, WSAVE)
RFFTF.
Definition: fftpack.F:291
diff --git a/files.html b/files.html index c93829c9..7c55cf73 100644 --- a/files.html +++ b/files.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -119,12 +119,12 @@  ipxwafs.F90Expand or contract wafs grids  ipxwafs2.F90Expand or contract wafs grids using linear interpolation and account for bitmapped data  ipxwafs3.F90Expand or contract wafs grids using neighbor interpolation and accout for bitmapped data - lapack_gen.FTwo Numerical Recipes routines for matrix inversion From Numerical Recipes - movect.F90Move a vector along a great circle - ncpus.FSet number of cpus - neighbor_budget_interp_mod.F90Interpolate scalar and vector fields with neighbor budget interpolation - neighbor_interp_mod.F90Interpolate scalar and vector fields with neighbor interpolation - polfix_mod.F90Make multiple pole scalar values consistent + movect.F90Move a vector along a great circle + ncpus.FSet number of cpus + neighbor_budget_interp_mod.F90Interpolate scalar and vector fields with neighbor budget interpolation + neighbor_interp_mod.F90Interpolate scalar and vector fields with neighbor interpolation + polfix_mod.F90Make multiple pole scalar values consistent + sp_mod.F  spanaly.fAnalyze spectral from Fourier  spdz2uv.fCompute winds from divergence and vorticity  spectral_interp_mod.F90Interpolate spectral diff --git a/files_dup.js b/files_dup.js index 3ecf3254..f385241f 100644 --- a/files_dup.js +++ b/files_dup.js @@ -31,12 +31,12 @@ var files_dup = [ "ipxwafs.F90", "ipxwafs_8F90.html", "ipxwafs_8F90" ], [ "ipxwafs2.F90", "ipxwafs2_8F90.html", "ipxwafs2_8F90" ], [ "ipxwafs3.F90", "ipxwafs3_8F90.html", "ipxwafs3_8F90" ], - [ "lapack_gen.F", "lapack__gen_8F.html", "lapack__gen_8F" ], [ "movect.F90", "movect_8F90.html", "movect_8F90" ], [ "ncpus.F", "ncpus_8F.html", "ncpus_8F" ], [ "neighbor_budget_interp_mod.F90", "neighbor__budget__interp__mod_8F90.html", "neighbor__budget__interp__mod_8F90" ], [ "neighbor_interp_mod.F90", "neighbor__interp__mod_8F90.html", "neighbor__interp__mod_8F90" ], [ "polfix_mod.F90", "polfix__mod_8F90.html", "polfix__mod_8F90" ], + [ "sp_mod.F", "sp__mod_8F_source.html", null ], [ "spanaly.f", "spanaly_8f.html", "spanaly_8f" ], [ "spdz2uv.f", "spdz2uv_8f.html", "spdz2uv_8f" ], [ "spectral_interp_mod.F90", "spectral__interp__mod_8F90.html", "spectral__interp__mod_8F90" ], diff --git a/functions.html b/functions.html index 46362750..d095edd2 100644 --- a/functions.html +++ b/functions.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/functions_func.html b/functions_func.html index 408725d1..302f4b7e 100644 --- a/functions_func.html +++ b/functions_func.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/functions_vars.html b/functions_vars.html index cbe3b5d5..f226994b 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/gdswzd__c_8F90.html b/gdswzd__c_8F90.html index b3acb1fe..9a8d640e 100644 --- a/gdswzd__c_8F90.html +++ b/gdswzd__c_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/gdswzd__c_8F90_source.html b/gdswzd__c_8F90_source.html index 5d1be1c2..7f02ddbf 100644 --- a/gdswzd__c_8F90_source.html +++ b/gdswzd__c_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/gdswzd__mod_8F90.html b/gdswzd__mod_8F90.html index 166f019e..881c2de3 100644 --- a/gdswzd__mod_8F90.html +++ b/gdswzd__mod_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/gdswzd__mod_8F90_source.html b/gdswzd__mod_8F90_source.html index ec343a77..2b3993b6 100644 --- a/gdswzd__mod_8F90_source.html +++ b/gdswzd__mod_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -436,7 +436,7 @@
Re-export the individual grids.
Definition: ip_grids_mod.F90:7
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
Grib-2 descriptor containing a grib2 GDT represented by an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/globals.html b/globals.html index 62313475..462f477c 100644 --- a/globals.html +++ b/globals.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -131,16 +131,6 @@

- i -

-

- l -

- -

- m -

  • movect() : movect.F90 diff --git a/globals_func.html b/globals_func.html index 5bfb31f5..bc86712c 100644 --- a/globals_func.html +++ b/globals_func.html @@ -26,7 +26,7 @@
    NCEPLIBS-ip -  5.0.0 +  5.1.0
    @@ -131,16 +131,6 @@

    - i -

    -

    - l -

    - -

    - m -

    • movect() : movect.F90 diff --git a/hierarchy.html b/hierarchy.html index e16dae62..36d6a3fd 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -26,7 +26,7 @@
      NCEPLIBS-ip -  5.0.0 +  5.1.0
      diff --git a/index.html b/index.html index 67294f67..6b7d9944 100644 --- a/index.html +++ b/index.html @@ -26,7 +26,7 @@
      NCEPLIBS-ip -  5.0.0 +  5.1.0
      @@ -87,11 +87,12 @@
      -Previous versions:

4.4.0, 4.3.0, 4.2.0, 4.1.0, 4.0.0 +Previous versions:

5.0.0, 4.4.0, 4.3.0, 4.2.0, 4.1.0, 4.0.0

The NCEP general interpolation library (NCEPLIBS-ip) contains Fortran 90 subprograms to be used for interpolating between nearly all grids used at NCEP. The library is particularly efficient when interpolating many fields at one time. It also contains functionality for interpolating, transforming, and otherwise manipulating spectral data (these functions were formerly contained in the NCEPLIBS-sp library).

NCEPLIBS-ip supports compilation with the GNU Compiler Collection (gfortran), Intel Classic (ifort), and Intel OneAPI (ifx) compilers. In the case of Intel OneAPI (IntelLLVM), it is recommended to use at least version 2023.2.1 to avoid any number of compiler issues.

Note
Some routines may behave poorly or unpredictably when using 4-byte reals (libip_4). For instance, there is an ATAN2 function used for polar stereo grids where for certain regions of certain grids, floating point differences between 4-byte output values (~1e-7) can be amplified into sizable differences in output field values. Some applications may therefore benefit from the use of 8-byte reals (libip_d or libip_8).
+

NCEPLIBS-ip uses several BLAS/LAPACK routines in the splat() subroutine, and therefore requires an external BLAS/LAPACK provider. In practice, this should generally be OpenBLAS, which is the spack-stack BLAS/LAPACK provider.

Interpolation

diff --git a/interfacebicubic__interp__mod_1_1interpolate__bicubic.html b/interfacebicubic__interp__mod_1_1interpolate__bicubic.html index 287c1113..c8d35bcd 100644 --- a/interfacebicubic__interp__mod_1_1interpolate__bicubic.html +++ b/interfacebicubic__interp__mod_1_1interpolate__bicubic.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/interfacebilinear__interp__mod_1_1interpolate__bilinear.html b/interfacebilinear__interp__mod_1_1interpolate__bilinear.html index fee2d108..cea3853c 100644 --- a/interfacebilinear__interp__mod_1_1interpolate__bilinear.html +++ b/interfacebilinear__interp__mod_1_1interpolate__bilinear.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/interfacebudget__interp__mod_1_1interpolate__budget.html b/interfacebudget__interp__mod_1_1interpolate__budget.html index 5d1a9f6c..1df3948f 100644 --- a/interfacebudget__interp__mod_1_1interpolate__budget.html +++ b/interfacebudget__interp__mod_1_1interpolate__budget.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/interfacegdswzd__mod_1_1gdswzd.html b/interfacegdswzd__mod_1_1gdswzd.html index 0227e2f5..48da6fe0 100644 --- a/interfacegdswzd__mod_1_1gdswzd.html +++ b/interfacegdswzd__mod_1_1gdswzd.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/interfaceip__grid__descriptor__mod_1_1init__descriptor.html b/interfaceip__grid__descriptor__mod_1_1init__descriptor.html index 34c85250..c002a289 100644 --- a/interfaceip__grid__descriptor__mod_1_1init__descriptor.html +++ b/interfaceip__grid__descriptor__mod_1_1init__descriptor.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html b/interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html index cf61d76c..51109273 100644 --- a/interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html +++ b/interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/interfaceip__grid__factory__mod_1_1init__grid.html b/interfaceip__grid__factory__mod_1_1init__grid.html index 92908f6e..38c67c54 100644 --- a/interfaceip__grid__factory__mod_1_1init__grid.html +++ b/interfaceip__grid__factory__mod_1_1init__grid.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/interfaceip__grid__mod_1_1gdswzd__interface.html b/interfaceip__grid__mod_1_1gdswzd__interface.html index e7cf8dcc..94444f08 100644 --- a/interfaceip__grid__mod_1_1gdswzd__interface.html +++ b/interfaceip__grid__mod_1_1gdswzd__interface.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -97,7 +97,7 @@

Detailed Description

-

Definition at line 119 of file ip_grid_mod.F90.

+

Definition at line 125 of file ip_grid_mod.F90.

Constructor & Destructor Documentation

◆ gdswzd_interface()

@@ -246,7 +246,7 @@

Author
Kyle Gerheiser
Date
July 2021
-

Definition at line 119 of file ip_grid_mod.F90.

+

Definition at line 125 of file ip_grid_mod.F90.

diff --git a/interfaceip__grid__mod_1_1init__grib1__interface.html b/interfaceip__grid__mod_1_1init__grib1__interface.html index 67ad960b..4e1652e4 100644 --- a/interfaceip__grid__mod_1_1init__grib1__interface.html +++ b/interfaceip__grid__mod_1_1init__grib1__interface.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -97,7 +97,7 @@

Detailed Description

-

Definition at line 142 of file ip_grid_mod.F90.

+

Definition at line 148 of file ip_grid_mod.F90.

Constructor & Destructor Documentation

◆ init_grib1_interface()

@@ -144,7 +144,7 @@

Author
Kyle Gerheiser
Date
July 2021
-

Definition at line 142 of file ip_grid_mod.F90.

+

Definition at line 148 of file ip_grid_mod.F90.

diff --git a/interfaceip__grid__mod_1_1init__grib2__interface.html b/interfaceip__grid__mod_1_1init__grib2__interface.html index 17f2d22e..17696c6c 100644 --- a/interfaceip__grid__mod_1_1init__grib2__interface.html +++ b/interfaceip__grid__mod_1_1init__grib2__interface.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -97,7 +97,7 @@

Detailed Description

-

Definition at line 156 of file ip_grid_mod.F90.

+

Definition at line 162 of file ip_grid_mod.F90.

Constructor & Destructor Documentation

◆ init_grib2_interface()

@@ -144,7 +144,7 @@

Author
Kyle Gerheiser
Date
July 2021
-

Definition at line 156 of file ip_grid_mod.F90.

+

Definition at line 162 of file ip_grid_mod.F90.

diff --git a/interfaceip__grid__mod_1_1operator_07_0a_0a_08.html b/interfaceip__grid__mod_1_1operator_07_0a_0a_08.html index 9607ffd1..40217261 100644 --- a/interfaceip__grid__mod_1_1operator_07_0a_0a_08.html +++ b/interfaceip__grid__mod_1_1operator_07_0a_0a_08.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -103,7 +103,7 @@
Author
Kyle Gerheiser
Date
July 2021
-

Definition at line 166 of file ip_grid_mod.F90.

+

Definition at line 172 of file ip_grid_mod.F90.

Member Function/Subroutine Documentation

◆ is_same_grid()

@@ -151,7 +151,7 @@

Author
Kyle Gerheiser
Date
July 2021
-

Definition at line 182 of file ip_grid_mod.F90.

+

Definition at line 208 of file ip_grid_mod.F90.

References ip_grid_descriptor_mod::is_same_grid().

diff --git a/interfaceipolates__mod_1_1ipolates.html b/interfaceipolates__mod_1_1ipolates.html index 4650f457..07b76568 100644 --- a/interfaceipolates__mod_1_1ipolates.html +++ b/interfaceipolates__mod_1_1ipolates.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/interfaceipolatev__mod_1_1ipolatev.html b/interfaceipolatev__mod_1_1ipolatev.html index 4c61d884..e968fdfa 100644 --- a/interfaceipolatev__mod_1_1ipolatev.html +++ b/interfaceipolatev__mod_1_1ipolatev.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html b/interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html index e220667b..927d153f 100644 --- a/interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html +++ b/interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -235,7 +235,7 @@

+

Program History Log

@@ -451,7 +451,7 @@

+

Program History Log

diff --git a/interfaceneighbor__interp__mod_1_1interpolate__neighbor.html b/interfaceneighbor__interp__mod_1_1interpolate__neighbor.html index bf165ee7..feb994d3 100644 --- a/interfaceneighbor__interp__mod_1_1interpolate__neighbor.html +++ b/interfaceneighbor__interp__mod_1_1interpolate__neighbor.html @@ -26,7 +26,7 @@ diff --git a/interfacespectral__interp__mod_1_1interpolate__spectral.html b/interfacespectral__interp__mod_1_1interpolate__spectral.html index 98c4e117..5e1c2a0b 100644 --- a/interfacespectral__interp__mod_1_1interpolate__spectral.html +++ b/interfacespectral__interp__mod_1_1interpolate__spectral.html @@ -26,7 +26,7 @@ @@ -100,7 +100,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0

Detailed Description

-

Definition at line 19 of file spectral_interp_mod.F90.

+

Definition at line 20 of file spectral_interp_mod.F90.

Member Function/Subroutine Documentation

◆ interpolate_spectral_scalar()

@@ -238,7 +238,7 @@

Author
Mark Iredell
Date
96-04-10
-

Definition at line 60 of file spectral_interp_mod.F90.

+

Definition at line 61 of file spectral_interp_mod.F90.

@@ -406,9 +406,9 @@

Author
Mark Iredell
Date
96-04-10
-

Definition at line 121 of file spectral_interp_mod.F90.

+

Definition at line 122 of file spectral_interp_mod.F90.

-

References spectral_interp_mod::polatev4_grib1().

+

References spectral_interp_mod::polatev4_grib1().

diff --git a/interfacespectral__interp__mod_1_1polates4.html b/interfacespectral__interp__mod_1_1polates4.html index 5516cbd8..30c287ce 100644 --- a/interfacespectral__interp__mod_1_1polates4.html +++ b/interfacespectral__interp__mod_1_1polates4.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -100,7 +100,7 @@

Detailed Description

-

Definition at line 24 of file spectral_interp_mod.F90.

+

Definition at line 25 of file spectral_interp_mod.F90.

Member Function/Subroutine Documentation

◆ polates4_grib1()

@@ -229,7 +229,7 @@

+

Program History Log

@@ -271,7 +271,7 @@

Author
Iredell
Date
96-04-10
-

Definition at line 559 of file spectral_interp_mod.F90.

+

Definition at line 560 of file spectral_interp_mod.F90.

References sptrun(), sptrung(), sptrunm(), and sptruns().

@@ -426,7 +426,7 @@

+

Program History Log

@@ -482,7 +482,7 @@

!

Author
Mark Iredell
Date
96-04-10
-

Definition at line 254 of file spectral_interp_mod.F90.

+

Definition at line 255 of file spectral_interp_mod.F90.

References earth_radius_mod::earth_radius(), sptrun(), sptrung(), sptrunm(), and sptruns().

diff --git a/interfacespectral__interp__mod_1_1polatev4.html b/interfacespectral__interp__mod_1_1polatev4.html index 37741758..660d0edf 100644 --- a/interfacespectral__interp__mod_1_1polatev4.html +++ b/interfacespectral__interp__mod_1_1polatev4.html @@ -26,7 +26,7 @@

@@ -100,7 +100,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0

Detailed Description

-

Definition at line 29 of file spectral_interp_mod.F90.

+

Definition at line 30 of file spectral_interp_mod.F90.

Member Function/Subroutine Documentation

◆ polatev4_grib1()

@@ -254,7 +254,7 @@

+

Program History Log

@@ -300,7 +300,7 @@

Author
IREDELL
Date
96-04-10
-

Definition at line 1221 of file spectral_interp_mod.F90.

+

Definition at line 1222 of file spectral_interp_mod.F90.

References sptrungv(), sptrunmv(), sptrunsv(), and sptrunv().

@@ -480,7 +480,7 @@

+

Program History Log

@@ -540,7 +540,7 @@

Author
IREDELL
Date
96-04-10
-

Definition at line 887 of file spectral_interp_mod.F90.

+

Definition at line 888 of file spectral_interp_mod.F90.

References earth_radius_mod::earth_radius(), sptrungv(), sptrunmv(), sptrunsv(), and sptrunv().

diff --git a/ip__constants__mod_8F90.html b/ip__constants__mod_8F90.html index 14f3e881..9462b41c 100644 --- a/ip__constants__mod_8F90.html +++ b/ip__constants__mod_8F90.html @@ -26,7 +26,7 @@

diff --git a/ip__constants__mod_8F90_source.html b/ip__constants__mod_8F90_source.html index 990a0fe5..b5fa81e1 100644 --- a/ip__constants__mod_8F90_source.html +++ b/ip__constants__mod_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/ip__equid__cylind__grid__mod_8F90.html b/ip__equid__cylind__grid__mod_8F90.html index 65f3c146..d59e5b17 100644 --- a/ip__equid__cylind__grid__mod_8F90.html +++ b/ip__equid__cylind__grid__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__equid__cylind__grid__mod_8F90_source.html b/ip__equid__cylind__grid__mod_8F90_source.html index e787b5ce..7d95bd8f 100644 --- a/ip__equid__cylind__grid__mod_8F90_source.html +++ b/ip__equid__cylind__grid__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -385,7 +385,7 @@
Abstract ip_grid type.
Definition: ip_grid_mod.F90:10
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ip__gaussian__grid__mod_8F90.html b/ip__gaussian__grid__mod_8F90.html index 82eb5e12..60e15944 100644 --- a/ip__gaussian__grid__mod_8F90.html +++ b/ip__gaussian__grid__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__gaussian__grid__mod_8F90_source.html b/ip__gaussian__grid__mod_8F90_source.html index 83df1de5..e02ff25d 100644 --- a/ip__gaussian__grid__mod_8F90_source.html +++ b/ip__gaussian__grid__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -93,355 +93,356 @@
16  use ip_grid_mod
-
19  implicit none
-
20 
-
21  private
-
22  public :: ip_gaussian_grid
-
23 
-
24  type, extends(ip_grid) :: ip_gaussian_grid
-
25  integer :: jh
-
26  real :: dlon
-
27  real :: rlat1
-
28  real :: rlon1
-
29  real :: rlon2
-
30  real :: hi
-
31  integer :: jg
-
32  integer :: jscan
-
33  contains
-
35  procedure :: init_grib1
-
37  procedure :: init_grib2
-
40  procedure :: gdswzd => gdswzd_gaussian
-
41  end type ip_gaussian_grid
-
42 
-
43  INTEGER :: j1
-
44  INTEGER :: jh
-
45  REAL, ALLOCATABLE :: blat(:)
-
46  REAL :: dlon
-
47  REAL :: rerth
-
48  REAL, ALLOCATABLE :: ylat_row(:)
-
49 
-
50 contains
-
51 
-
59  subroutine init_grib1(self, g1_desc)
-
60  class(ip_gaussian_grid), intent(inout) :: self
-
61  type(grib1_descriptor), intent(in) :: g1_desc
-
62 
-
63  integer :: iscan, jg
-
64 
-
65  associate(kgds => g1_desc%gds)
-
66  self%rerth = 6.3712e6
-
67  self%eccen_squared = 0.0
-
68 
-
69  self%IM=kgds(2)
-
70  self%JM=kgds(3)
-
71  self%RLAT1=kgds(4)*1.e-3
-
72  self%RLON1=kgds(5)*1.e-3
-
73  self%RLON2=kgds(8)*1.e-3
-
74  self%JG=kgds(10)*2
-
75  iscan=mod(kgds(11)/128,2)
-
76  self%JSCAN=mod(kgds(11)/64,2)
-
77  self%HI=(-1.)**iscan
-
78  self%JH=(-1)**self%JSCAN
-
79  self%DLON=self%HI*(mod(self%HI*(self%RLON2-self%RLON1)-1+3600,360.)+1)/(self%IM-1)
-
80 
-
81  self%iwrap = 0
-
82  self%jwrap1 = 0
-
83  self%jwrap2 = 0
-
84  self%nscan = mod(kgds(11) / 32, 2)
-
85  self%nscan_field_pos = self%nscan
-
86  self%kscan = 0
-
87 
-
88  self%iwrap=nint(360 / abs(self%dlon))
-
89  if(self%im < self%iwrap) self%iwrap = 0
-
90 
-
91  if(self%iwrap > 0 .and. mod(self%iwrap, 2) == 0) then
-
92  jg=kgds(10)*2
-
93  if(self%jm == self%jg) then
-
94  self%jwrap1 = 1
-
95  self%jwrap2 = 2 * self%jm + 1
-
96  endif
-
97  endif
-
98 
-
99  end associate
-
100  end subroutine init_grib1
-
101 
-
108  subroutine init_grib2(self, g2_desc)
-
109  class(ip_gaussian_grid), intent(inout) :: self
-
110  type(grib2_descriptor), intent(in) :: g2_desc
-
111 
-
112  integer :: iscale, iscan, jg
-
113 
-
114  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
-
115  call earth_radius(igdtmpl, igdtlen, self%rerth, self%eccen_squared)
-
116 
-
117  self%IM=igdtmpl(8)
-
118  self%JM=igdtmpl(9)
-
119  iscale=igdtmpl(10)*igdtmpl(11)
-
120  IF(iscale==0) iscale=10**6
-
121  self%RLAT1=float(igdtmpl(12))/float(iscale)
-
122  self%RLON1=float(igdtmpl(13))/float(iscale)
-
123  self%RLON2=float(igdtmpl(16))/float(iscale)
-
124  self%JG=igdtmpl(18)*2
-
125  iscan=mod(igdtmpl(19)/128,2)
-
126  self%JSCAN=mod(igdtmpl(19)/64,2)
-
127  self%HI=(-1.)**iscan
-
128  self%JH=(-1)**self%JSCAN
-
129  self%DLON=self%HI*(mod(self%HI*(self%RLON2-self%RLON1)-1+3600,360.)+1)/(self%IM-1)
-
130 
+
19  use sp_mod
+
20  implicit none
+
21 
+
22  private
+
23  public :: ip_gaussian_grid
+
24 
+
25  type, extends(ip_grid) :: ip_gaussian_grid
+
26  integer :: jh
+
27  real :: dlon
+
28  real :: rlat1
+
29  real :: rlon1
+
30  real :: rlon2
+
31  real :: hi
+
32  integer :: jg
+
33  integer :: jscan
+
34  contains
+
36  procedure :: init_grib1
+
38  procedure :: init_grib2
+
41  procedure :: gdswzd => gdswzd_gaussian
+
42  end type ip_gaussian_grid
+
43 
+
44  INTEGER :: j1
+
45  INTEGER :: jh
+
46  REAL, ALLOCATABLE :: blat(:)
+
47  REAL :: dlon
+
48  REAL :: rerth
+
49  REAL, ALLOCATABLE :: ylat_row(:)
+
50 
+
51 contains
+
52 
+
60  subroutine init_grib1(self, g1_desc)
+
61  class(ip_gaussian_grid), intent(inout) :: self
+
62  type(grib1_descriptor), intent(in) :: g1_desc
+
63 
+
64  integer :: iscan, jg
+
65 
+
66  associate(kgds => g1_desc%gds)
+
67  self%rerth = 6.3712e6
+
68  self%eccen_squared = 0.0
+
69 
+
70  self%IM=kgds(2)
+
71  self%JM=kgds(3)
+
72  self%RLAT1=kgds(4)*1.e-3
+
73  self%RLON1=kgds(5)*1.e-3
+
74  self%RLON2=kgds(8)*1.e-3
+
75  self%JG=kgds(10)*2
+
76  iscan=mod(kgds(11)/128,2)
+
77  self%JSCAN=mod(kgds(11)/64,2)
+
78  self%HI=(-1.)**iscan
+
79  self%JH=(-1)**self%JSCAN
+
80  self%DLON=self%HI*(mod(self%HI*(self%RLON2-self%RLON1)-1+3600,360.)+1)/(self%IM-1)
+
81 
+
82  self%iwrap = 0
+
83  self%jwrap1 = 0
+
84  self%jwrap2 = 0
+
85  self%nscan = mod(kgds(11) / 32, 2)
+
86  self%nscan_field_pos = self%nscan
+
87  self%kscan = 0
+
88 
+
89  self%iwrap=nint(360 / abs(self%dlon))
+
90  if(self%im < self%iwrap) self%iwrap = 0
+
91 
+
92  if(self%iwrap > 0 .and. mod(self%iwrap, 2) == 0) then
+
93  jg=kgds(10)*2
+
94  if(self%jm == self%jg) then
+
95  self%jwrap1 = 1
+
96  self%jwrap2 = 2 * self%jm + 1
+
97  endif
+
98  endif
+
99 
+
100  end associate
+
101  end subroutine init_grib1
+
102 
+
109  subroutine init_grib2(self, g2_desc)
+
110  class(ip_gaussian_grid), intent(inout) :: self
+
111  type(grib2_descriptor), intent(in) :: g2_desc
+
112 
+
113  integer :: iscale, iscan, jg
+
114 
+
115  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
+
116  call earth_radius(igdtmpl, igdtlen, self%rerth, self%eccen_squared)
+
117 
+
118  self%IM=igdtmpl(8)
+
119  self%JM=igdtmpl(9)
+
120  iscale=igdtmpl(10)*igdtmpl(11)
+
121  IF(iscale==0) iscale=10**6
+
122  self%RLAT1=float(igdtmpl(12))/float(iscale)
+
123  self%RLON1=float(igdtmpl(13))/float(iscale)
+
124  self%RLON2=float(igdtmpl(16))/float(iscale)
+
125  self%JG=igdtmpl(18)*2
+
126  iscan=mod(igdtmpl(19)/128,2)
+
127  self%JSCAN=mod(igdtmpl(19)/64,2)
+
128  self%HI=(-1.)**iscan
+
129  self%JH=(-1)**self%JSCAN
+
130  self%DLON=self%HI*(mod(self%HI*(self%RLON2-self%RLON1)-1+3600,360.)+1)/(self%IM-1)
131 
-
132  self%iwrap = nint(360 / abs(self%dlon))
-
133  if(self%im < self%iwrap) self%iwrap = 0
-
134  self%jwrap1 = 0
-
135  self%jwrap2 = 0
-
136  if(self%iwrap > 0 .and. mod(self%iwrap, 2) == 0) then
-
137  jg = igdtmpl(18) * 2
-
138  if(self%jm == jg) then
-
139  self%jwrap1=1
-
140  self%jwrap2 = 2 * self%jm + 1
-
141  endif
-
142  endif
-
143  self%nscan = mod(igdtmpl(19) / 32, 2)
-
144  self%nscan_field_pos = self%nscan
-
145  self%kscan = 0
-
146  end associate
-
147 
-
148  end subroutine init_grib2
-
149 
-
194  SUBROUTINE gdswzd_gaussian(self,IOPT,NPTS,FILL, &
-
195  XPTS,YPTS,RLON,RLAT,NRET, &
-
196  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
-
197  IMPLICIT NONE
-
198  !
-
199  class(ip_gaussian_grid), intent(in) :: self
-
200  INTEGER, INTENT(IN ) :: IOPT, NPTS
-
201  INTEGER, INTENT( OUT) :: NRET
-
202  !
-
203  REAL, INTENT(IN ) :: FILL
-
204  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
-
205  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
-
206  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
-
207  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
-
208  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
-
209  !
-
210  INTEGER :: JSCAN, IM, JM
-
211  INTEGER :: J, JA, JG
-
212  INTEGER :: N
-
213  !
-
214  LOGICAL :: LROT, LMAP, LAREA
-
215  !
-
216  REAL, ALLOCATABLE :: ALAT(:), ALAT_JSCAN(:)
-
217  REAL, ALLOCATABLE :: ALAT_TEMP(:),BLAT_TEMP(:)
-
218  REAL :: HI, RLATA, RLATB, RLAT1, RLON1, RLON2
-
219  REAL :: XMAX, XMIN, YMAX, YMIN, YPTSA, YPTSB
-
220  REAL :: WB
-
221 
-
222  IF(PRESENT(crot)) crot=fill
-
223  IF(PRESENT(srot)) srot=fill
-
224  IF(PRESENT(xlon)) xlon=fill
-
225  IF(PRESENT(xlat)) xlat=fill
-
226  IF(PRESENT(ylon)) ylon=fill
-
227  IF(PRESENT(ylat)) ylat=fill
-
228  IF(PRESENT(area)) area=fill
-
229 
-
230  IF(PRESENT(crot).AND.PRESENT(srot))THEN
-
231  lrot=.true.
-
232  ELSE
-
233  lrot=.false.
-
234  ENDIF
-
235  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
-
236  lmap=.true.
-
237  ELSE
-
238  lmap=.false.
-
239  ENDIF
-
240  IF(PRESENT(area))THEN
-
241  larea=.true.
-
242  ELSE
-
243  larea=.false.
-
244  ENDIF
-
245 
-
246  im=self%im
-
247  jm=self%jm
-
248 
-
249  rlat1=self%rlat1
-
250  rlon1=self%rlon1
-
251  rlon2=self%rlon2
-
252 
-
253  jg=self%jg
-
254  jscan=self%jscan
-
255  hi=self%hi
-
256 
-
257  jh=self%jh
-
258  dlon=self%dlon
-
259  rerth = self%rerth
-
260 
-
261  ALLOCATE(alat_temp(jg))
-
262  ALLOCATE(blat_temp(jg))
-
263  CALL splat(4,jg,alat_temp,blat_temp)
-
264  ALLOCATE(alat(0:jg+1))
-
265  ALLOCATE(blat(0:jg+1))
-
266  !$OMP PARALLEL DO PRIVATE(JA) SCHEDULE(STATIC)
-
267  DO ja=1,jg
-
268  alat(ja)=real(dpr*asin(alat_temp(ja)))
-
269  blat(ja)=blat_temp(ja)
-
270  ENDDO
-
271  !$OMP END PARALLEL DO
-
272  DEALLOCATE(alat_temp,blat_temp)
-
273  alat(0)=180.-alat(1)
-
274  alat(jg+1)=-alat(0)
-
275  blat(0)=-blat(1)
-
276  blat(jg+1)=blat(0)
-
277  j1=1
-
278  DO WHILE(j1.LT.jg.AND.rlat1.LT.(alat(j1)+alat(j1+1))/2)
-
279  j1=j1+1
-
280  ENDDO
-
281  IF(lmap)THEN
-
282  ALLOCATE(alat_jscan(jg))
-
283  DO ja=1,jg
-
284  alat_jscan(j1+jh*(ja-1))=alat(ja)
-
285  ENDDO
-
286  ALLOCATE(ylat_row(0:jg+1))
-
287  DO ja=2,(jg-1)
-
288  ylat_row(ja)=2.0/(alat_jscan(ja+1)-alat_jscan(ja-1))
-
289  ENDDO
-
290  ylat_row(1)=1.0/(alat_jscan(2)-alat_jscan(1))
-
291  ylat_row(0)=ylat_row(1)
-
292  ylat_row(jg)=1.0/(alat_jscan(jg)-alat_jscan(jg-1))
-
293  ylat_row(jg+1)=ylat_row(jg)
-
294  DEALLOCATE(alat_jscan)
-
295  ENDIF
-
296  xmin=0
-
297  xmax=im+1
-
298  IF(im.EQ.nint(360/abs(dlon))) xmax=im+2
-
299  ymin=0.5
-
300  ymax=jm+0.5
-
301  nret=0
-
302 
-
303  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
-
304  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
-
305  !$OMP PARALLEL DO PRIVATE(N,J,WB,RLATA,RLATB) REDUCTION(+:NRET) SCHEDULE(STATIC)
-
306  DO n=1,npts
-
307  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
-
308  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
-
309  rlon(n)=mod(rlon1+dlon*(xpts(n)-1)+3600,360.)
-
310  j=int(ypts(n))
-
311  wb=ypts(n)-j
-
312  rlata=alat(j1+jh*(j-1))
-
313  rlatb=alat(j1+jh*j)
-
314  rlat(n)=rlata+wb*(rlatb-rlata)
-
315  nret=nret+1
-
316  IF(lrot) CALL gaussian_vect_rot(crot(n),srot(n))
-
317  IF(lmap) CALL gaussian_map_jacob(ypts(n),&
-
318  xlon(n),xlat(n),ylon(n),ylat(n))
-
319  IF(larea) CALL gaussian_grid_area(ypts(n),area(n))
-
320  ELSE
-
321  rlon(n)=fill
-
322  rlat(n)=fill
-
323  ENDIF
-
324  ENDDO
-
325  !$OMP END PARALLEL DO
-
326 
-
327  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
-
328  ELSEIF(iopt.EQ.-1) THEN
-
329  !$OMP PARALLEL DO PRIVATE(N,JA,YPTSA, YPTSB, WB) REDUCTION(+:NRET) SCHEDULE(STATIC)
-
330  DO n=1,npts
-
331  xpts(n)=fill
-
332  ypts(n)=fill
-
333  IF(abs(rlon(n)).LE.360.AND.abs(rlat(n)).LE.90) THEN
-
334  xpts(n)=1+hi*mod(hi*(rlon(n)-rlon1)+3600,360.)/dlon
-
335  ja=min(int((jg+1)/180.*(90-rlat(n))),jg)
-
336  IF(rlat(n).GT.alat(ja)) ja=max(ja-2,0)
-
337  IF(rlat(n).LT.alat(ja+1)) ja=min(ja+2,jg)
-
338  IF(rlat(n).GT.alat(ja)) ja=ja-1
-
339  IF(rlat(n).LT.alat(ja+1)) ja=ja+1
-
340  yptsa=1+jh*(ja-j1)
-
341  yptsb=1+jh*(ja+1-j1)
-
342  wb=(alat(ja)-rlat(n))/(alat(ja)-alat(ja+1))
-
343  ypts(n)=yptsa+wb*(yptsb-yptsa)
-
344  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
-
345  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
-
346  nret=nret+1
-
347  IF(lrot) CALL gaussian_vect_rot(crot(n),srot(n))
-
348  IF(lmap) CALL gaussian_map_jacob(ypts(n), &
-
349  xlon(n),xlat(n),ylon(n),ylat(n))
-
350  IF(larea) CALL gaussian_grid_area(ypts(n),area(n))
-
351  ELSE
-
352  xpts(n)=fill
-
353  ypts(n)=fill
-
354  ENDIF
-
355  ENDIF
-
356  ENDDO
-
357  !$OMP END PARALLEL DO
-
358  ENDIF
-
359  DEALLOCATE(alat, blat)
-
360  IF (ALLOCATED(ylat_row)) DEALLOCATE(ylat_row)
-
361 
-
362  END SUBROUTINE gdswzd_gaussian
-
363 
-
376  SUBROUTINE gaussian_vect_rot(CROT,SROT)
-
377  IMPLICIT NONE
-
378 
-
379  REAL, INTENT( OUT) :: CROT, SROT
-
380 
-
381  crot=1.0
-
382  srot=0.0
-
383 
-
384  END SUBROUTINE gaussian_vect_rot
-
385 
-
396  SUBROUTINE gaussian_map_jacob(YPTS, XLON, XLAT, YLON, YLAT)
-
397  IMPLICIT NONE
-
398 
-
399  REAL, INTENT(IN ) :: YPTS
-
400  REAL, INTENT( OUT) :: XLON, XLAT, YLON, YLAT
-
401 
-
402  xlon=1/dlon
-
403  xlat=0.
-
404  ylon=0.
-
405  ylat=ylat_row(nint(ypts))
-
406 
-
407  END SUBROUTINE gaussian_map_jacob
-
408 
-
416  SUBROUTINE gaussian_grid_area(YPTS,AREA)
-
417  IMPLICIT NONE
-
418 
-
419  REAL, INTENT(IN ) :: YPTS
-
420  REAL, INTENT( OUT) :: AREA
-
421 
-
422  INTEGER :: J
-
423 
-
424  REAL :: WB, WLAT, WLATA, WLATB
-
425 
-
426  j = int(ypts)
-
427  wb=ypts-j
-
428  wlata=blat(j1+jh*(j-1))
-
429  wlatb=blat(j1+jh*j)
-
430  wlat=wlata+wb*(wlatb-wlata)
-
431  area=real(rerth**2*wlat*dlon/dpr)
-
432 
-
433  END SUBROUTINE gaussian_grid_area
-
434 end module ip_gaussian_grid_mod
-
435 
+
132 
+
133  self%iwrap = nint(360 / abs(self%dlon))
+
134  if(self%im < self%iwrap) self%iwrap = 0
+
135  self%jwrap1 = 0
+
136  self%jwrap2 = 0
+
137  if(self%iwrap > 0 .and. mod(self%iwrap, 2) == 0) then
+
138  jg = igdtmpl(18) * 2
+
139  if(self%jm == jg) then
+
140  self%jwrap1=1
+
141  self%jwrap2 = 2 * self%jm + 1
+
142  endif
+
143  endif
+
144  self%nscan = mod(igdtmpl(19) / 32, 2)
+
145  self%nscan_field_pos = self%nscan
+
146  self%kscan = 0
+
147  end associate
+
148 
+
149  end subroutine init_grib2
+
150 
+
195  SUBROUTINE gdswzd_gaussian(self,IOPT,NPTS,FILL, &
+
196  XPTS,YPTS,RLON,RLAT,NRET, &
+
197  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
+
198  IMPLICIT NONE
+
199  !
+
200  class(ip_gaussian_grid), intent(in) :: self
+
201  INTEGER, INTENT(IN ) :: IOPT, NPTS
+
202  INTEGER, INTENT( OUT) :: NRET
+
203  !
+
204  REAL, INTENT(IN ) :: FILL
+
205  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
+
206  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
+
207  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
+
208  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
+
209  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
+
210  !
+
211  INTEGER :: JSCAN, IM, JM
+
212  INTEGER :: J, JA, JG
+
213  INTEGER :: N
+
214  !
+
215  LOGICAL :: LROT, LMAP, LAREA
+
216  !
+
217  REAL, ALLOCATABLE :: ALAT(:), ALAT_JSCAN(:)
+
218  REAL, ALLOCATABLE :: ALAT_TEMP(:),BLAT_TEMP(:)
+
219  REAL :: HI, RLATA, RLATB, RLAT1, RLON1, RLON2
+
220  REAL :: XMAX, XMIN, YMAX, YMIN, YPTSA, YPTSB
+
221  REAL :: WB
+
222 
+
223  IF(PRESENT(crot)) crot=fill
+
224  IF(PRESENT(srot)) srot=fill
+
225  IF(PRESENT(xlon)) xlon=fill
+
226  IF(PRESENT(xlat)) xlat=fill
+
227  IF(PRESENT(ylon)) ylon=fill
+
228  IF(PRESENT(ylat)) ylat=fill
+
229  IF(PRESENT(area)) area=fill
+
230 
+
231  IF(PRESENT(crot).AND.PRESENT(srot))THEN
+
232  lrot=.true.
+
233  ELSE
+
234  lrot=.false.
+
235  ENDIF
+
236  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
+
237  lmap=.true.
+
238  ELSE
+
239  lmap=.false.
+
240  ENDIF
+
241  IF(PRESENT(area))THEN
+
242  larea=.true.
+
243  ELSE
+
244  larea=.false.
+
245  ENDIF
+
246 
+
247  im=self%im
+
248  jm=self%jm
+
249 
+
250  rlat1=self%rlat1
+
251  rlon1=self%rlon1
+
252  rlon2=self%rlon2
+
253 
+
254  jg=self%jg
+
255  jscan=self%jscan
+
256  hi=self%hi
+
257 
+
258  jh=self%jh
+
259  dlon=self%dlon
+
260  rerth = self%rerth
+
261 
+
262  ALLOCATE(alat_temp(jg))
+
263  ALLOCATE(blat_temp(jg))
+
264  CALL splat(4,jg,alat_temp,blat_temp)
+
265  ALLOCATE(alat(0:jg+1))
+
266  ALLOCATE(blat(0:jg+1))
+
267  !$OMP PARALLEL DO PRIVATE(JA) SCHEDULE(STATIC)
+
268  DO ja=1,jg
+
269  alat(ja)=real(dpr*asin(alat_temp(ja)))
+
270  blat(ja)=blat_temp(ja)
+
271  ENDDO
+
272  !$OMP END PARALLEL DO
+
273  DEALLOCATE(alat_temp,blat_temp)
+
274  alat(0)=180.-alat(1)
+
275  alat(jg+1)=-alat(0)
+
276  blat(0)=-blat(1)
+
277  blat(jg+1)=blat(0)
+
278  j1=1
+
279  DO WHILE(j1.LT.jg.AND.rlat1.LT.(alat(j1)+alat(j1+1))/2)
+
280  j1=j1+1
+
281  ENDDO
+
282  IF(lmap)THEN
+
283  ALLOCATE(alat_jscan(jg))
+
284  DO ja=1,jg
+
285  alat_jscan(j1+jh*(ja-1))=alat(ja)
+
286  ENDDO
+
287  ALLOCATE(ylat_row(0:jg+1))
+
288  DO ja=2,(jg-1)
+
289  ylat_row(ja)=2.0/(alat_jscan(ja+1)-alat_jscan(ja-1))
+
290  ENDDO
+
291  ylat_row(1)=1.0/(alat_jscan(2)-alat_jscan(1))
+
292  ylat_row(0)=ylat_row(1)
+
293  ylat_row(jg)=1.0/(alat_jscan(jg)-alat_jscan(jg-1))
+
294  ylat_row(jg+1)=ylat_row(jg)
+
295  DEALLOCATE(alat_jscan)
+
296  ENDIF
+
297  xmin=0
+
298  xmax=im+1
+
299  IF(im.EQ.nint(360/abs(dlon))) xmax=im+2
+
300  ymin=0.5
+
301  ymax=jm+0.5
+
302  nret=0
+
303 
+
304  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
+
305  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
+
306  !$OMP PARALLEL DO PRIVATE(N,J,WB,RLATA,RLATB) REDUCTION(+:NRET) SCHEDULE(STATIC)
+
307  DO n=1,npts
+
308  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
+
309  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
+
310  rlon(n)=mod(rlon1+dlon*(xpts(n)-1)+3600,360.)
+
311  j=int(ypts(n))
+
312  wb=ypts(n)-j
+
313  rlata=alat(j1+jh*(j-1))
+
314  rlatb=alat(j1+jh*j)
+
315  rlat(n)=rlata+wb*(rlatb-rlata)
+
316  nret=nret+1
+
317  IF(lrot) CALL gaussian_vect_rot(crot(n),srot(n))
+
318  IF(lmap) CALL gaussian_map_jacob(ypts(n),&
+
319  xlon(n),xlat(n),ylon(n),ylat(n))
+
320  IF(larea) CALL gaussian_grid_area(ypts(n),area(n))
+
321  ELSE
+
322  rlon(n)=fill
+
323  rlat(n)=fill
+
324  ENDIF
+
325  ENDDO
+
326  !$OMP END PARALLEL DO
+
327 
+
328  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
+
329  ELSEIF(iopt.EQ.-1) THEN
+
330  !$OMP PARALLEL DO PRIVATE(N,JA,YPTSA, YPTSB, WB) REDUCTION(+:NRET) SCHEDULE(STATIC)
+
331  DO n=1,npts
+
332  xpts(n)=fill
+
333  ypts(n)=fill
+
334  IF(abs(rlon(n)).LE.360.AND.abs(rlat(n)).LE.90) THEN
+
335  xpts(n)=1+hi*mod(hi*(rlon(n)-rlon1)+3600,360.)/dlon
+
336  ja=min(int((jg+1)/180.*(90-rlat(n))),jg)
+
337  IF(rlat(n).GT.alat(ja)) ja=max(ja-2,0)
+
338  IF(rlat(n).LT.alat(ja+1)) ja=min(ja+2,jg)
+
339  IF(rlat(n).GT.alat(ja)) ja=ja-1
+
340  IF(rlat(n).LT.alat(ja+1)) ja=ja+1
+
341  yptsa=1+jh*(ja-j1)
+
342  yptsb=1+jh*(ja+1-j1)
+
343  wb=(alat(ja)-rlat(n))/(alat(ja)-alat(ja+1))
+
344  ypts(n)=yptsa+wb*(yptsb-yptsa)
+
345  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
+
346  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
+
347  nret=nret+1
+
348  IF(lrot) CALL gaussian_vect_rot(crot(n),srot(n))
+
349  IF(lmap) CALL gaussian_map_jacob(ypts(n), &
+
350  xlon(n),xlat(n),ylon(n),ylat(n))
+
351  IF(larea) CALL gaussian_grid_area(ypts(n),area(n))
+
352  ELSE
+
353  xpts(n)=fill
+
354  ypts(n)=fill
+
355  ENDIF
+
356  ENDIF
+
357  ENDDO
+
358  !$OMP END PARALLEL DO
+
359  ENDIF
+
360  DEALLOCATE(alat, blat)
+
361  IF (ALLOCATED(ylat_row)) DEALLOCATE(ylat_row)
+
362 
+
363  END SUBROUTINE gdswzd_gaussian
+
364 
+
377  SUBROUTINE gaussian_vect_rot(CROT,SROT)
+
378  IMPLICIT NONE
+
379 
+
380  REAL, INTENT( OUT) :: CROT, SROT
+
381 
+
382  crot=1.0
+
383  srot=0.0
+
384 
+
385  END SUBROUTINE gaussian_vect_rot
+
386 
+
397  SUBROUTINE gaussian_map_jacob(YPTS, XLON, XLAT, YLON, YLAT)
+
398  IMPLICIT NONE
+
399 
+
400  REAL, INTENT(IN ) :: YPTS
+
401  REAL, INTENT( OUT) :: XLON, XLAT, YLON, YLAT
+
402 
+
403  xlon=1/dlon
+
404  xlat=0.
+
405  ylon=0.
+
406  ylat=ylat_row(nint(ypts))
+
407 
+
408  END SUBROUTINE gaussian_map_jacob
+
409 
+
417  SUBROUTINE gaussian_grid_area(YPTS,AREA)
+
418  IMPLICIT NONE
+
419 
+
420  REAL, INTENT(IN ) :: YPTS
+
421  REAL, INTENT( OUT) :: AREA
+
422 
+
423  INTEGER :: J
+
424 
+
425  REAL :: WB, WLAT, WLATA, WLATB
+
426 
+
427  j = int(ypts)
+
428  wb=ypts-j
+
429  wlata=blat(j1+jh*(j-1))
+
430  wlatb=blat(j1+jh*j)
+
431  wlat=wlata+wb*(wlatb-wlata)
+
432  area=real(rerth**2*wlat*dlon/dpr)
+
433 
+
434  END SUBROUTINE gaussian_grid_area
+
435 end module ip_gaussian_grid_mod
+
436 
void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
gdswzd() interface for C for _4 build of library.
Determine earth radius and shape.
Module containing common constants.
Gaussian grid coordinate transformations.
-
real, dimension(:), allocatable ylat_row
dy/dlat for each row in 1/degrees.
-
integer jh
Scan mode flag in 'j' direction.
-
subroutine gdswzd_gaussian(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids.
-
real rerth
Radius of the earth.
-
real dlon
"i"-direction increment.
-
subroutine init_grib1(self, g1_desc)
Initializes a gaussian grid given a grib1_descriptor object.
-
subroutine gaussian_grid_area(YPTS, AREA)
Computes the grid box area for a gaussian cylindrical grid.
-
subroutine gaussian_vect_rot(CROT, SROT)
Computes the vector rotation sines and cosines for a gaussian cylindrical grid.
-
subroutine gaussian_map_jacob(YPTS, XLON, XLAT, YLON, YLAT)
Computes the map jacobians for a gaussian cylindrical grid.
-
subroutine init_grib2(self, g2_desc)
Initializes a gaussian grid given a grib2_descriptor object.
-
real, dimension(:), allocatable blat
Gaussian latitude for each parallel.
-
integer j1
'j' index of first grid point within the global array of latitudes.
+
real, dimension(:), allocatable ylat_row
dy/dlat for each row in 1/degrees.
+
integer jh
Scan mode flag in 'j' direction.
+
subroutine gdswzd_gaussian(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids.
+
real rerth
Radius of the earth.
+
real dlon
"i"-direction increment.
+
subroutine init_grib1(self, g1_desc)
Initializes a gaussian grid given a grib1_descriptor object.
+
subroutine gaussian_grid_area(YPTS, AREA)
Computes the grid box area for a gaussian cylindrical grid.
+
subroutine gaussian_vect_rot(CROT, SROT)
Computes the vector rotation sines and cosines for a gaussian cylindrical grid.
+
subroutine gaussian_map_jacob(YPTS, XLON, XLAT, YLON, YLAT)
Computes the map jacobians for a gaussian cylindrical grid.
+
subroutine init_grib2(self, g2_desc)
Initializes a gaussian grid given a grib2_descriptor object.
+
real, dimension(:), allocatable blat
Gaussian latitude for each parallel.
+
integer j1
'j' index of first grid point within the global array of latitudes.
Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
Abstract ip_grid type.
Definition: ip_grid_mod.F90:10
subroutine splat(IDRT, JMAX, SLAT, WLAT)
Computes cosines of colatitude and Gaussian weights for one of the following specific global sets of ...
Definition: splat.F:46
- +
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ip__grid__descriptor__mod_8F90.html b/ip__grid__descriptor__mod_8F90.html index a76dae9d..59cf6d5f 100644 --- a/ip__grid__descriptor__mod_8F90.html +++ b/ip__grid__descriptor__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__grid__descriptor__mod_8F90_source.html b/ip__grid__descriptor__mod_8F90_source.html index 821c8265..ee2abb74 100644 --- a/ip__grid__descriptor__mod_8F90_source.html +++ b/ip__grid__descriptor__mod_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/ip__grid__factory__mod_8F90.html b/ip__grid__factory__mod_8F90.html index ab8e7bd9..fe2f1ead 100644 --- a/ip__grid__factory__mod_8F90.html +++ b/ip__grid__factory__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__grid__factory__mod_8F90_source.html b/ip__grid__factory__mod_8F90_source.html index 16fbd895..f2e3bfce 100644 --- a/ip__grid__factory__mod_8F90_source.html +++ b/ip__grid__factory__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -170,16 +170,20 @@
113  allocate(ip_lambert_conf_grid::grid)
115  allocate(ip_gaussian_grid::grid)
-
116  case default
-
117  print *, "gdt_num: ", g2_desc%gdt_num, " not recognized"
-
118  error stop
-
119  end select
-
120 
-
121  call grid%init(g2_desc)
-
122  allocate(grid%descriptor, source = g2_desc)
-
123  end subroutine init_grid_grib2
-
124 
-
125 end module ip_grid_factory_mod
+ +
117  allocate(ip_rot_equid_cylind_egrid::grid)
+ +
119  allocate(ip_rot_equid_cylind_grid::grid)
+
120  case default
+
121  print *, "gdt_num: ", g2_desc%gdt_num, " not recognized"
+
122  error stop
+
123  end select
+
124 
+
125  call grid%init(g2_desc)
+
126  allocate(grid%descriptor, source = g2_desc)
+
127  end subroutine init_grid_grib2
+
128 
+
129 end module ip_grid_factory_mod
Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
Routines for creating an ip_grid given a Grib descriptor.
@@ -187,6 +191,7 @@
subroutine init_grid_grib2(grid, g2_desc)
Initializes a polymorphic ip_grid from a grib2_descriptor.
subroutine init_grid_grib1(grid, g1_desc)
Initializes a polymorphic ip_grid from a grib1_descriptor.
Abstract ip_grid type.
Definition: ip_grid_mod.F90:10
+
integer, parameter, public rot_equid_cylind_e_grid_id_grib2
Integer grid number for rotated equidistant cylindrical E-stagger grid (grib2)
Definition: ip_grid_mod.F90:28
integer, parameter, public lambert_conf_grid_id_grib2
Integer grid number for Lambert conformal grid in grib2.
Definition: ip_grid_mod.F90:26
integer, parameter, public gaussian_grid_id_grib2
Integer grid number for Gaussian grid in grib2.
Definition: ip_grid_mod.F90:27
integer, parameter, public equid_cylind_grid_id_grib2
Integer grid number for equidistant cylindrical grid in grib2.
Definition: ip_grid_mod.F90:22
@@ -197,6 +202,7 @@
integer, parameter, public mercator_grid_id_grib1
Integer grid number for Mercator grid in grib1.
Definition: ip_grid_mod.F90:15
integer, parameter, public equid_cylind_grid_id_grib1
Integer grid number for equidistant cylindrical grid in grib1.
Definition: ip_grid_mod.F90:14
integer, parameter, public rot_equid_cylind_b_grid_id_grib1
Integer grid number for rotated equidistant cylindrical B-stagger grid.
Definition: ip_grid_mod.F90:20
+
integer, parameter, public rot_equid_cylind_b_grid_id_grib2
Integer grid number for rotated equidistant cylindrical B-stagger grid (grib2)
Definition: ip_grid_mod.F90:29
integer, parameter, public rot_equid_cylind_grid_id_grib2
Integer grid number for rotated equidistant cylindrical grid in grib2.
Definition: ip_grid_mod.F90:23
integer, parameter, public mercator_grid_id_grib2
Integer grid number for Mercator grid in grib2.
Definition: ip_grid_mod.F90:24
integer, parameter, public polar_stereo_grid_id_grib1
Integer grid number for polar stereo grid in grib1.
Definition: ip_grid_mod.F90:18
@@ -204,7 +210,7 @@
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
Grib-2 descriptor containing a grib2 GDT represented by an integer array.
Abstract descriptor object which represents a grib1 or grib2 descriptor.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ip__grid__mod_8F90.html b/ip__grid__mod_8F90.html index 2fb445a4..c8b0a83c 100644 --- a/ip__grid__mod_8F90.html +++ b/ip__grid__mod_8F90.html @@ -26,7 +26,7 @@ @@ -126,6 +126,12 @@ + + + + + +
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
logical function ip_grid_mod::is_same_grid (grid1, grid2)
 Compares two grids. More...
 
subroutine, public ip_grid_mod::unuse_ncep_post_arakawa ()
 Disables ncep_post/wgrib2-compatible non-E Arakawa grib2 grids by setting 'ncep_post_arakawa=.false. More...
 
subroutine, public ip_grid_mod::use_ncep_post_arakawa ()
 Enables ncep_post/wgrib2-compatible non-E Arakawa grib2 grids by setting 'ncep_post_arakawa=.true. More...
 
@@ -153,6 +159,9 @@ + + + @@ -162,9 +171,15 @@ + + + + + + diff --git a/ip__grid__mod_8F90.js b/ip__grid__mod_8F90.js index e34260b2..e5002d6d 100644 --- a/ip__grid__mod_8F90.js +++ b/ip__grid__mod_8F90.js @@ -7,6 +7,8 @@ var ip__grid__mod_8F90 = [ "operator(==)", "interfaceip__grid__mod_1_1operator_07_0a_0a_08.html", "interfaceip__grid__mod_1_1operator_07_0a_0a_08" ], [ "field_pos", "ip__grid__mod_8F90.html#a63572318d74ec94c20c5ccd6ded2d442", null ], [ "is_same_grid", "ip__grid__mod_8F90.html#a663bda9af9dd991a09ba0f0de66dc045", null ], + [ "unuse_ncep_post_arakawa", "ip__grid__mod_8F90.html#ac8e716adbe5c1156bfd20f936a4205de", null ], + [ "use_ncep_post_arakawa", "ip__grid__mod_8F90.html#a1d570947cf124c28ba67305494bff450", null ], [ "equid_cylind_grid_id_grib1", "ip__grid__mod_8F90.html#ad96da95d40beceb1a1c405971e8130bb", null ], [ "equid_cylind_grid_id_grib2", "ip__grid__mod_8F90.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6", null ], [ "gaussian_grid_id_grib1", "ip__grid__mod_8F90.html#a45e8afad72b1b8856b3e44f2dd3123b3", null ], @@ -15,9 +17,12 @@ var ip__grid__mod_8F90 = [ "lambert_conf_grid_id_grib2", "ip__grid__mod_8F90.html#a2e49846c9122b1fe1fcdbb2913fc32fe", null ], [ "mercator_grid_id_grib1", "ip__grid__mod_8F90.html#ab9ff525eca4f053b04ec96a83cb06682", null ], [ "mercator_grid_id_grib2", "ip__grid__mod_8F90.html#af9c58af5162d96cb7d1ac5001139b856", null ], + [ "ncep_post_arakawa", "ip__grid__mod_8F90.html#a88751d2ee535d807b6d420fcfb99ee71", null ], [ "polar_stereo_grid_id_grib1", "ip__grid__mod_8F90.html#afee73c2f09ea9de43c156dc594ae1df1", null ], [ "polar_stereo_grid_id_grib2", "ip__grid__mod_8F90.html#a5b3ad320b41791e65966e1bb498e9ae3", null ], [ "rot_equid_cylind_b_grid_id_grib1", "ip__grid__mod_8F90.html#adb7d7d18410aaae52d7eee2e97f04b14", null ], + [ "rot_equid_cylind_b_grid_id_grib2", "ip__grid__mod_8F90.html#adbda63b51409aaed34a707b222da8c43", null ], [ "rot_equid_cylind_e_grid_id_grib1", "ip__grid__mod_8F90.html#a4e11ce780c3d165c282684188890af1c", null ], + [ "rot_equid_cylind_e_grid_id_grib2", "ip__grid__mod_8F90.html#a248f834201bea9295bbe6a99abd038f8", null ], [ "rot_equid_cylind_grid_id_grib2", "ip__grid__mod_8F90.html#adc7c650c524eb6425e77b2e0eac0979a", null ] ]; \ No newline at end of file diff --git a/ip__grid__mod_8F90_source.html b/ip__grid__mod_8F90_source.html index dea37bf3..7f842a2c 100644 --- a/ip__grid__mod_8F90_source.html +++ b/ip__grid__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -106,160 +106,179 @@
25  integer, public, parameter :: polar_stereo_grid_id_grib2 = 20
26  integer, public, parameter :: lambert_conf_grid_id_grib2 = 30
27  integer, public, parameter :: gaussian_grid_id_grib2 = 40
-
28 
-
29  private
-
30  public :: ip_grid
-
31  public :: gdswzd_interface
-
32  public :: operator(==)
-
33 
-
52  type, abstract :: ip_grid
-
53  class(ip_grid_descriptor), allocatable :: descriptor
-
54 
-
55  integer :: im
-
56  integer :: jm
-
57  integer :: nm
-
58 
-
63  integer :: nscan
-
64  integer :: kscan
-
65 
-
66  integer :: nscan_field_pos
-
67 
-
68  integer :: iwrap
-
69  integer :: jwrap1
-
70  integer :: jwrap2
-
71  real :: rerth
-
72  real :: eccen_squared
-
73  contains
-
75  procedure(init_grib1_interface), deferred :: init_grib1
-
77  procedure(init_grib2_interface), deferred :: init_grib2
-
79  procedure(gdswzd_interface), deferred :: gdswzd
-
82  procedure :: field_pos
-
84  generic :: init => init_grib1, init_grib2
-
85  end type ip_grid
-
86 
-
87  abstract interface
-
88 
-
119  subroutine gdswzd_interface(self, iopt, npts, fill, xpts, ypts, rlon, rlat, nret, crot, srot, &
-
120  xlon, xlat, ylon, ylat, area)
-
121  import
-
122  class(ip_grid), intent(in) :: self
-
123  INTEGER, INTENT(IN ) :: IOPT, NPTS
-
124  INTEGER, INTENT( OUT) :: NRET
-
125  !
-
126  REAL, INTENT(IN ) :: FILL
-
127  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
-
128  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
-
129  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
-
130  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
-
131  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
-
132  end subroutine gdswzd_interface
-
133 
-
142  subroutine init_grib1_interface(self, g1_desc)
-
143  import
-
144  class(ip_grid), intent(inout) :: self
-
145  type(grib1_descriptor), intent(in) :: g1_desc
-
146  end subroutine init_grib1_interface
-
147 
-
156  subroutine init_grib2_interface(self, g2_desc)
-
157  import
-
158  class(ip_grid), intent(inout) :: self
-
159  type(grib2_descriptor), intent(in) :: g2_desc
-
160  end subroutine init_grib2_interface
-
161 
-
162  end interface
-
163 
-
166  interface operator (==)
-
167  module procedure is_same_grid
-
168  end interface operator (==)
-
169 
-
170 
-
171 contains
-
172 
-
182  logical function is_same_grid(grid1, grid2)
-
183  class(ip_grid), intent(in) :: grid1, grid2
-
184  is_same_grid = grid1%descriptor == grid2%descriptor
-
185  end function is_same_grid
-
186 
-
197  function field_pos(self, i, j)
-
198  class(ip_grid), intent(in) :: self
-
199  integer, intent(in) :: i, j
-
200  integer :: field_pos
-
201 
-
202  integer :: ii, jj, im, jm
-
203  integer :: iif, jjf, is1, iwrap
-
204  integer :: jwrap1, jwrap2, kscan, nscan
-
205 
-
206  ! extract from navigation parameter array
-
207  im=self%im
-
208  jm=self%jm
-
209  iwrap=self%iwrap
-
210  jwrap1=self%jwrap1
-
211  jwrap2=self%jwrap2
-
212  nscan=self%nscan_field_pos
-
213  kscan=self%kscan
-
214 
-
215  ! compute wraparounds in x and y if necessary and possible
-
216  ii=i
-
217  jj=j
-
218  if(iwrap.gt.0) then
-
219  ii=mod(i-1+iwrap,iwrap)+1
-
220  if(j.lt.1.and.jwrap1.gt.0) then
-
221  jj=jwrap1-j
-
222  ii=mod(ii-1+iwrap/2,iwrap)+1
-
223  elseif(j.gt.jm.and.jwrap2.gt.0) then
-
224  jj=jwrap2-j
-
225  ii=mod(ii-1+iwrap/2,iwrap)+1
-
226  endif
-
227  endif
-
228 
-
229  ! compute position for the appropriate scanning mode
-
230  field_pos=0
-
231  if(nscan.eq.0) then
-
232  if(ii.ge.1.and.ii.le.im.and.jj.ge.1.and.jj.le.jm) field_pos=ii+(jj-1)*im
-
233  elseif(nscan.eq.1) then
-
234  if(ii.ge.1.and.ii.le.im.and.jj.ge.1.and.jj.le.jm) field_pos=jj+(ii-1)*jm
-
235  elseif(nscan.eq.2) then
-
236  is1=(jm+1-kscan)/2
-
237  iif=jj+(ii-is1)
-
238  jjf=jj-(ii-is1)+kscan
-
239  if(iif.ge.1.and.iif.le.2*im-1.and.jjf.ge.1.and.jjf.le.jm) &
-
240  field_pos=(iif+(jjf-1)*(2*im-1)+1-kscan)/2
-
241  elseif(nscan.eq.3) then
-
242  is1=(jm+1-kscan)/2
-
243  iif=jj+(ii-is1)
-
244  jjf=jj-(ii-is1)+kscan
-
245  if(iif.ge.1.and.iif.le.2*im-1.and.jjf.ge.1.and.jjf.le.jm) field_pos=(iif+1)/2+(jjf-1)*im
-
246  endif
-
247  end function field_pos
-
248 
-
249 
-
250 end module ip_grid_mod
-
251 
- - - +
28  integer, public, parameter :: rot_equid_cylind_e_grid_id_grib2 = 32768
+
29  integer, public, parameter :: rot_equid_cylind_b_grid_id_grib2 = 32769
+
30 
+
31  logical, public, save :: ncep_post_arakawa=.false.
+
32 
+
33  private
+
34  public :: ip_grid
+
35  public :: gdswzd_interface
+
36  public :: operator(==)
+
37  public :: use_ncep_post_arakawa
+
38  public :: unuse_ncep_post_arakawa
+
39 
+
58  type, abstract :: ip_grid
+
59  class(ip_grid_descriptor), allocatable :: descriptor
+
60 
+
61  integer :: im
+
62  integer :: jm
+
63  integer :: nm
+
64 
+
69  integer :: nscan
+
70  integer :: kscan
+
71 
+
72  integer :: nscan_field_pos
+
73 
+
74  integer :: iwrap
+
75  integer :: jwrap1
+
76  integer :: jwrap2
+
77  real :: rerth
+
78  real :: eccen_squared
+
79  contains
+
81  procedure(init_grib1_interface), deferred :: init_grib1
+
83  procedure(init_grib2_interface), deferred :: init_grib2
+
85  procedure(gdswzd_interface), deferred :: gdswzd
+
88  procedure :: field_pos
+
90  generic :: init => init_grib1, init_grib2
+
91  end type ip_grid
+
92 
+
93  abstract interface
+
94 
+
125  subroutine gdswzd_interface(self, iopt, npts, fill, xpts, ypts, rlon, rlat, nret, crot, srot, &
+
126  xlon, xlat, ylon, ylat, area)
+
127  import
+
128  class(ip_grid), intent(in) :: self
+
129  INTEGER, INTENT(IN ) :: IOPT, NPTS
+
130  INTEGER, INTENT( OUT) :: NRET
+
131  !
+
132  REAL, INTENT(IN ) :: FILL
+
133  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
+
134  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
+
135  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
+
136  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
+
137  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
+
138  end subroutine gdswzd_interface
+
139 
+
148  subroutine init_grib1_interface(self, g1_desc)
+
149  import
+
150  class(ip_grid), intent(inout) :: self
+
151  type(grib1_descriptor), intent(in) :: g1_desc
+
152  end subroutine init_grib1_interface
+
153 
+
162  subroutine init_grib2_interface(self, g2_desc)
+
163  import
+
164  class(ip_grid), intent(inout) :: self
+
165  type(grib2_descriptor), intent(in) :: g2_desc
+
166  end subroutine init_grib2_interface
+
167 
+
168  end interface
+
169 
+
172  interface operator (==)
+
173  module procedure is_same_grid
+
174  end interface operator (==)
+
175 
+
176 
+
177 contains
+
178 
+
185  subroutine use_ncep_post_arakawa() bind(c)
+
186  ncep_post_arakawa = .true.
+
187  end subroutine use_ncep_post_arakawa
+
188 
+
195  subroutine unuse_ncep_post_arakawa() bind(c)
+
196  ncep_post_arakawa = .false.
+
197  end subroutine unuse_ncep_post_arakawa
+
198 
+
208  logical function is_same_grid(grid1, grid2)
+
209  class(ip_grid), intent(in) :: grid1, grid2
+
210  is_same_grid = grid1%descriptor == grid2%descriptor
+
211  end function is_same_grid
+
212 
+
223  function field_pos(self, i, j)
+
224  class(ip_grid), intent(in) :: self
+
225  integer, intent(in) :: i, j
+
226  integer :: field_pos
+
227 
+
228  integer :: ii, jj, im, jm
+
229  integer :: iif, jjf, is1, iwrap
+
230  integer :: jwrap1, jwrap2, kscan, nscan
+
231 
+
232  ! extract from navigation parameter array
+
233  im=self%im
+
234  jm=self%jm
+
235  iwrap=self%iwrap
+
236  jwrap1=self%jwrap1
+
237  jwrap2=self%jwrap2
+
238  nscan=self%nscan_field_pos
+
239  kscan=self%kscan
+
240 
+
241  ! compute wraparounds in x and y if necessary and possible
+
242  ii=i
+
243  jj=j
+
244  if(iwrap.gt.0) then
+
245  ii=mod(i-1+iwrap,iwrap)+1
+
246  if(j.lt.1.and.jwrap1.gt.0) then
+
247  jj=jwrap1-j
+
248  ii=mod(ii-1+iwrap/2,iwrap)+1
+
249  elseif(j.gt.jm.and.jwrap2.gt.0) then
+
250  jj=jwrap2-j
+
251  ii=mod(ii-1+iwrap/2,iwrap)+1
+
252  endif
+
253  endif
+
254 
+
255  ! compute position for the appropriate scanning mode
+
256  field_pos=0
+
257  if(nscan.eq.0) then
+
258  if(ii.ge.1.and.ii.le.im.and.jj.ge.1.and.jj.le.jm) field_pos=ii+(jj-1)*im
+
259  elseif(nscan.eq.1) then
+
260  if(ii.ge.1.and.ii.le.im.and.jj.ge.1.and.jj.le.jm) field_pos=jj+(ii-1)*jm
+
261  elseif(nscan.eq.2) then
+
262  is1=(jm+1-kscan)/2
+
263  iif=jj+(ii-is1)
+
264  jjf=jj-(ii-is1)+kscan
+
265  if(iif.ge.1.and.iif.le.2*im-1.and.jjf.ge.1.and.jjf.le.jm) &
+
266  field_pos=(iif+(jjf-1)*(2*im-1)+1-kscan)/2
+
267  elseif(nscan.eq.3) then
+
268  is1=(jm+1-kscan)/2
+
269  iif=jj+(ii-is1)
+
270  jjf=jj-(ii-is1)+kscan
+
271  if(iif.ge.1.and.iif.le.2*im-1.and.jjf.ge.1.and.jjf.le.jm) field_pos=(iif+1)/2+(jjf-1)*im
+
272  endif
+
273  end function field_pos
+
274 
+
275 
+
276 end module ip_grid_mod
+
277 
+ + +
void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
gdswzd() interface for C for _4 build of library.
Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
logical function is_same_grid(grid1, grid2)
Test whether two grid descriptors are the same.
Abstract ip_grid type.
Definition: ip_grid_mod.F90:10
+
subroutine, public use_ncep_post_arakawa()
Enables ncep_post/wgrib2-compatible non-E Arakawa grib2 grids by setting 'ncep_post_arakawa=....
+
integer, parameter, public rot_equid_cylind_e_grid_id_grib2
Integer grid number for rotated equidistant cylindrical E-stagger grid (grib2)
Definition: ip_grid_mod.F90:28
integer, parameter, public lambert_conf_grid_id_grib2
Integer grid number for Lambert conformal grid in grib2.
Definition: ip_grid_mod.F90:26
integer, parameter, public gaussian_grid_id_grib2
Integer grid number for Gaussian grid in grib2.
Definition: ip_grid_mod.F90:27
integer, parameter, public equid_cylind_grid_id_grib2
Integer grid number for equidistant cylindrical grid in grib2.
Definition: ip_grid_mod.F90:22
integer, parameter, public gaussian_grid_id_grib1
Integer grid number for Gaussian grid in grib1.
Definition: ip_grid_mod.F90:17
integer, parameter, public rot_equid_cylind_e_grid_id_grib1
Integer grid number for rotated equidistant cylindrical E-stagger grid.
Definition: ip_grid_mod.F90:19
integer, parameter, public polar_stereo_grid_id_grib2
Integer grid number for polar stereo grid in grib2.
Definition: ip_grid_mod.F90:25
-
integer function field_pos(self, i, j)
Returns the field position for a given grid point.
+
integer function field_pos(self, i, j)
Returns the field position for a given grid point.
+
logical, save, public ncep_post_arakawa
Use ncep_post/wgrib2-compatible version of init_grib2() for non-E Arakawa grids (enable with use_ncep...
Definition: ip_grid_mod.F90:31
integer, parameter, public lambert_conf_grid_id_grib1
Integer grid number for Lambert Conformal grid in grib1.
Definition: ip_grid_mod.F90:16
integer, parameter, public mercator_grid_id_grib1
Integer grid number for Mercator grid in grib1.
Definition: ip_grid_mod.F90:15
+
subroutine, public unuse_ncep_post_arakawa()
Disables ncep_post/wgrib2-compatible non-E Arakawa grib2 grids by setting 'ncep_post_arakawa=....
integer, parameter, public equid_cylind_grid_id_grib1
Integer grid number for equidistant cylindrical grid in grib1.
Definition: ip_grid_mod.F90:14
integer, parameter, public rot_equid_cylind_b_grid_id_grib1
Integer grid number for rotated equidistant cylindrical B-stagger grid.
Definition: ip_grid_mod.F90:20
+
integer, parameter, public rot_equid_cylind_b_grid_id_grib2
Integer grid number for rotated equidistant cylindrical B-stagger grid (grib2)
Definition: ip_grid_mod.F90:29
integer, parameter, public rot_equid_cylind_grid_id_grib2
Integer grid number for rotated equidistant cylindrical grid in grib2.
Definition: ip_grid_mod.F90:23
integer, parameter, public mercator_grid_id_grib2
Integer grid number for Mercator grid in grib2.
Definition: ip_grid_mod.F90:24
integer, parameter, public polar_stereo_grid_id_grib1
Integer grid number for polar stereo grid in grib1.
Definition: ip_grid_mod.F90:18
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
Grib-2 descriptor containing a grib2 GDT represented by an integer array.
Abstract descriptor object which represents a grib1 or grib2 descriptor.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ip__grids__mod_8F90.html b/ip__grids__mod_8F90.html index 20a25509..d5b5603c 100644 --- a/ip__grids__mod_8F90.html +++ b/ip__grids__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__grids__mod_8F90_source.html b/ip__grids__mod_8F90_source.html index e8e383c2..eb67ee42 100644 --- a/ip__grids__mod_8F90_source.html +++ b/ip__grids__mod_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/ip__interpolators__mod_8F90.html b/ip__interpolators__mod_8F90.html index a9326ba1..b176ea20 100644 --- a/ip__interpolators__mod_8F90.html +++ b/ip__interpolators__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__interpolators__mod_8F90_source.html b/ip__interpolators__mod_8F90_source.html index 882b8e7a..0f1d0275 100644 --- a/ip__interpolators__mod_8F90_source.html +++ b/ip__interpolators__mod_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/ip__lambert__conf__grid__mod_8F90.html b/ip__lambert__conf__grid__mod_8F90.html index b7d56b5d..49e82109 100644 --- a/ip__lambert__conf__grid__mod_8F90.html +++ b/ip__lambert__conf__grid__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__lambert__conf__grid__mod_8F90_source.html b/ip__lambert__conf__grid__mod_8F90_source.html index 23a77258..acf6e46f 100644 --- a/ip__lambert__conf__grid__mod_8F90_source.html +++ b/ip__lambert__conf__grid__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -446,7 +446,7 @@
real dys
y-direction grid length adjusted for scan model.
subroutine init_grib2(self, g2_desc)
Initializes a Lambert Conformal grid given a grib2_descriptor object.
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ip__mercator__grid__mod_8F90.html b/ip__mercator__grid__mod_8F90.html index fc4c3548..9b6485d1 100644 --- a/ip__mercator__grid__mod_8F90.html +++ b/ip__mercator__grid__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__mercator__grid__mod_8F90_source.html b/ip__mercator__grid__mod_8F90_source.html index 5361015d..de3e1212 100644 --- a/ip__mercator__grid__mod_8F90_source.html +++ b/ip__mercator__grid__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -370,7 +370,7 @@
real rerth
Radius of the Earth.
subroutine mercator_vect_rot(CROT, SROT)
Vector rotation fields for mercator cylindrical grids.
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ip__mod_8F90.html b/ip__mod_8F90.html index 77e5dbb1..d289c2ea 100644 --- a/ip__mod_8F90.html +++ b/ip__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__mod_8F90_source.html b/ip__mod_8F90_source.html index 68c62ad5..4218db9d 100644 --- a/ip__mod_8F90_source.html +++ b/ip__mod_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/ip__polar__stereo__grid__mod_8F90.html b/ip__polar__stereo__grid__mod_8F90.html index 6c35c045..9d002aad 100644 --- a/ip__polar__stereo__grid__mod_8F90.html +++ b/ip__polar__stereo__grid__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__polar__stereo__grid__mod_8F90_source.html b/ip__polar__stereo__grid__mod_8F90_source.html index c62463e7..99fbc360 100644 --- a/ip__polar__stereo__grid__mod_8F90_source.html +++ b/ip__polar__stereo__grid__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -542,7 +542,7 @@
subroutine gdswzd_polar_stereo(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
GDS wizard for polar stereographic azimuthal.
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ip__rot__equid__cylind__egrid__mod_8F90.html b/ip__rot__equid__cylind__egrid__mod_8F90.html index 5d8eb36a..36d36f55 100644 --- a/ip__rot__equid__cylind__egrid__mod_8F90.html +++ b/ip__rot__equid__cylind__egrid__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__rot__equid__cylind__egrid__mod_8F90_source.html b/ip__rot__equid__cylind__egrid__mod_8F90_source.html index 045c45d1..2be3d5bb 100644 --- a/ip__rot__equid__cylind__egrid__mod_8F90_source.html +++ b/ip__rot__equid__cylind__egrid__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -573,7 +573,7 @@
real(kind=kd) dlons
Local copy of dlons.
subroutine init_grib2(self, g2_desc)
Initializes a rotated equidistant cylindrical grid given a grib2_descriptor object.
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ip__rot__equid__cylind__grid__mod_8F90.html b/ip__rot__equid__cylind__grid__mod_8F90.html index 4efa87b7..5d1349eb 100644 --- a/ip__rot__equid__cylind__grid__mod_8F90.html +++ b/ip__rot__equid__cylind__grid__mod_8F90.html @@ -26,7 +26,7 @@ @@ -119,6 +119,12 @@ + + + + + + diff --git a/ip__rot__equid__cylind__grid__mod_8F90.js b/ip__rot__equid__cylind__grid__mod_8F90.js index e383063c..560c3a93 100644 --- a/ip__rot__equid__cylind__grid__mod_8F90.js +++ b/ip__rot__equid__cylind__grid__mod_8F90.js @@ -4,6 +4,8 @@ var ip__rot__equid__cylind__grid__mod_8F90 = [ "gdswzd_rot_equid_cylind", "ip__rot__equid__cylind__grid__mod_8F90.html#a55c153201e15205d3f75e4ffb717cc0b", null ], [ "init_grib1", "ip__rot__equid__cylind__grid__mod_8F90.html#acb27dfdc6f03dea897d509910365afee", null ], [ "init_grib2", "ip__rot__equid__cylind__grid__mod_8F90.html#add3c6c1dad5748b452d291df6619867d", null ], + [ "init_grib2_default", "ip__rot__equid__cylind__grid__mod_8F90.html#a9ade5de892a935c3b62c1860b719ce74", null ], + [ "init_grib2_ncep_post", "ip__rot__equid__cylind__grid__mod_8F90.html#a74abf723e815f9ff196e6d0174fd449b", null ], [ "rot_equid_cylind_error", "ip__rot__equid__cylind__grid__mod_8F90.html#a1cc09c83f9a3815d8c5f8ed2f239f53f", null ], [ "rot_equid_cylind_grid_area", "ip__rot__equid__cylind__grid__mod_8F90.html#ad8f1133eb6809705c15337134eafe9fd", null ], [ "rot_equid_cylind_map_jacob", "ip__rot__equid__cylind__grid__mod_8F90.html#a985f1dc1a20444cef706d4bb20e0841b", null ], diff --git a/ip__rot__equid__cylind__grid__mod_8F90_source.html b/ip__rot__equid__cylind__grid__mod_8F90_source.html index 4c8ecec8..efa50e96 100644 --- a/ip__rot__equid__cylind__grid__mod_8F90_source.html +++ b/ip__rot__equid__cylind__grid__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -185,343 +185,431 @@
129 
130  end subroutine init_grib1
131 
-
139  subroutine init_grib2(self, g2_desc)
-
140  class(ip_rot_equid_cylind_grid), intent(inout) :: self
-
141  type(grib2_descriptor), intent(in) :: g2_desc
-
142 
-
143  real(kd) :: rlat1, rlon1, rlat0, rlat2, rlon2, nbd, ebd
-
144  integer :: iscale
-
145  integer :: i_offset_odd, i_offset_even, j_offset
-
146 
-
147  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
-
148 
-
149  CALL earth_radius(igdtmpl,igdtlen,self%rerth,self%eccen_squared)
-
150 
-
151  i_offset_odd=mod(igdtmpl(19)/8,2)
-
152  i_offset_even=mod(igdtmpl(19)/4,2)
-
153  j_offset=mod(igdtmpl(19)/2,2)
-
154 
-
155  iscale=igdtmpl(10)*igdtmpl(11)
-
156  IF(iscale==0) iscale=10**6
-
157 
-
158  rlat1=float(igdtmpl(12))/float(iscale)
-
159  rlon1=float(igdtmpl(13))/float(iscale)
-
160  rlat0=float(igdtmpl(20))/float(iscale)
-
161  rlat0=rlat0+90.0_kd
-
162 
-
163  self%RLON0=float(igdtmpl(21))/float(iscale)
-
164 
-
165  rlat2=float(igdtmpl(15))/float(iscale)
-
166  rlon2=float(igdtmpl(16))/float(iscale)
+
140  subroutine init_grib2(self, g2_desc)
+
141  class(ip_rot_equid_cylind_grid), intent(inout) :: self
+
142  type(grib2_descriptor), intent(in) :: g2_desc
+
143 
+
144  if (ncep_post_arakawa.and.(g2_desc%gdt_num.eq.32769)) then
+
145  call init_grib2_ncep_post(self, g2_desc)
+
146  else
+
147  call init_grib2_default(self, g2_desc)
+
148  endif
+
149 
+
150  end subroutine init_grib2
+
151 
+
160  subroutine init_grib2_default(self, g2_desc)
+
161  class(ip_rot_equid_cylind_grid), intent(inout) :: self
+
162  type(grib2_descriptor), intent(in) :: g2_desc
+
163 
+
164  real(kd) :: rlat1, rlon1, rlat0, rlat2, rlon2, nbd, ebd
+
165  integer :: iscale
+
166  integer :: i_offset_odd, i_offset_even, j_offset
167 
-
168  self%IROT=mod(igdtmpl(14)/8,2)
-
169  self%IM=igdtmpl(8)
-
170  self%JM=igdtmpl(9)
+
168  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
+
169 
+
170  CALL earth_radius(igdtmpl,igdtlen,self%rerth,self%eccen_squared)
171 
-
172  self%SLAT0=sin(rlat0/dpr)
-
173  self%CLAT0=cos(rlat0/dpr)
-
174 
-
175  self%WBD=rlon1
-
176  IF (self%WBD > 180.0) self%WBD = self%WBD - 360.0
-
177  self%SBD=rlat1
+
172  i_offset_odd=mod(igdtmpl(19)/8,2)
+
173  i_offset_even=mod(igdtmpl(19)/4,2)
+
174  j_offset=mod(igdtmpl(19)/2,2)
+
175 
+
176  iscale=igdtmpl(10)*igdtmpl(11)
+
177  IF(iscale==0) iscale=10**6
178 
-
179  nbd=rlat2
-
180  ebd=rlon2
-
181 
-
182  self%DLATS=(nbd-self%SBD)/float(self%JM-1)
-
183  self%DLONS=(ebd-self%WBD)/float(self%IM-1)
-
184 
-
185  IF(i_offset_odd==1) self%WBD=self%WBD+(0.5_kd*self%DLONS)
-
186  IF(j_offset==1) self%SBD=self%SBD+(0.5_kd*self%DLATS)
-
187 
-
188  self%iwrap = 0
-
189  self%jwrap1 = 0
-
190  self%jwrap2 = 0
-
191  self%kscan = 0
-
192  self%nscan = mod(igdtmpl(19) / 32, 2)
-
193  self%nscan_field_pos = self%nscan
-
194  end associate
-
195  end subroutine init_grib2
-
196 
-
256  SUBROUTINE gdswzd_rot_equid_cylind(self,IOPT,NPTS, &
-
257  FILL,XPTS,YPTS,RLON,RLAT,NRET, &
-
258  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
-
259  IMPLICIT NONE
-
260 
-
261  class(ip_rot_equid_cylind_grid), intent(in) :: self
-
262  INTEGER, INTENT(IN ) :: IOPT, NPTS
-
263  INTEGER, INTENT( OUT) :: NRET
-
264  !
-
265  REAL, INTENT(IN ) :: FILL
-
266  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
-
267  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
-
268  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
-
269  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
-
270  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
-
271  !
-
272  INTEGER :: IM,JM,N
-
273  !
-
274  LOGICAL :: LROT, LMAP, LAREA
-
275  !
-
276  REAL(KIND=kd) :: hs
-
277  REAL(KIND=kd) :: clonr,clatr,slatr
-
278  REAL(KIND=kd) :: clat,slat,clon
-
279  REAL(KIND=kd) :: rlatr,rlonr
-
280  REAL(KIND=kd) :: wbd,sbd
-
281  REAL :: XMIN,XMAX,YMIN,YMAX
-
282  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
283  IF(PRESENT(crot)) crot=fill
-
284  IF(PRESENT(srot)) srot=fill
-
285  IF(PRESENT(xlon)) xlon=fill
-
286  IF(PRESENT(xlat)) xlat=fill
-
287  IF(PRESENT(ylon)) ylon=fill
-
288  IF(PRESENT(ylat)) ylat=fill
-
289  IF(PRESENT(area)) area=fill
-
290  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
291  ! IS THE EARTH RADIUS DEFINED?
-
292  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
293  ! IS THIS AN "E"-STAGGER GRID? ROUTINE CAN'T PROCESS THOSE.
-
294  ! I_OFFSET_ODD=MOD(IGDTMPL(19)/8,2)
-
295  ! I_OFFSET_EVEN=MOD(IGDTMPL(19)/4,2)
-
296  ! J_OFFSET=MOD(IGDTMPL(19)/2,2)
-
297  ! IF(I_OFFSET_ODD/=I_OFFSET_EVEN) THEN
-
298  ! CALL ROT_EQUID_CYLIND_ERROR(IOPT,FILL,RLAT,RLON,XPTS,YPTS,NPTS)
-
299  ! RETURN
-
300  ! ENDIF
-
301  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
179  rlat1=float(igdtmpl(12))/float(iscale)
+
180  rlon1=float(igdtmpl(13))/float(iscale)
+
181  rlat0=float(igdtmpl(20))/float(iscale)
+
182  rlat0=rlat0+90.0_kd
+
183 
+
184  self%RLON0=float(igdtmpl(21))/float(iscale)
+
185 
+
186  rlat2=float(igdtmpl(15))/float(iscale)
+
187  rlon2=float(igdtmpl(16))/float(iscale)
+
188 
+
189  self%IROT=mod(igdtmpl(14)/8,2)
+
190  self%IM=igdtmpl(8)
+
191  self%JM=igdtmpl(9)
+
192 
+
193  self%SLAT0=sin(rlat0/dpr)
+
194  self%CLAT0=cos(rlat0/dpr)
+
195 
+
196  self%WBD=rlon1
+
197  IF (self%WBD > 180.0) self%WBD = self%WBD - 360.0
+
198  self%SBD=rlat1
+
199 
+
200  nbd=rlat2
+
201  ebd=rlon2
+
202 
+
203  self%DLATS=(nbd-self%SBD)/float(self%JM-1)
+
204  self%DLONS=(ebd-self%WBD)/float(self%IM-1)
+
205 
+
206  IF(i_offset_odd==1) self%WBD=self%WBD+(0.5_kd*self%DLONS)
+
207  IF(j_offset==1) self%SBD=self%SBD+(0.5_kd*self%DLATS)
+
208 
+
209  self%iwrap = 0
+
210  self%jwrap1 = 0
+
211  self%jwrap2 = 0
+
212  self%kscan = 0
+
213  self%nscan = mod(igdtmpl(19) / 32, 2)
+
214  self%nscan_field_pos = self%nscan
+
215  end associate
+
216  end subroutine init_grib2_default
+
217 
+
227  subroutine init_grib2_ncep_post(self, g2_desc)
+
228  class(ip_rot_equid_cylind_grid), intent(inout) :: self
+
229  type(grib2_descriptor), intent(in) :: g2_desc
+
230 
+
231  real(kd) :: rlat1, rlon1, rlat0, rlat2, rlon2, nbd, ebd
+
232  integer :: iscale
+
233  integer :: i_offset_odd, i_offset_even, j_offset
+
234  real(kd) :: hs, hs2, slat1, slat2, slatr, clon1, clon2, clat1, clat2, clatr, clonr, rlonr, rlatr
+
235 
+
236  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
+
237 
+
238  CALL earth_radius(igdtmpl,igdtlen,self%rerth,self%eccen_squared)
+
239 
+
240  i_offset_odd=mod(igdtmpl(19)/8,2)
+
241  i_offset_even=mod(igdtmpl(19)/4,2)
+
242  j_offset=mod(igdtmpl(19)/2,2)
+
243 
+
244  iscale=igdtmpl(10)*igdtmpl(11)
+
245  IF(iscale==0) iscale=10**6
+
246 
+
247  rlat1=float(igdtmpl(12))/float(iscale)
+
248  rlon1=float(igdtmpl(13))/float(iscale)
+
249  rlat0=float(igdtmpl(15))/float(iscale)
+
250 
+
251  self%RLON0=float(igdtmpl(16))/float(iscale)
+
252 
+
253  rlat2=float(igdtmpl(20))/float(iscale)
+
254  rlon2=float(igdtmpl(21))/float(iscale)
+
255 
+
256  self%IROT=mod(igdtmpl(14)/8,2)
+
257  self%IM=igdtmpl(8)
+
258  self%JM=igdtmpl(9)
+
259 
+
260  slat1=sin(rlat1/dpr)
+
261  clat1=cos(rlat1/dpr)
+
262 
+
263  self%SLAT0=sin(rlat0/dpr)
+
264  self%CLAT0=cos(rlat0/dpr)
+
265 
+
266  hs=sign(1._kd,mod(rlon1-self%RLON0+180+3600,360._kd)-180)
+
267 
+
268  clon1=cos((rlon1-self%RLON0)/dpr)
+
269  slatr=self%CLAT0*slat1-self%SLAT0*clat1*clon1
+
270  clatr=sqrt(1-slatr**2)
+
271  clonr=(self%CLAT0*clat1*clon1+self%SLAT0*slat1)/clatr
+
272  rlatr=dpr*asin(slatr)
+
273  rlonr=hs*dpr*acos(clonr)
+
274 
+
275  self%WBD=rlonr
+
276  IF (self%WBD > 180.0) self%WBD = self%WBD - 360.0
+
277  self%SBD=rlatr
+
278 
+
279  slat2=sin(rlat2/dpr)
+
280  clat2=cos(rlat2/dpr)
+
281  hs2=sign(1._kd,mod(rlon2-self%RLON0+180+3600,360._kd)-180)
+
282  clon2=cos((rlon2-self%RLON0)/dpr)
+
283  slatr=self%CLAT0*slat2-self%SLAT0*clat2*clon2
+
284  clatr=sqrt(1-slatr**2)
+
285  clonr=(self%CLAT0*clat2*clon2+self%SLAT0*slat2)/clatr
+
286  nbd=dpr*asin(slatr)
+
287  ebd=hs2*dpr*acos(clonr)
+
288  self%DLATS=(nbd-self%SBD)/float(self%JM-1)
+
289  self%DLONS=(ebd-self%WBD)/float(self%IM-1)
+
290 
+
291  IF(i_offset_odd==1) self%WBD=self%WBD+(0.5_kd*self%DLONS)
+
292  IF(j_offset==1) self%SBD=self%SBD+(0.5_kd*self%DLATS)
+
293 
+
294  self%iwrap = 0
+
295  self%jwrap1 = 0
+
296  self%jwrap2 = 0
+
297  self%kscan = 0
+
298  self%nscan = mod(igdtmpl(19) / 32, 2)
+
299  self%nscan_field_pos = self%nscan
+
300  end associate
+
301  end subroutine init_grib2_ncep_post
302 
-
303 
-
304  rlon0=self%rlon0
-
305  irot=self%irot
-
306 
-
307  im=self%im
-
308  jm=self%jm
-
309 
-
310  slat0=self%slat0
-
311  clat0=self%clat0
-
312 
-
313  wbd=self%wbd
-
314  sbd=self%sbd
-
315 
-
316  dlats=self%dlats
-
317  dlons=self%dlons
-
318 
-
319  xmin=0
-
320  xmax=im+1
-
321  ymin=0
-
322  ymax=jm+1
-
323  nret=0
-
324 
-
325  rerth = self%rerth
-
326  IF(rerth<0.)THEN
-
327  CALL rot_equid_cylind_error(iopt,fill,rlat,rlon,xpts,ypts,npts)
-
328  RETURN
-
329  ENDIF
-
330 
-
331  IF(PRESENT(crot).AND.PRESENT(srot))THEN
-
332  lrot=.true.
-
333  ELSE
-
334  lrot=.false.
-
335  ENDIF
-
336  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
-
337  lmap=.true.
-
338  ELSE
-
339  lmap=.false.
-
340  ENDIF
-
341  IF(PRESENT(area))THEN
-
342  larea=.true.
-
343  ELSE
-
344  larea=.false.
-
345  ENDIF
-
346  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
347  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
-
348  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
-
349  !$OMP PARALLEL DO PRIVATE(N,RLONR,RLATR,HS,CLONR,SLATR,CLATR,SLAT,CLAT,CLON) &
-
350  !$OMP& REDUCTION(+:NRET) SCHEDULE(STATIC)
-
351  DO n=1,npts
-
352  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
-
353  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
-
354  rlonr=wbd+(xpts(n)-1._kd)*dlons
-
355  rlatr=sbd+(ypts(n)-1._kd)*dlats
-
356  IF(rlonr <= 0._kd) THEN
-
357  hs=-1.0_kd
-
358  ELSE
-
359  hs=1.0_kd
-
360  ENDIF
-
361  clonr=cos(rlonr/dpr)
-
362  slatr=sin(rlatr/dpr)
-
363  clatr=cos(rlatr/dpr)
-
364  slat=clat0*slatr+slat0*clatr*clonr
-
365  IF(slat.LE.-1) THEN
-
366  clat=0.
-
367  clon=cos(rlon0/dpr)
-
368  rlon(n)=0.
-
369  rlat(n)=-90.
-
370  ELSEIF(slat.GE.1) THEN
-
371  clat=0.
-
372  clon=cos(rlon0/dpr)
-
373  rlon(n)=0.
-
374  rlat(n)=90.
-
375  ELSE
-
376  clat=sqrt(1-slat**2)
-
377  clon=(clat0*clatr*clonr-slat0*slatr)/clat
-
378  clon=min(max(clon,-1._kd),1._kd)
-
379  rlon(n)=real(mod(rlon0+hs*dpr*acos(clon)+3600,360._kd))
-
380  rlat(n)=real(dpr*asin(slat))
-
381  ENDIF
-
382  nret=nret+1
-
383  IF(lrot) CALL rot_equid_cylind_vect_rot(rlon(n), clatr, slatr, &
-
384  clat, slat, clon, crot(n), srot(n))
-
385  IF(lmap) CALL rot_equid_cylind_map_jacob(fill, rlon(n), clatr, &
-
386  clat, slat, clon, xlon(n), xlat(n), ylon(n), ylat(n))
-
387  IF(larea) CALL rot_equid_cylind_grid_area(clatr, fill, area(n))
-
388  ELSE
-
389  rlon(n)=fill
-
390  rlat(n)=fill
-
391  ENDIF
-
392  ENDDO
-
393  !$OMP END PARALLEL DO
-
394  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
395  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
-
396  ELSEIF(iopt.EQ.-1) THEN
-
397  !$OMP PARALLEL DO PRIVATE(N,HS,CLON,SLAT,CLAT,SLATR,CLATR,CLONR,RLONR,RLATR) &
-
398  !$OMP& REDUCTION(+:NRET) SCHEDULE(STATIC)
-
399  DO n=1,npts
-
400  IF(abs(rlon(n)).LE.360.AND.abs(rlat(n)).LE.90) THEN
-
401  hs=sign(1._kd,mod(rlon(n)-rlon0+180+3600,360._kd)-180)
-
402  clon=cos((rlon(n)-rlon0)/dpr)
-
403  slat=sin(rlat(n)/dpr)
-
404  clat=cos(rlat(n)/dpr)
-
405  slatr=clat0*slat-slat0*clat*clon
-
406  IF(slatr.LE.-1) THEN
-
407  clatr=0._kd
-
408  rlonr=0.
-
409  rlatr=-90.
-
410  ELSEIF(slatr.GE.1) THEN
-
411  clatr=0._kd
-
412  rlonr=0.
-
413  rlatr=90.
-
414  ELSE
-
415  clatr=sqrt(1-slatr**2)
-
416  clonr=(clat0*clat*clon+slat0*slat)/clatr
-
417  clonr=min(max(clonr,-1._kd),1._kd)
-
418  rlonr=hs*dpr*acos(clonr)
-
419  rlatr=dpr*asin(slatr)
-
420  ENDIF
-
421  xpts(n)=real((rlonr-wbd)/dlons+1._kd)
-
422  ypts(n)=real((rlatr-sbd)/dlats+1._kd)
-
423  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
-
424  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
-
425  nret=nret+1
-
426  IF(lrot) CALL rot_equid_cylind_vect_rot(rlon(n), clatr, slatr, &
-
427  clat, slat, clon, crot(n), srot(n))
-
428  IF(lmap) CALL rot_equid_cylind_map_jacob(fill, rlon(n), clatr, &
-
429  clat, slat, clon, xlon(n), xlat(n), ylon(n), ylat(n))
-
430  IF(larea) CALL rot_equid_cylind_grid_area(clatr, fill, area(n))
-
431  ELSE
-
432  xpts(n)=fill
-
433  ypts(n)=fill
-
434  ENDIF
-
435  ELSE
-
436  xpts(n)=fill
-
437  ypts(n)=fill
-
438  ENDIF
-
439  ENDDO
-
440  !$OMP END PARALLEL DO
+
362  SUBROUTINE gdswzd_rot_equid_cylind(self,IOPT,NPTS, &
+
363  FILL,XPTS,YPTS,RLON,RLAT,NRET, &
+
364  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
+
365  IMPLICIT NONE
+
366 
+
367  class(ip_rot_equid_cylind_grid), intent(in) :: self
+
368  INTEGER, INTENT(IN ) :: IOPT, NPTS
+
369  INTEGER, INTENT( OUT) :: NRET
+
370  !
+
371  REAL, INTENT(IN ) :: FILL
+
372  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
+
373  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
+
374  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
+
375  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
+
376  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
+
377  !
+
378  INTEGER :: IM,JM,N
+
379  !
+
380  LOGICAL :: LROT, LMAP, LAREA
+
381  !
+
382  REAL(KIND=kd) :: hs
+
383  REAL(KIND=kd) :: clonr,clatr,slatr
+
384  REAL(KIND=kd) :: clat,slat,clon
+
385  REAL(KIND=kd) :: rlatr,rlonr
+
386  REAL(KIND=kd) :: wbd,sbd
+
387  REAL :: XMIN,XMAX,YMIN,YMAX
+
388  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
389  IF(PRESENT(crot)) crot=fill
+
390  IF(PRESENT(srot)) srot=fill
+
391  IF(PRESENT(xlon)) xlon=fill
+
392  IF(PRESENT(xlat)) xlat=fill
+
393  IF(PRESENT(ylon)) ylon=fill
+
394  IF(PRESENT(ylat)) ylat=fill
+
395  IF(PRESENT(area)) area=fill
+
396  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
397  ! IS THE EARTH RADIUS DEFINED?
+
398  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
399  ! IS THIS AN "E"-STAGGER GRID? ROUTINE CAN'T PROCESS THOSE.
+
400  ! I_OFFSET_ODD=MOD(IGDTMPL(19)/8,2)
+
401  ! I_OFFSET_EVEN=MOD(IGDTMPL(19)/4,2)
+
402  ! J_OFFSET=MOD(IGDTMPL(19)/2,2)
+
403  ! IF(I_OFFSET_ODD/=I_OFFSET_EVEN) THEN
+
404  ! CALL ROT_EQUID_CYLIND_ERROR(IOPT,FILL,RLAT,RLON,XPTS,YPTS,NPTS)
+
405  ! RETURN
+
406  ! ENDIF
+
407  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
408 
+
409 
+
410  rlon0=self%rlon0
+
411  irot=self%irot
+
412 
+
413  im=self%im
+
414  jm=self%jm
+
415 
+
416  slat0=self%slat0
+
417  clat0=self%clat0
+
418 
+
419  wbd=self%wbd
+
420  sbd=self%sbd
+
421 
+
422  dlats=self%dlats
+
423  dlons=self%dlons
+
424 
+
425  xmin=0
+
426  xmax=im+1
+
427  ymin=0
+
428  ymax=jm+1
+
429  nret=0
+
430 
+
431  rerth = self%rerth
+
432  IF(rerth<0.)THEN
+
433  CALL rot_equid_cylind_error(iopt,fill,rlat,rlon,xpts,ypts,npts)
+
434  RETURN
+
435  ENDIF
+
436 
+
437  IF(PRESENT(crot).AND.PRESENT(srot))THEN
+
438  lrot=.true.
+
439  ELSE
+
440  lrot=.false.
441  ENDIF
-
442  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
443  END SUBROUTINE gdswzd_rot_equid_cylind
-
444 
-
462  SUBROUTINE rot_equid_cylind_error(IOPT,FILL,RLAT,RLON,XPTS,YPTS,NPTS)
-
463  IMPLICIT NONE
-
464  !
-
465  INTEGER, INTENT(IN ) :: IOPT, NPTS
-
466  !
-
467  REAL, INTENT(IN ) :: FILL
-
468  REAL, INTENT( OUT) :: RLAT(NPTS),RLON(NPTS)
-
469  REAL, INTENT( OUT) :: XPTS(NPTS),YPTS(NPTS)
-
470  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
471  IF(iopt>=0) THEN
-
472  rlon=fill
-
473  rlat=fill
-
474  ENDIF
-
475  IF(iopt<=0) THEN
-
476  xpts=fill
-
477  ypts=fill
-
478  ENDIF
-
479  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
480  END SUBROUTINE rot_equid_cylind_error
-
481 
-
507  SUBROUTINE rot_equid_cylind_vect_rot(RLON, CLATR, SLATR, CLAT, SLAT, &
-
508  CLON, CROT, SROT)
-
509  IMPLICIT NONE
-
510 
-
511  REAL(KIND=kd), INTENT(IN ) :: clat, clatr, clon, slat, slatr
-
512  REAL , INTENT(IN ) :: RLON
-
513  REAL , INTENT( OUT) :: CROT, SROT
-
514 
-
515  REAL(KIND=kd) :: slon
-
516 
-
517  IF(irot.EQ.1) THEN
-
518  IF(clatr.LE.0._kd) THEN
-
519  crot=real(-sign(1._kd,slatr*slat0))
-
520  srot=0.
-
521  ELSE
-
522  slon=sin((rlon-rlon0)/dpr)
-
523  crot=real((clat0*clat+slat0*slat*clon)/clatr)
-
524  srot=real(slat0*slon/clatr)
-
525  ENDIF
-
526  ELSE
-
527  crot=1.
-
528  srot=0.
-
529  ENDIF
-
530 
-
531  END SUBROUTINE rot_equid_cylind_vect_rot
-
532 
-
558  SUBROUTINE rot_equid_cylind_map_jacob(FILL, RLON, CLATR, CLAT, &
-
559  SLAT, CLON, XLON, XLAT, YLON, YLAT)
-
560  IMPLICIT NONE
-
561 
-
562  REAL(KIND=kd), INTENT(IN ) :: clatr, clat, slat, clon
-
563  REAL , INTENT(IN ) :: FILL, RLON
-
564  REAL , INTENT( OUT) :: XLON, XLAT, YLON, YLAT
-
565 
-
566  REAL(KIND=kd) :: slon, term1, term2
-
567 
-
568  IF(clatr.LE.0._kd) THEN
-
569  xlon=fill
-
570  xlat=fill
-
571  ylon=fill
-
572  ylat=fill
-
573  ELSE
-
574  slon=sin((rlon-rlon0)/dpr)
-
575  term1=(clat0*clat+slat0*slat*clon)/clatr
-
576  term2=slat0*slon/clatr
-
577  xlon=real(term1*clat/(dlons*clatr))
-
578  xlat=real(-term2/(dlons*clatr))
-
579  ylon=real(term2*clat/dlats)
-
580  ylat=real(term1/dlats)
-
581  ENDIF
-
582 
-
583  END SUBROUTINE rot_equid_cylind_map_jacob
-
584 
-
603  SUBROUTINE rot_equid_cylind_grid_area(CLATR, FILL, AREA)
-
604  IMPLICIT NONE
-
605 
-
606  REAL(KIND=kd), INTENT(IN ) :: clatr
-
607  REAL, INTENT(IN ) :: FILL
-
608  REAL, INTENT( OUT) :: AREA
-
609 
-
610  IF(clatr.LE.0._kd) THEN
-
611  area=fill
-
612  ELSE
-
613  area=real(2._kd*(rerth**2)*clatr*(dlons/dpr)*sin(0.5_kd*dlats/dpr))
-
614  ENDIF
-
615 
-
616  END SUBROUTINE rot_equid_cylind_grid_area
-
617 
- -
619 
+
442  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
+
443  lmap=.true.
+
444  ELSE
+
445  lmap=.false.
+
446  ENDIF
+
447  IF(PRESENT(area))THEN
+
448  larea=.true.
+
449  ELSE
+
450  larea=.false.
+
451  ENDIF
+
452  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
453  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
+
454  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
+
455  !$OMP PARALLEL DO PRIVATE(N,RLONR,RLATR,HS,CLONR,SLATR,CLATR,SLAT,CLAT,CLON) &
+
456  !$OMP& REDUCTION(+:NRET) SCHEDULE(STATIC)
+
457  DO n=1,npts
+
458  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
+
459  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
+
460  rlonr=wbd+(xpts(n)-1._kd)*dlons
+
461  rlatr=sbd+(ypts(n)-1._kd)*dlats
+
462  IF(rlonr <= 0._kd) THEN
+
463  hs=-1.0_kd
+
464  ELSE
+
465  hs=1.0_kd
+
466  ENDIF
+
467  clonr=cos(rlonr/dpr)
+
468  slatr=sin(rlatr/dpr)
+
469  clatr=cos(rlatr/dpr)
+
470  slat=clat0*slatr+slat0*clatr*clonr
+
471  IF(slat.LE.-1) THEN
+
472  clat=0.
+
473  clon=cos(rlon0/dpr)
+
474  rlon(n)=0.
+
475  rlat(n)=-90.
+
476  ELSEIF(slat.GE.1) THEN
+
477  clat=0.
+
478  clon=cos(rlon0/dpr)
+
479  rlon(n)=0.
+
480  rlat(n)=90.
+
481  ELSE
+
482  clat=sqrt(1-slat**2)
+
483  clon=(clat0*clatr*clonr-slat0*slatr)/clat
+
484  clon=min(max(clon,-1._kd),1._kd)
+
485  rlon(n)=real(mod(rlon0+hs*dpr*acos(clon)+3600,360._kd))
+
486  rlat(n)=real(dpr*asin(slat))
+
487  ENDIF
+
488  nret=nret+1
+
489  IF(lrot) CALL rot_equid_cylind_vect_rot(rlon(n), clatr, slatr, &
+
490  clat, slat, clon, crot(n), srot(n))
+
491  IF(lmap) CALL rot_equid_cylind_map_jacob(fill, rlon(n), clatr, &
+
492  clat, slat, clon, xlon(n), xlat(n), ylon(n), ylat(n))
+
493  IF(larea) CALL rot_equid_cylind_grid_area(clatr, fill, area(n))
+
494  ELSE
+
495  rlon(n)=fill
+
496  rlat(n)=fill
+
497  ENDIF
+
498  ENDDO
+
499  !$OMP END PARALLEL DO
+
500  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
501  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
+
502  ELSEIF(iopt.EQ.-1) THEN
+
503  !$OMP PARALLEL DO PRIVATE(N,HS,CLON,SLAT,CLAT,SLATR,CLATR,CLONR,RLONR,RLATR) &
+
504  !$OMP& REDUCTION(+:NRET) SCHEDULE(STATIC)
+
505  DO n=1,npts
+
506  IF(abs(rlon(n)).LE.360.AND.abs(rlat(n)).LE.90) THEN
+
507  hs=sign(1._kd,mod(rlon(n)-rlon0+180+3600,360._kd)-180)
+
508  clon=cos((rlon(n)-rlon0)/dpr)
+
509  slat=sin(rlat(n)/dpr)
+
510  clat=cos(rlat(n)/dpr)
+
511  slatr=clat0*slat-slat0*clat*clon
+
512  IF(slatr.LE.-1) THEN
+
513  clatr=0._kd
+
514  rlonr=0.
+
515  rlatr=-90.
+
516  ELSEIF(slatr.GE.1) THEN
+
517  clatr=0._kd
+
518  rlonr=0.
+
519  rlatr=90.
+
520  ELSE
+
521  clatr=sqrt(1-slatr**2)
+
522  clonr=(clat0*clat*clon+slat0*slat)/clatr
+
523  clonr=min(max(clonr,-1._kd),1._kd)
+
524  rlonr=hs*dpr*acos(clonr)
+
525  rlatr=dpr*asin(slatr)
+
526  ENDIF
+
527  xpts(n)=real((rlonr-wbd)/dlons+1._kd)
+
528  ypts(n)=real((rlatr-sbd)/dlats+1._kd)
+
529  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
+
530  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
+
531  nret=nret+1
+
532  IF(lrot) CALL rot_equid_cylind_vect_rot(rlon(n), clatr, slatr, &
+
533  clat, slat, clon, crot(n), srot(n))
+
534  IF(lmap) CALL rot_equid_cylind_map_jacob(fill, rlon(n), clatr, &
+
535  clat, slat, clon, xlon(n), xlat(n), ylon(n), ylat(n))
+
536  IF(larea) CALL rot_equid_cylind_grid_area(clatr, fill, area(n))
+
537  ELSE
+
538  xpts(n)=fill
+
539  ypts(n)=fill
+
540  ENDIF
+
541  ELSE
+
542  xpts(n)=fill
+
543  ypts(n)=fill
+
544  ENDIF
+
545  ENDDO
+
546  !$OMP END PARALLEL DO
+
547  ENDIF
+
548  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
549  END SUBROUTINE gdswzd_rot_equid_cylind
+
550 
+
568  SUBROUTINE rot_equid_cylind_error(IOPT,FILL,RLAT,RLON,XPTS,YPTS,NPTS)
+
569  IMPLICIT NONE
+
570  !
+
571  INTEGER, INTENT(IN ) :: IOPT, NPTS
+
572  !
+
573  REAL, INTENT(IN ) :: FILL
+
574  REAL, INTENT( OUT) :: RLAT(NPTS),RLON(NPTS)
+
575  REAL, INTENT( OUT) :: XPTS(NPTS),YPTS(NPTS)
+
576  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
577  IF(iopt>=0) THEN
+
578  rlon=fill
+
579  rlat=fill
+
580  ENDIF
+
581  IF(iopt<=0) THEN
+
582  xpts=fill
+
583  ypts=fill
+
584  ENDIF
+
585  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
586  END SUBROUTINE rot_equid_cylind_error
+
587 
+
613  SUBROUTINE rot_equid_cylind_vect_rot(RLON, CLATR, SLATR, CLAT, SLAT, &
+
614  CLON, CROT, SROT)
+
615  IMPLICIT NONE
+
616 
+
617  REAL(KIND=kd), INTENT(IN ) :: clat, clatr, clon, slat, slatr
+
618  REAL , INTENT(IN ) :: RLON
+
619  REAL , INTENT( OUT) :: CROT, SROT
+
620 
+
621  REAL(KIND=kd) :: slon
+
622 
+
623  IF(irot.EQ.1) THEN
+
624  IF(clatr.LE.0._kd) THEN
+
625  crot=real(-sign(1._kd,slatr*slat0))
+
626  srot=0.
+
627  ELSE
+
628  slon=sin((rlon-rlon0)/dpr)
+
629  crot=real((clat0*clat+slat0*slat*clon)/clatr)
+
630  srot=real(slat0*slon/clatr)
+
631  ENDIF
+
632  ELSE
+
633  crot=1.
+
634  srot=0.
+
635  ENDIF
+
636 
+
637  END SUBROUTINE rot_equid_cylind_vect_rot
+
638 
+
664  SUBROUTINE rot_equid_cylind_map_jacob(FILL, RLON, CLATR, CLAT, &
+
665  SLAT, CLON, XLON, XLAT, YLON, YLAT)
+
666  IMPLICIT NONE
+
667 
+
668  REAL(KIND=kd), INTENT(IN ) :: clatr, clat, slat, clon
+
669  REAL , INTENT(IN ) :: FILL, RLON
+
670  REAL , INTENT( OUT) :: XLON, XLAT, YLON, YLAT
+
671 
+
672  REAL(KIND=kd) :: slon, term1, term2
+
673 
+
674  IF(clatr.LE.0._kd) THEN
+
675  xlon=fill
+
676  xlat=fill
+
677  ylon=fill
+
678  ylat=fill
+
679  ELSE
+
680  slon=sin((rlon-rlon0)/dpr)
+
681  term1=(clat0*clat+slat0*slat*clon)/clatr
+
682  term2=slat0*slon/clatr
+
683  xlon=real(term1*clat/(dlons*clatr))
+
684  xlat=real(-term2/(dlons*clatr))
+
685  ylon=real(term2*clat/dlats)
+
686  ylat=real(term1/dlats)
+
687  ENDIF
+
688 
+
689  END SUBROUTINE rot_equid_cylind_map_jacob
+
690 
+
709  SUBROUTINE rot_equid_cylind_grid_area(CLATR, FILL, AREA)
+
710  IMPLICIT NONE
+
711 
+
712  REAL(KIND=kd), INTENT(IN ) :: clatr
+
713  REAL, INTENT(IN ) :: FILL
+
714  REAL, INTENT( OUT) :: AREA
+
715 
+
716  IF(clatr.LE.0._kd) THEN
+
717  area=fill
+
718  ELSE
+
719  area=real(2._kd*(rerth**2)*clatr*(dlons/dpr)*sin(0.5_kd*dlats/dpr))
+
720  ENDIF
+
721 
+
722  END SUBROUTINE rot_equid_cylind_grid_area
+
723 
+ +
725 
void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
gdswzd() interface for C for _4 build of library.
Determine earth radius and shape.
Module containing common constants.
@@ -530,23 +618,25 @@
Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
Abstract ip_grid type.
Definition: ip_grid_mod.F90:10
Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A ...
-
subroutine rot_equid_cylind_error(IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS)
Error handler.
-
subroutine rot_equid_cylind_vect_rot(RLON, CLATR, SLATR, CLAT, SLAT, CLON, CROT, SROT)
Vector rotation fields for rotated equidistant cylindrical grids - non "e" stagger.
-
subroutine gdswzd_rot_equid_cylind(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
GDS wizard for rotated equidistant cylindrical.
+
subroutine rot_equid_cylind_error(IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS)
Error handler.
+
subroutine rot_equid_cylind_vect_rot(RLON, CLATR, SLATR, CLAT, SLAT, CLON, CROT, SROT)
Vector rotation fields for rotated equidistant cylindrical grids - non "e" stagger.
+
subroutine gdswzd_rot_equid_cylind(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
GDS wizard for rotated equidistant cylindrical.
real(kind=kd) rlon0
Local copy of rlon0.
real(kind=kd) slat0
Local copy of slat0.
-
subroutine rot_equid_cylind_map_jacob(FILL, RLON, CLATR, CLAT, SLAT, CLON, XLON, XLAT, YLON, YLAT)
Map jacobians for rotated equidistant cylindrical grids - non "e" stagger.
+
subroutine init_grib2_ncep_post(self, g2_desc)
Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object.
+
subroutine rot_equid_cylind_map_jacob(FILL, RLON, CLATR, CLAT, SLAT, CLON, XLON, XLAT, YLON, YLAT)
Map jacobians for rotated equidistant cylindrical grids - non "e" stagger.
+
subroutine init_grib2_default(self, g2_desc)
Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object.
real(kind=kd) dlons
Local copy of dlons.
real(kind=kd) dlats
Local copy of dlats.
subroutine init_grib1(self, g1_desc)
Initializes a Rotated equidistant cylindrical grid given a grib1_descriptor object.
-
subroutine rot_equid_cylind_grid_area(CLATR, FILL, AREA)
Grid box area for rotated equidistant cylindrical grids - non "e" stagger.
-
subroutine init_grib2(self, g2_desc)
Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object.
+
subroutine rot_equid_cylind_grid_area(CLATR, FILL, AREA)
Grid box area for rotated equidistant cylindrical grids - non "e" stagger.
+
subroutine init_grib2(self, g2_desc)
Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object.
real(kind=kd) rerth
Radius of the Earth.
integer, parameter kd
Fortran kind for reals.
real(kind=kd) clat0
Local copy of clat0.
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ip__station__points__grid__mod_8F90.html b/ip__station__points__grid__mod_8F90.html index ad12d23e..1d726aac 100644 --- a/ip__station__points__grid__mod_8F90.html +++ b/ip__station__points__grid__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/ip__station__points__grid__mod_8F90_source.html b/ip__station__points__grid__mod_8F90_source.html index ef0c2cbc..b695ff11 100644 --- a/ip__station__points__grid__mod_8F90_source.html +++ b/ip__station__points__grid__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -145,7 +145,7 @@
subroutine init_grib2(self, g2_desc)
Initializes an IP Station grid given a grib2_descriptor object.
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
Grib-2 descriptor containing a grib2 GDT represented by an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/iplib__4_8h.html b/iplib__4_8h.html index 58af23f7..47b03264 100644 --- a/iplib__4_8h.html +++ b/iplib__4_8h.html @@ -26,7 +26,7 @@ diff --git a/iplib__4_8h_source.html b/iplib__4_8h_source.html index 278145c0..18ff4d6b 100644 --- a/iplib__4_8h_source.html +++ b/iplib__4_8h_source.html @@ -26,7 +26,7 @@ diff --git a/iplib__8_8h.html b/iplib__8_8h.html index d14eee2d..19eb1340 100644 --- a/iplib__8_8h.html +++ b/iplib__8_8h.html @@ -26,7 +26,7 @@ diff --git a/iplib__8_8h_source.html b/iplib__8_8h_source.html index b4d07ab7..b1eae34a 100644 --- a/iplib__8_8h_source.html +++ b/iplib__8_8h_source.html @@ -26,7 +26,7 @@ diff --git a/iplib__d_8h.html b/iplib__d_8h.html index dc296043..492ec61c 100644 --- a/iplib__d_8h.html +++ b/iplib__d_8h.html @@ -26,7 +26,7 @@ diff --git a/iplib__d_8h_source.html b/iplib__d_8h_source.html index 3e38e29c..1f503f91 100644 --- a/iplib__d_8h_source.html +++ b/iplib__d_8h_source.html @@ -26,7 +26,7 @@ diff --git a/ipolates_8F90.html b/ipolates_8F90.html index 0f4ab20f..6eb0367c 100644 --- a/ipolates_8F90.html +++ b/ipolates_8F90.html @@ -26,7 +26,7 @@ diff --git a/ipolates_8F90_source.html b/ipolates_8F90_source.html index dd9bbc25..2338e98a 100644 --- a/ipolates_8F90_source.html +++ b/ipolates_8F90_source.html @@ -26,7 +26,7 @@ @@ -384,7 +384,7 @@
subroutine, public ipolates_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
Special case of ipolates_grib1 when interpolating a single field.
Definition: ipolates.F90:160
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
Grib-2 descriptor containing a grib2 GDT represented by an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ipolatev_8F90.html b/ipolatev_8F90.html index 094d9786..907e1784 100644 --- a/ipolatev_8F90.html +++ b/ipolatev_8F90.html @@ -26,7 +26,7 @@ diff --git a/ipolatev_8F90_source.html b/ipolatev_8F90_source.html index c61d1ac6..d0d61640 100644 --- a/ipolatev_8F90_source.html +++ b/ipolatev_8F90_source.html @@ -26,7 +26,7 @@ @@ -437,7 +437,7 @@
subroutine, public ipolatev_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
Special case of ipolatev_grib1 when interpolating a single field.
Definition: ipolatev.F90:682
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
Grib-2 descriptor containing a grib2 GDT represented by an integer array.
-
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:52
+
Abstract grid that holds fields and methods common to all grids.
Definition: ip_grid_mod.F90:58
diff --git a/ipxetas_8F90.html b/ipxetas_8F90.html index 300dab6a..23e41785 100644 --- a/ipxetas_8F90.html +++ b/ipxetas_8F90.html @@ -26,7 +26,7 @@ diff --git a/ipxetas_8F90_source.html b/ipxetas_8F90_source.html index b971c5b6..03db0b2d 100644 --- a/ipxetas_8F90_source.html +++ b/ipxetas_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/ipxwafs2_8F90.html b/ipxwafs2_8F90.html index e2a59b41..d42845f3 100644 --- a/ipxwafs2_8F90.html +++ b/ipxwafs2_8F90.html @@ -26,7 +26,7 @@ diff --git a/ipxwafs2_8F90_source.html b/ipxwafs2_8F90_source.html index 3dfa151a..49afe29e 100644 --- a/ipxwafs2_8F90_source.html +++ b/ipxwafs2_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/ipxwafs3_8F90.html b/ipxwafs3_8F90.html index ded1e329..be1e2ca7 100644 --- a/ipxwafs3_8F90.html +++ b/ipxwafs3_8F90.html @@ -26,7 +26,7 @@ diff --git a/ipxwafs3_8F90_source.html b/ipxwafs3_8F90_source.html index 87f85444..e8c66cef 100644 --- a/ipxwafs3_8F90_source.html +++ b/ipxwafs3_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/ipxwafs_8F90.html b/ipxwafs_8F90.html index bb470c0e..491f7c06 100644 --- a/ipxwafs_8F90.html +++ b/ipxwafs_8F90.html @@ -26,7 +26,7 @@ diff --git a/ipxwafs_8F90_source.html b/ipxwafs_8F90_source.html index 1cea1bcd..2c613b10 100644 --- a/ipxwafs_8F90_source.html +++ b/ipxwafs_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/menudata.js b/menudata.js index a7ca6073..ac5b6fd0 100644 --- a/menudata.js +++ b/menudata.js @@ -46,6 +46,7 @@ var menudata={children:[ {text:"p",url:"namespacemembers.html#index_p"}, {text:"r",url:"namespacemembers.html#index_r"}, {text:"s",url:"namespacemembers.html#index_s"}, +{text:"u",url:"namespacemembers.html#index_u"}, {text:"y",url:"namespacemembers.html#index_y"}]}, {text:"Functions/Subroutines",url:"namespacemembers_func.html",children:[ {text:"e",url:"namespacemembers_func.html#index_e"}, @@ -55,7 +56,8 @@ var menudata={children:[ {text:"l",url:"namespacemembers_func.html#index_l"}, {text:"m",url:"namespacemembers_func.html#index_m"}, {text:"p",url:"namespacemembers_func.html#index_p"}, -{text:"r",url:"namespacemembers_func.html#index_r"}]}, +{text:"r",url:"namespacemembers_func.html#index_r"}, +{text:"u",url:"namespacemembers_func.html#index_u"}]}, {text:"Variables",url:"namespacemembers_vars.html",children:[ {text:"a",url:"namespacemembers_vars.html#index_a"}, {text:"b",url:"namespacemembers_vars.html#index_b"}, @@ -122,7 +124,6 @@ var menudata={children:[ {text:"d",url:"globals.html#index_d"}, {text:"g",url:"globals.html#index_g"}, {text:"i",url:"globals.html#index_i"}, -{text:"l",url:"globals.html#index_l"}, {text:"m",url:"globals.html#index_m"}, {text:"n",url:"globals.html#index_n"}, {text:"r",url:"globals.html#index_r"}, @@ -132,7 +133,6 @@ var menudata={children:[ {text:"d",url:"globals_func.html#index_d"}, {text:"g",url:"globals_func.html#index_g"}, {text:"i",url:"globals_func.html#index_i"}, -{text:"l",url:"globals_func.html#index_l"}, {text:"m",url:"globals_func.html#index_m"}, {text:"n",url:"globals_func.html#index_n"}, {text:"r",url:"globals_func.html#index_r"}, diff --git a/movect_8F90.html b/movect_8F90.html index 3a2082cf..439bf301 100644 --- a/movect_8F90.html +++ b/movect_8F90.html @@ -26,7 +26,7 @@ @@ -159,7 +159,7 @@

+

Program History Log

Variables

integer, parameter, public ip_grid_mod::mercator_grid_id_grib2 = 10
 Integer grid number for Mercator grid in grib2. More...
 
logical, save, public ip_grid_mod::ncep_post_arakawa =.false.
 Use ncep_post/wgrib2-compatible version of init_grib2() for non-E Arakawa grids (enable with use_ncep_post_arakawa()) More...
 
integer, parameter, public ip_grid_mod::polar_stereo_grid_id_grib1 = 5
 Integer grid number for polar stereo grid in grib1. More...
 
integer, parameter, public ip_grid_mod::rot_equid_cylind_b_grid_id_grib1 = 205
 Integer grid number for rotated equidistant cylindrical B-stagger grid. More...
 
integer, parameter, public ip_grid_mod::rot_equid_cylind_b_grid_id_grib2 = 32769
 Integer grid number for rotated equidistant cylindrical B-stagger grid (grib2) More...
 
integer, parameter, public ip_grid_mod::rot_equid_cylind_e_grid_id_grib1 = 203
 Integer grid number for rotated equidistant cylindrical E-stagger grid. More...
 
integer, parameter, public ip_grid_mod::rot_equid_cylind_e_grid_id_grib2 = 32768
 Integer grid number for rotated equidistant cylindrical E-stagger grid (grib2) More...
 
integer, parameter, public ip_grid_mod::rot_equid_cylind_grid_id_grib2 = 1
 Integer grid number for rotated equidistant cylindrical grid in grib2. More...
 
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
subroutine ip_rot_equid_cylind_grid_mod::init_grib2 (self, g2_desc)
 Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object. More...
 
subroutine ip_rot_equid_cylind_grid_mod::init_grib2_default (self, g2_desc)
 Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object. More...
 
subroutine ip_rot_equid_cylind_grid_mod::init_grib2_ncep_post (self, g2_desc)
 Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object. More...
 
subroutine ip_rot_equid_cylind_grid_mod::rot_equid_cylind_error (IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS)
 Error handler. More...
 
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/movect_8F90_source.html b/movect_8F90_source.html index 2c97f142..05a48391 100644 --- a/movect_8F90_source.html +++ b/movect_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/namespacebicubic__interp__mod.html b/namespacebicubic__interp__mod.html index ce6b0c0b..d77fa1c8 100644 --- a/namespacebicubic__interp__mod.html +++ b/namespacebicubic__interp__mod.html @@ -26,7 +26,7 @@ diff --git a/namespacebilinear__interp__mod.html b/namespacebilinear__interp__mod.html index fffc133a..9bc7065d 100644 --- a/namespacebilinear__interp__mod.html +++ b/namespacebilinear__interp__mod.html @@ -26,7 +26,7 @@ diff --git a/namespacebudget__interp__mod.html b/namespacebudget__interp__mod.html index 476df923..1ee077a1 100644 --- a/namespacebudget__interp__mod.html +++ b/namespacebudget__interp__mod.html @@ -26,7 +26,7 @@ diff --git a/namespaceearth__radius__mod.html b/namespaceearth__radius__mod.html index b1bf98b5..b72f743f 100644 --- a/namespaceearth__radius__mod.html +++ b/namespaceearth__radius__mod.html @@ -26,7 +26,7 @@ @@ -166,7 +166,7 @@

Definition at line 40 of file earth_radius_mod.F90.

-

Referenced by spectral_interp_mod::polates4::polates4_grib2(), and spectral_interp_mod::polatev4::polatev4_grib2().

+

Referenced by spectral_interp_mod::polates4::polates4_grib2(), and spectral_interp_mod::polatev4::polatev4_grib2().

diff --git a/namespacegdswzd__c__mod.html b/namespacegdswzd__c__mod.html index 390ab7c6..7fff573a 100644 --- a/namespacegdswzd__c__mod.html +++ b/namespacegdswzd__c__mod.html @@ -26,7 +26,7 @@

diff --git a/namespacegdswzd__mod.html b/namespacegdswzd__mod.html index 575bbdfa..9d403096 100644 --- a/namespacegdswzd__mod.html +++ b/namespacegdswzd__mod.html @@ -26,7 +26,7 @@ diff --git a/namespaceip__constants__mod.html b/namespaceip__constants__mod.html index 79a4a28d..08afad38 100644 --- a/namespaceip__constants__mod.html +++ b/namespaceip__constants__mod.html @@ -26,7 +26,7 @@ diff --git a/namespaceip__equid__cylind__grid__mod.html b/namespaceip__equid__cylind__grid__mod.html index e6594ba1..c6f16d91 100644 --- a/namespaceip__equid__cylind__grid__mod.html +++ b/namespaceip__equid__cylind__grid__mod.html @@ -26,7 +26,7 @@ diff --git a/namespaceip__gaussian__grid__mod.html b/namespaceip__gaussian__grid__mod.html index e20fd909..887fa4a6 100644 --- a/namespaceip__gaussian__grid__mod.html +++ b/namespaceip__gaussian__grid__mod.html @@ -26,7 +26,7 @@ @@ -192,11 +192,11 @@

Author
Mark Iredell, George Gayno
Date
July 2021
-

Definition at line 416 of file ip_gaussian_grid_mod.F90.

+

Definition at line 417 of file ip_gaussian_grid_mod.F90.

-

References blat, dlon, j1, jh, and rerth.

+

References blat, dlon, j1, jh, and rerth.

-

Referenced by gdswzd_gaussian().

+

Referenced by gdswzd_gaussian().

@@ -266,11 +266,11 @@

Author
George Gayno
Date
July 2021
-

Definition at line 396 of file ip_gaussian_grid_mod.F90.

+

Definition at line 397 of file ip_gaussian_grid_mod.F90.

-

References dlon, and ylat_row.

+

References dlon, and ylat_row.

-

Referenced by gdswzd_gaussian().

+

Referenced by gdswzd_gaussian().

@@ -320,9 +320,9 @@

Author
George Gayno
Date
July 2021
-

Definition at line 376 of file ip_gaussian_grid_mod.F90.

+

Definition at line 377 of file ip_gaussian_grid_mod.F90.

-

Referenced by gdswzd_gaussian().

+

Referenced by gdswzd_gaussian().

@@ -478,9 +478,9 @@

Author
Mark Iredell, George Gayno, Kyle Gerheiser
Date
July 2021
-

Definition at line 194 of file ip_gaussian_grid_mod.F90.

+

Definition at line 195 of file ip_gaussian_grid_mod.F90.

-

References blat, dlon, gaussian_grid_area(), gaussian_map_jacob(), gaussian_vect_rot(), j1, jh, rerth, splat(), and ylat_row.

+

References blat, dlon, gaussian_grid_area(), gaussian_map_jacob(), gaussian_vect_rot(), j1, jh, rerth, splat(), and ylat_row.

@@ -529,7 +529,7 @@

Author
Kyle Gerheiser
Date
July 2021
-

Definition at line 59 of file ip_gaussian_grid_mod.F90.

+

Definition at line 60 of file ip_gaussian_grid_mod.F90.

@@ -578,7 +578,7 @@

Author
Kyle Gerheiser
Date
July 2021
-

Definition at line 108 of file ip_gaussian_grid_mod.F90.

+

Definition at line 109 of file ip_gaussian_grid_mod.F90.

@@ -605,9 +605,9 @@

Definition at line 45 of file ip_gaussian_grid_mod.F90.

+

Definition at line 46 of file ip_gaussian_grid_mod.F90.

-

Referenced by gaussian_grid_area(), and gdswzd_gaussian().

+

Referenced by gaussian_grid_area(), and gdswzd_gaussian().

@@ -634,9 +634,9 @@

GRIB2 Section 3, octets 64-67.

-

Definition at line 46 of file ip_gaussian_grid_mod.F90.

+

Definition at line 47 of file ip_gaussian_grid_mod.F90.

-

Referenced by gaussian_grid_area(), gaussian_map_jacob(), and gdswzd_gaussian().

+

Referenced by gaussian_grid_area(), gaussian_map_jacob(), and gdswzd_gaussian().

@@ -662,9 +662,9 @@

Definition at line 43 of file ip_gaussian_grid_mod.F90.

+

Definition at line 44 of file ip_gaussian_grid_mod.F90.

-

Referenced by gaussian_grid_area(), and gdswzd_gaussian().

+

Referenced by gaussian_grid_area(), and gdswzd_gaussian().

@@ -691,9 +691,9 @@

-

Definition at line 44 of file ip_gaussian_grid_mod.F90.

+

Definition at line 45 of file ip_gaussian_grid_mod.F90.

-

Referenced by gaussian_grid_area(), and gdswzd_gaussian().

+

Referenced by gaussian_grid_area(), and gdswzd_gaussian().

@@ -720,9 +720,9 @@

Definition at line 47 of file ip_gaussian_grid_mod.F90.

+

Definition at line 48 of file ip_gaussian_grid_mod.F90.

-

Referenced by gaussian_grid_area(), and gdswzd_gaussian().

+

Referenced by gaussian_grid_area(), and gdswzd_gaussian().

@@ -748,9 +748,9 @@

Definition at line 48 of file ip_gaussian_grid_mod.F90.

+

Definition at line 49 of file ip_gaussian_grid_mod.F90.

-

Referenced by gaussian_map_jacob(), and gdswzd_gaussian().

+

Referenced by gaussian_map_jacob(), and gdswzd_gaussian().

diff --git a/namespaceip__grid__descriptor__mod.html b/namespaceip__grid__descriptor__mod.html index a4b1eb04..82e74124 100644 --- a/namespaceip__grid__descriptor__mod.html +++ b/namespaceip__grid__descriptor__mod.html @@ -26,7 +26,7 @@

@@ -261,7 +261,7 @@

Definition at line 115 of file ip_grid_descriptor_mod.F90.

-

Referenced by ip_grid_descriptor_mod::operator(==)::is_same_grid(), and ip_grid_mod::operator(==)::is_same_grid().

+

Referenced by ip_grid_descriptor_mod::operator(==)::is_same_grid(), and ip_grid_mod::operator(==)::is_same_grid().

diff --git a/namespaceip__grid__factory__mod.html b/namespaceip__grid__factory__mod.html index 2e7a0f3f..aaa7e55f 100644 --- a/namespaceip__grid__factory__mod.html +++ b/namespaceip__grid__factory__mod.html @@ -26,7 +26,7 @@

@@ -266,7 +266,7 @@

Definition at line 89 of file ip_grid_factory_mod.F90.

-

References ip_grid_mod::equid_cylind_grid_id_grib2, ip_grid_mod::gaussian_grid_id_grib2, ip_grid_mod::lambert_conf_grid_id_grib2, ip_grid_mod::mercator_grid_id_grib2, ip_grid_mod::polar_stereo_grid_id_grib2, and ip_grid_mod::rot_equid_cylind_grid_id_grib2.

+

References ip_grid_mod::equid_cylind_grid_id_grib2, ip_grid_mod::gaussian_grid_id_grib2, ip_grid_mod::lambert_conf_grid_id_grib2, ip_grid_mod::mercator_grid_id_grib2, ip_grid_mod::polar_stereo_grid_id_grib2, ip_grid_mod::rot_equid_cylind_b_grid_id_grib2, ip_grid_mod::rot_equid_cylind_e_grid_id_grib2, and ip_grid_mod::rot_equid_cylind_grid_id_grib2.

Referenced by ip_grid_factory_mod::init_grid::init_grid_generic().

diff --git a/namespaceip__grid__mod.html b/namespaceip__grid__mod.html index a6e82a46..ae1efd3d 100644 --- a/namespaceip__grid__mod.html +++ b/namespaceip__grid__mod.html @@ -26,7 +26,7 @@

@@ -117,6 +117,12 @@ + + + + + +
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
NCEPLIBS-ip -  5.0.0 +  5.1.0
logical function is_same_grid (grid1, grid2)
 Compares two grids. More...
 
subroutine, public unuse_ncep_post_arakawa ()
 Disables ncep_post/wgrib2-compatible non-E Arakawa grib2 grids by setting 'ncep_post_arakawa=.false. More...
 
subroutine, public use_ncep_post_arakawa ()
 Enables ncep_post/wgrib2-compatible non-E Arakawa grib2 grids by setting 'ncep_post_arakawa=.true. More...
 
@@ -144,6 +150,9 @@ + + + @@ -153,9 +162,15 @@ + + + + + + @@ -218,7 +233,7 @@

Author
Mark Iredell, George Gayno, Kyle Gerheiser
Date
April 1996
-

Definition at line 197 of file ip_grid_mod.F90.

+

Definition at line 223 of file ip_grid_mod.F90.

@@ -268,7 +283,53 @@

Author
Kyle Gerheiser
Date
July 2021
-

Definition at line 182 of file ip_grid_mod.F90.

+

Definition at line 208 of file ip_grid_mod.F90.

+ + + + +

◆ unuse_ncep_post_arakawa()

+ +
+
+

Variables

integer, parameter, public mercator_grid_id_grib2 = 10
 Integer grid number for Mercator grid in grib2. More...
 
logical, save, public ncep_post_arakawa =.false.
 Use ncep_post/wgrib2-compatible version of init_grib2() for non-E Arakawa grids (enable with use_ncep_post_arakawa()) More...
 
integer, parameter, public polar_stereo_grid_id_grib1 = 5
 Integer grid number for polar stereo grid in grib1. More...
 
integer, parameter, public rot_equid_cylind_b_grid_id_grib1 = 205
 Integer grid number for rotated equidistant cylindrical B-stagger grid. More...
 
integer, parameter, public rot_equid_cylind_b_grid_id_grib2 = 32769
 Integer grid number for rotated equidistant cylindrical B-stagger grid (grib2) More...
 
integer, parameter, public rot_equid_cylind_e_grid_id_grib1 = 203
 Integer grid number for rotated equidistant cylindrical E-stagger grid. More...
 
integer, parameter, public rot_equid_cylind_e_grid_id_grib2 = 32768
 Integer grid number for rotated equidistant cylindrical E-stagger grid (grib2) More...
 
integer, parameter, public rot_equid_cylind_grid_id_grib2 = 1
 Integer grid number for rotated equidistant cylindrical grid in grib2. More...
 
+ + + +
subroutine, public ip_grid_mod::unuse_ncep_post_arakawa
+
+ +

Disables ncep_post/wgrib2-compatible non-E Arakawa grib2 grids by setting 'ncep_post_arakawa=.false.

+

'. This subroutine should be called prior to init_grib2().

+
Author
Alex Richert
+
Date
May 2024
+ +

Definition at line 195 of file ip_grid_mod.F90.

+ +

References ncep_post_arakawa.

+ +
+ + +

◆ use_ncep_post_arakawa()

+ +
+
+ + + + +
subroutine, public ip_grid_mod::use_ncep_post_arakawa
+
+ +

Enables ncep_post/wgrib2-compatible non-E Arakawa grib2 grids by setting 'ncep_post_arakawa=.true.

+

'. This subroutine should be called prior to init_grib2().

+
Author
Alex Richert
+
Date
May 2024
+ +

Definition at line 185 of file ip_grid_mod.F90.

+ +

References ncep_post_arakawa.

@@ -431,6 +492,26 @@

Referenced by ip_grid_factory_mod::init_grid_grib2().

+ + + +

◆ ncep_post_arakawa

+ +
+
+ + + + +
logical, save, public ip_grid_mod::ncep_post_arakawa =.false.
+
+ +

Use ncep_post/wgrib2-compatible version of init_grib2() for non-E Arakawa grids (enable with use_ncep_post_arakawa())

+ +

Definition at line 31 of file ip_grid_mod.F90.

+ +

Referenced by unuse_ncep_post_arakawa(), and use_ncep_post_arakawa().

+
@@ -491,6 +572,26 @@

Referenced by ip_grid_factory_mod::init_grid_grib1().

+ + + +

◆ rot_equid_cylind_b_grid_id_grib2

+ +
+
+ + + + +
integer, parameter, public ip_grid_mod::rot_equid_cylind_b_grid_id_grib2 = 32769
+
+ +

Integer grid number for rotated equidistant cylindrical B-stagger grid (grib2)

+ +

Definition at line 29 of file ip_grid_mod.F90.

+ +

Referenced by ip_grid_factory_mod::init_grid_grib2().

+
@@ -511,6 +612,26 @@

Referenced by ip_grid_factory_mod::init_grid_grib1().

+ + + +

◆ rot_equid_cylind_e_grid_id_grib2

+ +
+
+ + + + +
integer, parameter, public ip_grid_mod::rot_equid_cylind_e_grid_id_grib2 = 32768
+
+ +

Integer grid number for rotated equidistant cylindrical E-stagger grid (grib2)

+ +

Definition at line 28 of file ip_grid_mod.F90.

+ +

Referenced by ip_grid_factory_mod::init_grid_grib2().

+
diff --git a/namespaceip__grid__mod.js b/namespaceip__grid__mod.js index 47bec179..291e51a3 100644 --- a/namespaceip__grid__mod.js +++ b/namespaceip__grid__mod.js @@ -7,6 +7,8 @@ var namespaceip__grid__mod = [ "operator(==)", "interfaceip__grid__mod_1_1operator_07_0a_0a_08.html", "interfaceip__grid__mod_1_1operator_07_0a_0a_08" ], [ "field_pos", "namespaceip__grid__mod.html#a63572318d74ec94c20c5ccd6ded2d442", null ], [ "is_same_grid", "namespaceip__grid__mod.html#a663bda9af9dd991a09ba0f0de66dc045", null ], + [ "unuse_ncep_post_arakawa", "namespaceip__grid__mod.html#ac8e716adbe5c1156bfd20f936a4205de", null ], + [ "use_ncep_post_arakawa", "namespaceip__grid__mod.html#a1d570947cf124c28ba67305494bff450", null ], [ "equid_cylind_grid_id_grib1", "namespaceip__grid__mod.html#ad96da95d40beceb1a1c405971e8130bb", null ], [ "equid_cylind_grid_id_grib2", "namespaceip__grid__mod.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6", null ], [ "gaussian_grid_id_grib1", "namespaceip__grid__mod.html#a45e8afad72b1b8856b3e44f2dd3123b3", null ], @@ -15,9 +17,12 @@ var namespaceip__grid__mod = [ "lambert_conf_grid_id_grib2", "namespaceip__grid__mod.html#a2e49846c9122b1fe1fcdbb2913fc32fe", null ], [ "mercator_grid_id_grib1", "namespaceip__grid__mod.html#ab9ff525eca4f053b04ec96a83cb06682", null ], [ "mercator_grid_id_grib2", "namespaceip__grid__mod.html#af9c58af5162d96cb7d1ac5001139b856", null ], + [ "ncep_post_arakawa", "namespaceip__grid__mod.html#a88751d2ee535d807b6d420fcfb99ee71", null ], [ "polar_stereo_grid_id_grib1", "namespaceip__grid__mod.html#afee73c2f09ea9de43c156dc594ae1df1", null ], [ "polar_stereo_grid_id_grib2", "namespaceip__grid__mod.html#a5b3ad320b41791e65966e1bb498e9ae3", null ], [ "rot_equid_cylind_b_grid_id_grib1", "namespaceip__grid__mod.html#adb7d7d18410aaae52d7eee2e97f04b14", null ], + [ "rot_equid_cylind_b_grid_id_grib2", "namespaceip__grid__mod.html#adbda63b51409aaed34a707b222da8c43", null ], [ "rot_equid_cylind_e_grid_id_grib1", "namespaceip__grid__mod.html#a4e11ce780c3d165c282684188890af1c", null ], + [ "rot_equid_cylind_e_grid_id_grib2", "namespaceip__grid__mod.html#a248f834201bea9295bbe6a99abd038f8", null ], [ "rot_equid_cylind_grid_id_grib2", "namespaceip__grid__mod.html#adc7c650c524eb6425e77b2e0eac0979a", null ] ]; \ No newline at end of file diff --git a/namespaceip__grids__mod.html b/namespaceip__grids__mod.html index 3d5fb472..1835d563 100644 --- a/namespaceip__grids__mod.html +++ b/namespaceip__grids__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/namespaceip__interpolators__mod.html b/namespaceip__interpolators__mod.html index d841f0af..d4c286a7 100644 --- a/namespaceip__interpolators__mod.html +++ b/namespaceip__interpolators__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/namespaceip__lambert__conf__grid__mod.html b/namespaceip__lambert__conf__grid__mod.html index ac6c941d..ccd5540d 100644 --- a/namespaceip__lambert__conf__grid__mod.html +++ b/namespaceip__lambert__conf__grid__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/namespaceip__mercator__grid__mod.html b/namespaceip__mercator__grid__mod.html index cc370ce9..d6e63329 100644 --- a/namespaceip__mercator__grid__mod.html +++ b/namespaceip__mercator__grid__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/namespaceip__mod.html b/namespaceip__mod.html index 3cb942a8..018f82bc 100644 --- a/namespaceip__mod.html +++ b/namespaceip__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/namespaceip__polar__stereo__grid__mod.html b/namespaceip__polar__stereo__grid__mod.html index a5fcef8b..930a7b4b 100644 --- a/namespaceip__polar__stereo__grid__mod.html +++ b/namespaceip__polar__stereo__grid__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/namespaceip__rot__equid__cylind__egrid__mod.html b/namespaceip__rot__equid__cylind__egrid__mod.html index d915781d..a160a866 100644 --- a/namespaceip__rot__equid__cylind__egrid__mod.html +++ b/namespaceip__rot__equid__cylind__egrid__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/namespaceip__rot__equid__cylind__grid__mod.html b/namespaceip__rot__equid__cylind__grid__mod.html index 051956df..c07f5a15 100644 --- a/namespaceip__rot__equid__cylind__grid__mod.html +++ b/namespaceip__rot__equid__cylind__grid__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -110,6 +110,12 @@ subroutine init_grib2 (self, g2_desc)  Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object. More...
  +subroutine init_grib2_default (self, g2_desc) + Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object. More...
+  +subroutine init_grib2_ncep_post (self, g2_desc) + Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object. More...
+  subroutine rot_equid_cylind_error (IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS)  Error handler. More...
  @@ -327,9 +333,9 @@

Author
Gayno
Date
2007-NOV-15
-

Definition at line 256 of file ip_rot_equid_cylind_grid_mod.F90.

+

Definition at line 362 of file ip_rot_equid_cylind_grid_mod.F90.

-

References clat0, dlats, dlons, irot, rerth, rlon0, rot_equid_cylind_error(), rot_equid_cylind_grid_area(), rot_equid_cylind_map_jacob(), rot_equid_cylind_vect_rot(), and slat0.

+

References clat0, dlats, dlons, irot, rerth, rlon0, rot_equid_cylind_error(), rot_equid_cylind_grid_area(), rot_equid_cylind_map_jacob(), rot_equid_cylind_vect_rot(), and slat0.

@@ -419,6 +425,59 @@

Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object.

+

Call 'use_ncep_post_arakawa()' before using this subroutine to use ncep_post-compatible grid definition.

+
Parameters
+ + + +
[in,out]selfThe grid to initialize
[in]g2_descA grib2_descriptor
+
+
+
Author
Alex Richert
+
Date
2024-MAY-20
+ +

Definition at line 140 of file ip_rot_equid_cylind_grid_mod.F90.

+ +

References init_grib2_default(), and init_grib2_ncep_post().

+ + + + +

◆ init_grib2_default()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
subroutine ip_rot_equid_cylind_grid_mod::init_grib2_default (class(ip_rot_equid_cylind_grid), intent(inout) self,
type(grib2_descriptor), intent(in) g2_desc 
)
+
+private
+
+ +

Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object.

+

Uses template definitions consistent with WMO standards.

Parameters
@@ -429,7 +488,61 @@

Author
Gayno
Date
2007-NOV-15
-

Definition at line 139 of file ip_rot_equid_cylind_grid_mod.F90.

+

Definition at line 160 of file ip_rot_equid_cylind_grid_mod.F90.

+ +

Referenced by init_grib2().

+ + + + +

◆ init_grib2_ncep_post()

+ +
+
+

[in,out]selfThe grid to initialize
+ + + + +
+ + + + + + + + + + + + + + + + + + +
subroutine ip_rot_equid_cylind_grid_mod::init_grib2_ncep_post (class(ip_rot_equid_cylind_grid), intent(inout) self,
type(grib2_descriptor), intent(in) g2_desc 
)
+
+private
+
+ +

Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object.

+

Uses template number definitions in a manner compatible with wgrib2 and ncep_post, which is based on grib1.

+
Parameters
+ + + +
[in,out]selfThe grid to initialize
[in]g2_descA grib2_descriptor
+
+
+
Author
Alex Richert, George Gayno
+
Date
2024-MAY-20
+ +

Definition at line 227 of file ip_rot_equid_cylind_grid_mod.F90.

+ +

Referenced by init_grib2().

@@ -518,9 +631,9 @@

Author
Gayno
Date
2015-07-13
-

Definition at line 462 of file ip_rot_equid_cylind_grid_mod.F90.

+

Definition at line 568 of file ip_rot_equid_cylind_grid_mod.F90.

-

Referenced by gdswzd_rot_equid_cylind().

+

Referenced by gdswzd_rot_equid_cylind().

@@ -589,11 +702,11 @@

Author
Gayno
Date
2015-01-21
-

Definition at line 603 of file ip_rot_equid_cylind_grid_mod.F90.

+

Definition at line 709 of file ip_rot_equid_cylind_grid_mod.F90.

References dlats, dlons, and rerth.

-

Referenced by gdswzd_rot_equid_cylind().

+

Referenced by gdswzd_rot_equid_cylind().

@@ -711,11 +824,11 @@

Author
Gayno
Date
2015-01-21
-

Definition at line 558 of file ip_rot_equid_cylind_grid_mod.F90.

+

Definition at line 664 of file ip_rot_equid_cylind_grid_mod.F90.

References clat0, dlats, dlons, rlon0, and slat0.

-

Referenced by gdswzd_rot_equid_cylind().

+

Referenced by gdswzd_rot_equid_cylind().

@@ -819,11 +932,11 @@

Author
Gayno
Date
2015-01-21
-

Definition at line 507 of file ip_rot_equid_cylind_grid_mod.F90.

+

Definition at line 613 of file ip_rot_equid_cylind_grid_mod.F90.

References clat0, irot, rlon0, and slat0.

-

Referenced by gdswzd_rot_equid_cylind().

+

Referenced by gdswzd_rot_equid_cylind().

@@ -852,7 +965,7 @@

Definition at line 58 of file ip_rot_equid_cylind_grid_mod.F90.

-

Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().

+

Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().

@@ -880,7 +993,7 @@

Definition at line 59 of file ip_rot_equid_cylind_grid_mod.F90.

-

Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_grid_area(), and rot_equid_cylind_map_jacob().

+

Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_grid_area(), and rot_equid_cylind_map_jacob().

@@ -908,7 +1021,7 @@

Definition at line 60 of file ip_rot_equid_cylind_grid_mod.F90.

-

Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_grid_area(), and rot_equid_cylind_map_jacob().

+

Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_grid_area(), and rot_equid_cylind_map_jacob().

@@ -936,7 +1049,7 @@

Definition at line 56 of file ip_rot_equid_cylind_grid_mod.F90.

-

Referenced by gdswzd_rot_equid_cylind(), and rot_equid_cylind_vect_rot().

+

Referenced by gdswzd_rot_equid_cylind(), and rot_equid_cylind_vect_rot().

@@ -990,7 +1103,7 @@

Definition at line 57 of file ip_rot_equid_cylind_grid_mod.F90.

-

Referenced by gdswzd_rot_equid_cylind(), and rot_equid_cylind_grid_area().

+

Referenced by gdswzd_rot_equid_cylind(), and rot_equid_cylind_grid_area().

@@ -1018,7 +1131,7 @@

Definition at line 61 of file ip_rot_equid_cylind_grid_mod.F90.

-

Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().

+

Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().

@@ -1046,7 +1159,7 @@

Definition at line 62 of file ip_rot_equid_cylind_grid_mod.F90.

-

Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().

+

Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().

diff --git a/namespaceip__rot__equid__cylind__grid__mod.js b/namespaceip__rot__equid__cylind__grid__mod.js index a86a9373..8d250b58 100644 --- a/namespaceip__rot__equid__cylind__grid__mod.js +++ b/namespaceip__rot__equid__cylind__grid__mod.js @@ -4,6 +4,8 @@ var namespaceip__rot__equid__cylind__grid__mod = [ "gdswzd_rot_equid_cylind", "namespaceip__rot__equid__cylind__grid__mod.html#a55c153201e15205d3f75e4ffb717cc0b", null ], [ "init_grib1", "namespaceip__rot__equid__cylind__grid__mod.html#acb27dfdc6f03dea897d509910365afee", null ], [ "init_grib2", "namespaceip__rot__equid__cylind__grid__mod.html#add3c6c1dad5748b452d291df6619867d", null ], + [ "init_grib2_default", "namespaceip__rot__equid__cylind__grid__mod.html#a9ade5de892a935c3b62c1860b719ce74", null ], + [ "init_grib2_ncep_post", "namespaceip__rot__equid__cylind__grid__mod.html#a74abf723e815f9ff196e6d0174fd449b", null ], [ "rot_equid_cylind_error", "namespaceip__rot__equid__cylind__grid__mod.html#a1cc09c83f9a3815d8c5f8ed2f239f53f", null ], [ "rot_equid_cylind_grid_area", "namespaceip__rot__equid__cylind__grid__mod.html#ad8f1133eb6809705c15337134eafe9fd", null ], [ "rot_equid_cylind_map_jacob", "namespaceip__rot__equid__cylind__grid__mod.html#a985f1dc1a20444cef706d4bb20e0841b", null ], diff --git a/namespaceip__station__points__grid__mod.html b/namespaceip__station__points__grid__mod.html index 23293523..d419adeb 100644 --- a/namespaceip__station__points__grid__mod.html +++ b/namespaceip__station__points__grid__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/namespaceipolates__mod.html b/namespaceipolates__mod.html index 6dba49f4..d63c038c 100644 --- a/namespaceipolates__mod.html +++ b/namespaceipolates__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/namespaceipolatev__mod.html b/namespaceipolatev__mod.html index 44c15be2..c5760f9d 100644 --- a/namespaceipolatev__mod.html +++ b/namespaceipolatev__mod.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
diff --git a/namespacemembers.html b/namespacemembers.html index 99518c42..805196c6 100644 --- a/namespacemembers.html +++ b/namespacemembers.html @@ -26,7 +26,7 @@
NCEPLIBS-ip -  5.0.0 +  5.1.0
@@ -295,9 +295,15 @@

- i -

    , ip_rot_equid_cylind_grid_mod , ip_station_points_grid_mod +
  • init_grib2_default() +: ip_rot_equid_cylind_grid_mod +
  • init_grib2_descriptor() : ip_grid_descriptor_mod
  • +
  • init_grib2_ncep_post() +: ip_rot_equid_cylind_grid_mod +
  • init_grid_generic() : ip_grid_factory_mod
  • @@ -449,6 +455,9 @@

    - m -

      - n -

        +
      • ncep_post_arakawa +: ip_grid_mod +
      • neighbor_budget_interp_id : ip_interpolators_mod
      • @@ -531,9 +540,15 @@

        - r -

        • rot_equid_cylind_b_grid_id_grib1 : ip_grid_mod
        • +
        • rot_equid_cylind_b_grid_id_grib2 +: ip_grid_mod +
        • rot_equid_cylind_e_grid_id_grib1 : ip_grid_mod
        • +
        • rot_equid_cylind_e_grid_id_grib2 +: ip_grid_mod +
        • rot_equid_cylind_egrid_error() : ip_rot_equid_cylind_egrid_mod
        • @@ -581,6 +596,16 @@

          - s -

          +

          - u -

          + +

          - y -

          • ylat_row : ip_gaussian_grid_mod diff --git a/namespacemembers_func.html b/namespacemembers_func.html index 0e260cab..e0a9651b 100644 --- a/namespacemembers_func.html +++ b/namespacemembers_func.html @@ -26,7 +26,7 @@
            NCEPLIBS-ip -  5.0.0 +  5.1.0
            @@ -192,9 +192,15 @@

            - i -

              , ip_rot_equid_cylind_grid_mod , ip_station_points_grid_mod +
            • init_grib2_default() +: ip_rot_equid_cylind_grid_mod +
            • init_grib2_descriptor() : ip_grid_descriptor_mod
            • +
            • init_grib2_ncep_post() +: ip_rot_equid_cylind_grid_mod +
            • init_grid_generic() : ip_grid_factory_mod
            • @@ -366,6 +372,16 @@

              - r -

              + + +

              - u -

              diff --git a/namespacemembers_vars.html b/namespacemembers_vars.html index 9cca1272..91a1f6b9 100644 --- a/namespacemembers_vars.html +++ b/namespacemembers_vars.html @@ -26,7 +26,7 @@
              NCEPLIBS-ip -  5.0.0 +  5.1.0
              @@ -244,6 +244,9 @@

              - m -

                - n -

                  +
                • ncep_post_arakawa +: ip_grid_mod +
                • neighbor_budget_interp_id : ip_interpolators_mod
                • @@ -299,9 +302,15 @@

                  - r -

                  • rot_equid_cylind_b_grid_id_grib1 : ip_grid_mod
                  • +
                  • rot_equid_cylind_b_grid_id_grib2 +: ip_grid_mod +
                  • rot_equid_cylind_e_grid_id_grib1 : ip_grid_mod
                  • +
                  • rot_equid_cylind_e_grid_id_grib2 +: ip_grid_mod +
                  • rot_equid_cylind_grid_id_grib2 : ip_grid_mod
                  • diff --git a/namespaceneighbor__budget__interp__mod.html b/namespaceneighbor__budget__interp__mod.html index 2e5f041b..d2e059bc 100644 --- a/namespaceneighbor__budget__interp__mod.html +++ b/namespaceneighbor__budget__interp__mod.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    @@ -245,7 +245,7 @@

                    +

                    Program History Log

                    @@ -459,7 +459,7 @@

                    +

                    Program History Log

                    diff --git a/namespaceneighbor__interp__mod.html b/namespaceneighbor__interp__mod.html index 9df3b95f..27d73b54 100644 --- a/namespaceneighbor__interp__mod.html +++ b/namespaceneighbor__interp__mod.html @@ -26,7 +26,7 @@ @@ -109,7 +109,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Interpolate scalar fields (neighbor).

                    -

                    +

                    Program History Log

                    diff --git a/namespacepolfix__mod.html b/namespacepolfix__mod.html index e024eb14..57c2d849 100644 --- a/namespacepolfix__mod.html +++ b/namespacepolfix__mod.html @@ -26,7 +26,7 @@ diff --git a/namespaces.html b/namespaces.html index 8a405406..7edb8180 100644 --- a/namespaces.html +++ b/namespaces.html @@ -26,7 +26,7 @@ diff --git a/namespacespectral__interp__mod.html b/namespacespectral__interp__mod.html index 62bdfd7a..a63c289f 100644 --- a/namespacespectral__interp__mod.html +++ b/namespacespectral__interp__mod.html @@ -26,7 +26,7 @@ @@ -264,7 +264,7 @@

                    Author
                    Mark Iredell
                    Date
                    96-04-10
                    -

                    Definition at line 60 of file spectral_interp_mod.F90.

                    +

                    Definition at line 61 of file spectral_interp_mod.F90.

                    @@ -432,7 +432,7 @@

                    Author
                    Mark Iredell
                    Date
                    96-04-10
                    -

                    Definition at line 121 of file spectral_interp_mod.F90.

                    +

                    Definition at line 122 of file spectral_interp_mod.F90.

                    @@ -563,7 +563,7 @@

                    +

                    Program History Log

                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    @@ -605,7 +605,7 @@

                    Author
                    Iredell
                    Date
                    96-04-10
                    -

                    Definition at line 559 of file spectral_interp_mod.F90.

                    +

                    Definition at line 560 of file spectral_interp_mod.F90.

                    @@ -758,7 +758,7 @@

                    +

                    Program History Log

                    @@ -814,7 +814,7 @@

                    !

                    Author
                    Mark Iredell
                    Date
                    96-04-10
                    -

                    Definition at line 254 of file spectral_interp_mod.F90.

                    +

                    Definition at line 255 of file spectral_interp_mod.F90.

                    @@ -970,7 +970,7 @@

                    +

                    Program History Log

                    @@ -1016,9 +1016,9 @@

                    Author
                    IREDELL
                    Date
                    96-04-10
                    -

                    Definition at line 1221 of file spectral_interp_mod.F90.

                    +

                    Definition at line 1222 of file spectral_interp_mod.F90.

                    -

                    Referenced by spectral_interp_mod::interpolate_spectral::interpolate_spectral_vector().

                    +

                    Referenced by spectral_interp_mod::interpolate_spectral::interpolate_spectral_vector().

                    @@ -1196,7 +1196,7 @@

                    +

                    Program History Log

                    @@ -1256,7 +1256,7 @@

                    Author
                    IREDELL
                    Date
                    96-04-10
                    -

                    Definition at line 887 of file spectral_interp_mod.F90.

                    +

                    Definition at line 888 of file spectral_interp_mod.F90.

                    diff --git a/navtreedata.js b/navtreedata.js index 3e62902a..982640ab 100644 --- a/navtreedata.js +++ b/navtreedata.js @@ -76,9 +76,9 @@ var NAVTREE = var NAVTREEINDEX = [ "annotated.html", -"ip__rot__equid__cylind__egrid__mod_8F90.html#a134acf8ab7f40ff49ce8e03daad900e6", -"namespaceip__station__points__grid__mod.html#a8da297b45242279a497dbd7062a33197", -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3794a22c4866631c6b5bc6a8871e3e44" +"ip__polar__stereo__grid__mod_8F90.html#ae2694d90ab514a131e083dfba3b173c5", +"namespaceip__rot__equid__cylind__grid__mod.html#ab43075e39d4e2dde4110e608931a392d", +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/navtreeindex0.js b/navtreeindex0.js index 0457b05c..93da72e0 100644 --- a/navtreeindex0.js +++ b/navtreeindex0.js @@ -59,8 +59,8 @@ var NAVTREEINDEX0 = "globals.html":[3,1,0], "globals_func.html":[3,1,1], "hierarchy.html":[2,1], -"index.html":[0], "index.html":[], +"index.html":[0], "index.html#autotoc_md1":[0,0], "index.html#autotoc_md10":[0,0,2], "index.html#autotoc_md11":[0,0,3], @@ -179,21 +179,26 @@ var NAVTREEINDEX0 = "ip__grid__factory__mod_8F90.html#ad8906ed6fe52c2426c0ff09ce50b6fc5":[3,0,11,2], "ip__grid__factory__mod_8F90_source.html":[3,0,11], "ip__grid__mod_8F90.html":[3,0,12], -"ip__grid__mod_8F90.html#a2e49846c9122b1fe1fcdbb2913fc32fe":[3,0,12,12], -"ip__grid__mod_8F90.html#a36a9a73ecd50353f892341ae8a5c8316":[3,0,12,10], -"ip__grid__mod_8F90.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6":[3,0,12,8], -"ip__grid__mod_8F90.html#a45e8afad72b1b8856b3e44f2dd3123b3":[3,0,12,9], -"ip__grid__mod_8F90.html#a4e11ce780c3d165c282684188890af1c":[3,0,12,18], -"ip__grid__mod_8F90.html#a5b3ad320b41791e65966e1bb498e9ae3":[3,0,12,16], +"ip__grid__mod_8F90.html#a1d570947cf124c28ba67305494bff450":[3,0,12,8], +"ip__grid__mod_8F90.html#a248f834201bea9295bbe6a99abd038f8":[3,0,12,23], +"ip__grid__mod_8F90.html#a2e49846c9122b1fe1fcdbb2913fc32fe":[3,0,12,14], +"ip__grid__mod_8F90.html#a36a9a73ecd50353f892341ae8a5c8316":[3,0,12,12], +"ip__grid__mod_8F90.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6":[3,0,12,10], +"ip__grid__mod_8F90.html#a45e8afad72b1b8856b3e44f2dd3123b3":[3,0,12,11], +"ip__grid__mod_8F90.html#a4e11ce780c3d165c282684188890af1c":[3,0,12,22], +"ip__grid__mod_8F90.html#a5b3ad320b41791e65966e1bb498e9ae3":[3,0,12,19], "ip__grid__mod_8F90.html#a63572318d74ec94c20c5ccd6ded2d442":[3,0,12,5], "ip__grid__mod_8F90.html#a663bda9af9dd991a09ba0f0de66dc045":[3,0,12,6], -"ip__grid__mod_8F90.html#ab82b90d20f38ff39741f6890fa422d16":[3,0,12,11], -"ip__grid__mod_8F90.html#ab9ff525eca4f053b04ec96a83cb06682":[3,0,12,13], -"ip__grid__mod_8F90.html#ad96da95d40beceb1a1c405971e8130bb":[3,0,12,7], -"ip__grid__mod_8F90.html#adb7d7d18410aaae52d7eee2e97f04b14":[3,0,12,17], -"ip__grid__mod_8F90.html#adc7c650c524eb6425e77b2e0eac0979a":[3,0,12,19], -"ip__grid__mod_8F90.html#af9c58af5162d96cb7d1ac5001139b856":[3,0,12,14], -"ip__grid__mod_8F90.html#afee73c2f09ea9de43c156dc594ae1df1":[3,0,12,15], +"ip__grid__mod_8F90.html#a88751d2ee535d807b6d420fcfb99ee71":[3,0,12,17], +"ip__grid__mod_8F90.html#ab82b90d20f38ff39741f6890fa422d16":[3,0,12,13], +"ip__grid__mod_8F90.html#ab9ff525eca4f053b04ec96a83cb06682":[3,0,12,15], +"ip__grid__mod_8F90.html#ac8e716adbe5c1156bfd20f936a4205de":[3,0,12,7], +"ip__grid__mod_8F90.html#ad96da95d40beceb1a1c405971e8130bb":[3,0,12,9], +"ip__grid__mod_8F90.html#adb7d7d18410aaae52d7eee2e97f04b14":[3,0,12,20], +"ip__grid__mod_8F90.html#adbda63b51409aaed34a707b222da8c43":[3,0,12,21], +"ip__grid__mod_8F90.html#adc7c650c524eb6425e77b2e0eac0979a":[3,0,12,24], +"ip__grid__mod_8F90.html#af9c58af5162d96cb7d1ac5001139b856":[3,0,12,16], +"ip__grid__mod_8F90.html#afee73c2f09ea9de43c156dc594ae1df1":[3,0,12,18], "ip__grid__mod_8F90_source.html":[3,0,12], "ip__grids__mod_8F90.html":[3,0,13], "ip__grids__mod_8F90_source.html":[3,0,13], @@ -244,10 +249,5 @@ var NAVTREEINDEX0 = "ip__polar__stereo__grid__mod_8F90.html#aa4a88f48d7b78cfdfc54754882195d18":[3,0,18,13], "ip__polar__stereo__grid__mod_8F90.html#abe4d416201e986421a8e325a9b00e462":[3,0,18,6], "ip__polar__stereo__grid__mod_8F90.html#abf3a34d9bb00c39dac5225798aea4d5b":[3,0,18,10], -"ip__polar__stereo__grid__mod_8F90.html#acf60181f89954e2ff31b08bb1b345354":[3,0,18,8], -"ip__polar__stereo__grid__mod_8F90.html#ae2694d90ab514a131e083dfba3b173c5":[3,0,18,1], -"ip__polar__stereo__grid__mod_8F90.html#aea7950530d06d9c59ff61bf706df0a0f":[3,0,18,9], -"ip__polar__stereo__grid__mod_8F90_source.html":[3,0,18], -"ip__rot__equid__cylind__egrid__mod_8F90.html":[3,0,19], -"ip__rot__equid__cylind__egrid__mod_8F90.html#a0b2faca2325b413e1f3207778d4c4c68":[3,0,19,12] +"ip__polar__stereo__grid__mod_8F90.html#acf60181f89954e2ff31b08bb1b345354":[3,0,18,8] }; diff --git a/navtreeindex1.js b/navtreeindex1.js index ca5c924e..8f0d93c3 100644 --- a/navtreeindex1.js +++ b/navtreeindex1.js @@ -1,5 +1,10 @@ var NAVTREEINDEX1 = { +"ip__polar__stereo__grid__mod_8F90.html#ae2694d90ab514a131e083dfba3b173c5":[3,0,18,1], +"ip__polar__stereo__grid__mod_8F90.html#aea7950530d06d9c59ff61bf706df0a0f":[3,0,18,9], +"ip__polar__stereo__grid__mod_8F90_source.html":[3,0,18], +"ip__rot__equid__cylind__egrid__mod_8F90.html":[3,0,19], +"ip__rot__equid__cylind__egrid__mod_8F90.html#a0b2faca2325b413e1f3207778d4c4c68":[3,0,19,12], "ip__rot__equid__cylind__egrid__mod_8F90.html#a134acf8ab7f40ff49ce8e03daad900e6":[3,0,19,17], "ip__rot__equid__cylind__egrid__mod_8F90.html#a45b87f77888d428ca0f551edae8da94e":[3,0,19,6], "ip__rot__equid__cylind__egrid__mod_8F90.html#a4ccccb64d3e7236d8cac19c279aab900":[3,0,19,20], @@ -21,21 +26,23 @@ var NAVTREEINDEX1 = "ip__rot__equid__cylind__egrid__mod_8F90.html#af3cbc17f27800bc67135feacb2c1c3e0":[3,0,19,3], "ip__rot__equid__cylind__egrid__mod_8F90_source.html":[3,0,19], "ip__rot__equid__cylind__grid__mod_8F90.html":[3,0,20], -"ip__rot__equid__cylind__grid__mod_8F90.html#a1cc09c83f9a3815d8c5f8ed2f239f53f":[3,0,20,4], -"ip__rot__equid__cylind__grid__mod_8F90.html#a3de472bfc18740a7d985f560f3541c10":[3,0,20,7], +"ip__rot__equid__cylind__grid__mod_8F90.html#a1cc09c83f9a3815d8c5f8ed2f239f53f":[3,0,20,6], +"ip__rot__equid__cylind__grid__mod_8F90.html#a3de472bfc18740a7d985f560f3541c10":[3,0,20,9], "ip__rot__equid__cylind__grid__mod_8F90.html#a55c153201e15205d3f75e4ffb717cc0b":[3,0,20,1], -"ip__rot__equid__cylind__grid__mod_8F90.html#a620a55069afd33b301240533915387df":[3,0,20,14], -"ip__rot__equid__cylind__grid__mod_8F90.html#a64831f92d5306513987a98e97a32aea1":[3,0,20,15], -"ip__rot__equid__cylind__grid__mod_8F90.html#a985f1dc1a20444cef706d4bb20e0841b":[3,0,20,6], -"ip__rot__equid__cylind__grid__mod_8F90.html#aa0cf7bb2dd8be1239ae38c7220d29702":[3,0,20,10], -"ip__rot__equid__cylind__grid__mod_8F90.html#ab43075e39d4e2dde4110e608931a392d":[3,0,20,9], -"ip__rot__equid__cylind__grid__mod_8F90.html#abb0c2acdbd71f0c07ffaf9db54ce06c1":[3,0,20,11], +"ip__rot__equid__cylind__grid__mod_8F90.html#a620a55069afd33b301240533915387df":[3,0,20,16], +"ip__rot__equid__cylind__grid__mod_8F90.html#a64831f92d5306513987a98e97a32aea1":[3,0,20,17], +"ip__rot__equid__cylind__grid__mod_8F90.html#a74abf723e815f9ff196e6d0174fd449b":[3,0,20,5], +"ip__rot__equid__cylind__grid__mod_8F90.html#a985f1dc1a20444cef706d4bb20e0841b":[3,0,20,8], +"ip__rot__equid__cylind__grid__mod_8F90.html#a9ade5de892a935c3b62c1860b719ce74":[3,0,20,4], +"ip__rot__equid__cylind__grid__mod_8F90.html#aa0cf7bb2dd8be1239ae38c7220d29702":[3,0,20,12], +"ip__rot__equid__cylind__grid__mod_8F90.html#ab43075e39d4e2dde4110e608931a392d":[3,0,20,11], +"ip__rot__equid__cylind__grid__mod_8F90.html#abb0c2acdbd71f0c07ffaf9db54ce06c1":[3,0,20,13], "ip__rot__equid__cylind__grid__mod_8F90.html#acb27dfdc6f03dea897d509910365afee":[3,0,20,2], -"ip__rot__equid__cylind__grid__mod_8F90.html#ad8f1133eb6809705c15337134eafe9fd":[3,0,20,5], +"ip__rot__equid__cylind__grid__mod_8F90.html#ad8f1133eb6809705c15337134eafe9fd":[3,0,20,7], "ip__rot__equid__cylind__grid__mod_8F90.html#add3c6c1dad5748b452d291df6619867d":[3,0,20,3], -"ip__rot__equid__cylind__grid__mod_8F90.html#ae08318392106d174ab36cf7dc05c570b":[3,0,20,13], -"ip__rot__equid__cylind__grid__mod_8F90.html#af5dea0592cccce2de1c5c6a92d42cfd6":[3,0,20,12], -"ip__rot__equid__cylind__grid__mod_8F90.html#afeb699d0eaa8d157277e93fe8e8c5852":[3,0,20,8], +"ip__rot__equid__cylind__grid__mod_8F90.html#ae08318392106d174ab36cf7dc05c570b":[3,0,20,15], +"ip__rot__equid__cylind__grid__mod_8F90.html#af5dea0592cccce2de1c5c6a92d42cfd6":[3,0,20,14], +"ip__rot__equid__cylind__grid__mod_8F90.html#afeb699d0eaa8d157277e93fe8e8c5852":[3,0,20,10], "ip__rot__equid__cylind__grid__mod_8F90_source.html":[3,0,20], "ip__station__points__grid__mod_8F90.html":[3,0,21], "ip__station__points__grid__mod_8F90.html#a4b28ebf2b4fe826c96af69db28e0a1ff":[3,0,21,2], @@ -80,13 +87,9 @@ var NAVTREEINDEX1 = "ipxwafs_8F90.html":[3,0,28], "ipxwafs_8F90.html#a1465ea191950f7464bb3374abed94c12":[3,0,28,0], "ipxwafs_8F90_source.html":[3,0,28], -"lapack__gen_8F.html":[3,0,31], -"lapack__gen_8F.html#a2af64d5edd49c8f4dcdfdd21235de781":[3,0,31,1], -"lapack__gen_8F.html#a3c6b581386390037e8c04c238a208547":[3,0,31,0], -"lapack__gen_8F_source.html":[3,0,31], -"movect_8F90.html":[3,0,32], -"movect_8F90.html#a5974e32c0cf90a65b39c68460d761882":[3,0,32,0], -"movect_8F90_source.html":[3,0,32], +"movect_8F90.html":[3,0,31], +"movect_8F90.html#a5974e32c0cf90a65b39c68460d761882":[3,0,31,0], +"movect_8F90_source.html":[3,0,31], "namespacebicubic__interp__mod.html":[1,0,0], "namespacebicubic__interp__mod.html#a54a442e47f1be9511c1684a337d7e2d1":[1,0,0,1], "namespacebicubic__interp__mod.html#a9d27db7d350fc2699aaf5057c3b53d16":[1,0,0,2], @@ -149,21 +152,26 @@ var NAVTREEINDEX1 = "namespaceip__grid__factory__mod.html#aa187dc8dbd1d004a51cc0e9826ffa225":[1,0,10,3], "namespaceip__grid__factory__mod.html#ad8906ed6fe52c2426c0ff09ce50b6fc5":[1,0,10,2], "namespaceip__grid__mod.html":[1,0,11], -"namespaceip__grid__mod.html#a2e49846c9122b1fe1fcdbb2913fc32fe":[1,0,11,12], -"namespaceip__grid__mod.html#a36a9a73ecd50353f892341ae8a5c8316":[1,0,11,10], -"namespaceip__grid__mod.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6":[1,0,11,8], -"namespaceip__grid__mod.html#a45e8afad72b1b8856b3e44f2dd3123b3":[1,0,11,9], -"namespaceip__grid__mod.html#a4e11ce780c3d165c282684188890af1c":[1,0,11,18], -"namespaceip__grid__mod.html#a5b3ad320b41791e65966e1bb498e9ae3":[1,0,11,16], +"namespaceip__grid__mod.html#a1d570947cf124c28ba67305494bff450":[1,0,11,8], +"namespaceip__grid__mod.html#a248f834201bea9295bbe6a99abd038f8":[1,0,11,23], +"namespaceip__grid__mod.html#a2e49846c9122b1fe1fcdbb2913fc32fe":[1,0,11,14], +"namespaceip__grid__mod.html#a36a9a73ecd50353f892341ae8a5c8316":[1,0,11,12], +"namespaceip__grid__mod.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6":[1,0,11,10], +"namespaceip__grid__mod.html#a45e8afad72b1b8856b3e44f2dd3123b3":[1,0,11,11], +"namespaceip__grid__mod.html#a4e11ce780c3d165c282684188890af1c":[1,0,11,22], +"namespaceip__grid__mod.html#a5b3ad320b41791e65966e1bb498e9ae3":[1,0,11,19], "namespaceip__grid__mod.html#a63572318d74ec94c20c5ccd6ded2d442":[1,0,11,5], "namespaceip__grid__mod.html#a663bda9af9dd991a09ba0f0de66dc045":[1,0,11,6], -"namespaceip__grid__mod.html#ab82b90d20f38ff39741f6890fa422d16":[1,0,11,11], -"namespaceip__grid__mod.html#ab9ff525eca4f053b04ec96a83cb06682":[1,0,11,13], -"namespaceip__grid__mod.html#ad96da95d40beceb1a1c405971e8130bb":[1,0,11,7], -"namespaceip__grid__mod.html#adb7d7d18410aaae52d7eee2e97f04b14":[1,0,11,17], -"namespaceip__grid__mod.html#adc7c650c524eb6425e77b2e0eac0979a":[1,0,11,19], -"namespaceip__grid__mod.html#af9c58af5162d96cb7d1ac5001139b856":[1,0,11,14], -"namespaceip__grid__mod.html#afee73c2f09ea9de43c156dc594ae1df1":[1,0,11,15], +"namespaceip__grid__mod.html#a88751d2ee535d807b6d420fcfb99ee71":[1,0,11,17], +"namespaceip__grid__mod.html#ab82b90d20f38ff39741f6890fa422d16":[1,0,11,13], +"namespaceip__grid__mod.html#ab9ff525eca4f053b04ec96a83cb06682":[1,0,11,15], +"namespaceip__grid__mod.html#ac8e716adbe5c1156bfd20f936a4205de":[1,0,11,7], +"namespaceip__grid__mod.html#ad96da95d40beceb1a1c405971e8130bb":[1,0,11,9], +"namespaceip__grid__mod.html#adb7d7d18410aaae52d7eee2e97f04b14":[1,0,11,20], +"namespaceip__grid__mod.html#adbda63b51409aaed34a707b222da8c43":[1,0,11,21], +"namespaceip__grid__mod.html#adc7c650c524eb6425e77b2e0eac0979a":[1,0,11,24], +"namespaceip__grid__mod.html#af9c58af5162d96cb7d1ac5001139b856":[1,0,11,16], +"namespaceip__grid__mod.html#afee73c2f09ea9de43c156dc594ae1df1":[1,0,11,18], "namespaceip__grids__mod.html":[1,0,12], "namespaceip__interpolators__mod.html":[1,0,13], "namespaceip__interpolators__mod.html#a35e5fe3a2dd79d205c0503f550388258":[1,0,13,4], @@ -233,21 +241,13 @@ var NAVTREEINDEX1 = "namespaceip__rot__equid__cylind__egrid__mod.html#af04f8a1044f4d9a7e0d13d38887adcbc":[1,0,18,13], "namespaceip__rot__equid__cylind__egrid__mod.html#af3cbc17f27800bc67135feacb2c1c3e0":[1,0,18,3], "namespaceip__rot__equid__cylind__grid__mod.html":[1,0,19], -"namespaceip__rot__equid__cylind__grid__mod.html#a1cc09c83f9a3815d8c5f8ed2f239f53f":[1,0,19,4], -"namespaceip__rot__equid__cylind__grid__mod.html#a3de472bfc18740a7d985f560f3541c10":[1,0,19,7], +"namespaceip__rot__equid__cylind__grid__mod.html#a1cc09c83f9a3815d8c5f8ed2f239f53f":[1,0,19,6], +"namespaceip__rot__equid__cylind__grid__mod.html#a3de472bfc18740a7d985f560f3541c10":[1,0,19,9], "namespaceip__rot__equid__cylind__grid__mod.html#a55c153201e15205d3f75e4ffb717cc0b":[1,0,19,1], -"namespaceip__rot__equid__cylind__grid__mod.html#a620a55069afd33b301240533915387df":[1,0,19,14], -"namespaceip__rot__equid__cylind__grid__mod.html#a64831f92d5306513987a98e97a32aea1":[1,0,19,15], -"namespaceip__rot__equid__cylind__grid__mod.html#a985f1dc1a20444cef706d4bb20e0841b":[1,0,19,6], -"namespaceip__rot__equid__cylind__grid__mod.html#aa0cf7bb2dd8be1239ae38c7220d29702":[1,0,19,10], -"namespaceip__rot__equid__cylind__grid__mod.html#ab43075e39d4e2dde4110e608931a392d":[1,0,19,9], -"namespaceip__rot__equid__cylind__grid__mod.html#abb0c2acdbd71f0c07ffaf9db54ce06c1":[1,0,19,11], -"namespaceip__rot__equid__cylind__grid__mod.html#acb27dfdc6f03dea897d509910365afee":[1,0,19,2], -"namespaceip__rot__equid__cylind__grid__mod.html#ad8f1133eb6809705c15337134eafe9fd":[1,0,19,5], -"namespaceip__rot__equid__cylind__grid__mod.html#add3c6c1dad5748b452d291df6619867d":[1,0,19,3], -"namespaceip__rot__equid__cylind__grid__mod.html#ae08318392106d174ab36cf7dc05c570b":[1,0,19,13], -"namespaceip__rot__equid__cylind__grid__mod.html#af5dea0592cccce2de1c5c6a92d42cfd6":[1,0,19,12], -"namespaceip__rot__equid__cylind__grid__mod.html#afeb699d0eaa8d157277e93fe8e8c5852":[1,0,19,8], -"namespaceip__station__points__grid__mod.html":[1,0,20], -"namespaceip__station__points__grid__mod.html#a4b28ebf2b4fe826c96af69db28e0a1ff":[1,0,20,2] +"namespaceip__rot__equid__cylind__grid__mod.html#a620a55069afd33b301240533915387df":[1,0,19,16], +"namespaceip__rot__equid__cylind__grid__mod.html#a64831f92d5306513987a98e97a32aea1":[1,0,19,17], +"namespaceip__rot__equid__cylind__grid__mod.html#a74abf723e815f9ff196e6d0174fd449b":[1,0,19,5], +"namespaceip__rot__equid__cylind__grid__mod.html#a985f1dc1a20444cef706d4bb20e0841b":[1,0,19,8], +"namespaceip__rot__equid__cylind__grid__mod.html#a9ade5de892a935c3b62c1860b719ce74":[1,0,19,4], +"namespaceip__rot__equid__cylind__grid__mod.html#aa0cf7bb2dd8be1239ae38c7220d29702":[1,0,19,12] }; diff --git a/navtreeindex2.js b/navtreeindex2.js index 85efd140..0bfd8c35 100644 --- a/navtreeindex2.js +++ b/navtreeindex2.js @@ -1,5 +1,15 @@ var NAVTREEINDEX2 = { +"namespaceip__rot__equid__cylind__grid__mod.html#ab43075e39d4e2dde4110e608931a392d":[1,0,19,11], +"namespaceip__rot__equid__cylind__grid__mod.html#abb0c2acdbd71f0c07ffaf9db54ce06c1":[1,0,19,13], +"namespaceip__rot__equid__cylind__grid__mod.html#acb27dfdc6f03dea897d509910365afee":[1,0,19,2], +"namespaceip__rot__equid__cylind__grid__mod.html#ad8f1133eb6809705c15337134eafe9fd":[1,0,19,7], +"namespaceip__rot__equid__cylind__grid__mod.html#add3c6c1dad5748b452d291df6619867d":[1,0,19,3], +"namespaceip__rot__equid__cylind__grid__mod.html#ae08318392106d174ab36cf7dc05c570b":[1,0,19,15], +"namespaceip__rot__equid__cylind__grid__mod.html#af5dea0592cccce2de1c5c6a92d42cfd6":[1,0,19,14], +"namespaceip__rot__equid__cylind__grid__mod.html#afeb699d0eaa8d157277e93fe8e8c5852":[1,0,19,10], +"namespaceip__station__points__grid__mod.html":[1,0,20], +"namespaceip__station__points__grid__mod.html#a4b28ebf2b4fe826c96af69db28e0a1ff":[1,0,20,2], "namespaceip__station__points__grid__mod.html#a8da297b45242279a497dbd7062a33197":[1,0,20,1], "namespaceip__station__points__grid__mod.html#ad17e6d245295803b62b146be984f874d":[1,0,20,3], "namespaceipolates__mod.html":[1,0,21], @@ -34,22 +44,23 @@ var NAVTREEINDEX2 = "namespacespectral__interp__mod.html#ab9fb87d87f2f9d578a5ade6b512ff366":[1,0,26,5], "namespacespectral__interp__mod.html#acb61ad529b7decc2a6ff58dd12fbadd0":[1,0,26,4], "namespacespectral__interp__mod.html#af4ce7638750e787dd69c7fe3ff2335cc":[1,0,26,7], -"ncpus_8F.html":[3,0,33], -"ncpus_8F.html#a821a75ee067ea31758a038c0327bd3bd":[3,0,33,0], -"ncpus_8F_source.html":[3,0,33], -"neighbor__budget__interp__mod_8F90.html":[3,0,34], -"neighbor__budget__interp__mod_8F90.html#a4309c1e6b7fc60ded40657fe6c72297e":[3,0,34,2], -"neighbor__budget__interp__mod_8F90.html#a6d5110a9e9facf8c3132ec27d6857817":[3,0,34,1], -"neighbor__budget__interp__mod_8F90_source.html":[3,0,34], -"neighbor__interp__mod_8F90.html":[3,0,35], -"neighbor__interp__mod_8F90.html#a744ccffd8cd6c13d360e634db4851756":[3,0,35,2], -"neighbor__interp__mod_8F90.html#a78452d1527c6974ad54091f0318e4b1f":[3,0,35,1], -"neighbor__interp__mod_8F90_source.html":[3,0,35], +"ncpus_8F.html":[3,0,32], +"ncpus_8F.html#a821a75ee067ea31758a038c0327bd3bd":[3,0,32,0], +"ncpus_8F_source.html":[3,0,32], +"neighbor__budget__interp__mod_8F90.html":[3,0,33], +"neighbor__budget__interp__mod_8F90.html#a4309c1e6b7fc60ded40657fe6c72297e":[3,0,33,2], +"neighbor__budget__interp__mod_8F90.html#a6d5110a9e9facf8c3132ec27d6857817":[3,0,33,1], +"neighbor__budget__interp__mod_8F90_source.html":[3,0,33], +"neighbor__interp__mod_8F90.html":[3,0,34], +"neighbor__interp__mod_8F90.html#a744ccffd8cd6c13d360e634db4851756":[3,0,34,2], +"neighbor__interp__mod_8F90.html#a78452d1527c6974ad54091f0318e4b1f":[3,0,34,1], +"neighbor__interp__mod_8F90_source.html":[3,0,34], "pages.html":[], -"polfix__mod_8F90.html":[3,0,36], -"polfix__mod_8F90.html#a15df1ba2e1fcad1e9465c4aa3a2ba0d6":[3,0,36,0], -"polfix__mod_8F90.html#aeefc8f045777f6d962d9ec539ef6007d":[3,0,36,1], -"polfix__mod_8F90_source.html":[3,0,36], +"polfix__mod_8F90.html":[3,0,35], +"polfix__mod_8F90.html#a15df1ba2e1fcad1e9465c4aa3a2ba0d6":[3,0,35,0], +"polfix__mod_8F90.html#aeefc8f045777f6d962d9ec539ef6007d":[3,0,35,1], +"polfix__mod_8F90_source.html":[3,0,35], +"sp__mod_8F_source.html":[3,0,36], "spanaly_8f.html":[3,0,37], "spanaly_8f.html#a5cc846d796d393d7499cde0f3d1d6e6a":[3,0,37,0], "spanaly_8f_source.html":[3,0,37], @@ -238,16 +249,5 @@ var NAVTREEINDEX2 = "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ae179622b9a4c764a5ca90385330941ed":[2,0,4,0,11], "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ae675dc8c49e64700d941eadc31e8f4e7":[2,0,4,0,7], "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ae70be8cebcd217a49be4da1cebfc19d2":[2,0,4,0,14], -"structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#afb1ebcfab0d637688bcac84cbc8582fc":[2,0,4,0,9], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html":[2,0,5,0], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a0640093c52461763f904cc2f12c96b6c":[2,0,5,0,20], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a084603b1c052e76c3335fea2e887cfce":[2,0,5,0,17], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a110f99e158a977a1679133235fa06c34":[2,0,5,0,11], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a180a5da6c470fac34b8439d4c0a32d2a":[2,0,5,0,7], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18":[2,0,5,0,19], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c":[2,0,5,0,2], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30":[2,0,5,0,18], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8":[2,0,5,0,21], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a35c454d320c59a6c71c4aebb881abcb8":[2,0,5,0,6], -"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a378b72a1b6090acb90a36385ab9eda5a":[2,0,5,0,4] +"structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#afb1ebcfab0d637688bcac84cbc8582fc":[2,0,4,0,9] }; diff --git a/navtreeindex3.js b/navtreeindex3.js index 6796090e..c57077f2 100644 --- a/navtreeindex3.js +++ b/navtreeindex3.js @@ -1,5 +1,16 @@ var NAVTREEINDEX3 = { +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html":[2,0,5,0], +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a0640093c52461763f904cc2f12c96b6c":[2,0,5,0,20], +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a084603b1c052e76c3335fea2e887cfce":[2,0,5,0,17], +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a110f99e158a977a1679133235fa06c34":[2,0,5,0,11], +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a180a5da6c470fac34b8439d4c0a32d2a":[2,0,5,0,7], +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18":[2,0,5,0,19], +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c":[2,0,5,0,2], +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30":[2,0,5,0,18], +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8":[2,0,5,0,21], +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a35c454d320c59a6c71c4aebb881abcb8":[2,0,5,0,6], +"structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a378b72a1b6090acb90a36385ab9eda5a":[2,0,5,0,4], "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3794a22c4866631c6b5bc6a8871e3e44":[2,0,5,0,24], "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3e199827f764b162a14515e837c28903":[2,0,5,0,14], "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a41a2a38288864520d8c50854d1843f87":[2,0,5,0,13], diff --git a/ncpus_8F.html b/ncpus_8F.html index d2626304..90df6bf0 100644 --- a/ncpus_8F.html +++ b/ncpus_8F.html @@ -26,7 +26,7 @@

                    @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Set number of cpus.

                    -

                    +

                    Program History Log

                    diff --git a/ncpus_8F_source.html b/ncpus_8F_source.html index 81572070..c50cbf76 100644 --- a/ncpus_8F_source.html +++ b/ncpus_8F_source.html @@ -26,7 +26,7 @@ @@ -109,23 +109,24 @@
                    21 C>
                    22 C> @author Iredell @date 94-08-19
                    23  FUNCTION ncpus()
                    -
                    24  INTEGER nthreads, tid, omp_get_num_threads,omp_get_thread_num
                    +
                    24  INTEGER tid
                    25 C Obtain thread number
                    26 #ifdef openmp
                    -
                    27 !$OMP PARALLEL PRIVATE(TID)
                    -
                    28  tid = omp_get_thread_num()
                    -
                    29 ! PRINT *, '...............thread # ', TID
                    -
                    30  if (tid. eq. 0) then
                    -
                    31  ncpus=omp_get_num_threads()
                    -
                    32 ! PRINT *, 'totaly #------------------- of threads = ',NCPUS
                    -
                    33  endif
                    -
                    34 !$OMP END PARALLEL
                    -
                    35 #else
                    -
                    36  tid = 0
                    -
                    37  ncpus = 1
                    -
                    38 #endif
                    -
                    39  RETURN
                    -
                    40  END
                    +
                    27  INTEGER omp_get_num_threads,omp_get_thread_num
                    +
                    28 !$OMP PARALLEL PRIVATE(TID)
                    +
                    29  tid = omp_get_thread_num()
                    +
                    30 ! PRINT *, '...............thread # ', TID
                    +
                    31  if (tid. eq. 0) then
                    +
                    32  ncpus=omp_get_num_threads()
                    +
                    33 ! PRINT *, 'totaly #------------------- of threads = ',NCPUS
                    +
                    34  endif
                    +
                    35 !$OMP END PARALLEL
                    +
                    36 #else
                    +
                    37  tid = 0
                    +
                    38  ncpus = 1
                    +
                    39 #endif
                    +
                    40  RETURN
                    +
                    41  END
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    diff --git a/neighbor__budget__interp__mod_8F90.html b/neighbor__budget__interp__mod_8F90.html index 2eac8795..550da539 100644 --- a/neighbor__budget__interp__mod_8F90.html +++ b/neighbor__budget__interp__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/neighbor__budget__interp__mod_8F90_source.html b/neighbor__budget__interp__mod_8F90_source.html index f6bf4505..9a5a5c04 100644 --- a/neighbor__budget__interp__mod_8F90_source.html +++ b/neighbor__budget__interp__mod_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/neighbor__interp__mod_8F90.html b/neighbor__interp__mod_8F90.html index 24479a33..71dc1c71 100644 --- a/neighbor__interp__mod_8F90.html +++ b/neighbor__interp__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/neighbor__interp__mod_8F90_source.html b/neighbor__interp__mod_8F90_source.html index e874a80a..4537b4be 100644 --- a/neighbor__interp__mod_8F90_source.html +++ b/neighbor__interp__mod_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/polfix__mod_8F90.html b/polfix__mod_8F90.html index 84087536..f7ee3f3d 100644 --- a/polfix__mod_8F90.html +++ b/polfix__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/polfix__mod_8F90_source.html b/polfix__mod_8F90_source.html index 8aec2a2f..4b71f8b6 100644 --- a/polfix__mod_8F90_source.html +++ b/polfix__mod_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/search/all_10.js b/search/all_10.js index fc9c74b6..3c46c133 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -27,14 +27,16 @@ var searchData= ['rlon1_261',['rlon1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa927f5ecca3f2880ad88e60c8d4b8871',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a583517b74d3c1c1b354fefe0d6871c4d',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlon1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ab7e9e396d5eeb63c8079a901c2c8743f',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlon1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#adb673d1f9dbc7d7ee6f87513a2eed723',1,'ip_mercator_grid_mod::ip_mercator_grid::rlon1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a61650c9ce1a2ce44243bf491e5d93728',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlon1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a3684458139a165cd719b054637a7d121',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon1()']]], ['rlon2_262',['rlon2',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3794a22c4866631c6b5bc6a8871e3e44',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlon2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a1e5b9f8ab3de743b5e392478694154ea',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon2()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a0b9bfef606985f5e682f4ddb84c99d2c',1,'ip_mercator_grid_mod::ip_mercator_grid::rlon2()']]], ['rot_5fequid_5fcylind_5fb_5fgrid_5fid_5fgrib1_263',['rot_equid_cylind_b_grid_id_grib1',['../namespaceip__grid__mod.html#adb7d7d18410aaae52d7eee2e97f04b14',1,'ip_grid_mod']]], - ['rot_5fequid_5fcylind_5fe_5fgrid_5fid_5fgrib1_264',['rot_equid_cylind_e_grid_id_grib1',['../namespaceip__grid__mod.html#a4e11ce780c3d165c282684188890af1c',1,'ip_grid_mod']]], - ['rot_5fequid_5fcylind_5fegrid_5ferror_265',['rot_equid_cylind_egrid_error',['../namespaceip__rot__equid__cylind__egrid__mod.html#a69d4e473a1a276b855d37518dc6f1d48',1,'ip_rot_equid_cylind_egrid_mod']]], - ['rot_5fequid_5fcylind_5fegrid_5fgrid_5farea_266',['rot_equid_cylind_egrid_grid_area',['../namespaceip__rot__equid__cylind__egrid__mod.html#a4e6c3a758f9a6474d3e499fabeac0640',1,'ip_rot_equid_cylind_egrid_mod']]], - ['rot_5fequid_5fcylind_5fegrid_5fmap_5fjacob_267',['rot_equid_cylind_egrid_map_jacob',['../namespaceip__rot__equid__cylind__egrid__mod.html#a45b87f77888d428ca0f551edae8da94e',1,'ip_rot_equid_cylind_egrid_mod']]], - ['rot_5fequid_5fcylind_5fegrid_5fvect_5frot_268',['rot_equid_cylind_egrid_vect_rot',['../namespaceip__rot__equid__cylind__egrid__mod.html#a9ac1f76f515981c464e8391d8c941888',1,'ip_rot_equid_cylind_egrid_mod']]], - ['rot_5fequid_5fcylind_5ferror_269',['rot_equid_cylind_error',['../namespaceip__rot__equid__cylind__grid__mod.html#a1cc09c83f9a3815d8c5f8ed2f239f53f',1,'ip_rot_equid_cylind_grid_mod']]], - ['rot_5fequid_5fcylind_5fgrid_5farea_270',['rot_equid_cylind_grid_area',['../namespaceip__rot__equid__cylind__grid__mod.html#ad8f1133eb6809705c15337134eafe9fd',1,'ip_rot_equid_cylind_grid_mod']]], - ['rot_5fequid_5fcylind_5fgrid_5fid_5fgrib2_271',['rot_equid_cylind_grid_id_grib2',['../namespaceip__grid__mod.html#adc7c650c524eb6425e77b2e0eac0979a',1,'ip_grid_mod']]], - ['rot_5fequid_5fcylind_5fmap_5fjacob_272',['rot_equid_cylind_map_jacob',['../namespaceip__rot__equid__cylind__grid__mod.html#a985f1dc1a20444cef706d4bb20e0841b',1,'ip_rot_equid_cylind_grid_mod']]], - ['rot_5fequid_5fcylind_5fvect_5frot_273',['rot_equid_cylind_vect_rot',['../namespaceip__rot__equid__cylind__grid__mod.html#a3de472bfc18740a7d985f560f3541c10',1,'ip_rot_equid_cylind_grid_mod']]] + ['rot_5fequid_5fcylind_5fb_5fgrid_5fid_5fgrib2_264',['rot_equid_cylind_b_grid_id_grib2',['../namespaceip__grid__mod.html#adbda63b51409aaed34a707b222da8c43',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fe_5fgrid_5fid_5fgrib1_265',['rot_equid_cylind_e_grid_id_grib1',['../namespaceip__grid__mod.html#a4e11ce780c3d165c282684188890af1c',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fe_5fgrid_5fid_5fgrib2_266',['rot_equid_cylind_e_grid_id_grib2',['../namespaceip__grid__mod.html#a248f834201bea9295bbe6a99abd038f8',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5ferror_267',['rot_equid_cylind_egrid_error',['../namespaceip__rot__equid__cylind__egrid__mod.html#a69d4e473a1a276b855d37518dc6f1d48',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fgrid_5farea_268',['rot_equid_cylind_egrid_grid_area',['../namespaceip__rot__equid__cylind__egrid__mod.html#a4e6c3a758f9a6474d3e499fabeac0640',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fmap_5fjacob_269',['rot_equid_cylind_egrid_map_jacob',['../namespaceip__rot__equid__cylind__egrid__mod.html#a45b87f77888d428ca0f551edae8da94e',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fvect_5frot_270',['rot_equid_cylind_egrid_vect_rot',['../namespaceip__rot__equid__cylind__egrid__mod.html#a9ac1f76f515981c464e8391d8c941888',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5ferror_271',['rot_equid_cylind_error',['../namespaceip__rot__equid__cylind__grid__mod.html#a1cc09c83f9a3815d8c5f8ed2f239f53f',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fgrid_5farea_272',['rot_equid_cylind_grid_area',['../namespaceip__rot__equid__cylind__grid__mod.html#ad8f1133eb6809705c15337134eafe9fd',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fgrid_5fid_5fgrib2_273',['rot_equid_cylind_grid_id_grib2',['../namespaceip__grid__mod.html#adc7c650c524eb6425e77b2e0eac0979a',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fmap_5fjacob_274',['rot_equid_cylind_map_jacob',['../namespaceip__rot__equid__cylind__grid__mod.html#a985f1dc1a20444cef706d4bb20e0841b',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fvect_5frot_275',['rot_equid_cylind_vect_rot',['../namespaceip__rot__equid__cylind__grid__mod.html#a3de472bfc18740a7d985f560f3541c10',1,'ip_rot_equid_cylind_grid_mod']]] ]; diff --git a/search/all_11.js b/search/all_11.js index b3911194..c2b858ec 100644 --- a/search/all_11.js +++ b/search/all_11.js @@ -1,117 +1,117 @@ var searchData= [ - ['sbd_274',['sbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a246ec0afc422f6cfcc3758ff62c6017f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]], - ['scfft_275',['scfft',['../fftpack_8F.html#a369071ea2d380c9d91ba36d1bf375e33',1,'fftpack.F']]], - ['scrft_276',['scrft',['../fftpack_8F.html#ac69cbd64be972c20a4424f5327fb4b36',1,'fftpack.F']]], - ['slat_277',['slat',['../namespaceip__rot__equid__cylind__egrid__mod.html#ae1f8503816477fb685fbadc7a9e50f0b',1,'ip_rot_equid_cylind_egrid_mod']]], - ['slat0_278',['slat0',['../namespaceip__rot__equid__cylind__grid__mod.html#a64831f92d5306513987a98e97a32aea1',1,'ip_rot_equid_cylind_grid_mod::slat0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a72199c827ab3218b7f2aba35ad30b94d',1,'ip_rot_equid_cylind_egrid_mod::slat0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a8a02c6fc1ad38174e15679e69b5cbfdc',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::slat0()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#aca4b0ae69f756ef4854369bf88423d66',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::slat0()']]], - ['slatr_279',['slatr',['../namespaceip__rot__equid__cylind__egrid__mod.html#a4ccccb64d3e7236d8cac19c279aab900',1,'ip_rot_equid_cylind_egrid_mod::slatr()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aae4f801c95b7b61e2e6b1dd824d3688b',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::slatr()']]], - ['spanaly_280',['spanaly',['../spanaly_8f.html#a5cc846d796d393d7499cde0f3d1d6e6a',1,'spanaly.f']]], - ['spanaly_2ef_281',['spanaly.f',['../spanaly_8f.html',1,'']]], - ['spdz2uv_282',['spdz2uv',['../spdz2uv_8f.html#ae3a4a74c49f78a25425b610743dc0692',1,'spdz2uv.f']]], - ['spdz2uv_2ef_283',['spdz2uv.f',['../spdz2uv_8f.html',1,'']]], - ['spectral_5finterp_5fid_284',['spectral_interp_id',['../namespaceip__interpolators__mod.html#a83ba2963a0b686c6ae67b53f9c385851',1,'ip_interpolators_mod']]], - ['spectral_5finterp_5fmod_285',['spectral_interp_mod',['../namespacespectral__interp__mod.html',1,'']]], - ['spectral_5finterp_5fmod_2ef90_286',['spectral_interp_mod.F90',['../spectral__interp__mod_8F90.html',1,'']]], - ['speps_287',['speps',['../speps_8f.html#a0ab523ec5e1393ffca970897e63a9131',1,'speps.f']]], - ['speps_2ef_288',['speps.f',['../speps_8f.html',1,'']]], - ['spfft_289',['spfft',['../spfft_8f.html#a1041af8ac4f6a2407b5b7a799a13fb5d',1,'spfft.f']]], - ['spfft_2ef_290',['spfft.f',['../spfft_8f.html',1,'']]], - ['spfft1_291',['spfft1',['../spfft1_8f.html#ac63643472eda83948c0b249b611346d6',1,'spfft1.f']]], - ['spfft1_2ef_292',['spfft1.f',['../spfft1_8f.html',1,'']]], - ['spffte_293',['spffte',['../spffte_8f.html#af06489254bd3e99030b39744fce32233',1,'spffte.f']]], - ['spffte_2ef_294',['spffte.f',['../spffte_8f.html',1,'']]], - ['spfftpt_295',['spfftpt',['../spfftpt_8f.html#ad16e674ce87bd762a714853967f81356',1,'spfftpt.f']]], - ['spfftpt_2ef_296',['spfftpt.f',['../spfftpt_8f.html',1,'']]], - ['spgradq_297',['spgradq',['../spgradq_8f.html#a0bb358cf2a405ce9f17c6e5dfde65849',1,'spgradq.f']]], - ['spgradq_2ef_298',['spgradq.f',['../spgradq_8f.html',1,'']]], - ['spgradx_299',['spgradx',['../spgradx_8f.html#a749bc07e763e9cd44490fff2284d00b4',1,'spgradx.f']]], - ['spgradx_2ef_300',['spgradx.f',['../spgradx_8f.html',1,'']]], - ['spgrady_301',['spgrady',['../spgrady_8f.html#a1b3e38e56560de7d7dcf19ea3e931cf1',1,'spgrady.f']]], - ['spgrady_2ef_302',['spgrady.f',['../spgrady_8f.html',1,'']]], - ['splaplac_303',['splaplac',['../splaplac_8f.html#a64338955857a3cf58283146940e7ae42',1,'splaplac.f']]], - ['splaplac_2ef_304',['splaplac.f',['../splaplac_8f.html',1,'']]], - ['splat_305',['splat',['../splat_8F.html#aa6db21451bb67635e7e4426546140e11',1,'splat.F']]], - ['splat_2ef_306',['splat.F',['../splat_8F.html',1,'']]], - ['splegend_307',['splegend',['../splegend_8f.html#a9c68adc80e97c43ac983b955dd6cabac',1,'splegend.f']]], - ['splegend_2ef_308',['splegend.f',['../splegend_8f.html',1,'']]], - ['sppad_309',['sppad',['../sppad_8f.html#a4338b3ccd7844251bbdabf3da1d6476e',1,'sppad.f']]], - ['sppad_2ef_310',['sppad.f',['../sppad_8f.html',1,'']]], - ['spsynth_311',['spsynth',['../spsynth_8f.html#aa6a8113a459918728c876673520126bf',1,'spsynth.f']]], - ['spsynth_2ef_312',['spsynth.f',['../spsynth_8f.html',1,'']]], - ['sptez_313',['sptez',['../sptez_8f.html#a418a7d182834b2e2dafae2fe881ba9fc',1,'sptez.f']]], - ['sptez_2ef_314',['sptez.f',['../sptez_8f.html',1,'']]], - ['sptezd_315',['sptezd',['../sptezd_8f.html#a6c30b52dcb4da9e403eeeb307b9516d7',1,'sptezd.f']]], - ['sptezd_2ef_316',['sptezd.f',['../sptezd_8f.html',1,'']]], - ['sptezm_317',['sptezm',['../sptezm_8f.html#a1430a0df2cba7eefaf67c939684be2d1',1,'sptezm.f']]], - ['sptezm_2ef_318',['sptezm.f',['../sptezm_8f.html',1,'']]], - ['sptezmd_319',['sptezmd',['../sptezmd_8f.html#a2b9ead06893e51604bfb18928ddee996',1,'sptezmd.f']]], - ['sptezmd_2ef_320',['sptezmd.f',['../sptezmd_8f.html',1,'']]], - ['sptezmv_321',['sptezmv',['../sptezmv_8f.html#a22dc4fc10c5225ec8d3c12ed3cb4786e',1,'sptezmv.f']]], - ['sptezmv_2ef_322',['sptezmv.f',['../sptezmv_8f.html',1,'']]], - ['sptezv_323',['sptezv',['../sptezv_8f.html#a83e49d961c40a2621c3f2afe70846226',1,'sptezv.f']]], - ['sptezv_2ef_324',['sptezv.f',['../sptezv_8f.html',1,'']]], - ['sptgpm_325',['sptgpm',['../sptgpm_8f.html#a6cffaeaa602eaae5c03166f48065158d',1,'sptgpm.f']]], - ['sptgpm_2ef_326',['sptgpm.f',['../sptgpm_8f.html',1,'']]], - ['sptgpmd_327',['sptgpmd',['../sptgpmd_8f.html#af71718c75a2b24b74fa7e1e4318d0539',1,'sptgpmd.f']]], - ['sptgpmd_2ef_328',['sptgpmd.f',['../sptgpmd_8f.html',1,'']]], - ['sptgpmv_329',['sptgpmv',['../sptgpmv_8f.html#a15de3accfd448d116324872c8fb1bb17',1,'sptgpmv.f']]], - ['sptgpmv_2ef_330',['sptgpmv.f',['../sptgpmv_8f.html',1,'']]], - ['sptgps_331',['sptgps',['../sptgps_8f.html#af06a2dccfa311014fc9f671b14f247b2',1,'sptgps.f']]], - ['sptgps_2ef_332',['sptgps.f',['../sptgps_8f.html',1,'']]], - ['sptgpsd_333',['sptgpsd',['../sptgpsd_8f.html#ad6d10c3360c47558a8116b2f5666ed30',1,'sptgpsd.f']]], - ['sptgpsd_2ef_334',['sptgpsd.f',['../sptgpsd_8f.html',1,'']]], - ['sptgpsv_335',['sptgpsv',['../sptgpsv_8f.html#af2bf2335047ec277730564dbfa859079',1,'sptgpsv.f']]], - ['sptgpsv_2ef_336',['sptgpsv.f',['../sptgpsv_8f.html',1,'']]], - ['sptgpt_337',['sptgpt',['../sptgpt_8f.html#a1b8d333bcc601e5b7e8d3dd1369f54b1',1,'sptgpt.f']]], - ['sptgpt_2ef_338',['sptgpt.f',['../sptgpt_8f.html',1,'']]], - ['sptgptd_339',['sptgptd',['../sptgptd_8f.html#a64d1fe761662182ca3495531152d1cd3',1,'sptgptd.f']]], - ['sptgptd_2ef_340',['sptgptd.f',['../sptgptd_8f.html',1,'']]], - ['sptgptsd_341',['sptgptsd',['../sptgptsd_8f.html#ad3ab15089a57b493cc74443ea3b3d88f',1,'sptgptsd.f']]], - ['sptgptsd_2ef_342',['sptgptsd.f',['../sptgptsd_8f.html',1,'']]], - ['sptgptv_343',['sptgptv',['../sptgptv_8f.html#a9af8a22564d132a887a5237f30710f13',1,'sptgptv.f']]], - ['sptgptv_2ef_344',['sptgptv.f',['../sptgptv_8f.html',1,'']]], - ['sptgptvd_345',['sptgptvd',['../sptgptvd_8f.html#ae03c6c76cad685ae1ed32d74bcba6753',1,'sptgptvd.f']]], - ['sptgptvd_2ef_346',['sptgptvd.f',['../sptgptvd_8f.html',1,'']]], - ['sptran_347',['sptran',['../sptran_8f.html#af7610e42f0dcd199b8cf80f851dcfed0',1,'sptran.f']]], - ['sptran_2ef_348',['sptran.f',['../sptran_8f.html',1,'']]], - ['sptrand_349',['sptrand',['../sptrand_8f.html#ae810abad32bcbdfb8345a30e50bcc1ef',1,'sptrand.f']]], - ['sptrand_2ef_350',['sptrand.f',['../sptrand_8f.html',1,'']]], - ['sptranf_351',['sptranf',['../sptranf_8f.html#acf086b5141203e48bdb7250441a16c8c',1,'sptranf.f']]], - ['sptranf_2ef_352',['sptranf.f',['../sptranf_8f.html',1,'']]], - ['sptranf0_353',['sptranf0',['../sptranf0_8f.html#aaf9f9002ccd7074dc04dbc40a5aad9f0',1,'sptranf0.f']]], - ['sptranf0_2ef_354',['sptranf0.f',['../sptranf0_8f.html',1,'']]], - ['sptranf1_355',['sptranf1',['../sptranf1_8f.html#ad7cec2fd6729ca84b1fac3436f9730e6',1,'sptranf1.f']]], - ['sptranf1_2ef_356',['sptranf1.f',['../sptranf1_8f.html',1,'']]], - ['sptranfv_357',['sptranfv',['../sptranfv_8f.html#a1a7aabbd358d4fe984dac6813c98b106',1,'sptranfv.f']]], - ['sptranfv_2ef_358',['sptranfv.f',['../sptranfv_8f.html',1,'']]], - ['sptranv_359',['sptranv',['../sptranv_8f.html#a7d6aaa3ed70df1dfaf8dd4443b7190c1',1,'sptranv.f']]], - ['sptranv_2ef_360',['sptranv.f',['../sptranv_8f.html',1,'']]], - ['sptrun_361',['sptrun',['../sptrun_8f.html#a1f04574fbd5018f73b68bd2cd0ffc473',1,'sptrun.f']]], - ['sptrun_2ef_362',['sptrun.f',['../sptrun_8f.html',1,'']]], - ['sptrund_363',['sptrund',['../sptrund_8f.html#a2636d99e658dfabd4b85f15a76fca480',1,'sptrund.f']]], - ['sptrund_2ef_364',['sptrund.f',['../sptrund_8f.html',1,'']]], - ['sptrung_365',['sptrung',['../sptrung_8f.html#af41b64dad4789617a315515ef885912c',1,'sptrung.f']]], - ['sptrung_2ef_366',['sptrung.f',['../sptrung_8f.html',1,'']]], - ['sptrungv_367',['sptrungv',['../sptrungv_8f.html#ab7bbe6ecde57394b15e5d4925cb07164',1,'sptrungv.f']]], - ['sptrungv_2ef_368',['sptrungv.f',['../sptrungv_8f.html',1,'']]], - ['sptrunl_369',['sptrunl',['../sptrunl_8f.html#a52c4250d24e52304e49aa1d82a93bdb8',1,'sptrunl.f']]], - ['sptrunl_2ef_370',['sptrunl.f',['../sptrunl_8f.html',1,'']]], - ['sptrunm_371',['sptrunm',['../sptrunm_8f.html#a2a4e579890d3cf7f6a26091f544b6cb6',1,'sptrunm.f']]], - ['sptrunm_2ef_372',['sptrunm.f',['../sptrunm_8f.html',1,'']]], - ['sptrunmv_373',['sptrunmv',['../sptrunmv_8f.html#a8b405d0621112d6852a3bb99602ac2fd',1,'sptrunmv.f']]], - ['sptrunmv_2ef_374',['sptrunmv.f',['../sptrunmv_8f.html',1,'']]], - ['sptruns_375',['sptruns',['../sptruns_8f.html#a34f156e2049105d012e445f8aa215444',1,'sptruns.f']]], - ['sptruns_2ef_376',['sptruns.f',['../sptruns_8f.html',1,'']]], - ['sptrunsv_377',['sptrunsv',['../sptrunsv_8f.html#a1373b651b9dea586e33d3033aae68656',1,'sptrunsv.f']]], - ['sptrunsv_2ef_378',['sptrunsv.f',['../sptrunsv_8f.html',1,'']]], - ['sptrunv_379',['sptrunv',['../sptrunv_8f.html#a9aa39c13dd38585b3afb30cb2486817f',1,'sptrunv.f']]], - ['sptrunv_2ef_380',['sptrunv.f',['../sptrunv_8f.html',1,'']]], - ['spuv2dz_381',['spuv2dz',['../spuv2dz_8f.html#a27edc2d10e0a76a45e4aaae58bf018b9',1,'spuv2dz.f']]], - ['spuv2dz_2ef_382',['spuv2dz.f',['../spuv2dz_8f.html',1,'']]], - ['spvar_383',['spvar',['../spvar_8f.html#a840f95e09b8d930b38638a391933bee4',1,'spvar.f']]], - ['spvar_2ef_384',['spvar.f',['../spvar_8f.html',1,'']]], - ['spwget_385',['spwget',['../spwget_8f.html#a9b6ce78350f7adf2fed874a18312c7a6',1,'spwget.f']]], - ['spwget_2ef_386',['spwget.f',['../spwget_8f.html',1,'']]], - ['srcft_387',['srcft',['../fftpack_8F.html#acf248c4f27a9fa81cffdfded50eee742',1,'fftpack.F']]] + ['sbd_276',['sbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a246ec0afc422f6cfcc3758ff62c6017f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]], + ['scfft_277',['scfft',['../fftpack_8F.html#a369071ea2d380c9d91ba36d1bf375e33',1,'fftpack.F']]], + ['scrft_278',['scrft',['../fftpack_8F.html#ac69cbd64be972c20a4424f5327fb4b36',1,'fftpack.F']]], + ['slat_279',['slat',['../namespaceip__rot__equid__cylind__egrid__mod.html#ae1f8503816477fb685fbadc7a9e50f0b',1,'ip_rot_equid_cylind_egrid_mod']]], + ['slat0_280',['slat0',['../namespaceip__rot__equid__cylind__grid__mod.html#a64831f92d5306513987a98e97a32aea1',1,'ip_rot_equid_cylind_grid_mod::slat0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a72199c827ab3218b7f2aba35ad30b94d',1,'ip_rot_equid_cylind_egrid_mod::slat0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a8a02c6fc1ad38174e15679e69b5cbfdc',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::slat0()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#aca4b0ae69f756ef4854369bf88423d66',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::slat0()']]], + ['slatr_281',['slatr',['../namespaceip__rot__equid__cylind__egrid__mod.html#a4ccccb64d3e7236d8cac19c279aab900',1,'ip_rot_equid_cylind_egrid_mod::slatr()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aae4f801c95b7b61e2e6b1dd824d3688b',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::slatr()']]], + ['spanaly_282',['spanaly',['../spanaly_8f.html#a5cc846d796d393d7499cde0f3d1d6e6a',1,'spanaly.f']]], + ['spanaly_2ef_283',['spanaly.f',['../spanaly_8f.html',1,'']]], + ['spdz2uv_284',['spdz2uv',['../spdz2uv_8f.html#ae3a4a74c49f78a25425b610743dc0692',1,'spdz2uv.f']]], + ['spdz2uv_2ef_285',['spdz2uv.f',['../spdz2uv_8f.html',1,'']]], + ['spectral_5finterp_5fid_286',['spectral_interp_id',['../namespaceip__interpolators__mod.html#a83ba2963a0b686c6ae67b53f9c385851',1,'ip_interpolators_mod']]], + ['spectral_5finterp_5fmod_287',['spectral_interp_mod',['../namespacespectral__interp__mod.html',1,'']]], + ['spectral_5finterp_5fmod_2ef90_288',['spectral_interp_mod.F90',['../spectral__interp__mod_8F90.html',1,'']]], + ['speps_289',['speps',['../speps_8f.html#a0ab523ec5e1393ffca970897e63a9131',1,'speps.f']]], + ['speps_2ef_290',['speps.f',['../speps_8f.html',1,'']]], + ['spfft_291',['spfft',['../spfft_8f.html#a1041af8ac4f6a2407b5b7a799a13fb5d',1,'spfft.f']]], + ['spfft_2ef_292',['spfft.f',['../spfft_8f.html',1,'']]], + ['spfft1_293',['spfft1',['../spfft1_8f.html#ac63643472eda83948c0b249b611346d6',1,'spfft1.f']]], + ['spfft1_2ef_294',['spfft1.f',['../spfft1_8f.html',1,'']]], + ['spffte_295',['spffte',['../spffte_8f.html#af06489254bd3e99030b39744fce32233',1,'spffte.f']]], + ['spffte_2ef_296',['spffte.f',['../spffte_8f.html',1,'']]], + ['spfftpt_297',['spfftpt',['../spfftpt_8f.html#ad16e674ce87bd762a714853967f81356',1,'spfftpt.f']]], + ['spfftpt_2ef_298',['spfftpt.f',['../spfftpt_8f.html',1,'']]], + ['spgradq_299',['spgradq',['../spgradq_8f.html#a0bb358cf2a405ce9f17c6e5dfde65849',1,'spgradq.f']]], + ['spgradq_2ef_300',['spgradq.f',['../spgradq_8f.html',1,'']]], + ['spgradx_301',['spgradx',['../spgradx_8f.html#a749bc07e763e9cd44490fff2284d00b4',1,'spgradx.f']]], + ['spgradx_2ef_302',['spgradx.f',['../spgradx_8f.html',1,'']]], + ['spgrady_303',['spgrady',['../spgrady_8f.html#a1b3e38e56560de7d7dcf19ea3e931cf1',1,'spgrady.f']]], + ['spgrady_2ef_304',['spgrady.f',['../spgrady_8f.html',1,'']]], + ['splaplac_305',['splaplac',['../splaplac_8f.html#a64338955857a3cf58283146940e7ae42',1,'splaplac.f']]], + ['splaplac_2ef_306',['splaplac.f',['../splaplac_8f.html',1,'']]], + ['splat_307',['splat',['../splat_8F.html#aa6db21451bb67635e7e4426546140e11',1,'splat.F']]], + ['splat_2ef_308',['splat.F',['../splat_8F.html',1,'']]], + ['splegend_309',['splegend',['../splegend_8f.html#a9c68adc80e97c43ac983b955dd6cabac',1,'splegend.f']]], + ['splegend_2ef_310',['splegend.f',['../splegend_8f.html',1,'']]], + ['sppad_311',['sppad',['../sppad_8f.html#a4338b3ccd7844251bbdabf3da1d6476e',1,'sppad.f']]], + ['sppad_2ef_312',['sppad.f',['../sppad_8f.html',1,'']]], + ['spsynth_313',['spsynth',['../spsynth_8f.html#aa6a8113a459918728c876673520126bf',1,'spsynth.f']]], + ['spsynth_2ef_314',['spsynth.f',['../spsynth_8f.html',1,'']]], + ['sptez_315',['sptez',['../sptez_8f.html#a418a7d182834b2e2dafae2fe881ba9fc',1,'sptez.f']]], + ['sptez_2ef_316',['sptez.f',['../sptez_8f.html',1,'']]], + ['sptezd_317',['sptezd',['../sptezd_8f.html#a6c30b52dcb4da9e403eeeb307b9516d7',1,'sptezd.f']]], + ['sptezd_2ef_318',['sptezd.f',['../sptezd_8f.html',1,'']]], + ['sptezm_319',['sptezm',['../sptezm_8f.html#a1430a0df2cba7eefaf67c939684be2d1',1,'sptezm.f']]], + ['sptezm_2ef_320',['sptezm.f',['../sptezm_8f.html',1,'']]], + ['sptezmd_321',['sptezmd',['../sptezmd_8f.html#a2b9ead06893e51604bfb18928ddee996',1,'sptezmd.f']]], + ['sptezmd_2ef_322',['sptezmd.f',['../sptezmd_8f.html',1,'']]], + ['sptezmv_323',['sptezmv',['../sptezmv_8f.html#a22dc4fc10c5225ec8d3c12ed3cb4786e',1,'sptezmv.f']]], + ['sptezmv_2ef_324',['sptezmv.f',['../sptezmv_8f.html',1,'']]], + ['sptezv_325',['sptezv',['../sptezv_8f.html#a83e49d961c40a2621c3f2afe70846226',1,'sptezv.f']]], + ['sptezv_2ef_326',['sptezv.f',['../sptezv_8f.html',1,'']]], + ['sptgpm_327',['sptgpm',['../sptgpm_8f.html#a6cffaeaa602eaae5c03166f48065158d',1,'sptgpm.f']]], + ['sptgpm_2ef_328',['sptgpm.f',['../sptgpm_8f.html',1,'']]], + ['sptgpmd_329',['sptgpmd',['../sptgpmd_8f.html#af71718c75a2b24b74fa7e1e4318d0539',1,'sptgpmd.f']]], + ['sptgpmd_2ef_330',['sptgpmd.f',['../sptgpmd_8f.html',1,'']]], + ['sptgpmv_331',['sptgpmv',['../sptgpmv_8f.html#a15de3accfd448d116324872c8fb1bb17',1,'sptgpmv.f']]], + ['sptgpmv_2ef_332',['sptgpmv.f',['../sptgpmv_8f.html',1,'']]], + ['sptgps_333',['sptgps',['../sptgps_8f.html#af06a2dccfa311014fc9f671b14f247b2',1,'sptgps.f']]], + ['sptgps_2ef_334',['sptgps.f',['../sptgps_8f.html',1,'']]], + ['sptgpsd_335',['sptgpsd',['../sptgpsd_8f.html#ad6d10c3360c47558a8116b2f5666ed30',1,'sptgpsd.f']]], + ['sptgpsd_2ef_336',['sptgpsd.f',['../sptgpsd_8f.html',1,'']]], + ['sptgpsv_337',['sptgpsv',['../sptgpsv_8f.html#af2bf2335047ec277730564dbfa859079',1,'sptgpsv.f']]], + ['sptgpsv_2ef_338',['sptgpsv.f',['../sptgpsv_8f.html',1,'']]], + ['sptgpt_339',['sptgpt',['../sptgpt_8f.html#a1b8d333bcc601e5b7e8d3dd1369f54b1',1,'sptgpt.f']]], + ['sptgpt_2ef_340',['sptgpt.f',['../sptgpt_8f.html',1,'']]], + ['sptgptd_341',['sptgptd',['../sptgptd_8f.html#a64d1fe761662182ca3495531152d1cd3',1,'sptgptd.f']]], + ['sptgptd_2ef_342',['sptgptd.f',['../sptgptd_8f.html',1,'']]], + ['sptgptsd_343',['sptgptsd',['../sptgptsd_8f.html#ad3ab15089a57b493cc74443ea3b3d88f',1,'sptgptsd.f']]], + ['sptgptsd_2ef_344',['sptgptsd.f',['../sptgptsd_8f.html',1,'']]], + ['sptgptv_345',['sptgptv',['../sptgptv_8f.html#a9af8a22564d132a887a5237f30710f13',1,'sptgptv.f']]], + ['sptgptv_2ef_346',['sptgptv.f',['../sptgptv_8f.html',1,'']]], + ['sptgptvd_347',['sptgptvd',['../sptgptvd_8f.html#ae03c6c76cad685ae1ed32d74bcba6753',1,'sptgptvd.f']]], + ['sptgptvd_2ef_348',['sptgptvd.f',['../sptgptvd_8f.html',1,'']]], + ['sptran_349',['sptran',['../sptran_8f.html#af7610e42f0dcd199b8cf80f851dcfed0',1,'sptran.f']]], + ['sptran_2ef_350',['sptran.f',['../sptran_8f.html',1,'']]], + ['sptrand_351',['sptrand',['../sptrand_8f.html#ae810abad32bcbdfb8345a30e50bcc1ef',1,'sptrand.f']]], + ['sptrand_2ef_352',['sptrand.f',['../sptrand_8f.html',1,'']]], + ['sptranf_353',['sptranf',['../sptranf_8f.html#acf086b5141203e48bdb7250441a16c8c',1,'sptranf.f']]], + ['sptranf_2ef_354',['sptranf.f',['../sptranf_8f.html',1,'']]], + ['sptranf0_355',['sptranf0',['../sptranf0_8f.html#aaf9f9002ccd7074dc04dbc40a5aad9f0',1,'sptranf0.f']]], + ['sptranf0_2ef_356',['sptranf0.f',['../sptranf0_8f.html',1,'']]], + ['sptranf1_357',['sptranf1',['../sptranf1_8f.html#ad7cec2fd6729ca84b1fac3436f9730e6',1,'sptranf1.f']]], + ['sptranf1_2ef_358',['sptranf1.f',['../sptranf1_8f.html',1,'']]], + ['sptranfv_359',['sptranfv',['../sptranfv_8f.html#a1a7aabbd358d4fe984dac6813c98b106',1,'sptranfv.f']]], + ['sptranfv_2ef_360',['sptranfv.f',['../sptranfv_8f.html',1,'']]], + ['sptranv_361',['sptranv',['../sptranv_8f.html#a7d6aaa3ed70df1dfaf8dd4443b7190c1',1,'sptranv.f']]], + ['sptranv_2ef_362',['sptranv.f',['../sptranv_8f.html',1,'']]], + ['sptrun_363',['sptrun',['../sptrun_8f.html#a1f04574fbd5018f73b68bd2cd0ffc473',1,'sptrun.f']]], + ['sptrun_2ef_364',['sptrun.f',['../sptrun_8f.html',1,'']]], + ['sptrund_365',['sptrund',['../sptrund_8f.html#a2636d99e658dfabd4b85f15a76fca480',1,'sptrund.f']]], + ['sptrund_2ef_366',['sptrund.f',['../sptrund_8f.html',1,'']]], + ['sptrung_367',['sptrung',['../sptrung_8f.html#af41b64dad4789617a315515ef885912c',1,'sptrung.f']]], + ['sptrung_2ef_368',['sptrung.f',['../sptrung_8f.html',1,'']]], + ['sptrungv_369',['sptrungv',['../sptrungv_8f.html#ab7bbe6ecde57394b15e5d4925cb07164',1,'sptrungv.f']]], + ['sptrungv_2ef_370',['sptrungv.f',['../sptrungv_8f.html',1,'']]], + ['sptrunl_371',['sptrunl',['../sptrunl_8f.html#a52c4250d24e52304e49aa1d82a93bdb8',1,'sptrunl.f']]], + ['sptrunl_2ef_372',['sptrunl.f',['../sptrunl_8f.html',1,'']]], + ['sptrunm_373',['sptrunm',['../sptrunm_8f.html#a2a4e579890d3cf7f6a26091f544b6cb6',1,'sptrunm.f']]], + ['sptrunm_2ef_374',['sptrunm.f',['../sptrunm_8f.html',1,'']]], + ['sptrunmv_375',['sptrunmv',['../sptrunmv_8f.html#a8b405d0621112d6852a3bb99602ac2fd',1,'sptrunmv.f']]], + ['sptrunmv_2ef_376',['sptrunmv.f',['../sptrunmv_8f.html',1,'']]], + ['sptruns_377',['sptruns',['../sptruns_8f.html#a34f156e2049105d012e445f8aa215444',1,'sptruns.f']]], + ['sptruns_2ef_378',['sptruns.f',['../sptruns_8f.html',1,'']]], + ['sptrunsv_379',['sptrunsv',['../sptrunsv_8f.html#a1373b651b9dea586e33d3033aae68656',1,'sptrunsv.f']]], + ['sptrunsv_2ef_380',['sptrunsv.f',['../sptrunsv_8f.html',1,'']]], + ['sptrunv_381',['sptrunv',['../sptrunv_8f.html#a9aa39c13dd38585b3afb30cb2486817f',1,'sptrunv.f']]], + ['sptrunv_2ef_382',['sptrunv.f',['../sptrunv_8f.html',1,'']]], + ['spuv2dz_383',['spuv2dz',['../spuv2dz_8f.html#a27edc2d10e0a76a45e4aaae58bf018b9',1,'spuv2dz.f']]], + ['spuv2dz_2ef_384',['spuv2dz.f',['../spuv2dz_8f.html',1,'']]], + ['spvar_385',['spvar',['../spvar_8f.html#a840f95e09b8d930b38638a391933bee4',1,'spvar.f']]], + ['spvar_2ef_386',['spvar.f',['../spvar_8f.html',1,'']]], + ['spwget_387',['spwget',['../spwget_8f.html#a9b6ce78350f7adf2fed874a18312c7a6',1,'spwget.f']]], + ['spwget_2ef_388',['spwget.f',['../spwget_8f.html',1,'']]], + ['srcft_389',['srcft',['../fftpack_8F.html#acf248c4f27a9fa81cffdfded50eee742',1,'fftpack.F']]] ]; diff --git a/search/all_12.js b/search/all_12.js index c15dac75..9f80c09a 100644 --- a/search/all_12.js +++ b/search/all_12.js @@ -1,4 +1,5 @@ var searchData= [ - ['wbd_388',['wbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a33ae1763c4f1267091bee36a9c92e46a',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]] + ['unuse_5fncep_5fpost_5farakawa_390',['unuse_ncep_post_arakawa',['../namespaceip__grid__mod.html#ac8e716adbe5c1156bfd20f936a4205de',1,'ip_grid_mod']]], + ['use_5fncep_5fpost_5farakawa_391',['use_ncep_post_arakawa',['../namespaceip__grid__mod.html#a1d570947cf124c28ba67305494bff450',1,'ip_grid_mod']]] ]; diff --git a/search/all_13.js b/search/all_13.js index b9f18bc0..5e1cafb9 100644 --- a/search/all_13.js +++ b/search/all_13.js @@ -1,4 +1,4 @@ var searchData= [ - ['ylat_5frow_389',['ylat_row',['../namespaceip__gaussian__grid__mod.html#a3591b5701f3d03931c6a9d5278e161dc',1,'ip_gaussian_grid_mod']]] + ['wbd_392',['wbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a33ae1763c4f1267091bee36a9c92e46a',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]] ]; diff --git a/search/all_14.html b/search/all_14.html new file mode 100644 index 00000000..afecf563 --- /dev/null +++ b/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 00000000..352c9ffe --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ylat_5frow_393',['ylat_row',['../namespaceip__gaussian__grid__mod.html#a3591b5701f3d03931c6a9d5278e161dc',1,'ip_gaussian_grid_mod']]] +]; diff --git a/search/all_8.js b/search/all_8.js index 3d35463c..d0920be4 100644 --- a/search/all_8.js +++ b/search/all_8.js @@ -3,105 +3,107 @@ var searchData= ['im_78',['im',['../structip__grid__mod_1_1ip__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc',1,'ip_grid_mod::ip_grid']]], ['init_79',['init',['../structip__grid__mod_1_1ip__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c',1,'ip_grid_mod::ip_grid']]], ['init_5fdescriptor_80',['init_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html',1,'ip_grid_descriptor_mod']]], - ['init_5fgrib1_81',['init_grib1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a68fb7543888cc76885560709184e7d70',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib1()'],['../namespaceip__equid__cylind__grid__mod.html#a3d0132823d27b60835ebb59ead173477',1,'ip_equid_cylind_grid_mod::init_grib1()'],['../namespaceip__gaussian__grid__mod.html#a8fe2ee732a3a2db4891a6431787a0b01',1,'ip_gaussian_grid_mod::init_grib1()'],['../namespaceip__lambert__conf__grid__mod.html#a5544708e893ffcfbe7d958fdec700eea',1,'ip_lambert_conf_grid_mod::init_grib1()'],['../namespaceip__mercator__grid__mod.html#a4125dba8b09e9b69933e224b00f4758d',1,'ip_mercator_grid_mod::init_grib1()'],['../namespaceip__polar__stereo__grid__mod.html#a6ed76f58f30993cd7be84b7e03cf4d6f',1,'ip_polar_stereo_grid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#aa65616b97df9c89893161ff802e16eab',1,'ip_rot_equid_cylind_egrid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__grid__mod.html#acb27dfdc6f03dea897d509910365afee',1,'ip_rot_equid_cylind_grid_mod::init_grib1()'],['../namespaceip__station__points__grid__mod.html#a4b28ebf2b4fe826c96af69db28e0a1ff',1,'ip_station_points_grid_mod::init_grib1()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#aa5ec2cbc9bf0dadf20a226e0afeb3d32',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib1()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a9942c787bda2e118f1355476670edfca',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#ab9a85830bfd06183a8df73726f62217a',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ae2a5a7c08e4578f3d0ff6b85e5a14cce',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3ae3bbb47f4c03c36404a2b35014d65c',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a35dd86b4a9017f5b03a0a6a01eb4d370',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib1()'],['../structip__grid__mod_1_1ip__grid.html#a5a2c16279eb73a0c54ae0a1586d5b806',1,'ip_grid_mod::ip_grid::init_grib1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#afd3658924783d5dbbd3fe5f07d5b60a7',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib1()']]], + ['init_5fgrib1_81',['init_grib1',['../namespaceip__station__points__grid__mod.html#a4b28ebf2b4fe826c96af69db28e0a1ff',1,'ip_station_points_grid_mod::init_grib1()'],['../namespaceip__gaussian__grid__mod.html#a8fe2ee732a3a2db4891a6431787a0b01',1,'ip_gaussian_grid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__grid__mod.html#acb27dfdc6f03dea897d509910365afee',1,'ip_rot_equid_cylind_grid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#aa65616b97df9c89893161ff802e16eab',1,'ip_rot_equid_cylind_egrid_mod::init_grib1()'],['../namespaceip__polar__stereo__grid__mod.html#a6ed76f58f30993cd7be84b7e03cf4d6f',1,'ip_polar_stereo_grid_mod::init_grib1()'],['../namespaceip__mercator__grid__mod.html#a4125dba8b09e9b69933e224b00f4758d',1,'ip_mercator_grid_mod::init_grib1()'],['../namespaceip__lambert__conf__grid__mod.html#a5544708e893ffcfbe7d958fdec700eea',1,'ip_lambert_conf_grid_mod::init_grib1()'],['../namespaceip__equid__cylind__grid__mod.html#a3d0132823d27b60835ebb59ead173477',1,'ip_equid_cylind_grid_mod::init_grib1()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#aa5ec2cbc9bf0dadf20a226e0afeb3d32',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib1()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a9942c787bda2e118f1355476670edfca',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#ab9a85830bfd06183a8df73726f62217a',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ae2a5a7c08e4578f3d0ff6b85e5a14cce',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3ae3bbb47f4c03c36404a2b35014d65c',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a35dd86b4a9017f5b03a0a6a01eb4d370',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib1()'],['../structip__grid__mod_1_1ip__grid.html#a5a2c16279eb73a0c54ae0a1586d5b806',1,'ip_grid_mod::ip_grid::init_grib1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#afd3658924783d5dbbd3fe5f07d5b60a7',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib1()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a68fb7543888cc76885560709184e7d70',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib1()']]], ['init_5fgrib1_5fdescriptor_82',['init_grib1_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a3b5b267aa7a17a4615dcc0cb4e590f6e',1,'ip_grid_descriptor_mod::init_descriptor::init_grib1_descriptor()'],['../namespaceip__grid__descriptor__mod.html#aa00884a7fca018535eaf0c2ebe26bc98',1,'ip_grid_descriptor_mod::init_grib1_descriptor()']]], ['init_5fgrib1_5finterface_83',['init_grib1_interface',['../interfaceip__grid__mod_1_1init__grib1__interface.html#a47e255b76f02fe58a1aebdadcc5894eb',1,'ip_grid_mod::init_grib1_interface::init_grib1_interface()'],['../interfaceip__grid__mod_1_1init__grib1__interface.html',1,'ip_grid_mod::init_grib1_interface']]], - ['init_5fgrib2_84',['init_grib2',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a378b72a1b6090acb90a36385ab9eda5a',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib2()'],['../namespaceip__station__points__grid__mod.html#ad17e6d245295803b62b146be984f874d',1,'ip_station_points_grid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__grid__mod.html#add3c6c1dad5748b452d291df6619867d',1,'ip_rot_equid_cylind_grid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#af3cbc17f27800bc67135feacb2c1c3e0',1,'ip_rot_equid_cylind_egrid_mod::init_grib2()'],['../namespaceip__polar__stereo__grid__mod.html#a5210b986366b503683ae966519d501e7',1,'ip_polar_stereo_grid_mod::init_grib2()'],['../namespaceip__mercator__grid__mod.html#aad3b6fef6ee74b8df984c0159ff29c82',1,'ip_mercator_grid_mod::init_grib2()'],['../namespaceip__lambert__conf__grid__mod.html#acb0339a9fff4fff6c2017d37f8bed0cf',1,'ip_lambert_conf_grid_mod::init_grib2()'],['../namespaceip__gaussian__grid__mod.html#ae048ac033628515113b11b8c7364e0c2',1,'ip_gaussian_grid_mod::init_grib2()'],['../namespaceip__equid__cylind__grid__mod.html#a39d24c9468ecb7effd16972fd72e088a',1,'ip_equid_cylind_grid_mod::init_grib2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a8dd212953e754964770fa1c3d4bcd3db',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib2()'],['../structip__grid__mod_1_1ip__grid.html#ad13e0ad8d616e1839ced388826fefee9',1,'ip_grid_mod::ip_grid::init_grib2()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a64129413df8ea478ab1360fd1a274e9a',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib2()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a505b0114c7ff5fbb58c4e7ce5ccde3f0',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib2()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9622ce9892084b52303f27722572b87c',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib2()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#adda32463a76ad97ac35b01f1ac693fa4',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib2()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a30ae580d169972e8d68c3d97ab3b2634',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib2()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#a69fac68e7a40d5c3106a47bf1851891e',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib2()']]], - ['init_5fgrib2_5fdescriptor_85',['init_grib2_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a6702c4bf3a3d914e5cd2fce8fba4f95c',1,'ip_grid_descriptor_mod::init_descriptor::init_grib2_descriptor()'],['../namespaceip__grid__descriptor__mod.html#a143ac06a2a20697d01606a259213b451',1,'ip_grid_descriptor_mod::init_grib2_descriptor()']]], - ['init_5fgrib2_5finterface_86',['init_grib2_interface',['../interfaceip__grid__mod_1_1init__grib2__interface.html#a25dcec4470effb9b20dfc7981c21ec6c',1,'ip_grid_mod::init_grib2_interface::init_grib2_interface()'],['../interfaceip__grid__mod_1_1init__grib2__interface.html',1,'ip_grid_mod::init_grib2_interface']]], - ['init_5fgrid_87',['init_grid',['../interfaceip__grid__factory__mod_1_1init__grid.html',1,'ip_grid_factory_mod']]], - ['init_5fgrid_5fgeneric_88',['init_grid_generic',['../namespaceip__grid__factory__mod.html#a2d2ea07d353bae8b057471aa99b58e46',1,'ip_grid_factory_mod::init_grid_generic()'],['../interfaceip__grid__factory__mod_1_1init__grid.html#a3fbbec3ddc7dfd918c2abc02e7a4cd72',1,'ip_grid_factory_mod::init_grid::init_grid_generic()']]], - ['init_5fgrid_5fgrib1_89',['init_grid_grib1',['../namespaceip__grid__factory__mod.html#ad8906ed6fe52c2426c0ff09ce50b6fc5',1,'ip_grid_factory_mod']]], - ['init_5fgrid_5fgrib2_90',['init_grid_grib2',['../namespaceip__grid__factory__mod.html#aa187dc8dbd1d004a51cc0e9826ffa225',1,'ip_grid_factory_mod']]], - ['interpolate_5fbicubic_91',['interpolate_bicubic',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html',1,'bicubic_interp_mod']]], - ['interpolate_5fbicubic_5fscalar_92',['interpolate_bicubic_scalar',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#acbfecc99184cf9ae71b2c9f79c7d4077',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_scalar()'],['../namespacebicubic__interp__mod.html#a54a442e47f1be9511c1684a337d7e2d1',1,'bicubic_interp_mod::interpolate_bicubic_scalar()']]], - ['interpolate_5fbicubic_5fvector_93',['interpolate_bicubic_vector',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#aac45c15e1c9d76158d72e62ccaca915b',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_vector()'],['../namespacebicubic__interp__mod.html#a9d27db7d350fc2699aaf5057c3b53d16',1,'bicubic_interp_mod::interpolate_bicubic_vector()']]], - ['interpolate_5fbilinear_94',['interpolate_bilinear',['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html',1,'bilinear_interp_mod']]], - ['interpolate_5fbilinear_5fscalar_95',['interpolate_bilinear_scalar',['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#a3493cf5bc04aa4551ffd4c314ef09a65',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_scalar()'],['../namespacebilinear__interp__mod.html#a34d2eea4682104097dccf3e7ab6a9398',1,'bilinear_interp_mod::interpolate_bilinear_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], - ['interpolate_5fbilinear_5fvector_96',['interpolate_bilinear_vector',['../namespacebilinear__interp__mod.html#abc218f8774d2af09299eb299d6f38e04',1,'bilinear_interp_mod::interpolate_bilinear_vector()'],['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#ab4692c5250b37325f764b38c570892dd',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_vector()']]], - ['interpolate_5fbudget_97',['interpolate_budget',['../interfacebudget__interp__mod_1_1interpolate__budget.html',1,'budget_interp_mod']]], - ['interpolate_5fbudget_5fscalar_98',['interpolate_budget_scalar',['../namespacebudget__interp__mod.html#a09bd6535b0c2e1022cfde39c39d14466',1,'budget_interp_mod::interpolate_budget_scalar()'],['../interfacebudget__interp__mod_1_1interpolate__budget.html#a4b96cbeedb86ef43b687f7ea55914ef0',1,'budget_interp_mod::interpolate_budget::interpolate_budget_scalar()']]], - ['interpolate_5fbudget_5fvector_99',['interpolate_budget_vector',['../namespacebudget__interp__mod.html#abc99486ee9c0091c1514af6114d4e803',1,'budget_interp_mod::interpolate_budget_vector()'],['../interfacebudget__interp__mod_1_1interpolate__budget.html#a573e89e56381d0f69e4022d791a087e6',1,'budget_interp_mod::interpolate_budget::interpolate_budget_vector()']]], - ['interpolate_5fneighbor_100',['interpolate_neighbor',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html',1,'neighbor_interp_mod']]], - ['interpolate_5fneighbor_5fbudget_101',['interpolate_neighbor_budget',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html',1,'neighbor_budget_interp_mod']]], - ['interpolate_5fneighbor_5fbudget_5fscalar_102',['interpolate_neighbor_budget_scalar',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a96e4b145a4df6f4948b1d5ae2da6a71a',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_scalar()'],['../namespaceneighbor__budget__interp__mod.html#a6d5110a9e9facf8c3132ec27d6857817',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_scalar()']]], - ['interpolate_5fneighbor_5fbudget_5fvector_103',['interpolate_neighbor_budget_vector',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a573bd5ac43484aa6d051e58f37ff7c06',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_vector()'],['../namespaceneighbor__budget__interp__mod.html#a4309c1e6b7fc60ded40657fe6c72297e',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_vector()']]], - ['interpolate_5fneighbor_5fscalar_104',['interpolate_neighbor_scalar',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a04ebb54535e67ff95c1d3d64b9cf6246',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_scalar()'],['../namespaceneighbor__interp__mod.html#a78452d1527c6974ad54091f0318e4b1f',1,'neighbor_interp_mod::interpolate_neighbor_scalar()']]], - ['interpolate_5fneighbor_5fvector_105',['interpolate_neighbor_vector',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a4662245e2744fd14628b48f23bf4f0a7',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_vector()'],['../namespaceneighbor__interp__mod.html#a744ccffd8cd6c13d360e634db4851756',1,'neighbor_interp_mod::interpolate_neighbor_vector()']]], - ['interpolate_5fspectral_106',['interpolate_spectral',['../interfacespectral__interp__mod_1_1interpolate__spectral.html',1,'spectral_interp_mod']]], - ['interpolate_5fspectral_5fscalar_107',['interpolate_spectral_scalar',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a79f600a26ecf256a8a13cf4bdbaf2ab1',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_scalar()'],['../namespacespectral__interp__mod.html#a438646d69e941def0ada00d5ca19f618',1,'spectral_interp_mod::interpolate_spectral_scalar()']]], - ['interpolate_5fspectral_5fvector_108',['interpolate_spectral_vector',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a9e939bbb3f7b214fee26c1e77764e487',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_vector()'],['../namespacespectral__interp__mod.html#acb61ad529b7decc2a6ff58dd12fbadd0',1,'spectral_interp_mod::interpolate_spectral_vector()']]], - ['introduction_109',['Introduction',['../index.html',1,'']]], - ['ip_5fconstants_5fmod_110',['ip_constants_mod',['../namespaceip__constants__mod.html',1,'']]], - ['ip_5fconstants_5fmod_2ef90_111',['ip_constants_mod.F90',['../ip__constants__mod_8F90.html',1,'']]], - ['ip_5fequid_5fcylind_5fgrid_112',['ip_equid_cylind_grid',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html',1,'ip_equid_cylind_grid_mod']]], - ['ip_5fequid_5fcylind_5fgrid_5fmod_113',['ip_equid_cylind_grid_mod',['../namespaceip__equid__cylind__grid__mod.html',1,'']]], - ['ip_5fequid_5fcylind_5fgrid_5fmod_2ef90_114',['ip_equid_cylind_grid_mod.F90',['../ip__equid__cylind__grid__mod_8F90.html',1,'']]], - ['ip_5fgaussian_5fgrid_115',['ip_gaussian_grid',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html',1,'ip_gaussian_grid_mod']]], - ['ip_5fgaussian_5fgrid_5fmod_116',['ip_gaussian_grid_mod',['../namespaceip__gaussian__grid__mod.html',1,'']]], - ['ip_5fgaussian_5fgrid_5fmod_2ef90_117',['ip_gaussian_grid_mod.F90',['../ip__gaussian__grid__mod_8F90.html',1,'']]], - ['ip_5fgrid_118',['ip_grid',['../structip__grid__mod_1_1ip__grid.html',1,'ip_grid_mod']]], - ['ip_5fgrid_5fdescriptor_119',['ip_grid_descriptor',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html',1,'ip_grid_descriptor_mod']]], - ['ip_5fgrid_5fdescriptor_5fmod_120',['ip_grid_descriptor_mod',['../namespaceip__grid__descriptor__mod.html',1,'']]], - ['ip_5fgrid_5fdescriptor_5fmod_2ef90_121',['ip_grid_descriptor_mod.F90',['../ip__grid__descriptor__mod_8F90.html',1,'']]], - ['ip_5fgrid_5ffactory_5fmod_122',['ip_grid_factory_mod',['../namespaceip__grid__factory__mod.html',1,'']]], - ['ip_5fgrid_5ffactory_5fmod_2ef90_123',['ip_grid_factory_mod.F90',['../ip__grid__factory__mod_8F90.html',1,'']]], - ['ip_5fgrid_5fmod_124',['ip_grid_mod',['../namespaceip__grid__mod.html',1,'']]], - ['ip_5fgrid_5fmod_2ef90_125',['ip_grid_mod.F90',['../ip__grid__mod_8F90.html',1,'']]], - ['ip_5fgrids_5fmod_126',['ip_grids_mod',['../namespaceip__grids__mod.html',1,'']]], - ['ip_5fgrids_5fmod_2ef90_127',['ip_grids_mod.F90',['../ip__grids__mod_8F90.html',1,'']]], - ['ip_5finterpolators_5fmod_128',['ip_interpolators_mod',['../namespaceip__interpolators__mod.html',1,'']]], - ['ip_5finterpolators_5fmod_2ef90_129',['ip_interpolators_mod.F90',['../ip__interpolators__mod_8F90.html',1,'']]], - ['ip_5flambert_5fconf_5fgrid_130',['ip_lambert_conf_grid',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html',1,'ip_lambert_conf_grid_mod']]], - ['ip_5flambert_5fconf_5fgrid_5fmod_131',['ip_lambert_conf_grid_mod',['../namespaceip__lambert__conf__grid__mod.html',1,'']]], - ['ip_5flambert_5fconf_5fgrid_5fmod_2ef90_132',['ip_lambert_conf_grid_mod.F90',['../ip__lambert__conf__grid__mod_8F90.html',1,'']]], - ['ip_5fmercator_5fgrid_133',['ip_mercator_grid',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html',1,'ip_mercator_grid_mod']]], - ['ip_5fmercator_5fgrid_5fmod_134',['ip_mercator_grid_mod',['../namespaceip__mercator__grid__mod.html',1,'']]], - ['ip_5fmercator_5fgrid_5fmod_2ef90_135',['ip_mercator_grid_mod.F90',['../ip__mercator__grid__mod_8F90.html',1,'']]], - ['ip_5fmod_136',['ip_mod',['../namespaceip__mod.html',1,'']]], - ['ip_5fmod_2ef90_137',['ip_mod.F90',['../ip__mod_8F90.html',1,'']]], - ['ip_5fpolar_5fstereo_5fgrid_138',['ip_polar_stereo_grid',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html',1,'ip_polar_stereo_grid_mod']]], - ['ip_5fpolar_5fstereo_5fgrid_5fmod_139',['ip_polar_stereo_grid_mod',['../namespaceip__polar__stereo__grid__mod.html',1,'']]], - ['ip_5fpolar_5fstereo_5fgrid_5fmod_2ef90_140',['ip_polar_stereo_grid_mod.F90',['../ip__polar__stereo__grid__mod_8F90.html',1,'']]], - ['ip_5frot_5fequid_5fcylind_5fegrid_141',['ip_rot_equid_cylind_egrid',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html',1,'ip_rot_equid_cylind_egrid_mod']]], - ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_142',['ip_rot_equid_cylind_egrid_mod',['../namespaceip__rot__equid__cylind__egrid__mod.html',1,'']]], - ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_2ef90_143',['ip_rot_equid_cylind_egrid_mod.F90',['../ip__rot__equid__cylind__egrid__mod_8F90.html',1,'']]], - ['ip_5frot_5fequid_5fcylind_5fgrid_144',['ip_rot_equid_cylind_grid',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html',1,'ip_rot_equid_cylind_grid_mod']]], - ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_145',['ip_rot_equid_cylind_grid_mod',['../namespaceip__rot__equid__cylind__grid__mod.html',1,'']]], - ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_2ef90_146',['ip_rot_equid_cylind_grid_mod.F90',['../ip__rot__equid__cylind__grid__mod_8F90.html',1,'']]], - ['ip_5fstation_5fpoints_5fgrid_147',['ip_station_points_grid',['../structip__station__points__grid__mod_1_1ip__station__points__grid.html',1,'ip_station_points_grid_mod']]], - ['ip_5fstation_5fpoints_5fgrid_5fmod_148',['ip_station_points_grid_mod',['../namespaceip__station__points__grid__mod.html',1,'']]], - ['ip_5fstation_5fpoints_5fgrid_5fmod_2ef90_149',['ip_station_points_grid_mod.F90',['../ip__station__points__grid__mod_8F90.html',1,'']]], - ['iplib_5f4_2eh_150',['iplib_4.h',['../iplib__4_8h.html',1,'']]], - ['iplib_5f8_2eh_151',['iplib_8.h',['../iplib__8_8h.html',1,'']]], - ['iplib_5fd_2eh_152',['iplib_d.h',['../iplib__d_8h.html',1,'']]], - ['ipolates_153',['ipolates',['../interfaceipolates__mod_1_1ipolates.html',1,'ipolates_mod']]], - ['ipolates_2ef90_154',['ipolates.F90',['../ipolates_8F90.html',1,'']]], - ['ipolates_5fgrib1_155',['ipolates_grib1',['../namespaceipolates__mod.html#acb5408cf5c3a0f50326edc183f9bd269',1,'ipolates_mod::ipolates_grib1()'],['../interfaceipolates__mod_1_1ipolates.html#a8ff62af694c759f29c332836ff66437b',1,'ipolates_mod::ipolates::ipolates_grib1()']]], - ['ipolates_5fgrib1_5fsingle_5ffield_156',['ipolates_grib1_single_field',['../namespaceipolates__mod.html#ae70a9ca9871bb33e038782b036b7b53d',1,'ipolates_mod::ipolates_grib1_single_field()'],['../interfaceipolates__mod_1_1ipolates.html#afbc36431f96adfbbf552bc6137d0519d',1,'ipolates_mod::ipolates::ipolates_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)']]], - ['ipolates_5fgrib2_157',['ipolates_grib2',['../interfaceipolates__mod_1_1ipolates.html#a791ae0a257adcc3a789494489e28302b',1,'ipolates_mod::ipolates::ipolates_grib2()'],['../namespaceipolates__mod.html#a6b2ea6d5b04d2a68baad261e7a409fac',1,'ipolates_mod::ipolates_grib2()']]], - ['ipolates_5fgrib2_5fsingle_5ffield_158',['ipolates_grib2_single_field',['../interfaceipolates__mod_1_1ipolates.html#a3a77b7de2dce406829a3b01689372240',1,'ipolates_mod::ipolates::ipolates_grib2_single_field()'],['../namespaceipolates__mod.html#a49541b2af75b7c037a863a4785726856',1,'ipolates_mod::ipolates_grib2_single_field(IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], - ['ipolates_5fgrid_159',['ipolates_grid',['../namespaceipolates__mod.html#a2761e20fab898e7fd9963f3e0eb5d104',1,'ipolates_mod']]], - ['ipolates_5fmod_160',['ipolates_mod',['../namespaceipolates__mod.html',1,'']]], - ['ipolatev_161',['ipolatev',['../interfaceipolatev__mod_1_1ipolatev.html',1,'ipolatev_mod']]], - ['ipolatev_2ef90_162',['ipolatev.F90',['../ipolatev_8F90.html',1,'']]], - ['ipolatev_5fgrib1_163',['ipolatev_grib1',['../interfaceipolatev__mod_1_1ipolatev.html#ac721867d3d8e8adc11d56baba4702d53',1,'ipolatev_mod::ipolatev::ipolatev_grib1()'],['../namespaceipolatev__mod.html#abddc4a9b00133b358443b118f1352d1f',1,'ipolatev_mod::ipolatev_grib1()']]], - ['ipolatev_5fgrib1_5fsingle_5ffield_164',['ipolatev_grib1_single_field',['../interfaceipolatev__mod_1_1ipolatev.html#ad211b25631afd3fd7c04bbfba589a7c5',1,'ipolatev_mod::ipolatev::ipolatev_grib1_single_field()'],['../namespaceipolatev__mod.html#ad535ffd159c46e770effd774aabede58',1,'ipolatev_mod::ipolatev_grib1_single_field()']]], - ['ipolatev_5fgrib2_165',['ipolatev_grib2',['../interfaceipolatev__mod_1_1ipolatev.html#ac1ec04e3119f285f0f3955f016926efe',1,'ipolatev_mod::ipolatev::ipolatev_grib2()'],['../namespaceipolatev__mod.html#a00fed53dd867a802b3adbc1141e8d272',1,'ipolatev_mod::ipolatev_grib2()']]], - ['ipolatev_5fgrib2_5fsingle_5ffield_166',['ipolatev_grib2_single_field',['../interfaceipolatev__mod_1_1ipolatev.html#aa0af88a9ccef79a921680fe40ec30ccd',1,'ipolatev_mod::ipolatev::ipolatev_grib2_single_field()'],['../namespaceipolatev__mod.html#a71d7507e8f89e1229caaaacb37e0c9c7',1,'ipolatev_mod::ipolatev_grib2_single_field(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)']]], - ['ipolatev_5fgrid_167',['ipolatev_grid',['../namespaceipolatev__mod.html#a8f3bfec7495e13b75b2035e8e1f081a1',1,'ipolatev_mod']]], - ['ipolatev_5fmod_168',['ipolatev_mod',['../namespaceipolatev__mod.html',1,'']]], - ['ipxetas_169',['ipxetas',['../ipxetas_8F90.html#a89ff34ee39b0da1895e9d8552bb462e1',1,'ipxetas.F90']]], - ['ipxetas_2ef90_170',['ipxetas.F90',['../ipxetas_8F90.html',1,'']]], - ['ipxwafs_171',['ipxwafs',['../ipxwafs_8F90.html#a1465ea191950f7464bb3374abed94c12',1,'ipxwafs.F90']]], - ['ipxwafs_2ef90_172',['ipxwafs.F90',['../ipxwafs_8F90.html',1,'']]], - ['ipxwafs2_173',['ipxwafs2',['../ipxwafs2_8F90.html#ab602c9c04957836c0b8860560d442894',1,'ipxwafs2.F90']]], - ['ipxwafs2_2ef90_174',['ipxwafs2.F90',['../ipxwafs2_8F90.html',1,'']]], - ['ipxwafs3_175',['ipxwafs3',['../ipxwafs3_8F90.html#aae7be3c77cbe16d0219c86e443e6ec1d',1,'ipxwafs3.F90']]], - ['ipxwafs3_2ef90_176',['ipxwafs3.F90',['../ipxwafs3_8F90.html',1,'']]], - ['irot_177',['irot',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a558e99f37191cb2ea7398ac2a05ef29e',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::irot()'],['../namespaceip__rot__equid__cylind__grid__mod.html#abb0c2acdbd71f0c07ffaf9db54ce06c1',1,'ip_rot_equid_cylind_grid_mod::irot()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a93ed996cf2dc9569e356256ec946b571',1,'ip_rot_equid_cylind_egrid_mod::irot()'],['../namespaceip__polar__stereo__grid__mod.html#a1269037aaecd12e75e17d8aac8e20c8c',1,'ip_polar_stereo_grid_mod::irot()'],['../namespaceip__lambert__conf__grid__mod.html#a7dea876ed4206c5ecc0444aadb7d6acd',1,'ip_lambert_conf_grid_mod::irot()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a13f3f267f5a26602eb93b6525f494a10',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::irot()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#ae4c44c4cf8d1376b24861534edbf514f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::irot()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0d90490fa5eb04604fc0e01bea2cf3cf',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::irot()']]], - ['is_5fsame_5fgrid_178',['is_same_grid',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a9da102dac348a63ffce6556ed5da81b6',1,'ip_grid_descriptor_mod::ip_grid_descriptor::is_same_grid()'],['../interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html#a34e94f8aada186a3d22112a1ab31b53c',1,'ip_grid_descriptor_mod::operator(==)::is_same_grid()'],['../interfaceip__grid__mod_1_1operator_07_0a_0a_08.html#a0303cd13db74e096af7f77200ef09c6b',1,'ip_grid_mod::operator(==)::is_same_grid()'],['../namespaceip__grid__descriptor__mod.html#a202219f9c5c84fa04d3eb1c2208358ec',1,'ip_grid_descriptor_mod::is_same_grid()'],['../namespaceip__grid__mod.html#a663bda9af9dd991a09ba0f0de66dc045',1,'ip_grid_mod::is_same_grid()']]], - ['is_5fsame_5fgrid_5fgrib1_179',['is_same_grid_grib1',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html#a33b4fc04d218c73e3c4d061163dcbc95',1,'ip_grid_descriptor_mod::grib1_descriptor::is_same_grid_grib1()'],['../namespaceip__grid__descriptor__mod.html#a5bb3c5230b88012bddc3922bfa1cb019',1,'ip_grid_descriptor_mod::is_same_grid_grib1()']]], - ['is_5fsame_5fgrid_5fgrib2_180',['is_same_grid_grib2',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#ae27b09a835144baf782e2cde0c1ea013',1,'ip_grid_descriptor_mod::grib2_descriptor::is_same_grid_grib2()'],['../namespaceip__grid__descriptor__mod.html#a75ac34ea9372afaa29b0df2ce8919988',1,'ip_grid_descriptor_mod::is_same_grid_grib2()']]], - ['iwrap_181',['iwrap',['../structip__grid__mod_1_1ip__grid.html#ae179622b9a4c764a5ca90385330941ed',1,'ip_grid_mod::ip_grid']]] + ['init_5fgrib2_84',['init_grib2',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a505b0114c7ff5fbb58c4e7ce5ccde3f0',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a8dd212953e754964770fa1c3d4bcd3db',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib2()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a378b72a1b6090acb90a36385ab9eda5a',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib2()'],['../structip__grid__mod_1_1ip__grid.html#ad13e0ad8d616e1839ced388826fefee9',1,'ip_grid_mod::ip_grid::init_grib2()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a64129413df8ea478ab1360fd1a274e9a',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib2()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9622ce9892084b52303f27722572b87c',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib2()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#adda32463a76ad97ac35b01f1ac693fa4',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib2()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a30ae580d169972e8d68c3d97ab3b2634',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib2()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#a69fac68e7a40d5c3106a47bf1851891e',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib2()'],['../namespaceip__equid__cylind__grid__mod.html#a39d24c9468ecb7effd16972fd72e088a',1,'ip_equid_cylind_grid_mod::init_grib2()'],['../namespaceip__gaussian__grid__mod.html#ae048ac033628515113b11b8c7364e0c2',1,'ip_gaussian_grid_mod::init_grib2()'],['../namespaceip__station__points__grid__mod.html#ad17e6d245295803b62b146be984f874d',1,'ip_station_points_grid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__grid__mod.html#add3c6c1dad5748b452d291df6619867d',1,'ip_rot_equid_cylind_grid_mod::init_grib2()'],['../namespaceip__lambert__conf__grid__mod.html#acb0339a9fff4fff6c2017d37f8bed0cf',1,'ip_lambert_conf_grid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#af3cbc17f27800bc67135feacb2c1c3e0',1,'ip_rot_equid_cylind_egrid_mod::init_grib2()'],['../namespaceip__polar__stereo__grid__mod.html#a5210b986366b503683ae966519d501e7',1,'ip_polar_stereo_grid_mod::init_grib2()'],['../namespaceip__mercator__grid__mod.html#aad3b6fef6ee74b8df984c0159ff29c82',1,'ip_mercator_grid_mod::init_grib2()']]], + ['init_5fgrib2_5fdefault_85',['init_grib2_default',['../namespaceip__rot__equid__cylind__grid__mod.html#a9ade5de892a935c3b62c1860b719ce74',1,'ip_rot_equid_cylind_grid_mod']]], + ['init_5fgrib2_5fdescriptor_86',['init_grib2_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a6702c4bf3a3d914e5cd2fce8fba4f95c',1,'ip_grid_descriptor_mod::init_descriptor::init_grib2_descriptor()'],['../namespaceip__grid__descriptor__mod.html#a143ac06a2a20697d01606a259213b451',1,'ip_grid_descriptor_mod::init_grib2_descriptor()']]], + ['init_5fgrib2_5finterface_87',['init_grib2_interface',['../interfaceip__grid__mod_1_1init__grib2__interface.html#a25dcec4470effb9b20dfc7981c21ec6c',1,'ip_grid_mod::init_grib2_interface::init_grib2_interface()'],['../interfaceip__grid__mod_1_1init__grib2__interface.html',1,'ip_grid_mod::init_grib2_interface']]], + ['init_5fgrib2_5fncep_5fpost_88',['init_grib2_ncep_post',['../namespaceip__rot__equid__cylind__grid__mod.html#a74abf723e815f9ff196e6d0174fd449b',1,'ip_rot_equid_cylind_grid_mod']]], + ['init_5fgrid_89',['init_grid',['../interfaceip__grid__factory__mod_1_1init__grid.html',1,'ip_grid_factory_mod']]], + ['init_5fgrid_5fgeneric_90',['init_grid_generic',['../interfaceip__grid__factory__mod_1_1init__grid.html#a3fbbec3ddc7dfd918c2abc02e7a4cd72',1,'ip_grid_factory_mod::init_grid::init_grid_generic()'],['../namespaceip__grid__factory__mod.html#a2d2ea07d353bae8b057471aa99b58e46',1,'ip_grid_factory_mod::init_grid_generic(grid, grid_desc)']]], + ['init_5fgrid_5fgrib1_91',['init_grid_grib1',['../namespaceip__grid__factory__mod.html#ad8906ed6fe52c2426c0ff09ce50b6fc5',1,'ip_grid_factory_mod']]], + ['init_5fgrid_5fgrib2_92',['init_grid_grib2',['../namespaceip__grid__factory__mod.html#aa187dc8dbd1d004a51cc0e9826ffa225',1,'ip_grid_factory_mod']]], + ['interpolate_5fbicubic_93',['interpolate_bicubic',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html',1,'bicubic_interp_mod']]], + ['interpolate_5fbicubic_5fscalar_94',['interpolate_bicubic_scalar',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#acbfecc99184cf9ae71b2c9f79c7d4077',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_scalar()'],['../namespacebicubic__interp__mod.html#a54a442e47f1be9511c1684a337d7e2d1',1,'bicubic_interp_mod::interpolate_bicubic_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], + ['interpolate_5fbicubic_5fvector_95',['interpolate_bicubic_vector',['../namespacebicubic__interp__mod.html#a9d27db7d350fc2699aaf5057c3b53d16',1,'bicubic_interp_mod::interpolate_bicubic_vector()'],['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#aac45c15e1c9d76158d72e62ccaca915b',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_vector()']]], + ['interpolate_5fbilinear_96',['interpolate_bilinear',['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html',1,'bilinear_interp_mod']]], + ['interpolate_5fbilinear_5fscalar_97',['interpolate_bilinear_scalar',['../namespacebilinear__interp__mod.html#a34d2eea4682104097dccf3e7ab6a9398',1,'bilinear_interp_mod::interpolate_bilinear_scalar()'],['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#a3493cf5bc04aa4551ffd4c314ef09a65',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_scalar()']]], + ['interpolate_5fbilinear_5fvector_98',['interpolate_bilinear_vector',['../namespacebilinear__interp__mod.html#abc218f8774d2af09299eb299d6f38e04',1,'bilinear_interp_mod::interpolate_bilinear_vector()'],['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#ab4692c5250b37325f764b38c570892dd',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_vector()']]], + ['interpolate_5fbudget_99',['interpolate_budget',['../interfacebudget__interp__mod_1_1interpolate__budget.html',1,'budget_interp_mod']]], + ['interpolate_5fbudget_5fscalar_100',['interpolate_budget_scalar',['../namespacebudget__interp__mod.html#a09bd6535b0c2e1022cfde39c39d14466',1,'budget_interp_mod::interpolate_budget_scalar()'],['../interfacebudget__interp__mod_1_1interpolate__budget.html#a4b96cbeedb86ef43b687f7ea55914ef0',1,'budget_interp_mod::interpolate_budget::interpolate_budget_scalar()']]], + ['interpolate_5fbudget_5fvector_101',['interpolate_budget_vector',['../namespacebudget__interp__mod.html#abc99486ee9c0091c1514af6114d4e803',1,'budget_interp_mod::interpolate_budget_vector()'],['../interfacebudget__interp__mod_1_1interpolate__budget.html#a573e89e56381d0f69e4022d791a087e6',1,'budget_interp_mod::interpolate_budget::interpolate_budget_vector()']]], + ['interpolate_5fneighbor_102',['interpolate_neighbor',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html',1,'neighbor_interp_mod']]], + ['interpolate_5fneighbor_5fbudget_103',['interpolate_neighbor_budget',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html',1,'neighbor_budget_interp_mod']]], + ['interpolate_5fneighbor_5fbudget_5fscalar_104',['interpolate_neighbor_budget_scalar',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a96e4b145a4df6f4948b1d5ae2da6a71a',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_scalar()'],['../namespaceneighbor__budget__interp__mod.html#a6d5110a9e9facf8c3132ec27d6857817',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_scalar()']]], + ['interpolate_5fneighbor_5fbudget_5fvector_105',['interpolate_neighbor_budget_vector',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a573bd5ac43484aa6d051e58f37ff7c06',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_vector()'],['../namespaceneighbor__budget__interp__mod.html#a4309c1e6b7fc60ded40657fe6c72297e',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_vector()']]], + ['interpolate_5fneighbor_5fscalar_106',['interpolate_neighbor_scalar',['../namespaceneighbor__interp__mod.html#a78452d1527c6974ad54091f0318e4b1f',1,'neighbor_interp_mod::interpolate_neighbor_scalar()'],['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a04ebb54535e67ff95c1d3d64b9cf6246',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], + ['interpolate_5fneighbor_5fvector_107',['interpolate_neighbor_vector',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a4662245e2744fd14628b48f23bf4f0a7',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_vector()'],['../namespaceneighbor__interp__mod.html#a744ccffd8cd6c13d360e634db4851756',1,'neighbor_interp_mod::interpolate_neighbor_vector()']]], + ['interpolate_5fspectral_108',['interpolate_spectral',['../interfacespectral__interp__mod_1_1interpolate__spectral.html',1,'spectral_interp_mod']]], + ['interpolate_5fspectral_5fscalar_109',['interpolate_spectral_scalar',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a79f600a26ecf256a8a13cf4bdbaf2ab1',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_scalar()'],['../namespacespectral__interp__mod.html#a438646d69e941def0ada00d5ca19f618',1,'spectral_interp_mod::interpolate_spectral_scalar()']]], + ['interpolate_5fspectral_5fvector_110',['interpolate_spectral_vector',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a9e939bbb3f7b214fee26c1e77764e487',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_vector()'],['../namespacespectral__interp__mod.html#acb61ad529b7decc2a6ff58dd12fbadd0',1,'spectral_interp_mod::interpolate_spectral_vector()']]], + ['introduction_111',['Introduction',['../index.html',1,'']]], + ['ip_5fconstants_5fmod_112',['ip_constants_mod',['../namespaceip__constants__mod.html',1,'']]], + ['ip_5fconstants_5fmod_2ef90_113',['ip_constants_mod.F90',['../ip__constants__mod_8F90.html',1,'']]], + ['ip_5fequid_5fcylind_5fgrid_114',['ip_equid_cylind_grid',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html',1,'ip_equid_cylind_grid_mod']]], + ['ip_5fequid_5fcylind_5fgrid_5fmod_115',['ip_equid_cylind_grid_mod',['../namespaceip__equid__cylind__grid__mod.html',1,'']]], + ['ip_5fequid_5fcylind_5fgrid_5fmod_2ef90_116',['ip_equid_cylind_grid_mod.F90',['../ip__equid__cylind__grid__mod_8F90.html',1,'']]], + ['ip_5fgaussian_5fgrid_117',['ip_gaussian_grid',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html',1,'ip_gaussian_grid_mod']]], + ['ip_5fgaussian_5fgrid_5fmod_118',['ip_gaussian_grid_mod',['../namespaceip__gaussian__grid__mod.html',1,'']]], + ['ip_5fgaussian_5fgrid_5fmod_2ef90_119',['ip_gaussian_grid_mod.F90',['../ip__gaussian__grid__mod_8F90.html',1,'']]], + ['ip_5fgrid_120',['ip_grid',['../structip__grid__mod_1_1ip__grid.html',1,'ip_grid_mod']]], + ['ip_5fgrid_5fdescriptor_121',['ip_grid_descriptor',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['ip_5fgrid_5fdescriptor_5fmod_122',['ip_grid_descriptor_mod',['../namespaceip__grid__descriptor__mod.html',1,'']]], + ['ip_5fgrid_5fdescriptor_5fmod_2ef90_123',['ip_grid_descriptor_mod.F90',['../ip__grid__descriptor__mod_8F90.html',1,'']]], + ['ip_5fgrid_5ffactory_5fmod_124',['ip_grid_factory_mod',['../namespaceip__grid__factory__mod.html',1,'']]], + ['ip_5fgrid_5ffactory_5fmod_2ef90_125',['ip_grid_factory_mod.F90',['../ip__grid__factory__mod_8F90.html',1,'']]], + ['ip_5fgrid_5fmod_126',['ip_grid_mod',['../namespaceip__grid__mod.html',1,'']]], + ['ip_5fgrid_5fmod_2ef90_127',['ip_grid_mod.F90',['../ip__grid__mod_8F90.html',1,'']]], + ['ip_5fgrids_5fmod_128',['ip_grids_mod',['../namespaceip__grids__mod.html',1,'']]], + ['ip_5fgrids_5fmod_2ef90_129',['ip_grids_mod.F90',['../ip__grids__mod_8F90.html',1,'']]], + ['ip_5finterpolators_5fmod_130',['ip_interpolators_mod',['../namespaceip__interpolators__mod.html',1,'']]], + ['ip_5finterpolators_5fmod_2ef90_131',['ip_interpolators_mod.F90',['../ip__interpolators__mod_8F90.html',1,'']]], + ['ip_5flambert_5fconf_5fgrid_132',['ip_lambert_conf_grid',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html',1,'ip_lambert_conf_grid_mod']]], + ['ip_5flambert_5fconf_5fgrid_5fmod_133',['ip_lambert_conf_grid_mod',['../namespaceip__lambert__conf__grid__mod.html',1,'']]], + ['ip_5flambert_5fconf_5fgrid_5fmod_2ef90_134',['ip_lambert_conf_grid_mod.F90',['../ip__lambert__conf__grid__mod_8F90.html',1,'']]], + ['ip_5fmercator_5fgrid_135',['ip_mercator_grid',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html',1,'ip_mercator_grid_mod']]], + ['ip_5fmercator_5fgrid_5fmod_136',['ip_mercator_grid_mod',['../namespaceip__mercator__grid__mod.html',1,'']]], + ['ip_5fmercator_5fgrid_5fmod_2ef90_137',['ip_mercator_grid_mod.F90',['../ip__mercator__grid__mod_8F90.html',1,'']]], + ['ip_5fmod_138',['ip_mod',['../namespaceip__mod.html',1,'']]], + ['ip_5fmod_2ef90_139',['ip_mod.F90',['../ip__mod_8F90.html',1,'']]], + ['ip_5fpolar_5fstereo_5fgrid_140',['ip_polar_stereo_grid',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html',1,'ip_polar_stereo_grid_mod']]], + ['ip_5fpolar_5fstereo_5fgrid_5fmod_141',['ip_polar_stereo_grid_mod',['../namespaceip__polar__stereo__grid__mod.html',1,'']]], + ['ip_5fpolar_5fstereo_5fgrid_5fmod_2ef90_142',['ip_polar_stereo_grid_mod.F90',['../ip__polar__stereo__grid__mod_8F90.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_143',['ip_rot_equid_cylind_egrid',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html',1,'ip_rot_equid_cylind_egrid_mod']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_144',['ip_rot_equid_cylind_egrid_mod',['../namespaceip__rot__equid__cylind__egrid__mod.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_2ef90_145',['ip_rot_equid_cylind_egrid_mod.F90',['../ip__rot__equid__cylind__egrid__mod_8F90.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_146',['ip_rot_equid_cylind_grid',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html',1,'ip_rot_equid_cylind_grid_mod']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_147',['ip_rot_equid_cylind_grid_mod',['../namespaceip__rot__equid__cylind__grid__mod.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_2ef90_148',['ip_rot_equid_cylind_grid_mod.F90',['../ip__rot__equid__cylind__grid__mod_8F90.html',1,'']]], + ['ip_5fstation_5fpoints_5fgrid_149',['ip_station_points_grid',['../structip__station__points__grid__mod_1_1ip__station__points__grid.html',1,'ip_station_points_grid_mod']]], + ['ip_5fstation_5fpoints_5fgrid_5fmod_150',['ip_station_points_grid_mod',['../namespaceip__station__points__grid__mod.html',1,'']]], + ['ip_5fstation_5fpoints_5fgrid_5fmod_2ef90_151',['ip_station_points_grid_mod.F90',['../ip__station__points__grid__mod_8F90.html',1,'']]], + ['iplib_5f4_2eh_152',['iplib_4.h',['../iplib__4_8h.html',1,'']]], + ['iplib_5f8_2eh_153',['iplib_8.h',['../iplib__8_8h.html',1,'']]], + ['iplib_5fd_2eh_154',['iplib_d.h',['../iplib__d_8h.html',1,'']]], + ['ipolates_155',['ipolates',['../interfaceipolates__mod_1_1ipolates.html',1,'ipolates_mod']]], + ['ipolates_2ef90_156',['ipolates.F90',['../ipolates_8F90.html',1,'']]], + ['ipolates_5fgrib1_157',['ipolates_grib1',['../namespaceipolates__mod.html#acb5408cf5c3a0f50326edc183f9bd269',1,'ipolates_mod::ipolates_grib1()'],['../interfaceipolates__mod_1_1ipolates.html#a8ff62af694c759f29c332836ff66437b',1,'ipolates_mod::ipolates::ipolates_grib1()']]], + ['ipolates_5fgrib1_5fsingle_5ffield_158',['ipolates_grib1_single_field',['../namespaceipolates__mod.html#ae70a9ca9871bb33e038782b036b7b53d',1,'ipolates_mod::ipolates_grib1_single_field()'],['../interfaceipolates__mod_1_1ipolates.html#afbc36431f96adfbbf552bc6137d0519d',1,'ipolates_mod::ipolates::ipolates_grib1_single_field()']]], + ['ipolates_5fgrib2_159',['ipolates_grib2',['../namespaceipolates__mod.html#a6b2ea6d5b04d2a68baad261e7a409fac',1,'ipolates_mod::ipolates_grib2()'],['../interfaceipolates__mod_1_1ipolates.html#a791ae0a257adcc3a789494489e28302b',1,'ipolates_mod::ipolates::ipolates_grib2()']]], + ['ipolates_5fgrib2_5fsingle_5ffield_160',['ipolates_grib2_single_field',['../namespaceipolates__mod.html#a49541b2af75b7c037a863a4785726856',1,'ipolates_mod::ipolates_grib2_single_field()'],['../interfaceipolates__mod_1_1ipolates.html#a3a77b7de2dce406829a3b01689372240',1,'ipolates_mod::ipolates::ipolates_grib2_single_field()']]], + ['ipolates_5fgrid_161',['ipolates_grid',['../namespaceipolates__mod.html#a2761e20fab898e7fd9963f3e0eb5d104',1,'ipolates_mod']]], + ['ipolates_5fmod_162',['ipolates_mod',['../namespaceipolates__mod.html',1,'']]], + ['ipolatev_163',['ipolatev',['../interfaceipolatev__mod_1_1ipolatev.html',1,'ipolatev_mod']]], + ['ipolatev_2ef90_164',['ipolatev.F90',['../ipolatev_8F90.html',1,'']]], + ['ipolatev_5fgrib1_165',['ipolatev_grib1',['../interfaceipolatev__mod_1_1ipolatev.html#ac721867d3d8e8adc11d56baba4702d53',1,'ipolatev_mod::ipolatev::ipolatev_grib1()'],['../namespaceipolatev__mod.html#abddc4a9b00133b358443b118f1352d1f',1,'ipolatev_mod::ipolatev_grib1()']]], + ['ipolatev_5fgrib1_5fsingle_5ffield_166',['ipolatev_grib1_single_field',['../interfaceipolatev__mod_1_1ipolatev.html#ad211b25631afd3fd7c04bbfba589a7c5',1,'ipolatev_mod::ipolatev::ipolatev_grib1_single_field()'],['../namespaceipolatev__mod.html#ad535ffd159c46e770effd774aabede58',1,'ipolatev_mod::ipolatev_grib1_single_field()']]], + ['ipolatev_5fgrib2_167',['ipolatev_grib2',['../interfaceipolatev__mod_1_1ipolatev.html#ac1ec04e3119f285f0f3955f016926efe',1,'ipolatev_mod::ipolatev::ipolatev_grib2()'],['../namespaceipolatev__mod.html#a00fed53dd867a802b3adbc1141e8d272',1,'ipolatev_mod::ipolatev_grib2(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)']]], + ['ipolatev_5fgrib2_5fsingle_5ffield_168',['ipolatev_grib2_single_field',['../namespaceipolatev__mod.html#a71d7507e8f89e1229caaaacb37e0c9c7',1,'ipolatev_mod::ipolatev_grib2_single_field()'],['../interfaceipolatev__mod_1_1ipolatev.html#aa0af88a9ccef79a921680fe40ec30ccd',1,'ipolatev_mod::ipolatev::ipolatev_grib2_single_field()']]], + ['ipolatev_5fgrid_169',['ipolatev_grid',['../namespaceipolatev__mod.html#a8f3bfec7495e13b75b2035e8e1f081a1',1,'ipolatev_mod']]], + ['ipolatev_5fmod_170',['ipolatev_mod',['../namespaceipolatev__mod.html',1,'']]], + ['ipxetas_171',['ipxetas',['../ipxetas_8F90.html#a89ff34ee39b0da1895e9d8552bb462e1',1,'ipxetas.F90']]], + ['ipxetas_2ef90_172',['ipxetas.F90',['../ipxetas_8F90.html',1,'']]], + ['ipxwafs_173',['ipxwafs',['../ipxwafs_8F90.html#a1465ea191950f7464bb3374abed94c12',1,'ipxwafs.F90']]], + ['ipxwafs_2ef90_174',['ipxwafs.F90',['../ipxwafs_8F90.html',1,'']]], + ['ipxwafs2_175',['ipxwafs2',['../ipxwafs2_8F90.html#ab602c9c04957836c0b8860560d442894',1,'ipxwafs2.F90']]], + ['ipxwafs2_2ef90_176',['ipxwafs2.F90',['../ipxwafs2_8F90.html',1,'']]], + ['ipxwafs3_177',['ipxwafs3',['../ipxwafs3_8F90.html#aae7be3c77cbe16d0219c86e443e6ec1d',1,'ipxwafs3.F90']]], + ['ipxwafs3_2ef90_178',['ipxwafs3.F90',['../ipxwafs3_8F90.html',1,'']]], + ['irot_179',['irot',['../namespaceip__lambert__conf__grid__mod.html#a7dea876ed4206c5ecc0444aadb7d6acd',1,'ip_lambert_conf_grid_mod::irot()'],['../namespaceip__polar__stereo__grid__mod.html#a1269037aaecd12e75e17d8aac8e20c8c',1,'ip_polar_stereo_grid_mod::irot()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a93ed996cf2dc9569e356256ec946b571',1,'ip_rot_equid_cylind_egrid_mod::irot()'],['../namespaceip__rot__equid__cylind__grid__mod.html#abb0c2acdbd71f0c07ffaf9db54ce06c1',1,'ip_rot_equid_cylind_grid_mod::irot()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#ae4c44c4cf8d1376b24861534edbf514f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::irot()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a558e99f37191cb2ea7398ac2a05ef29e',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::irot()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a13f3f267f5a26602eb93b6525f494a10',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::irot()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0d90490fa5eb04604fc0e01bea2cf3cf',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::irot()']]], + ['is_5fsame_5fgrid_180',['is_same_grid',['../namespaceip__grid__descriptor__mod.html#a202219f9c5c84fa04d3eb1c2208358ec',1,'ip_grid_descriptor_mod::is_same_grid()'],['../namespaceip__grid__mod.html#a663bda9af9dd991a09ba0f0de66dc045',1,'ip_grid_mod::is_same_grid()'],['../interfaceip__grid__mod_1_1operator_07_0a_0a_08.html#a0303cd13db74e096af7f77200ef09c6b',1,'ip_grid_mod::operator(==)::is_same_grid()'],['../interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html#a34e94f8aada186a3d22112a1ab31b53c',1,'ip_grid_descriptor_mod::operator(==)::is_same_grid()'],['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a9da102dac348a63ffce6556ed5da81b6',1,'ip_grid_descriptor_mod::ip_grid_descriptor::is_same_grid()']]], + ['is_5fsame_5fgrid_5fgrib1_181',['is_same_grid_grib1',['../namespaceip__grid__descriptor__mod.html#a5bb3c5230b88012bddc3922bfa1cb019',1,'ip_grid_descriptor_mod::is_same_grid_grib1()'],['../structip__grid__descriptor__mod_1_1grib1__descriptor.html#a33b4fc04d218c73e3c4d061163dcbc95',1,'ip_grid_descriptor_mod::grib1_descriptor::is_same_grid_grib1()']]], + ['is_5fsame_5fgrid_5fgrib2_182',['is_same_grid_grib2',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#ae27b09a835144baf782e2cde0c1ea013',1,'ip_grid_descriptor_mod::grib2_descriptor::is_same_grid_grib2()'],['../namespaceip__grid__descriptor__mod.html#a75ac34ea9372afaa29b0df2ce8919988',1,'ip_grid_descriptor_mod::is_same_grid_grib2()']]], + ['iwrap_183',['iwrap',['../structip__grid__mod_1_1ip__grid.html#ae179622b9a4c764a5ca90385330941ed',1,'ip_grid_mod::ip_grid']]] ]; diff --git a/search/all_9.js b/search/all_9.js index da246a14..3ae699f4 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -1,10 +1,10 @@ var searchData= [ - ['j1_182',['j1',['../namespaceip__gaussian__grid__mod.html#af5c4024263aa3eaef5801849ae32c15a',1,'ip_gaussian_grid_mod']]], - ['jg_183',['jg',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a110f99e158a977a1679133235fa06c34',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], - ['jh_184',['jh',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a549ccd3ce1f5c75d99e8e04d4d4341b4',1,'ip_gaussian_grid_mod::ip_gaussian_grid::jh()'],['../namespaceip__gaussian__grid__mod.html#a67d6cd6d188a8bded8bdf64927617028',1,'ip_gaussian_grid_mod::jh()']]], - ['jm_185',['jm',['../structip__grid__mod_1_1ip__grid.html#a41a2a38288864520d8c50854d1843f87',1,'ip_grid_mod::ip_grid']]], - ['jscan_186',['jscan',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3e199827f764b162a14515e837c28903',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], - ['jwrap1_187',['jwrap1',['../structip__grid__mod_1_1ip__grid.html#a92976f110dd7e823799991137ac970a1',1,'ip_grid_mod::ip_grid']]], - ['jwrap2_188',['jwrap2',['../structip__grid__mod_1_1ip__grid.html#ae70be8cebcd217a49be4da1cebfc19d2',1,'ip_grid_mod::ip_grid']]] + ['j1_184',['j1',['../namespaceip__gaussian__grid__mod.html#af5c4024263aa3eaef5801849ae32c15a',1,'ip_gaussian_grid_mod']]], + ['jg_185',['jg',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a110f99e158a977a1679133235fa06c34',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], + ['jh_186',['jh',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a549ccd3ce1f5c75d99e8e04d4d4341b4',1,'ip_gaussian_grid_mod::ip_gaussian_grid::jh()'],['../namespaceip__gaussian__grid__mod.html#a67d6cd6d188a8bded8bdf64927617028',1,'ip_gaussian_grid_mod::jh()']]], + ['jm_187',['jm',['../structip__grid__mod_1_1ip__grid.html#a41a2a38288864520d8c50854d1843f87',1,'ip_grid_mod::ip_grid']]], + ['jscan_188',['jscan',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3e199827f764b162a14515e837c28903',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], + ['jwrap1_189',['jwrap1',['../structip__grid__mod_1_1ip__grid.html#a92976f110dd7e823799991137ac970a1',1,'ip_grid_mod::ip_grid']]], + ['jwrap2_190',['jwrap2',['../structip__grid__mod_1_1ip__grid.html#ae70be8cebcd217a49be4da1cebfc19d2',1,'ip_grid_mod::ip_grid']]] ]; diff --git a/search/all_a.js b/search/all_a.js index e5519d13..05c2155a 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -1,5 +1,5 @@ var searchData= [ - ['kd_189',['kd',['../namespaceip__rot__equid__cylind__egrid__mod.html#a50497d277c347a2991b0e34e85f1787e',1,'ip_rot_equid_cylind_egrid_mod::kd()'],['../namespaceip__rot__equid__cylind__grid__mod.html#af5dea0592cccce2de1c5c6a92d42cfd6',1,'ip_rot_equid_cylind_grid_mod::kd()']]], - ['kscan_190',['kscan',['../structip__grid__mod_1_1ip__grid.html#a084603b1c052e76c3335fea2e887cfce',1,'ip_grid_mod::ip_grid']]] + ['kd_191',['kd',['../namespaceip__rot__equid__cylind__egrid__mod.html#a50497d277c347a2991b0e34e85f1787e',1,'ip_rot_equid_cylind_egrid_mod::kd()'],['../namespaceip__rot__equid__cylind__grid__mod.html#af5dea0592cccce2de1c5c6a92d42cfd6',1,'ip_rot_equid_cylind_grid_mod::kd()']]], + ['kscan_192',['kscan',['../structip__grid__mod_1_1ip__grid.html#a084603b1c052e76c3335fea2e887cfce',1,'ip_grid_mod::ip_grid']]] ]; diff --git a/search/all_b.js b/search/all_b.js index 610c4342..ed3ec51e 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -1,11 +1,8 @@ var searchData= [ - ['lambert_5fconf_5fgrid_5farea_191',['lambert_conf_grid_area',['../namespaceip__lambert__conf__grid__mod.html#a15c44b47172b926aea840caee9723b1c',1,'ip_lambert_conf_grid_mod']]], - ['lambert_5fconf_5fgrid_5fid_5fgrib1_192',['lambert_conf_grid_id_grib1',['../namespaceip__grid__mod.html#ab82b90d20f38ff39741f6890fa422d16',1,'ip_grid_mod']]], - ['lambert_5fconf_5fgrid_5fid_5fgrib2_193',['lambert_conf_grid_id_grib2',['../namespaceip__grid__mod.html#a2e49846c9122b1fe1fcdbb2913fc32fe',1,'ip_grid_mod']]], - ['lambert_5fconf_5fmap_5fjacob_194',['lambert_conf_map_jacob',['../namespaceip__lambert__conf__grid__mod.html#a5e1d42f0027236f47467e25c525e66ae',1,'ip_lambert_conf_grid_mod']]], - ['lambert_5fconf_5fvect_5frot_195',['lambert_conf_vect_rot',['../namespaceip__lambert__conf__grid__mod.html#a58187073914efa18eca897c6ec203b71',1,'ip_lambert_conf_grid_mod']]], - ['lapack_5fgen_2ef_196',['lapack_gen.F',['../lapack__gen_8F.html',1,'']]], - ['lubksb_197',['lubksb',['../lapack__gen_8F.html#a3c6b581386390037e8c04c238a208547',1,'lapack_gen.F']]], - ['ludcmp_198',['ludcmp',['../lapack__gen_8F.html#a2af64d5edd49c8f4dcdfdd21235de781',1,'lapack_gen.F']]] + ['lambert_5fconf_5fgrid_5farea_193',['lambert_conf_grid_area',['../namespaceip__lambert__conf__grid__mod.html#a15c44b47172b926aea840caee9723b1c',1,'ip_lambert_conf_grid_mod']]], + ['lambert_5fconf_5fgrid_5fid_5fgrib1_194',['lambert_conf_grid_id_grib1',['../namespaceip__grid__mod.html#ab82b90d20f38ff39741f6890fa422d16',1,'ip_grid_mod']]], + ['lambert_5fconf_5fgrid_5fid_5fgrib2_195',['lambert_conf_grid_id_grib2',['../namespaceip__grid__mod.html#a2e49846c9122b1fe1fcdbb2913fc32fe',1,'ip_grid_mod']]], + ['lambert_5fconf_5fmap_5fjacob_196',['lambert_conf_map_jacob',['../namespaceip__lambert__conf__grid__mod.html#a5e1d42f0027236f47467e25c525e66ae',1,'ip_lambert_conf_grid_mod']]], + ['lambert_5fconf_5fvect_5frot_197',['lambert_conf_vect_rot',['../namespaceip__lambert__conf__grid__mod.html#a58187073914efa18eca897c6ec203b71',1,'ip_lambert_conf_grid_mod']]] ]; diff --git a/search/all_c.js b/search/all_c.js index 9d635abc..121259b3 100644 --- a/search/all_c.js +++ b/search/all_c.js @@ -1,10 +1,10 @@ var searchData= [ - ['mercator_5fgrid_5farea_199',['mercator_grid_area',['../namespaceip__mercator__grid__mod.html#a952ab9add18587c4dbe54699feb8eafd',1,'ip_mercator_grid_mod']]], - ['mercator_5fgrid_5fid_5fgrib1_200',['mercator_grid_id_grib1',['../namespaceip__grid__mod.html#ab9ff525eca4f053b04ec96a83cb06682',1,'ip_grid_mod']]], - ['mercator_5fgrid_5fid_5fgrib2_201',['mercator_grid_id_grib2',['../namespaceip__grid__mod.html#af9c58af5162d96cb7d1ac5001139b856',1,'ip_grid_mod']]], - ['mercator_5fmap_5fjacob_202',['mercator_map_jacob',['../namespaceip__mercator__grid__mod.html#ab93a0a6ae8c5f5056abece1dcffdc57a',1,'ip_mercator_grid_mod']]], - ['mercator_5fvect_5frot_203',['mercator_vect_rot',['../namespaceip__mercator__grid__mod.html#aea5e18faf7a18bf8d06c87ccb11f3e17',1,'ip_mercator_grid_mod']]], - ['movect_204',['movect',['../movect_8F90.html#a5974e32c0cf90a65b39c68460d761882',1,'movect.F90']]], - ['movect_2ef90_205',['movect.F90',['../movect_8F90.html',1,'']]] + ['mercator_5fgrid_5farea_198',['mercator_grid_area',['../namespaceip__mercator__grid__mod.html#a952ab9add18587c4dbe54699feb8eafd',1,'ip_mercator_grid_mod']]], + ['mercator_5fgrid_5fid_5fgrib1_199',['mercator_grid_id_grib1',['../namespaceip__grid__mod.html#ab9ff525eca4f053b04ec96a83cb06682',1,'ip_grid_mod']]], + ['mercator_5fgrid_5fid_5fgrib2_200',['mercator_grid_id_grib2',['../namespaceip__grid__mod.html#af9c58af5162d96cb7d1ac5001139b856',1,'ip_grid_mod']]], + ['mercator_5fmap_5fjacob_201',['mercator_map_jacob',['../namespaceip__mercator__grid__mod.html#ab93a0a6ae8c5f5056abece1dcffdc57a',1,'ip_mercator_grid_mod']]], + ['mercator_5fvect_5frot_202',['mercator_vect_rot',['../namespaceip__mercator__grid__mod.html#aea5e18faf7a18bf8d06c87ccb11f3e17',1,'ip_mercator_grid_mod']]], + ['movect_203',['movect',['../movect_8F90.html#a5974e32c0cf90a65b39c68460d761882',1,'movect.F90']]], + ['movect_2ef90_204',['movect.F90',['../movect_8F90.html',1,'']]] ]; diff --git a/search/all_d.js b/search/all_d.js index 478fd976..045d2308 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -1,5 +1,6 @@ var searchData= [ + ['ncep_5fpost_5farakawa_205',['ncep_post_arakawa',['../namespaceip__grid__mod.html#a88751d2ee535d807b6d420fcfb99ee71',1,'ip_grid_mod']]], ['ncpus_206',['ncpus',['../ncpus_8F.html#a821a75ee067ea31758a038c0327bd3bd',1,'ncpus.F']]], ['ncpus_2ef_207',['ncpus.F',['../ncpus_8F.html',1,'']]], ['neighbor_5fbudget_5finterp_5fid_208',['neighbor_budget_interp_id',['../namespaceip__interpolators__mod.html#ae77a1da241f5de94f1874004ee8e715c',1,'ip_interpolators_mod']]], diff --git a/search/classes_0.js b/search/classes_0.js index 6c15aca2..683b64bc 100644 --- a/search/classes_0.js +++ b/search/classes_0.js @@ -1,7 +1,7 @@ var searchData= [ - ['gdswzd_390',['gdswzd',['../interfacegdswzd__mod_1_1gdswzd.html',1,'gdswzd_mod']]], - ['gdswzd_5finterface_391',['gdswzd_interface',['../interfaceip__grid__mod_1_1gdswzd__interface.html',1,'ip_grid_mod']]], - ['grib1_5fdescriptor_392',['grib1_descriptor',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html',1,'ip_grid_descriptor_mod']]], - ['grib2_5fdescriptor_393',['grib2_descriptor',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html',1,'ip_grid_descriptor_mod']]] + ['gdswzd_394',['gdswzd',['../interfacegdswzd__mod_1_1gdswzd.html',1,'gdswzd_mod']]], + ['gdswzd_5finterface_395',['gdswzd_interface',['../interfaceip__grid__mod_1_1gdswzd__interface.html',1,'ip_grid_mod']]], + ['grib1_5fdescriptor_396',['grib1_descriptor',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['grib2_5fdescriptor_397',['grib2_descriptor',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html',1,'ip_grid_descriptor_mod']]] ]; diff --git a/search/classes_1.js b/search/classes_1.js index 52cb1c46..e97c691d 100644 --- a/search/classes_1.js +++ b/search/classes_1.js @@ -1,25 +1,25 @@ var searchData= [ - ['init_5fdescriptor_394',['init_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html',1,'ip_grid_descriptor_mod']]], - ['init_5fgrib1_5finterface_395',['init_grib1_interface',['../interfaceip__grid__mod_1_1init__grib1__interface.html',1,'ip_grid_mod']]], - ['init_5fgrib2_5finterface_396',['init_grib2_interface',['../interfaceip__grid__mod_1_1init__grib2__interface.html',1,'ip_grid_mod']]], - ['init_5fgrid_397',['init_grid',['../interfaceip__grid__factory__mod_1_1init__grid.html',1,'ip_grid_factory_mod']]], - ['interpolate_5fbicubic_398',['interpolate_bicubic',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html',1,'bicubic_interp_mod']]], - ['interpolate_5fbilinear_399',['interpolate_bilinear',['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html',1,'bilinear_interp_mod']]], - ['interpolate_5fbudget_400',['interpolate_budget',['../interfacebudget__interp__mod_1_1interpolate__budget.html',1,'budget_interp_mod']]], - ['interpolate_5fneighbor_401',['interpolate_neighbor',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html',1,'neighbor_interp_mod']]], - ['interpolate_5fneighbor_5fbudget_402',['interpolate_neighbor_budget',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html',1,'neighbor_budget_interp_mod']]], - ['interpolate_5fspectral_403',['interpolate_spectral',['../interfacespectral__interp__mod_1_1interpolate__spectral.html',1,'spectral_interp_mod']]], - ['ip_5fequid_5fcylind_5fgrid_404',['ip_equid_cylind_grid',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html',1,'ip_equid_cylind_grid_mod']]], - ['ip_5fgaussian_5fgrid_405',['ip_gaussian_grid',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html',1,'ip_gaussian_grid_mod']]], - ['ip_5fgrid_406',['ip_grid',['../structip__grid__mod_1_1ip__grid.html',1,'ip_grid_mod']]], - ['ip_5fgrid_5fdescriptor_407',['ip_grid_descriptor',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html',1,'ip_grid_descriptor_mod']]], - ['ip_5flambert_5fconf_5fgrid_408',['ip_lambert_conf_grid',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html',1,'ip_lambert_conf_grid_mod']]], - ['ip_5fmercator_5fgrid_409',['ip_mercator_grid',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html',1,'ip_mercator_grid_mod']]], - ['ip_5fpolar_5fstereo_5fgrid_410',['ip_polar_stereo_grid',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html',1,'ip_polar_stereo_grid_mod']]], - ['ip_5frot_5fequid_5fcylind_5fegrid_411',['ip_rot_equid_cylind_egrid',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html',1,'ip_rot_equid_cylind_egrid_mod']]], - ['ip_5frot_5fequid_5fcylind_5fgrid_412',['ip_rot_equid_cylind_grid',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html',1,'ip_rot_equid_cylind_grid_mod']]], - ['ip_5fstation_5fpoints_5fgrid_413',['ip_station_points_grid',['../structip__station__points__grid__mod_1_1ip__station__points__grid.html',1,'ip_station_points_grid_mod']]], - ['ipolates_414',['ipolates',['../interfaceipolates__mod_1_1ipolates.html',1,'ipolates_mod']]], - ['ipolatev_415',['ipolatev',['../interfaceipolatev__mod_1_1ipolatev.html',1,'ipolatev_mod']]] + ['init_5fdescriptor_398',['init_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['init_5fgrib1_5finterface_399',['init_grib1_interface',['../interfaceip__grid__mod_1_1init__grib1__interface.html',1,'ip_grid_mod']]], + ['init_5fgrib2_5finterface_400',['init_grib2_interface',['../interfaceip__grid__mod_1_1init__grib2__interface.html',1,'ip_grid_mod']]], + ['init_5fgrid_401',['init_grid',['../interfaceip__grid__factory__mod_1_1init__grid.html',1,'ip_grid_factory_mod']]], + ['interpolate_5fbicubic_402',['interpolate_bicubic',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html',1,'bicubic_interp_mod']]], + ['interpolate_5fbilinear_403',['interpolate_bilinear',['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html',1,'bilinear_interp_mod']]], + ['interpolate_5fbudget_404',['interpolate_budget',['../interfacebudget__interp__mod_1_1interpolate__budget.html',1,'budget_interp_mod']]], + ['interpolate_5fneighbor_405',['interpolate_neighbor',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html',1,'neighbor_interp_mod']]], + ['interpolate_5fneighbor_5fbudget_406',['interpolate_neighbor_budget',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html',1,'neighbor_budget_interp_mod']]], + ['interpolate_5fspectral_407',['interpolate_spectral',['../interfacespectral__interp__mod_1_1interpolate__spectral.html',1,'spectral_interp_mod']]], + ['ip_5fequid_5fcylind_5fgrid_408',['ip_equid_cylind_grid',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html',1,'ip_equid_cylind_grid_mod']]], + ['ip_5fgaussian_5fgrid_409',['ip_gaussian_grid',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html',1,'ip_gaussian_grid_mod']]], + ['ip_5fgrid_410',['ip_grid',['../structip__grid__mod_1_1ip__grid.html',1,'ip_grid_mod']]], + ['ip_5fgrid_5fdescriptor_411',['ip_grid_descriptor',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['ip_5flambert_5fconf_5fgrid_412',['ip_lambert_conf_grid',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html',1,'ip_lambert_conf_grid_mod']]], + ['ip_5fmercator_5fgrid_413',['ip_mercator_grid',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html',1,'ip_mercator_grid_mod']]], + ['ip_5fpolar_5fstereo_5fgrid_414',['ip_polar_stereo_grid',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html',1,'ip_polar_stereo_grid_mod']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_415',['ip_rot_equid_cylind_egrid',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html',1,'ip_rot_equid_cylind_egrid_mod']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_416',['ip_rot_equid_cylind_grid',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html',1,'ip_rot_equid_cylind_grid_mod']]], + ['ip_5fstation_5fpoints_5fgrid_417',['ip_station_points_grid',['../structip__station__points__grid__mod_1_1ip__station__points__grid.html',1,'ip_station_points_grid_mod']]], + ['ipolates_418',['ipolates',['../interfaceipolates__mod_1_1ipolates.html',1,'ipolates_mod']]], + ['ipolatev_419',['ipolatev',['../interfaceipolatev__mod_1_1ipolatev.html',1,'ipolatev_mod']]] ]; diff --git a/search/classes_2.js b/search/classes_2.js index 6689b41d..4710f4f0 100644 --- a/search/classes_2.js +++ b/search/classes_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['operator_28_3d_3d_29_416',['operator(==)',['../interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html',1,'ip_grid_descriptor_mod::operator(==)'],['../interfaceip__grid__mod_1_1operator_07_0a_0a_08.html',1,'ip_grid_mod::operator(==)']]] + ['operator_28_3d_3d_29_420',['operator(==)',['../interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html',1,'ip_grid_descriptor_mod::operator(==)'],['../interfaceip__grid__mod_1_1operator_07_0a_0a_08.html',1,'ip_grid_mod::operator(==)']]] ]; diff --git a/search/classes_3.js b/search/classes_3.js index eb67d0de..37aac054 100644 --- a/search/classes_3.js +++ b/search/classes_3.js @@ -1,5 +1,5 @@ var searchData= [ - ['polates4_417',['polates4',['../interfacespectral__interp__mod_1_1polates4.html',1,'spectral_interp_mod']]], - ['polatev4_418',['polatev4',['../interfacespectral__interp__mod_1_1polatev4.html',1,'spectral_interp_mod']]] + ['polates4_421',['polates4',['../interfacespectral__interp__mod_1_1polates4.html',1,'spectral_interp_mod']]], + ['polatev4_422',['polatev4',['../interfacespectral__interp__mod_1_1polatev4.html',1,'spectral_interp_mod']]] ]; diff --git a/search/files_0.js b/search/files_0.js index a22a711b..3928635b 100644 --- a/search/files_0.js +++ b/search/files_0.js @@ -1,6 +1,6 @@ var searchData= [ - ['bicubic_5finterp_5fmod_2ef90_446',['bicubic_interp_mod.F90',['../bicubic__interp__mod_8F90.html',1,'']]], - ['bilinear_5finterp_5fmod_2ef90_447',['bilinear_interp_mod.F90',['../bilinear__interp__mod_8F90.html',1,'']]], - ['budget_5finterp_5fmod_2ef90_448',['budget_interp_mod.F90',['../budget__interp__mod_8F90.html',1,'']]] + ['bicubic_5finterp_5fmod_2ef90_450',['bicubic_interp_mod.F90',['../bicubic__interp__mod_8F90.html',1,'']]], + ['bilinear_5finterp_5fmod_2ef90_451',['bilinear_interp_mod.F90',['../bilinear__interp__mod_8F90.html',1,'']]], + ['budget_5finterp_5fmod_2ef90_452',['budget_interp_mod.F90',['../budget__interp__mod_8F90.html',1,'']]] ]; diff --git a/search/files_1.js b/search/files_1.js index 85fdfeee..c8419619 100644 --- a/search/files_1.js +++ b/search/files_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['earth_5fradius_5fmod_2ef90_449',['earth_radius_mod.F90',['../earth__radius__mod_8F90.html',1,'']]] + ['earth_5fradius_5fmod_2ef90_453',['earth_radius_mod.F90',['../earth__radius__mod_8F90.html',1,'']]] ]; diff --git a/search/files_2.js b/search/files_2.js index bc31b066..859cb8a3 100644 --- a/search/files_2.js +++ b/search/files_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['fftpack_2ef_450',['fftpack.F',['../fftpack_8F.html',1,'']]] + ['fftpack_2ef_454',['fftpack.F',['../fftpack_8F.html',1,'']]] ]; diff --git a/search/files_3.js b/search/files_3.js index 87d2cd84..93599ee8 100644 --- a/search/files_3.js +++ b/search/files_3.js @@ -1,5 +1,5 @@ var searchData= [ - ['gdswzd_5fc_2ef90_451',['gdswzd_c.F90',['../gdswzd__c_8F90.html',1,'']]], - ['gdswzd_5fmod_2ef90_452',['gdswzd_mod.F90',['../gdswzd__mod_8F90.html',1,'']]] + ['gdswzd_5fc_2ef90_455',['gdswzd_c.F90',['../gdswzd__c_8F90.html',1,'']]], + ['gdswzd_5fmod_2ef90_456',['gdswzd_mod.F90',['../gdswzd__mod_8F90.html',1,'']]] ]; diff --git a/search/files_4.js b/search/files_4.js index 18055cf1..5e9b50ff 100644 --- a/search/files_4.js +++ b/search/files_4.js @@ -1,27 +1,27 @@ var searchData= [ - ['ip_5fconstants_5fmod_2ef90_453',['ip_constants_mod.F90',['../ip__constants__mod_8F90.html',1,'']]], - ['ip_5fequid_5fcylind_5fgrid_5fmod_2ef90_454',['ip_equid_cylind_grid_mod.F90',['../ip__equid__cylind__grid__mod_8F90.html',1,'']]], - ['ip_5fgaussian_5fgrid_5fmod_2ef90_455',['ip_gaussian_grid_mod.F90',['../ip__gaussian__grid__mod_8F90.html',1,'']]], - ['ip_5fgrid_5fdescriptor_5fmod_2ef90_456',['ip_grid_descriptor_mod.F90',['../ip__grid__descriptor__mod_8F90.html',1,'']]], - ['ip_5fgrid_5ffactory_5fmod_2ef90_457',['ip_grid_factory_mod.F90',['../ip__grid__factory__mod_8F90.html',1,'']]], - ['ip_5fgrid_5fmod_2ef90_458',['ip_grid_mod.F90',['../ip__grid__mod_8F90.html',1,'']]], - ['ip_5fgrids_5fmod_2ef90_459',['ip_grids_mod.F90',['../ip__grids__mod_8F90.html',1,'']]], - ['ip_5finterpolators_5fmod_2ef90_460',['ip_interpolators_mod.F90',['../ip__interpolators__mod_8F90.html',1,'']]], - ['ip_5flambert_5fconf_5fgrid_5fmod_2ef90_461',['ip_lambert_conf_grid_mod.F90',['../ip__lambert__conf__grid__mod_8F90.html',1,'']]], - ['ip_5fmercator_5fgrid_5fmod_2ef90_462',['ip_mercator_grid_mod.F90',['../ip__mercator__grid__mod_8F90.html',1,'']]], - ['ip_5fmod_2ef90_463',['ip_mod.F90',['../ip__mod_8F90.html',1,'']]], - ['ip_5fpolar_5fstereo_5fgrid_5fmod_2ef90_464',['ip_polar_stereo_grid_mod.F90',['../ip__polar__stereo__grid__mod_8F90.html',1,'']]], - ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_2ef90_465',['ip_rot_equid_cylind_egrid_mod.F90',['../ip__rot__equid__cylind__egrid__mod_8F90.html',1,'']]], - ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_2ef90_466',['ip_rot_equid_cylind_grid_mod.F90',['../ip__rot__equid__cylind__grid__mod_8F90.html',1,'']]], - ['ip_5fstation_5fpoints_5fgrid_5fmod_2ef90_467',['ip_station_points_grid_mod.F90',['../ip__station__points__grid__mod_8F90.html',1,'']]], - ['iplib_5f4_2eh_468',['iplib_4.h',['../iplib__4_8h.html',1,'']]], - ['iplib_5f8_2eh_469',['iplib_8.h',['../iplib__8_8h.html',1,'']]], - ['iplib_5fd_2eh_470',['iplib_d.h',['../iplib__d_8h.html',1,'']]], - ['ipolates_2ef90_471',['ipolates.F90',['../ipolates_8F90.html',1,'']]], - ['ipolatev_2ef90_472',['ipolatev.F90',['../ipolatev_8F90.html',1,'']]], - ['ipxetas_2ef90_473',['ipxetas.F90',['../ipxetas_8F90.html',1,'']]], - ['ipxwafs_2ef90_474',['ipxwafs.F90',['../ipxwafs_8F90.html',1,'']]], - ['ipxwafs2_2ef90_475',['ipxwafs2.F90',['../ipxwafs2_8F90.html',1,'']]], - ['ipxwafs3_2ef90_476',['ipxwafs3.F90',['../ipxwafs3_8F90.html',1,'']]] + ['ip_5fconstants_5fmod_2ef90_457',['ip_constants_mod.F90',['../ip__constants__mod_8F90.html',1,'']]], + ['ip_5fequid_5fcylind_5fgrid_5fmod_2ef90_458',['ip_equid_cylind_grid_mod.F90',['../ip__equid__cylind__grid__mod_8F90.html',1,'']]], + ['ip_5fgaussian_5fgrid_5fmod_2ef90_459',['ip_gaussian_grid_mod.F90',['../ip__gaussian__grid__mod_8F90.html',1,'']]], + ['ip_5fgrid_5fdescriptor_5fmod_2ef90_460',['ip_grid_descriptor_mod.F90',['../ip__grid__descriptor__mod_8F90.html',1,'']]], + ['ip_5fgrid_5ffactory_5fmod_2ef90_461',['ip_grid_factory_mod.F90',['../ip__grid__factory__mod_8F90.html',1,'']]], + ['ip_5fgrid_5fmod_2ef90_462',['ip_grid_mod.F90',['../ip__grid__mod_8F90.html',1,'']]], + ['ip_5fgrids_5fmod_2ef90_463',['ip_grids_mod.F90',['../ip__grids__mod_8F90.html',1,'']]], + ['ip_5finterpolators_5fmod_2ef90_464',['ip_interpolators_mod.F90',['../ip__interpolators__mod_8F90.html',1,'']]], + ['ip_5flambert_5fconf_5fgrid_5fmod_2ef90_465',['ip_lambert_conf_grid_mod.F90',['../ip__lambert__conf__grid__mod_8F90.html',1,'']]], + ['ip_5fmercator_5fgrid_5fmod_2ef90_466',['ip_mercator_grid_mod.F90',['../ip__mercator__grid__mod_8F90.html',1,'']]], + ['ip_5fmod_2ef90_467',['ip_mod.F90',['../ip__mod_8F90.html',1,'']]], + ['ip_5fpolar_5fstereo_5fgrid_5fmod_2ef90_468',['ip_polar_stereo_grid_mod.F90',['../ip__polar__stereo__grid__mod_8F90.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_2ef90_469',['ip_rot_equid_cylind_egrid_mod.F90',['../ip__rot__equid__cylind__egrid__mod_8F90.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_2ef90_470',['ip_rot_equid_cylind_grid_mod.F90',['../ip__rot__equid__cylind__grid__mod_8F90.html',1,'']]], + ['ip_5fstation_5fpoints_5fgrid_5fmod_2ef90_471',['ip_station_points_grid_mod.F90',['../ip__station__points__grid__mod_8F90.html',1,'']]], + ['iplib_5f4_2eh_472',['iplib_4.h',['../iplib__4_8h.html',1,'']]], + ['iplib_5f8_2eh_473',['iplib_8.h',['../iplib__8_8h.html',1,'']]], + ['iplib_5fd_2eh_474',['iplib_d.h',['../iplib__d_8h.html',1,'']]], + ['ipolates_2ef90_475',['ipolates.F90',['../ipolates_8F90.html',1,'']]], + ['ipolatev_2ef90_476',['ipolatev.F90',['../ipolatev_8F90.html',1,'']]], + ['ipxetas_2ef90_477',['ipxetas.F90',['../ipxetas_8F90.html',1,'']]], + ['ipxwafs_2ef90_478',['ipxwafs.F90',['../ipxwafs_8F90.html',1,'']]], + ['ipxwafs2_2ef90_479',['ipxwafs2.F90',['../ipxwafs2_8F90.html',1,'']]], + ['ipxwafs3_2ef90_480',['ipxwafs3.F90',['../ipxwafs3_8F90.html',1,'']]] ]; diff --git a/search/files_5.js b/search/files_5.js index f9c80028..42ab7f1d 100644 --- a/search/files_5.js +++ b/search/files_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['lapack_5fgen_2ef_477',['lapack_gen.F',['../lapack__gen_8F.html',1,'']]] + ['movect_2ef90_481',['movect.F90',['../movect_8F90.html',1,'']]] ]; diff --git a/search/files_6.js b/search/files_6.js index f9eeb6a6..85fe4d56 100644 --- a/search/files_6.js +++ b/search/files_6.js @@ -1,4 +1,6 @@ var searchData= [ - ['movect_2ef90_478',['movect.F90',['../movect_8F90.html',1,'']]] + ['ncpus_2ef_482',['ncpus.F',['../ncpus_8F.html',1,'']]], + ['neighbor_5fbudget_5finterp_5fmod_2ef90_483',['neighbor_budget_interp_mod.F90',['../neighbor__budget__interp__mod_8F90.html',1,'']]], + ['neighbor_5finterp_5fmod_2ef90_484',['neighbor_interp_mod.F90',['../neighbor__interp__mod_8F90.html',1,'']]] ]; diff --git a/search/files_7.js b/search/files_7.js index aba62e4f..13b605ea 100644 --- a/search/files_7.js +++ b/search/files_7.js @@ -1,6 +1,4 @@ var searchData= [ - ['ncpus_2ef_479',['ncpus.F',['../ncpus_8F.html',1,'']]], - ['neighbor_5fbudget_5finterp_5fmod_2ef90_480',['neighbor_budget_interp_mod.F90',['../neighbor__budget__interp__mod_8F90.html',1,'']]], - ['neighbor_5finterp_5fmod_2ef90_481',['neighbor_interp_mod.F90',['../neighbor__interp__mod_8F90.html',1,'']]] + ['polfix_5fmod_2ef90_485',['polfix_mod.F90',['../polfix__mod_8F90.html',1,'']]] ]; diff --git a/search/files_8.js b/search/files_8.js index c05771bc..0b230cdb 100644 --- a/search/files_8.js +++ b/search/files_8.js @@ -1,4 +1,56 @@ var searchData= [ - ['polfix_5fmod_2ef90_482',['polfix_mod.F90',['../polfix__mod_8F90.html',1,'']]] + ['spanaly_2ef_486',['spanaly.f',['../spanaly_8f.html',1,'']]], + ['spdz2uv_2ef_487',['spdz2uv.f',['../spdz2uv_8f.html',1,'']]], + ['spectral_5finterp_5fmod_2ef90_488',['spectral_interp_mod.F90',['../spectral__interp__mod_8F90.html',1,'']]], + ['speps_2ef_489',['speps.f',['../speps_8f.html',1,'']]], + ['spfft_2ef_490',['spfft.f',['../spfft_8f.html',1,'']]], + ['spfft1_2ef_491',['spfft1.f',['../spfft1_8f.html',1,'']]], + ['spffte_2ef_492',['spffte.f',['../spffte_8f.html',1,'']]], + ['spfftpt_2ef_493',['spfftpt.f',['../spfftpt_8f.html',1,'']]], + ['spgradq_2ef_494',['spgradq.f',['../spgradq_8f.html',1,'']]], + ['spgradx_2ef_495',['spgradx.f',['../spgradx_8f.html',1,'']]], + ['spgrady_2ef_496',['spgrady.f',['../spgrady_8f.html',1,'']]], + ['splaplac_2ef_497',['splaplac.f',['../splaplac_8f.html',1,'']]], + ['splat_2ef_498',['splat.F',['../splat_8F.html',1,'']]], + ['splegend_2ef_499',['splegend.f',['../splegend_8f.html',1,'']]], + ['sppad_2ef_500',['sppad.f',['../sppad_8f.html',1,'']]], + ['spsynth_2ef_501',['spsynth.f',['../spsynth_8f.html',1,'']]], + ['sptez_2ef_502',['sptez.f',['../sptez_8f.html',1,'']]], + ['sptezd_2ef_503',['sptezd.f',['../sptezd_8f.html',1,'']]], + ['sptezm_2ef_504',['sptezm.f',['../sptezm_8f.html',1,'']]], + ['sptezmd_2ef_505',['sptezmd.f',['../sptezmd_8f.html',1,'']]], + ['sptezmv_2ef_506',['sptezmv.f',['../sptezmv_8f.html',1,'']]], + ['sptezv_2ef_507',['sptezv.f',['../sptezv_8f.html',1,'']]], + ['sptgpm_2ef_508',['sptgpm.f',['../sptgpm_8f.html',1,'']]], + ['sptgpmd_2ef_509',['sptgpmd.f',['../sptgpmd_8f.html',1,'']]], + ['sptgpmv_2ef_510',['sptgpmv.f',['../sptgpmv_8f.html',1,'']]], + ['sptgps_2ef_511',['sptgps.f',['../sptgps_8f.html',1,'']]], + ['sptgpsd_2ef_512',['sptgpsd.f',['../sptgpsd_8f.html',1,'']]], + ['sptgpsv_2ef_513',['sptgpsv.f',['../sptgpsv_8f.html',1,'']]], + ['sptgpt_2ef_514',['sptgpt.f',['../sptgpt_8f.html',1,'']]], + ['sptgptd_2ef_515',['sptgptd.f',['../sptgptd_8f.html',1,'']]], + ['sptgptsd_2ef_516',['sptgptsd.f',['../sptgptsd_8f.html',1,'']]], + ['sptgptv_2ef_517',['sptgptv.f',['../sptgptv_8f.html',1,'']]], + ['sptgptvd_2ef_518',['sptgptvd.f',['../sptgptvd_8f.html',1,'']]], + ['sptran_2ef_519',['sptran.f',['../sptran_8f.html',1,'']]], + ['sptrand_2ef_520',['sptrand.f',['../sptrand_8f.html',1,'']]], + ['sptranf_2ef_521',['sptranf.f',['../sptranf_8f.html',1,'']]], + ['sptranf0_2ef_522',['sptranf0.f',['../sptranf0_8f.html',1,'']]], + ['sptranf1_2ef_523',['sptranf1.f',['../sptranf1_8f.html',1,'']]], + ['sptranfv_2ef_524',['sptranfv.f',['../sptranfv_8f.html',1,'']]], + ['sptranv_2ef_525',['sptranv.f',['../sptranv_8f.html',1,'']]], + ['sptrun_2ef_526',['sptrun.f',['../sptrun_8f.html',1,'']]], + ['sptrund_2ef_527',['sptrund.f',['../sptrund_8f.html',1,'']]], + ['sptrung_2ef_528',['sptrung.f',['../sptrung_8f.html',1,'']]], + ['sptrungv_2ef_529',['sptrungv.f',['../sptrungv_8f.html',1,'']]], + ['sptrunl_2ef_530',['sptrunl.f',['../sptrunl_8f.html',1,'']]], + ['sptrunm_2ef_531',['sptrunm.f',['../sptrunm_8f.html',1,'']]], + ['sptrunmv_2ef_532',['sptrunmv.f',['../sptrunmv_8f.html',1,'']]], + ['sptruns_2ef_533',['sptruns.f',['../sptruns_8f.html',1,'']]], + ['sptrunsv_2ef_534',['sptrunsv.f',['../sptrunsv_8f.html',1,'']]], + ['sptrunv_2ef_535',['sptrunv.f',['../sptrunv_8f.html',1,'']]], + ['spuv2dz_2ef_536',['spuv2dz.f',['../spuv2dz_8f.html',1,'']]], + ['spvar_2ef_537',['spvar.f',['../spvar_8f.html',1,'']]], + ['spwget_2ef_538',['spwget.f',['../spwget_8f.html',1,'']]] ]; diff --git a/search/functions_0.js b/search/functions_0.js index 511dace6..cf1d6e85 100644 --- a/search/functions_0.js +++ b/search/functions_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['csfft_536',['csfft',['../fftpack_8F.html#ad261879c88a7f040e43f1549e65f36e5',1,'fftpack.F']]] + ['csfft_539',['csfft',['../fftpack_8F.html#ad261879c88a7f040e43f1549e65f36e5',1,'fftpack.F']]] ]; diff --git a/search/functions_1.js b/search/functions_1.js index 2e7feb8d..839706fd 100644 --- a/search/functions_1.js +++ b/search/functions_1.js @@ -1,5 +1,5 @@ var searchData= [ - ['dcrft_537',['dcrft',['../fftpack_8F.html#a713ef445886ad8dc8b16692c6075d225',1,'fftpack.F']]], - ['drcft_538',['drcft',['../fftpack_8F.html#a55b05419c0d3bb0595b34c8cacf93be8',1,'fftpack.F']]] + ['dcrft_540',['dcrft',['../fftpack_8F.html#a713ef445886ad8dc8b16692c6075d225',1,'fftpack.F']]], + ['drcft_541',['drcft',['../fftpack_8F.html#a55b05419c0d3bb0595b34c8cacf93be8',1,'fftpack.F']]] ]; diff --git a/search/functions_2.js b/search/functions_2.js index ab7735da..d1cf929b 100644 --- a/search/functions_2.js +++ b/search/functions_2.js @@ -1,7 +1,7 @@ var searchData= [ - ['earth_5fradius_539',['earth_radius',['../namespaceearth__radius__mod.html#a810f60db1a1faff0d6f59937a8207a54',1,'earth_radius_mod']]], - ['equid_5fcylind_5fgrid_5farea_540',['equid_cylind_grid_area',['../namespaceip__equid__cylind__grid__mod.html#a5a70b82abdce76bef22cdeaa96a986c2',1,'ip_equid_cylind_grid_mod']]], - ['equid_5fcylind_5fmap_5fjacob_541',['equid_cylind_map_jacob',['../namespaceip__equid__cylind__grid__mod.html#a039501b44cd3ad4409983e193d509afd',1,'ip_equid_cylind_grid_mod']]], - ['equid_5fcylind_5fvect_5frot_542',['equid_cylind_vect_rot',['../namespaceip__equid__cylind__grid__mod.html#ade88ecea1c0bb4b4d5b0d08f8482268d',1,'ip_equid_cylind_grid_mod']]] + ['earth_5fradius_542',['earth_radius',['../namespaceearth__radius__mod.html#a810f60db1a1faff0d6f59937a8207a54',1,'earth_radius_mod']]], + ['equid_5fcylind_5fgrid_5farea_543',['equid_cylind_grid_area',['../namespaceip__equid__cylind__grid__mod.html#a5a70b82abdce76bef22cdeaa96a986c2',1,'ip_equid_cylind_grid_mod']]], + ['equid_5fcylind_5fmap_5fjacob_544',['equid_cylind_map_jacob',['../namespaceip__equid__cylind__grid__mod.html#a039501b44cd3ad4409983e193d509afd',1,'ip_equid_cylind_grid_mod']]], + ['equid_5fcylind_5fvect_5frot_545',['equid_cylind_vect_rot',['../namespaceip__equid__cylind__grid__mod.html#ade88ecea1c0bb4b4d5b0d08f8482268d',1,'ip_equid_cylind_grid_mod']]] ]; diff --git a/search/functions_3.js b/search/functions_3.js index 2559a58d..5b55ebf3 100644 --- a/search/functions_3.js +++ b/search/functions_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['field_5fpos_543',['field_pos',['../structip__grid__mod_1_1ip__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179',1,'ip_grid_mod::ip_grid::field_pos()'],['../namespaceip__grid__mod.html#a63572318d74ec94c20c5ccd6ded2d442',1,'ip_grid_mod::field_pos()']]] + ['field_5fpos_546',['field_pos',['../structip__grid__mod_1_1ip__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179',1,'ip_grid_mod::ip_grid::field_pos()'],['../namespaceip__grid__mod.html#a63572318d74ec94c20c5ccd6ded2d442',1,'ip_grid_mod::field_pos()']]] ]; diff --git a/search/functions_4.js b/search/functions_4.js index a588d793..9a05b688 100644 --- a/search/functions_4.js +++ b/search/functions_4.js @@ -1,24 +1,24 @@ var searchData= [ - ['gaussian_5fgrid_5farea_544',['gaussian_grid_area',['../namespaceip__gaussian__grid__mod.html#ab602a870a477c7ab77438700af4e7780',1,'ip_gaussian_grid_mod']]], - ['gaussian_5fmap_5fjacob_545',['gaussian_map_jacob',['../namespaceip__gaussian__grid__mod.html#adca7b03877c6a7048ff1716a95e0bd9d',1,'ip_gaussian_grid_mod']]], - ['gaussian_5fvect_5frot_546',['gaussian_vect_rot',['../namespaceip__gaussian__grid__mod.html#ac72eec96d0012fbe0f0ec7c520f40dad',1,'ip_gaussian_grid_mod']]], - ['gdswzd_547',['gdswzd',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a7ce52d987d2bd2442053042c03f96885',1,'ip_gaussian_grid_mod::ip_gaussian_grid::gdswzd()'],['../iplib__d_8h.html#ac919f31612096fd6a7547a425ab3d38e',1,'gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_d.h'],['../iplib__8_8h.html#af41ad9a4b34f78d182a68b3d72b9bdf4',1,'gdswzd(long igdtnum, long *igdtmpl, long igdtlen, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_8.h'],['../iplib__4_8h.html#a44daefd49c37e9bc59933d98e56efa53',1,'gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area): iplib_4.h'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#a9fff8b24553d11177b8c1ee38bfbd91f',1,'ip_station_points_grid_mod::ip_station_points_grid::gdswzd()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a0f14a253b51bcb0633cd00d32d5130a4',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::gdswzd()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa1023c3efed20a990b75f937bbcac6a3',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::gdswzd()'],['../structip__grid__mod_1_1ip__grid.html#a5fb366fb577a90cc09f21269b90ac080',1,'ip_grid_mod::ip_grid::gdswzd()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a62c8147f8845d75e8f52c7524a74c780',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::gdswzd()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9e97b7352e67dd629f622f292cf0ca21',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::gdswzd()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a940420aa99e0fbe51a976f9d0c343f1a',1,'ip_mercator_grid_mod::ip_mercator_grid::gdswzd()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#aa69861340bc268b91a1076048ed489fc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::gdswzd()']]], - ['gdswzd_5f1d_5farray_548',['gdswzd_1d_array',['../interfacegdswzd__mod_1_1gdswzd.html#afaf35e3ce949dd2ce3d72dd3f06d4e3b',1,'gdswzd_mod::gdswzd::gdswzd_1d_array()'],['../namespacegdswzd__mod.html#ac304e2b046eccc701e24827c81107e76',1,'gdswzd_mod::gdswzd_1d_array()']]], - ['gdswzd_5f2d_5farray_549',['gdswzd_2d_array',['../interfacegdswzd__mod_1_1gdswzd.html#a8b60240eefdc297eacf90c348b529d31',1,'gdswzd_mod::gdswzd::gdswzd_2d_array()'],['../namespacegdswzd__mod.html#acdf970e498e9317522fbdfb690b86e25',1,'gdswzd_mod::gdswzd_2d_array(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)']]], - ['gdswzd_5f2d_5farray_5fgrib1_550',['gdswzd_2d_array_grib1',['../namespacegdswzd__mod.html#aa032a55281b18e208630a730679958f4',1,'gdswzd_mod::gdswzd_2d_array_grib1()'],['../interfacegdswzd__mod_1_1gdswzd.html#a7c66a7ede2b644f7e366df9f70b9f0a5',1,'gdswzd_mod::gdswzd::gdswzd_2d_array_grib1()']]], - ['gdswzd_5fc_551',['gdswzd_c',['../namespacegdswzd__c__mod.html#ae3026381f7f41561507c97c9125d24e4',1,'gdswzd_c_mod']]], - ['gdswzd_5fc_5fgrib1_552',['gdswzd_c_grib1',['../namespacegdswzd__c__mod.html#a06861f1403edf106bb3b399c39981504',1,'gdswzd_c_mod']]], - ['gdswzd_5fequid_5fcylind_553',['gdswzd_equid_cylind',['../namespaceip__equid__cylind__grid__mod.html#af20f6f308b5a33211c677b894e41b727',1,'ip_equid_cylind_grid_mod']]], - ['gdswzd_5fgaussian_554',['gdswzd_gaussian',['../namespaceip__gaussian__grid__mod.html#a6eefd9270b3f9bb2c59a77bea4ecf1b9',1,'ip_gaussian_grid_mod']]], - ['gdswzd_5fgrib1_555',['gdswzd_grib1',['../interfacegdswzd__mod_1_1gdswzd.html#a65b95791813ffd5afbfba9d4cb67676a',1,'gdswzd_mod::gdswzd::gdswzd_grib1()'],['../namespacegdswzd__mod.html#a133e040fac8dd56e607b8e3fb6a58c37',1,'gdswzd_mod::gdswzd_grib1()'],['../iplib__4_8h.html#a7f2f96041c0d42926e14cb0f40f336e1',1,'gdswzd_grib1(int *kgds, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area): iplib_4.h'],['../iplib__8_8h.html#ab8e46b623c66911913f66d314c15cc93',1,'gdswzd_grib1(long *kgds, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_8.h'],['../iplib__d_8h.html#ac33340cba2ac7b42dd9b9116fc28d691',1,'gdswzd_grib1(int *kgds, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_d.h']]], - ['gdswzd_5fgrid_556',['gdswzd_grid',['../namespacegdswzd__mod.html#a584d2bddbc6d857b80cfac5e3b288d45',1,'gdswzd_mod::gdswzd_grid()'],['../interfacegdswzd__mod_1_1gdswzd.html#abfe059339c6c9f05fd4eadb5d70aec16',1,'gdswzd_mod::gdswzd::gdswzd_grid()']]], - ['gdswzd_5finterface_557',['gdswzd_interface',['../interfaceip__grid__mod_1_1gdswzd__interface.html#af34c5d9da54a36322bb1a141217c6369',1,'ip_grid_mod::gdswzd_interface']]], - ['gdswzd_5flambert_5fconf_558',['gdswzd_lambert_conf',['../namespaceip__lambert__conf__grid__mod.html#a5ebb9e4f1bd58caa254771b305c94f71',1,'ip_lambert_conf_grid_mod']]], - ['gdswzd_5fmercator_559',['gdswzd_mercator',['../namespaceip__mercator__grid__mod.html#acc39017fa51125972ab8e755e16d339e',1,'ip_mercator_grid_mod']]], - ['gdswzd_5fpolar_5fstereo_560',['gdswzd_polar_stereo',['../namespaceip__polar__stereo__grid__mod.html#ae2694d90ab514a131e083dfba3b173c5',1,'ip_polar_stereo_grid_mod']]], - ['gdswzd_5frot_5fequid_5fcylind_561',['gdswzd_rot_equid_cylind',['../namespaceip__rot__equid__cylind__grid__mod.html#a55c153201e15205d3f75e4ffb717cc0b',1,'ip_rot_equid_cylind_grid_mod']]], - ['gdswzd_5frot_5fequid_5fcylind_5fegrid_562',['gdswzd_rot_equid_cylind_egrid',['../namespaceip__rot__equid__cylind__egrid__mod.html#a9ad11a599fc0bdc4a9ece86a3b1cc399',1,'ip_rot_equid_cylind_egrid_mod']]], - ['gdswzd_5fscalar_563',['gdswzd_scalar',['../interfacegdswzd__mod_1_1gdswzd.html#a1fc841ec08d39463b3f5f36eac0068cd',1,'gdswzd_mod::gdswzd::gdswzd_scalar()'],['../namespacegdswzd__mod.html#aba3235c5bc5797e72b9a6a8a587b8861',1,'gdswzd_mod::gdswzd_scalar()']]], - ['gdswzd_5fstation_5fpoints_564',['gdswzd_station_points',['../namespaceip__station__points__grid__mod.html#a8da297b45242279a497dbd7062a33197',1,'ip_station_points_grid_mod']]] + ['gaussian_5fgrid_5farea_547',['gaussian_grid_area',['../namespaceip__gaussian__grid__mod.html#ab602a870a477c7ab77438700af4e7780',1,'ip_gaussian_grid_mod']]], + ['gaussian_5fmap_5fjacob_548',['gaussian_map_jacob',['../namespaceip__gaussian__grid__mod.html#adca7b03877c6a7048ff1716a95e0bd9d',1,'ip_gaussian_grid_mod']]], + ['gaussian_5fvect_5frot_549',['gaussian_vect_rot',['../namespaceip__gaussian__grid__mod.html#ac72eec96d0012fbe0f0ec7c520f40dad',1,'ip_gaussian_grid_mod']]], + ['gdswzd_550',['gdswzd',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a7ce52d987d2bd2442053042c03f96885',1,'ip_gaussian_grid_mod::ip_gaussian_grid::gdswzd()'],['../iplib__d_8h.html#ac919f31612096fd6a7547a425ab3d38e',1,'gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_d.h'],['../iplib__8_8h.html#af41ad9a4b34f78d182a68b3d72b9bdf4',1,'gdswzd(long igdtnum, long *igdtmpl, long igdtlen, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_8.h'],['../iplib__4_8h.html#a44daefd49c37e9bc59933d98e56efa53',1,'gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area): iplib_4.h'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#a9fff8b24553d11177b8c1ee38bfbd91f',1,'ip_station_points_grid_mod::ip_station_points_grid::gdswzd()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a0f14a253b51bcb0633cd00d32d5130a4',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::gdswzd()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa1023c3efed20a990b75f937bbcac6a3',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::gdswzd()'],['../structip__grid__mod_1_1ip__grid.html#a5fb366fb577a90cc09f21269b90ac080',1,'ip_grid_mod::ip_grid::gdswzd()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a62c8147f8845d75e8f52c7524a74c780',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::gdswzd()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9e97b7352e67dd629f622f292cf0ca21',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::gdswzd()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a940420aa99e0fbe51a976f9d0c343f1a',1,'ip_mercator_grid_mod::ip_mercator_grid::gdswzd()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#aa69861340bc268b91a1076048ed489fc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::gdswzd()']]], + ['gdswzd_5f1d_5farray_551',['gdswzd_1d_array',['../interfacegdswzd__mod_1_1gdswzd.html#afaf35e3ce949dd2ce3d72dd3f06d4e3b',1,'gdswzd_mod::gdswzd::gdswzd_1d_array()'],['../namespacegdswzd__mod.html#ac304e2b046eccc701e24827c81107e76',1,'gdswzd_mod::gdswzd_1d_array()']]], + ['gdswzd_5f2d_5farray_552',['gdswzd_2d_array',['../interfacegdswzd__mod_1_1gdswzd.html#a8b60240eefdc297eacf90c348b529d31',1,'gdswzd_mod::gdswzd::gdswzd_2d_array()'],['../namespacegdswzd__mod.html#acdf970e498e9317522fbdfb690b86e25',1,'gdswzd_mod::gdswzd_2d_array(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)']]], + ['gdswzd_5f2d_5farray_5fgrib1_553',['gdswzd_2d_array_grib1',['../namespacegdswzd__mod.html#aa032a55281b18e208630a730679958f4',1,'gdswzd_mod::gdswzd_2d_array_grib1()'],['../interfacegdswzd__mod_1_1gdswzd.html#a7c66a7ede2b644f7e366df9f70b9f0a5',1,'gdswzd_mod::gdswzd::gdswzd_2d_array_grib1()']]], + ['gdswzd_5fc_554',['gdswzd_c',['../namespacegdswzd__c__mod.html#ae3026381f7f41561507c97c9125d24e4',1,'gdswzd_c_mod']]], + ['gdswzd_5fc_5fgrib1_555',['gdswzd_c_grib1',['../namespacegdswzd__c__mod.html#a06861f1403edf106bb3b399c39981504',1,'gdswzd_c_mod']]], + ['gdswzd_5fequid_5fcylind_556',['gdswzd_equid_cylind',['../namespaceip__equid__cylind__grid__mod.html#af20f6f308b5a33211c677b894e41b727',1,'ip_equid_cylind_grid_mod']]], + ['gdswzd_5fgaussian_557',['gdswzd_gaussian',['../namespaceip__gaussian__grid__mod.html#a6eefd9270b3f9bb2c59a77bea4ecf1b9',1,'ip_gaussian_grid_mod']]], + ['gdswzd_5fgrib1_558',['gdswzd_grib1',['../interfacegdswzd__mod_1_1gdswzd.html#a65b95791813ffd5afbfba9d4cb67676a',1,'gdswzd_mod::gdswzd::gdswzd_grib1()'],['../namespacegdswzd__mod.html#a133e040fac8dd56e607b8e3fb6a58c37',1,'gdswzd_mod::gdswzd_grib1()'],['../iplib__4_8h.html#a7f2f96041c0d42926e14cb0f40f336e1',1,'gdswzd_grib1(int *kgds, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area): iplib_4.h'],['../iplib__8_8h.html#ab8e46b623c66911913f66d314c15cc93',1,'gdswzd_grib1(long *kgds, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_8.h'],['../iplib__d_8h.html#ac33340cba2ac7b42dd9b9116fc28d691',1,'gdswzd_grib1(int *kgds, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_d.h']]], + ['gdswzd_5fgrid_559',['gdswzd_grid',['../namespacegdswzd__mod.html#a584d2bddbc6d857b80cfac5e3b288d45',1,'gdswzd_mod::gdswzd_grid()'],['../interfacegdswzd__mod_1_1gdswzd.html#abfe059339c6c9f05fd4eadb5d70aec16',1,'gdswzd_mod::gdswzd::gdswzd_grid()']]], + ['gdswzd_5finterface_560',['gdswzd_interface',['../interfaceip__grid__mod_1_1gdswzd__interface.html#af34c5d9da54a36322bb1a141217c6369',1,'ip_grid_mod::gdswzd_interface']]], + ['gdswzd_5flambert_5fconf_561',['gdswzd_lambert_conf',['../namespaceip__lambert__conf__grid__mod.html#a5ebb9e4f1bd58caa254771b305c94f71',1,'ip_lambert_conf_grid_mod']]], + ['gdswzd_5fmercator_562',['gdswzd_mercator',['../namespaceip__mercator__grid__mod.html#acc39017fa51125972ab8e755e16d339e',1,'ip_mercator_grid_mod']]], + ['gdswzd_5fpolar_5fstereo_563',['gdswzd_polar_stereo',['../namespaceip__polar__stereo__grid__mod.html#ae2694d90ab514a131e083dfba3b173c5',1,'ip_polar_stereo_grid_mod']]], + ['gdswzd_5frot_5fequid_5fcylind_564',['gdswzd_rot_equid_cylind',['../namespaceip__rot__equid__cylind__grid__mod.html#a55c153201e15205d3f75e4ffb717cc0b',1,'ip_rot_equid_cylind_grid_mod']]], + ['gdswzd_5frot_5fequid_5fcylind_5fegrid_565',['gdswzd_rot_equid_cylind_egrid',['../namespaceip__rot__equid__cylind__egrid__mod.html#a9ad11a599fc0bdc4a9ece86a3b1cc399',1,'ip_rot_equid_cylind_egrid_mod']]], + ['gdswzd_5fscalar_566',['gdswzd_scalar',['../interfacegdswzd__mod_1_1gdswzd.html#a1fc841ec08d39463b3f5f36eac0068cd',1,'gdswzd_mod::gdswzd::gdswzd_scalar()'],['../namespacegdswzd__mod.html#aba3235c5bc5797e72b9a6a8a587b8861',1,'gdswzd_mod::gdswzd_scalar()']]], + ['gdswzd_5fstation_5fpoints_567',['gdswzd_station_points',['../namespaceip__station__points__grid__mod.html#a8da297b45242279a497dbd7062a33197',1,'ip_station_points_grid_mod']]] ]; diff --git a/search/functions_5.js b/search/functions_5.js index c35b2aaa..1a96bb09 100644 --- a/search/functions_5.js +++ b/search/functions_5.js @@ -1,42 +1,44 @@ var searchData= [ - ['init_565',['init',['../structip__grid__mod_1_1ip__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c',1,'ip_grid_mod::ip_grid']]], - ['init_5fgrib1_566',['init_grib1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a68fb7543888cc76885560709184e7d70',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib1()'],['../namespaceip__station__points__grid__mod.html#a4b28ebf2b4fe826c96af69db28e0a1ff',1,'ip_station_points_grid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__grid__mod.html#acb27dfdc6f03dea897d509910365afee',1,'ip_rot_equid_cylind_grid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#aa65616b97df9c89893161ff802e16eab',1,'ip_rot_equid_cylind_egrid_mod::init_grib1()'],['../namespaceip__polar__stereo__grid__mod.html#a6ed76f58f30993cd7be84b7e03cf4d6f',1,'ip_polar_stereo_grid_mod::init_grib1()'],['../namespaceip__mercator__grid__mod.html#a4125dba8b09e9b69933e224b00f4758d',1,'ip_mercator_grid_mod::init_grib1()'],['../namespaceip__lambert__conf__grid__mod.html#a5544708e893ffcfbe7d958fdec700eea',1,'ip_lambert_conf_grid_mod::init_grib1()'],['../namespaceip__gaussian__grid__mod.html#a8fe2ee732a3a2db4891a6431787a0b01',1,'ip_gaussian_grid_mod::init_grib1()'],['../namespaceip__equid__cylind__grid__mod.html#a3d0132823d27b60835ebb59ead173477',1,'ip_equid_cylind_grid_mod::init_grib1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#afd3658924783d5dbbd3fe5f07d5b60a7',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib1()'],['../structip__grid__mod_1_1ip__grid.html#a5a2c16279eb73a0c54ae0a1586d5b806',1,'ip_grid_mod::ip_grid::init_grib1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a35dd86b4a9017f5b03a0a6a01eb4d370',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3ae3bbb47f4c03c36404a2b35014d65c',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ae2a5a7c08e4578f3d0ff6b85e5a14cce',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#ab9a85830bfd06183a8df73726f62217a',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib1()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a9942c787bda2e118f1355476670edfca',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib1()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#aa5ec2cbc9bf0dadf20a226e0afeb3d32',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib1()']]], - ['init_5fgrib1_5fdescriptor_567',['init_grib1_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a3b5b267aa7a17a4615dcc0cb4e590f6e',1,'ip_grid_descriptor_mod::init_descriptor::init_grib1_descriptor()'],['../namespaceip__grid__descriptor__mod.html#aa00884a7fca018535eaf0c2ebe26bc98',1,'ip_grid_descriptor_mod::init_grib1_descriptor()']]], - ['init_5fgrib1_5finterface_568',['init_grib1_interface',['../interfaceip__grid__mod_1_1init__grib1__interface.html#a47e255b76f02fe58a1aebdadcc5894eb',1,'ip_grid_mod::init_grib1_interface']]], - ['init_5fgrib2_569',['init_grib2',['../namespaceip__equid__cylind__grid__mod.html#a39d24c9468ecb7effd16972fd72e088a',1,'ip_equid_cylind_grid_mod::init_grib2()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#a69fac68e7a40d5c3106a47bf1851891e',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib2()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a30ae580d169972e8d68c3d97ab3b2634',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib2()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#adda32463a76ad97ac35b01f1ac693fa4',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib2()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9622ce9892084b52303f27722572b87c',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib2()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a505b0114c7ff5fbb58c4e7ce5ccde3f0',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib2()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a64129413df8ea478ab1360fd1a274e9a',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib2()'],['../structip__grid__mod_1_1ip__grid.html#ad13e0ad8d616e1839ced388826fefee9',1,'ip_grid_mod::ip_grid::init_grib2()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a378b72a1b6090acb90a36385ab9eda5a',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a8dd212953e754964770fa1c3d4bcd3db',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib2()'],['../namespaceip__gaussian__grid__mod.html#ae048ac033628515113b11b8c7364e0c2',1,'ip_gaussian_grid_mod::init_grib2()'],['../namespaceip__lambert__conf__grid__mod.html#acb0339a9fff4fff6c2017d37f8bed0cf',1,'ip_lambert_conf_grid_mod::init_grib2()'],['../namespaceip__mercator__grid__mod.html#aad3b6fef6ee74b8df984c0159ff29c82',1,'ip_mercator_grid_mod::init_grib2()'],['../namespaceip__polar__stereo__grid__mod.html#a5210b986366b503683ae966519d501e7',1,'ip_polar_stereo_grid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#af3cbc17f27800bc67135feacb2c1c3e0',1,'ip_rot_equid_cylind_egrid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__grid__mod.html#add3c6c1dad5748b452d291df6619867d',1,'ip_rot_equid_cylind_grid_mod::init_grib2()'],['../namespaceip__station__points__grid__mod.html#ad17e6d245295803b62b146be984f874d',1,'ip_station_points_grid_mod::init_grib2()']]], - ['init_5fgrib2_5fdescriptor_570',['init_grib2_descriptor',['../namespaceip__grid__descriptor__mod.html#a143ac06a2a20697d01606a259213b451',1,'ip_grid_descriptor_mod::init_grib2_descriptor()'],['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a6702c4bf3a3d914e5cd2fce8fba4f95c',1,'ip_grid_descriptor_mod::init_descriptor::init_grib2_descriptor()']]], - ['init_5fgrib2_5finterface_571',['init_grib2_interface',['../interfaceip__grid__mod_1_1init__grib2__interface.html#a25dcec4470effb9b20dfc7981c21ec6c',1,'ip_grid_mod::init_grib2_interface']]], - ['init_5fgrid_5fgeneric_572',['init_grid_generic',['../interfaceip__grid__factory__mod_1_1init__grid.html#a3fbbec3ddc7dfd918c2abc02e7a4cd72',1,'ip_grid_factory_mod::init_grid::init_grid_generic()'],['../namespaceip__grid__factory__mod.html#a2d2ea07d353bae8b057471aa99b58e46',1,'ip_grid_factory_mod::init_grid_generic(grid, grid_desc)']]], - ['init_5fgrid_5fgrib1_573',['init_grid_grib1',['../namespaceip__grid__factory__mod.html#ad8906ed6fe52c2426c0ff09ce50b6fc5',1,'ip_grid_factory_mod']]], - ['init_5fgrid_5fgrib2_574',['init_grid_grib2',['../namespaceip__grid__factory__mod.html#aa187dc8dbd1d004a51cc0e9826ffa225',1,'ip_grid_factory_mod']]], - ['interpolate_5fbicubic_5fscalar_575',['interpolate_bicubic_scalar',['../namespacebicubic__interp__mod.html#a54a442e47f1be9511c1684a337d7e2d1',1,'bicubic_interp_mod::interpolate_bicubic_scalar()'],['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#acbfecc99184cf9ae71b2c9f79c7d4077',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_scalar()']]], - ['interpolate_5fbicubic_5fvector_576',['interpolate_bicubic_vector',['../namespacebicubic__interp__mod.html#a9d27db7d350fc2699aaf5057c3b53d16',1,'bicubic_interp_mod::interpolate_bicubic_vector()'],['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#aac45c15e1c9d76158d72e62ccaca915b',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_vector()']]], - ['interpolate_5fbilinear_5fscalar_577',['interpolate_bilinear_scalar',['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#a3493cf5bc04aa4551ffd4c314ef09a65',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_scalar()'],['../namespacebilinear__interp__mod.html#a34d2eea4682104097dccf3e7ab6a9398',1,'bilinear_interp_mod::interpolate_bilinear_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], - ['interpolate_5fbilinear_5fvector_578',['interpolate_bilinear_vector',['../namespacebilinear__interp__mod.html#abc218f8774d2af09299eb299d6f38e04',1,'bilinear_interp_mod::interpolate_bilinear_vector()'],['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#ab4692c5250b37325f764b38c570892dd',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_vector()']]], - ['interpolate_5fbudget_5fscalar_579',['interpolate_budget_scalar',['../namespacebudget__interp__mod.html#a09bd6535b0c2e1022cfde39c39d14466',1,'budget_interp_mod::interpolate_budget_scalar()'],['../interfacebudget__interp__mod_1_1interpolate__budget.html#a4b96cbeedb86ef43b687f7ea55914ef0',1,'budget_interp_mod::interpolate_budget::interpolate_budget_scalar()']]], - ['interpolate_5fbudget_5fvector_580',['interpolate_budget_vector',['../namespacebudget__interp__mod.html#abc99486ee9c0091c1514af6114d4e803',1,'budget_interp_mod::interpolate_budget_vector()'],['../interfacebudget__interp__mod_1_1interpolate__budget.html#a573e89e56381d0f69e4022d791a087e6',1,'budget_interp_mod::interpolate_budget::interpolate_budget_vector()']]], - ['interpolate_5fneighbor_5fbudget_5fscalar_581',['interpolate_neighbor_budget_scalar',['../namespaceneighbor__budget__interp__mod.html#a6d5110a9e9facf8c3132ec27d6857817',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_scalar()'],['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a96e4b145a4df6f4948b1d5ae2da6a71a',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_scalar()']]], - ['interpolate_5fneighbor_5fbudget_5fvector_582',['interpolate_neighbor_budget_vector',['../namespaceneighbor__budget__interp__mod.html#a4309c1e6b7fc60ded40657fe6c72297e',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_vector()'],['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a573bd5ac43484aa6d051e58f37ff7c06',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_vector()']]], - ['interpolate_5fneighbor_5fscalar_583',['interpolate_neighbor_scalar',['../namespaceneighbor__interp__mod.html#a78452d1527c6974ad54091f0318e4b1f',1,'neighbor_interp_mod::interpolate_neighbor_scalar()'],['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a04ebb54535e67ff95c1d3d64b9cf6246',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], - ['interpolate_5fneighbor_5fvector_584',['interpolate_neighbor_vector',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a4662245e2744fd14628b48f23bf4f0a7',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_vector()'],['../namespaceneighbor__interp__mod.html#a744ccffd8cd6c13d360e634db4851756',1,'neighbor_interp_mod::interpolate_neighbor_vector()']]], - ['interpolate_5fspectral_5fscalar_585',['interpolate_spectral_scalar',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a79f600a26ecf256a8a13cf4bdbaf2ab1',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_scalar()'],['../namespacespectral__interp__mod.html#a438646d69e941def0ada00d5ca19f618',1,'spectral_interp_mod::interpolate_spectral_scalar()']]], - ['interpolate_5fspectral_5fvector_586',['interpolate_spectral_vector',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a9e939bbb3f7b214fee26c1e77764e487',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_vector()'],['../namespacespectral__interp__mod.html#acb61ad529b7decc2a6ff58dd12fbadd0',1,'spectral_interp_mod::interpolate_spectral_vector()']]], - ['ipolates_5fgrib1_587',['ipolates_grib1',['../interfaceipolates__mod_1_1ipolates.html#a8ff62af694c759f29c332836ff66437b',1,'ipolates_mod::ipolates::ipolates_grib1()'],['../namespaceipolates__mod.html#acb5408cf5c3a0f50326edc183f9bd269',1,'ipolates_mod::ipolates_grib1(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)']]], - ['ipolates_5fgrib1_5fsingle_5ffield_588',['ipolates_grib1_single_field',['../namespaceipolates__mod.html#ae70a9ca9871bb33e038782b036b7b53d',1,'ipolates_mod::ipolates_grib1_single_field()'],['../interfaceipolates__mod_1_1ipolates.html#afbc36431f96adfbbf552bc6137d0519d',1,'ipolates_mod::ipolates::ipolates_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)']]], - ['ipolates_5fgrib2_589',['ipolates_grib2',['../interfaceipolates__mod_1_1ipolates.html#a791ae0a257adcc3a789494489e28302b',1,'ipolates_mod::ipolates::ipolates_grib2()'],['../namespaceipolates__mod.html#a6b2ea6d5b04d2a68baad261e7a409fac',1,'ipolates_mod::ipolates_grib2()']]], - ['ipolates_5fgrib2_5fsingle_5ffield_590',['ipolates_grib2_single_field',['../interfaceipolates__mod_1_1ipolates.html#a3a77b7de2dce406829a3b01689372240',1,'ipolates_mod::ipolates::ipolates_grib2_single_field()'],['../namespaceipolates__mod.html#a49541b2af75b7c037a863a4785726856',1,'ipolates_mod::ipolates_grib2_single_field(IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], - ['ipolates_5fgrid_591',['ipolates_grid',['../namespaceipolates__mod.html#a2761e20fab898e7fd9963f3e0eb5d104',1,'ipolates_mod']]], - ['ipolatev_5fgrib1_592',['ipolatev_grib1',['../interfaceipolatev__mod_1_1ipolatev.html#ac721867d3d8e8adc11d56baba4702d53',1,'ipolatev_mod::ipolatev::ipolatev_grib1()'],['../namespaceipolatev__mod.html#abddc4a9b00133b358443b118f1352d1f',1,'ipolatev_mod::ipolatev_grib1(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)']]], - ['ipolatev_5fgrib1_5fsingle_5ffield_593',['ipolatev_grib1_single_field',['../namespaceipolatev__mod.html#ad535ffd159c46e770effd774aabede58',1,'ipolatev_mod::ipolatev_grib1_single_field()'],['../interfaceipolatev__mod_1_1ipolatev.html#ad211b25631afd3fd7c04bbfba589a7c5',1,'ipolatev_mod::ipolatev::ipolatev_grib1_single_field()']]], - ['ipolatev_5fgrib2_594',['ipolatev_grib2',['../namespaceipolatev__mod.html#a00fed53dd867a802b3adbc1141e8d272',1,'ipolatev_mod::ipolatev_grib2()'],['../interfaceipolatev__mod_1_1ipolatev.html#ac1ec04e3119f285f0f3955f016926efe',1,'ipolatev_mod::ipolatev::ipolatev_grib2(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)']]], - ['ipolatev_5fgrib2_5fsingle_5ffield_595',['ipolatev_grib2_single_field',['../interfaceipolatev__mod_1_1ipolatev.html#aa0af88a9ccef79a921680fe40ec30ccd',1,'ipolatev_mod::ipolatev::ipolatev_grib2_single_field()'],['../namespaceipolatev__mod.html#a71d7507e8f89e1229caaaacb37e0c9c7',1,'ipolatev_mod::ipolatev_grib2_single_field(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)']]], - ['ipolatev_5fgrid_596',['ipolatev_grid',['../namespaceipolatev__mod.html#a8f3bfec7495e13b75b2035e8e1f081a1',1,'ipolatev_mod']]], - ['ipxetas_597',['ipxetas',['../ipxetas_8F90.html#a89ff34ee39b0da1895e9d8552bb462e1',1,'ipxetas.F90']]], - ['ipxwafs_598',['ipxwafs',['../ipxwafs_8F90.html#a1465ea191950f7464bb3374abed94c12',1,'ipxwafs.F90']]], - ['ipxwafs2_599',['ipxwafs2',['../ipxwafs2_8F90.html#ab602c9c04957836c0b8860560d442894',1,'ipxwafs2.F90']]], - ['ipxwafs3_600',['ipxwafs3',['../ipxwafs3_8F90.html#aae7be3c77cbe16d0219c86e443e6ec1d',1,'ipxwafs3.F90']]], - ['is_5fsame_5fgrid_601',['is_same_grid',['../interfaceip__grid__mod_1_1operator_07_0a_0a_08.html#a0303cd13db74e096af7f77200ef09c6b',1,'ip_grid_mod::operator(==)::is_same_grid()'],['../interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html#a34e94f8aada186a3d22112a1ab31b53c',1,'ip_grid_descriptor_mod::operator(==)::is_same_grid()'],['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a9da102dac348a63ffce6556ed5da81b6',1,'ip_grid_descriptor_mod::ip_grid_descriptor::is_same_grid()'],['../namespaceip__grid__descriptor__mod.html#a202219f9c5c84fa04d3eb1c2208358ec',1,'ip_grid_descriptor_mod::is_same_grid()'],['../namespaceip__grid__mod.html#a663bda9af9dd991a09ba0f0de66dc045',1,'ip_grid_mod::is_same_grid()']]], - ['is_5fsame_5fgrid_5fgrib1_602',['is_same_grid_grib1',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html#a33b4fc04d218c73e3c4d061163dcbc95',1,'ip_grid_descriptor_mod::grib1_descriptor::is_same_grid_grib1()'],['../namespaceip__grid__descriptor__mod.html#a5bb3c5230b88012bddc3922bfa1cb019',1,'ip_grid_descriptor_mod::is_same_grid_grib1()']]], - ['is_5fsame_5fgrid_5fgrib2_603',['is_same_grid_grib2',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#ae27b09a835144baf782e2cde0c1ea013',1,'ip_grid_descriptor_mod::grib2_descriptor::is_same_grid_grib2()'],['../namespaceip__grid__descriptor__mod.html#a75ac34ea9372afaa29b0df2ce8919988',1,'ip_grid_descriptor_mod::is_same_grid_grib2()']]] + ['init_568',['init',['../structip__grid__mod_1_1ip__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c',1,'ip_grid_mod::ip_grid']]], + ['init_5fgrib1_569',['init_grib1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a68fb7543888cc76885560709184e7d70',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib1()'],['../namespaceip__station__points__grid__mod.html#a4b28ebf2b4fe826c96af69db28e0a1ff',1,'ip_station_points_grid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__grid__mod.html#acb27dfdc6f03dea897d509910365afee',1,'ip_rot_equid_cylind_grid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#aa65616b97df9c89893161ff802e16eab',1,'ip_rot_equid_cylind_egrid_mod::init_grib1()'],['../namespaceip__polar__stereo__grid__mod.html#a6ed76f58f30993cd7be84b7e03cf4d6f',1,'ip_polar_stereo_grid_mod::init_grib1()'],['../namespaceip__mercator__grid__mod.html#a4125dba8b09e9b69933e224b00f4758d',1,'ip_mercator_grid_mod::init_grib1()'],['../namespaceip__lambert__conf__grid__mod.html#a5544708e893ffcfbe7d958fdec700eea',1,'ip_lambert_conf_grid_mod::init_grib1()'],['../namespaceip__gaussian__grid__mod.html#a8fe2ee732a3a2db4891a6431787a0b01',1,'ip_gaussian_grid_mod::init_grib1()'],['../namespaceip__equid__cylind__grid__mod.html#a3d0132823d27b60835ebb59ead173477',1,'ip_equid_cylind_grid_mod::init_grib1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#afd3658924783d5dbbd3fe5f07d5b60a7',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib1()'],['../structip__grid__mod_1_1ip__grid.html#a5a2c16279eb73a0c54ae0a1586d5b806',1,'ip_grid_mod::ip_grid::init_grib1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a35dd86b4a9017f5b03a0a6a01eb4d370',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3ae3bbb47f4c03c36404a2b35014d65c',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ae2a5a7c08e4578f3d0ff6b85e5a14cce',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#ab9a85830bfd06183a8df73726f62217a',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib1()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a9942c787bda2e118f1355476670edfca',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib1()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#aa5ec2cbc9bf0dadf20a226e0afeb3d32',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib1()']]], + ['init_5fgrib1_5fdescriptor_570',['init_grib1_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a3b5b267aa7a17a4615dcc0cb4e590f6e',1,'ip_grid_descriptor_mod::init_descriptor::init_grib1_descriptor()'],['../namespaceip__grid__descriptor__mod.html#aa00884a7fca018535eaf0c2ebe26bc98',1,'ip_grid_descriptor_mod::init_grib1_descriptor()']]], + ['init_5fgrib1_5finterface_571',['init_grib1_interface',['../interfaceip__grid__mod_1_1init__grib1__interface.html#a47e255b76f02fe58a1aebdadcc5894eb',1,'ip_grid_mod::init_grib1_interface']]], + ['init_5fgrib2_572',['init_grib2',['../namespaceip__gaussian__grid__mod.html#ae048ac033628515113b11b8c7364e0c2',1,'ip_gaussian_grid_mod::init_grib2()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#a69fac68e7a40d5c3106a47bf1851891e',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib2()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a30ae580d169972e8d68c3d97ab3b2634',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib2()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#adda32463a76ad97ac35b01f1ac693fa4',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib2()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9622ce9892084b52303f27722572b87c',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib2()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a505b0114c7ff5fbb58c4e7ce5ccde3f0',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib2()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a64129413df8ea478ab1360fd1a274e9a',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib2()'],['../structip__grid__mod_1_1ip__grid.html#ad13e0ad8d616e1839ced388826fefee9',1,'ip_grid_mod::ip_grid::init_grib2()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a378b72a1b6090acb90a36385ab9eda5a',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a8dd212953e754964770fa1c3d4bcd3db',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib2()'],['../namespaceip__equid__cylind__grid__mod.html#a39d24c9468ecb7effd16972fd72e088a',1,'ip_equid_cylind_grid_mod::init_grib2()'],['../namespaceip__lambert__conf__grid__mod.html#acb0339a9fff4fff6c2017d37f8bed0cf',1,'ip_lambert_conf_grid_mod::init_grib2()'],['../namespaceip__mercator__grid__mod.html#aad3b6fef6ee74b8df984c0159ff29c82',1,'ip_mercator_grid_mod::init_grib2()'],['../namespaceip__polar__stereo__grid__mod.html#a5210b986366b503683ae966519d501e7',1,'ip_polar_stereo_grid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#af3cbc17f27800bc67135feacb2c1c3e0',1,'ip_rot_equid_cylind_egrid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__grid__mod.html#add3c6c1dad5748b452d291df6619867d',1,'ip_rot_equid_cylind_grid_mod::init_grib2()'],['../namespaceip__station__points__grid__mod.html#ad17e6d245295803b62b146be984f874d',1,'ip_station_points_grid_mod::init_grib2()']]], + ['init_5fgrib2_5fdefault_573',['init_grib2_default',['../namespaceip__rot__equid__cylind__grid__mod.html#a9ade5de892a935c3b62c1860b719ce74',1,'ip_rot_equid_cylind_grid_mod']]], + ['init_5fgrib2_5fdescriptor_574',['init_grib2_descriptor',['../namespaceip__grid__descriptor__mod.html#a143ac06a2a20697d01606a259213b451',1,'ip_grid_descriptor_mod::init_grib2_descriptor()'],['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a6702c4bf3a3d914e5cd2fce8fba4f95c',1,'ip_grid_descriptor_mod::init_descriptor::init_grib2_descriptor()']]], + ['init_5fgrib2_5finterface_575',['init_grib2_interface',['../interfaceip__grid__mod_1_1init__grib2__interface.html#a25dcec4470effb9b20dfc7981c21ec6c',1,'ip_grid_mod::init_grib2_interface']]], + ['init_5fgrib2_5fncep_5fpost_576',['init_grib2_ncep_post',['../namespaceip__rot__equid__cylind__grid__mod.html#a74abf723e815f9ff196e6d0174fd449b',1,'ip_rot_equid_cylind_grid_mod']]], + ['init_5fgrid_5fgeneric_577',['init_grid_generic',['../namespaceip__grid__factory__mod.html#a2d2ea07d353bae8b057471aa99b58e46',1,'ip_grid_factory_mod::init_grid_generic()'],['../interfaceip__grid__factory__mod_1_1init__grid.html#a3fbbec3ddc7dfd918c2abc02e7a4cd72',1,'ip_grid_factory_mod::init_grid::init_grid_generic()']]], + ['init_5fgrid_5fgrib1_578',['init_grid_grib1',['../namespaceip__grid__factory__mod.html#ad8906ed6fe52c2426c0ff09ce50b6fc5',1,'ip_grid_factory_mod']]], + ['init_5fgrid_5fgrib2_579',['init_grid_grib2',['../namespaceip__grid__factory__mod.html#aa187dc8dbd1d004a51cc0e9826ffa225',1,'ip_grid_factory_mod']]], + ['interpolate_5fbicubic_5fscalar_580',['interpolate_bicubic_scalar',['../namespacebicubic__interp__mod.html#a54a442e47f1be9511c1684a337d7e2d1',1,'bicubic_interp_mod::interpolate_bicubic_scalar()'],['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#acbfecc99184cf9ae71b2c9f79c7d4077',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_scalar()']]], + ['interpolate_5fbicubic_5fvector_581',['interpolate_bicubic_vector',['../namespacebicubic__interp__mod.html#a9d27db7d350fc2699aaf5057c3b53d16',1,'bicubic_interp_mod::interpolate_bicubic_vector()'],['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#aac45c15e1c9d76158d72e62ccaca915b',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_vector()']]], + ['interpolate_5fbilinear_5fscalar_582',['interpolate_bilinear_scalar',['../namespacebilinear__interp__mod.html#a34d2eea4682104097dccf3e7ab6a9398',1,'bilinear_interp_mod::interpolate_bilinear_scalar()'],['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#a3493cf5bc04aa4551ffd4c314ef09a65',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_scalar()']]], + ['interpolate_5fbilinear_5fvector_583',['interpolate_bilinear_vector',['../namespacebilinear__interp__mod.html#abc218f8774d2af09299eb299d6f38e04',1,'bilinear_interp_mod::interpolate_bilinear_vector()'],['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#ab4692c5250b37325f764b38c570892dd',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_vector()']]], + ['interpolate_5fbudget_5fscalar_584',['interpolate_budget_scalar',['../interfacebudget__interp__mod_1_1interpolate__budget.html#a4b96cbeedb86ef43b687f7ea55914ef0',1,'budget_interp_mod::interpolate_budget::interpolate_budget_scalar()'],['../namespacebudget__interp__mod.html#a09bd6535b0c2e1022cfde39c39d14466',1,'budget_interp_mod::interpolate_budget_scalar()']]], + ['interpolate_5fbudget_5fvector_585',['interpolate_budget_vector',['../interfacebudget__interp__mod_1_1interpolate__budget.html#a573e89e56381d0f69e4022d791a087e6',1,'budget_interp_mod::interpolate_budget::interpolate_budget_vector()'],['../namespacebudget__interp__mod.html#abc99486ee9c0091c1514af6114d4e803',1,'budget_interp_mod::interpolate_budget_vector()']]], + ['interpolate_5fneighbor_5fbudget_5fscalar_586',['interpolate_neighbor_budget_scalar',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a96e4b145a4df6f4948b1d5ae2da6a71a',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_scalar()'],['../namespaceneighbor__budget__interp__mod.html#a6d5110a9e9facf8c3132ec27d6857817',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_scalar()']]], + ['interpolate_5fneighbor_5fbudget_5fvector_587',['interpolate_neighbor_budget_vector',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a573bd5ac43484aa6d051e58f37ff7c06',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_vector()'],['../namespaceneighbor__budget__interp__mod.html#a4309c1e6b7fc60ded40657fe6c72297e',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_vector()']]], + ['interpolate_5fneighbor_5fscalar_588',['interpolate_neighbor_scalar',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a04ebb54535e67ff95c1d3d64b9cf6246',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_scalar()'],['../namespaceneighbor__interp__mod.html#a78452d1527c6974ad54091f0318e4b1f',1,'neighbor_interp_mod::interpolate_neighbor_scalar()']]], + ['interpolate_5fneighbor_5fvector_589',['interpolate_neighbor_vector',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a4662245e2744fd14628b48f23bf4f0a7',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_vector()'],['../namespaceneighbor__interp__mod.html#a744ccffd8cd6c13d360e634db4851756',1,'neighbor_interp_mod::interpolate_neighbor_vector()']]], + ['interpolate_5fspectral_5fscalar_590',['interpolate_spectral_scalar',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a79f600a26ecf256a8a13cf4bdbaf2ab1',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_scalar()'],['../namespacespectral__interp__mod.html#a438646d69e941def0ada00d5ca19f618',1,'spectral_interp_mod::interpolate_spectral_scalar()']]], + ['interpolate_5fspectral_5fvector_591',['interpolate_spectral_vector',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a9e939bbb3f7b214fee26c1e77764e487',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_vector()'],['../namespacespectral__interp__mod.html#acb61ad529b7decc2a6ff58dd12fbadd0',1,'spectral_interp_mod::interpolate_spectral_vector()']]], + ['ipolates_5fgrib1_592',['ipolates_grib1',['../interfaceipolates__mod_1_1ipolates.html#a8ff62af694c759f29c332836ff66437b',1,'ipolates_mod::ipolates::ipolates_grib1()'],['../namespaceipolates__mod.html#acb5408cf5c3a0f50326edc183f9bd269',1,'ipolates_mod::ipolates_grib1()']]], + ['ipolates_5fgrib1_5fsingle_5ffield_593',['ipolates_grib1_single_field',['../interfaceipolates__mod_1_1ipolates.html#afbc36431f96adfbbf552bc6137d0519d',1,'ipolates_mod::ipolates::ipolates_grib1_single_field()'],['../namespaceipolates__mod.html#ae70a9ca9871bb33e038782b036b7b53d',1,'ipolates_mod::ipolates_grib1_single_field()']]], + ['ipolates_5fgrib2_594',['ipolates_grib2',['../interfaceipolates__mod_1_1ipolates.html#a791ae0a257adcc3a789494489e28302b',1,'ipolates_mod::ipolates::ipolates_grib2()'],['../namespaceipolates__mod.html#a6b2ea6d5b04d2a68baad261e7a409fac',1,'ipolates_mod::ipolates_grib2(IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], + ['ipolates_5fgrib2_5fsingle_5ffield_595',['ipolates_grib2_single_field',['../namespaceipolates__mod.html#a49541b2af75b7c037a863a4785726856',1,'ipolates_mod::ipolates_grib2_single_field()'],['../interfaceipolates__mod_1_1ipolates.html#a3a77b7de2dce406829a3b01689372240',1,'ipolates_mod::ipolates::ipolates_grib2_single_field()']]], + ['ipolates_5fgrid_596',['ipolates_grid',['../namespaceipolates__mod.html#a2761e20fab898e7fd9963f3e0eb5d104',1,'ipolates_mod']]], + ['ipolatev_5fgrib1_597',['ipolatev_grib1',['../interfaceipolatev__mod_1_1ipolatev.html#ac721867d3d8e8adc11d56baba4702d53',1,'ipolatev_mod::ipolatev::ipolatev_grib1()'],['../namespaceipolatev__mod.html#abddc4a9b00133b358443b118f1352d1f',1,'ipolatev_mod::ipolatev_grib1()']]], + ['ipolatev_5fgrib1_5fsingle_5ffield_598',['ipolatev_grib1_single_field',['../interfaceipolatev__mod_1_1ipolatev.html#ad211b25631afd3fd7c04bbfba589a7c5',1,'ipolatev_mod::ipolatev::ipolatev_grib1_single_field()'],['../namespaceipolatev__mod.html#ad535ffd159c46e770effd774aabede58',1,'ipolatev_mod::ipolatev_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)']]], + ['ipolatev_5fgrib2_599',['ipolatev_grib2',['../namespaceipolatev__mod.html#a00fed53dd867a802b3adbc1141e8d272',1,'ipolatev_mod::ipolatev_grib2()'],['../interfaceipolatev__mod_1_1ipolatev.html#ac1ec04e3119f285f0f3955f016926efe',1,'ipolatev_mod::ipolatev::ipolatev_grib2()']]], + ['ipolatev_5fgrib2_5fsingle_5ffield_600',['ipolatev_grib2_single_field',['../namespaceipolatev__mod.html#a71d7507e8f89e1229caaaacb37e0c9c7',1,'ipolatev_mod::ipolatev_grib2_single_field()'],['../interfaceipolatev__mod_1_1ipolatev.html#aa0af88a9ccef79a921680fe40ec30ccd',1,'ipolatev_mod::ipolatev::ipolatev_grib2_single_field()']]], + ['ipolatev_5fgrid_601',['ipolatev_grid',['../namespaceipolatev__mod.html#a8f3bfec7495e13b75b2035e8e1f081a1',1,'ipolatev_mod']]], + ['ipxetas_602',['ipxetas',['../ipxetas_8F90.html#a89ff34ee39b0da1895e9d8552bb462e1',1,'ipxetas.F90']]], + ['ipxwafs_603',['ipxwafs',['../ipxwafs_8F90.html#a1465ea191950f7464bb3374abed94c12',1,'ipxwafs.F90']]], + ['ipxwafs2_604',['ipxwafs2',['../ipxwafs2_8F90.html#ab602c9c04957836c0b8860560d442894',1,'ipxwafs2.F90']]], + ['ipxwafs3_605',['ipxwafs3',['../ipxwafs3_8F90.html#aae7be3c77cbe16d0219c86e443e6ec1d',1,'ipxwafs3.F90']]], + ['is_5fsame_5fgrid_606',['is_same_grid',['../interfaceip__grid__mod_1_1operator_07_0a_0a_08.html#a0303cd13db74e096af7f77200ef09c6b',1,'ip_grid_mod::operator(==)::is_same_grid()'],['../interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html#a34e94f8aada186a3d22112a1ab31b53c',1,'ip_grid_descriptor_mod::operator(==)::is_same_grid()'],['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a9da102dac348a63ffce6556ed5da81b6',1,'ip_grid_descriptor_mod::ip_grid_descriptor::is_same_grid()'],['../namespaceip__grid__descriptor__mod.html#a202219f9c5c84fa04d3eb1c2208358ec',1,'ip_grid_descriptor_mod::is_same_grid()'],['../namespaceip__grid__mod.html#a663bda9af9dd991a09ba0f0de66dc045',1,'ip_grid_mod::is_same_grid()']]], + ['is_5fsame_5fgrid_5fgrib1_607',['is_same_grid_grib1',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html#a33b4fc04d218c73e3c4d061163dcbc95',1,'ip_grid_descriptor_mod::grib1_descriptor::is_same_grid_grib1()'],['../namespaceip__grid__descriptor__mod.html#a5bb3c5230b88012bddc3922bfa1cb019',1,'ip_grid_descriptor_mod::is_same_grid_grib1()']]], + ['is_5fsame_5fgrid_5fgrib2_608',['is_same_grid_grib2',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#ae27b09a835144baf782e2cde0c1ea013',1,'ip_grid_descriptor_mod::grib2_descriptor::is_same_grid_grib2()'],['../namespaceip__grid__descriptor__mod.html#a75ac34ea9372afaa29b0df2ce8919988',1,'ip_grid_descriptor_mod::is_same_grid_grib2()']]] ]; diff --git a/search/functions_6.js b/search/functions_6.js index 5b834e83..4a5c2917 100644 --- a/search/functions_6.js +++ b/search/functions_6.js @@ -1,8 +1,6 @@ var searchData= [ - ['lambert_5fconf_5fgrid_5farea_604',['lambert_conf_grid_area',['../namespaceip__lambert__conf__grid__mod.html#a15c44b47172b926aea840caee9723b1c',1,'ip_lambert_conf_grid_mod']]], - ['lambert_5fconf_5fmap_5fjacob_605',['lambert_conf_map_jacob',['../namespaceip__lambert__conf__grid__mod.html#a5e1d42f0027236f47467e25c525e66ae',1,'ip_lambert_conf_grid_mod']]], - ['lambert_5fconf_5fvect_5frot_606',['lambert_conf_vect_rot',['../namespaceip__lambert__conf__grid__mod.html#a58187073914efa18eca897c6ec203b71',1,'ip_lambert_conf_grid_mod']]], - ['lubksb_607',['lubksb',['../lapack__gen_8F.html#a3c6b581386390037e8c04c238a208547',1,'lapack_gen.F']]], - ['ludcmp_608',['ludcmp',['../lapack__gen_8F.html#a2af64d5edd49c8f4dcdfdd21235de781',1,'lapack_gen.F']]] + ['lambert_5fconf_5fgrid_5farea_609',['lambert_conf_grid_area',['../namespaceip__lambert__conf__grid__mod.html#a15c44b47172b926aea840caee9723b1c',1,'ip_lambert_conf_grid_mod']]], + ['lambert_5fconf_5fmap_5fjacob_610',['lambert_conf_map_jacob',['../namespaceip__lambert__conf__grid__mod.html#a5e1d42f0027236f47467e25c525e66ae',1,'ip_lambert_conf_grid_mod']]], + ['lambert_5fconf_5fvect_5frot_611',['lambert_conf_vect_rot',['../namespaceip__lambert__conf__grid__mod.html#a58187073914efa18eca897c6ec203b71',1,'ip_lambert_conf_grid_mod']]] ]; diff --git a/search/functions_7.js b/search/functions_7.js index be6c3947..7a582e96 100644 --- a/search/functions_7.js +++ b/search/functions_7.js @@ -1,7 +1,7 @@ var searchData= [ - ['mercator_5fgrid_5farea_609',['mercator_grid_area',['../namespaceip__mercator__grid__mod.html#a952ab9add18587c4dbe54699feb8eafd',1,'ip_mercator_grid_mod']]], - ['mercator_5fmap_5fjacob_610',['mercator_map_jacob',['../namespaceip__mercator__grid__mod.html#ab93a0a6ae8c5f5056abece1dcffdc57a',1,'ip_mercator_grid_mod']]], - ['mercator_5fvect_5frot_611',['mercator_vect_rot',['../namespaceip__mercator__grid__mod.html#aea5e18faf7a18bf8d06c87ccb11f3e17',1,'ip_mercator_grid_mod']]], - ['movect_612',['movect',['../movect_8F90.html#a5974e32c0cf90a65b39c68460d761882',1,'movect.F90']]] + ['mercator_5fgrid_5farea_612',['mercator_grid_area',['../namespaceip__mercator__grid__mod.html#a952ab9add18587c4dbe54699feb8eafd',1,'ip_mercator_grid_mod']]], + ['mercator_5fmap_5fjacob_613',['mercator_map_jacob',['../namespaceip__mercator__grid__mod.html#ab93a0a6ae8c5f5056abece1dcffdc57a',1,'ip_mercator_grid_mod']]], + ['mercator_5fvect_5frot_614',['mercator_vect_rot',['../namespaceip__mercator__grid__mod.html#aea5e18faf7a18bf8d06c87ccb11f3e17',1,'ip_mercator_grid_mod']]], + ['movect_615',['movect',['../movect_8F90.html#a5974e32c0cf90a65b39c68460d761882',1,'movect.F90']]] ]; diff --git a/search/functions_8.js b/search/functions_8.js index 5f0acb89..3d1aaf28 100644 --- a/search/functions_8.js +++ b/search/functions_8.js @@ -1,4 +1,4 @@ var searchData= [ - ['ncpus_613',['ncpus',['../ncpus_8F.html#a821a75ee067ea31758a038c0327bd3bd',1,'ncpus.F']]] + ['ncpus_616',['ncpus',['../ncpus_8F.html#a821a75ee067ea31758a038c0327bd3bd',1,'ncpus.F']]] ]; diff --git a/search/functions_9.js b/search/functions_9.js index 528304d1..e17292a3 100644 --- a/search/functions_9.js +++ b/search/functions_9.js @@ -1,12 +1,12 @@ var searchData= [ - ['polar_5fstereo_5fgrid_5farea_614',['polar_stereo_grid_area',['../namespaceip__polar__stereo__grid__mod.html#a2a2e0854e5c129e320924a811cbd08e2',1,'ip_polar_stereo_grid_mod']]], - ['polar_5fstereo_5fmap_5fjacob_615',['polar_stereo_map_jacob',['../namespaceip__polar__stereo__grid__mod.html#a386933f7e52c348b9d742df423e0e223',1,'ip_polar_stereo_grid_mod']]], - ['polar_5fstereo_5fvect_5frot_616',['polar_stereo_vect_rot',['../namespaceip__polar__stereo__grid__mod.html#abe4d416201e986421a8e325a9b00e462',1,'ip_polar_stereo_grid_mod']]], - ['polates4_5fgrib1_617',['polates4_grib1',['../interfacespectral__interp__mod_1_1polates4.html#a0be1315db4dce899083176b47b6ea6a4',1,'spectral_interp_mod::polates4::polates4_grib1()'],['../namespacespectral__interp__mod.html#ab9fb87d87f2f9d578a5ade6b512ff366',1,'spectral_interp_mod::polates4_grib1()']]], - ['polates4_5fgrib2_618',['polates4_grib2',['../interfacespectral__interp__mod_1_1polates4.html#a3fdc75851f1f741e715a1c3e1e4d89c9',1,'spectral_interp_mod::polates4::polates4_grib2()'],['../namespacespectral__interp__mod.html#a54dfd0ea8368242a1053d64770bd295a',1,'spectral_interp_mod::polates4_grib2()']]], - ['polatev4_5fgrib1_619',['polatev4_grib1',['../interfacespectral__interp__mod_1_1polatev4.html#a5fa619eb983da3326380e9bafcf49ca8',1,'spectral_interp_mod::polatev4::polatev4_grib1()'],['../namespacespectral__interp__mod.html#af4ce7638750e787dd69c7fe3ff2335cc',1,'spectral_interp_mod::polatev4_grib1()']]], - ['polatev4_5fgrib2_620',['polatev4_grib2',['../interfacespectral__interp__mod_1_1polatev4.html#a9dcbaeb719e3872ad5ad461adde5c98b',1,'spectral_interp_mod::polatev4::polatev4_grib2()'],['../namespacespectral__interp__mod.html#a2f76e9900554d90753ca788c2ddf9ac3',1,'spectral_interp_mod::polatev4_grib2()']]], - ['polfixs_621',['polfixs',['../namespacepolfix__mod.html#a15df1ba2e1fcad1e9465c4aa3a2ba0d6',1,'polfix_mod']]], - ['polfixv_622',['polfixv',['../namespacepolfix__mod.html#aeefc8f045777f6d962d9ec539ef6007d',1,'polfix_mod']]] + ['polar_5fstereo_5fgrid_5farea_617',['polar_stereo_grid_area',['../namespaceip__polar__stereo__grid__mod.html#a2a2e0854e5c129e320924a811cbd08e2',1,'ip_polar_stereo_grid_mod']]], + ['polar_5fstereo_5fmap_5fjacob_618',['polar_stereo_map_jacob',['../namespaceip__polar__stereo__grid__mod.html#a386933f7e52c348b9d742df423e0e223',1,'ip_polar_stereo_grid_mod']]], + ['polar_5fstereo_5fvect_5frot_619',['polar_stereo_vect_rot',['../namespaceip__polar__stereo__grid__mod.html#abe4d416201e986421a8e325a9b00e462',1,'ip_polar_stereo_grid_mod']]], + ['polates4_5fgrib1_620',['polates4_grib1',['../interfacespectral__interp__mod_1_1polates4.html#a0be1315db4dce899083176b47b6ea6a4',1,'spectral_interp_mod::polates4::polates4_grib1()'],['../namespacespectral__interp__mod.html#ab9fb87d87f2f9d578a5ade6b512ff366',1,'spectral_interp_mod::polates4_grib1()']]], + ['polates4_5fgrib2_621',['polates4_grib2',['../interfacespectral__interp__mod_1_1polates4.html#a3fdc75851f1f741e715a1c3e1e4d89c9',1,'spectral_interp_mod::polates4::polates4_grib2()'],['../namespacespectral__interp__mod.html#a54dfd0ea8368242a1053d64770bd295a',1,'spectral_interp_mod::polates4_grib2()']]], + ['polatev4_5fgrib1_622',['polatev4_grib1',['../interfacespectral__interp__mod_1_1polatev4.html#a5fa619eb983da3326380e9bafcf49ca8',1,'spectral_interp_mod::polatev4::polatev4_grib1()'],['../namespacespectral__interp__mod.html#af4ce7638750e787dd69c7fe3ff2335cc',1,'spectral_interp_mod::polatev4_grib1()']]], + ['polatev4_5fgrib2_623',['polatev4_grib2',['../interfacespectral__interp__mod_1_1polatev4.html#a9dcbaeb719e3872ad5ad461adde5c98b',1,'spectral_interp_mod::polatev4::polatev4_grib2()'],['../namespacespectral__interp__mod.html#a2f76e9900554d90753ca788c2ddf9ac3',1,'spectral_interp_mod::polatev4_grib2()']]], + ['polfixs_624',['polfixs',['../namespacepolfix__mod.html#a15df1ba2e1fcad1e9465c4aa3a2ba0d6',1,'polfix_mod']]], + ['polfixv_625',['polfixv',['../namespacepolfix__mod.html#aeefc8f045777f6d962d9ec539ef6007d',1,'polfix_mod']]] ]; diff --git a/search/functions_a.js b/search/functions_a.js index 66fd6c08..4d5292c3 100644 --- a/search/functions_a.js +++ b/search/functions_a.js @@ -1,27 +1,27 @@ var searchData= [ - ['radb2_623',['radb2',['../fftpack_8F.html#ae63abe3a02989ed4fbd60b50bc0c6dda',1,'fftpack.F']]], - ['radb3_624',['radb3',['../fftpack_8F.html#a6129001ac4cdf5d5a345edc2822d8014',1,'fftpack.F']]], - ['radb4_625',['radb4',['../fftpack_8F.html#a3b5aab129020968eaf92f2e6ca0785ef',1,'fftpack.F']]], - ['radb5_626',['radb5',['../fftpack_8F.html#a2b6492f922cbee03af5b89d52356abf1',1,'fftpack.F']]], - ['radbg_627',['radbg',['../fftpack_8F.html#af5a2521b66fece6cc768206c1df0d20b',1,'fftpack.F']]], - ['radf2_628',['radf2',['../fftpack_8F.html#a70e2420dd5bee9e41eb6c15bbad5eef6',1,'fftpack.F']]], - ['radf3_629',['radf3',['../fftpack_8F.html#a51374398f8edd5701987ce483c739592',1,'fftpack.F']]], - ['radf4_630',['radf4',['../fftpack_8F.html#ae9910ca606fd0cdb03b5b3b98533f486',1,'fftpack.F']]], - ['radf5_631',['radf5',['../fftpack_8F.html#a6d852c36924b038f77a24b8e22205add',1,'fftpack.F']]], - ['radfg_632',['radfg',['../fftpack_8F.html#ad5dbca6bb6ee7c0a86a1e140627de1b2',1,'fftpack.F']]], - ['rfftb_633',['rfftb',['../fftpack_8F.html#a79ba25d1f342858b0faa3c3e3585ec88',1,'fftpack.F']]], - ['rfftb1_634',['rfftb1',['../fftpack_8F.html#afa735c298a72dd1c13ab1c45e737c066',1,'fftpack.F']]], - ['rfftf_635',['rfftf',['../fftpack_8F.html#afbb5dc9c70ebe24759d5ffec1d3e42e2',1,'fftpack.F']]], - ['rfftf1_636',['rfftf1',['../fftpack_8F.html#acdf9efa42dc73f90af444ee0da649a09',1,'fftpack.F']]], - ['rffti_637',['rffti',['../fftpack_8F.html#a50f1237ff5990436609962c0eae406db',1,'fftpack.F']]], - ['rffti1_638',['rffti1',['../fftpack_8F.html#ae3569ef7a371390f6bf38417865ef71b',1,'fftpack.F']]], - ['rot_5fequid_5fcylind_5fegrid_5ferror_639',['rot_equid_cylind_egrid_error',['../namespaceip__rot__equid__cylind__egrid__mod.html#a69d4e473a1a276b855d37518dc6f1d48',1,'ip_rot_equid_cylind_egrid_mod']]], - ['rot_5fequid_5fcylind_5fegrid_5fgrid_5farea_640',['rot_equid_cylind_egrid_grid_area',['../namespaceip__rot__equid__cylind__egrid__mod.html#a4e6c3a758f9a6474d3e499fabeac0640',1,'ip_rot_equid_cylind_egrid_mod']]], - ['rot_5fequid_5fcylind_5fegrid_5fmap_5fjacob_641',['rot_equid_cylind_egrid_map_jacob',['../namespaceip__rot__equid__cylind__egrid__mod.html#a45b87f77888d428ca0f551edae8da94e',1,'ip_rot_equid_cylind_egrid_mod']]], - ['rot_5fequid_5fcylind_5fegrid_5fvect_5frot_642',['rot_equid_cylind_egrid_vect_rot',['../namespaceip__rot__equid__cylind__egrid__mod.html#a9ac1f76f515981c464e8391d8c941888',1,'ip_rot_equid_cylind_egrid_mod']]], - ['rot_5fequid_5fcylind_5ferror_643',['rot_equid_cylind_error',['../namespaceip__rot__equid__cylind__grid__mod.html#a1cc09c83f9a3815d8c5f8ed2f239f53f',1,'ip_rot_equid_cylind_grid_mod']]], - ['rot_5fequid_5fcylind_5fgrid_5farea_644',['rot_equid_cylind_grid_area',['../namespaceip__rot__equid__cylind__grid__mod.html#ad8f1133eb6809705c15337134eafe9fd',1,'ip_rot_equid_cylind_grid_mod']]], - ['rot_5fequid_5fcylind_5fmap_5fjacob_645',['rot_equid_cylind_map_jacob',['../namespaceip__rot__equid__cylind__grid__mod.html#a985f1dc1a20444cef706d4bb20e0841b',1,'ip_rot_equid_cylind_grid_mod']]], - ['rot_5fequid_5fcylind_5fvect_5frot_646',['rot_equid_cylind_vect_rot',['../namespaceip__rot__equid__cylind__grid__mod.html#a3de472bfc18740a7d985f560f3541c10',1,'ip_rot_equid_cylind_grid_mod']]] + ['radb2_626',['radb2',['../fftpack_8F.html#ae63abe3a02989ed4fbd60b50bc0c6dda',1,'fftpack.F']]], + ['radb3_627',['radb3',['../fftpack_8F.html#a6129001ac4cdf5d5a345edc2822d8014',1,'fftpack.F']]], + ['radb4_628',['radb4',['../fftpack_8F.html#a3b5aab129020968eaf92f2e6ca0785ef',1,'fftpack.F']]], + ['radb5_629',['radb5',['../fftpack_8F.html#a2b6492f922cbee03af5b89d52356abf1',1,'fftpack.F']]], + ['radbg_630',['radbg',['../fftpack_8F.html#af5a2521b66fece6cc768206c1df0d20b',1,'fftpack.F']]], + ['radf2_631',['radf2',['../fftpack_8F.html#a70e2420dd5bee9e41eb6c15bbad5eef6',1,'fftpack.F']]], + ['radf3_632',['radf3',['../fftpack_8F.html#a51374398f8edd5701987ce483c739592',1,'fftpack.F']]], + ['radf4_633',['radf4',['../fftpack_8F.html#ae9910ca606fd0cdb03b5b3b98533f486',1,'fftpack.F']]], + ['radf5_634',['radf5',['../fftpack_8F.html#a6d852c36924b038f77a24b8e22205add',1,'fftpack.F']]], + ['radfg_635',['radfg',['../fftpack_8F.html#ad5dbca6bb6ee7c0a86a1e140627de1b2',1,'fftpack.F']]], + ['rfftb_636',['rfftb',['../fftpack_8F.html#a79ba25d1f342858b0faa3c3e3585ec88',1,'fftpack.F']]], + ['rfftb1_637',['rfftb1',['../fftpack_8F.html#afa735c298a72dd1c13ab1c45e737c066',1,'fftpack.F']]], + ['rfftf_638',['rfftf',['../fftpack_8F.html#afbb5dc9c70ebe24759d5ffec1d3e42e2',1,'fftpack.F']]], + ['rfftf1_639',['rfftf1',['../fftpack_8F.html#acdf9efa42dc73f90af444ee0da649a09',1,'fftpack.F']]], + ['rffti_640',['rffti',['../fftpack_8F.html#a50f1237ff5990436609962c0eae406db',1,'fftpack.F']]], + ['rffti1_641',['rffti1',['../fftpack_8F.html#ae3569ef7a371390f6bf38417865ef71b',1,'fftpack.F']]], + ['rot_5fequid_5fcylind_5fegrid_5ferror_642',['rot_equid_cylind_egrid_error',['../namespaceip__rot__equid__cylind__egrid__mod.html#a69d4e473a1a276b855d37518dc6f1d48',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fgrid_5farea_643',['rot_equid_cylind_egrid_grid_area',['../namespaceip__rot__equid__cylind__egrid__mod.html#a4e6c3a758f9a6474d3e499fabeac0640',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fmap_5fjacob_644',['rot_equid_cylind_egrid_map_jacob',['../namespaceip__rot__equid__cylind__egrid__mod.html#a45b87f77888d428ca0f551edae8da94e',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fvect_5frot_645',['rot_equid_cylind_egrid_vect_rot',['../namespaceip__rot__equid__cylind__egrid__mod.html#a9ac1f76f515981c464e8391d8c941888',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5ferror_646',['rot_equid_cylind_error',['../namespaceip__rot__equid__cylind__grid__mod.html#a1cc09c83f9a3815d8c5f8ed2f239f53f',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fgrid_5farea_647',['rot_equid_cylind_grid_area',['../namespaceip__rot__equid__cylind__grid__mod.html#ad8f1133eb6809705c15337134eafe9fd',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fmap_5fjacob_648',['rot_equid_cylind_map_jacob',['../namespaceip__rot__equid__cylind__grid__mod.html#a985f1dc1a20444cef706d4bb20e0841b',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fvect_5frot_649',['rot_equid_cylind_vect_rot',['../namespaceip__rot__equid__cylind__grid__mod.html#a3de472bfc18740a7d985f560f3541c10',1,'ip_rot_equid_cylind_grid_mod']]] ]; diff --git a/search/functions_b.js b/search/functions_b.js index e873aa89..9ddba113 100644 --- a/search/functions_b.js +++ b/search/functions_b.js @@ -1,58 +1,58 @@ var searchData= [ - ['scfft_647',['scfft',['../fftpack_8F.html#a369071ea2d380c9d91ba36d1bf375e33',1,'fftpack.F']]], - ['scrft_648',['scrft',['../fftpack_8F.html#ac69cbd64be972c20a4424f5327fb4b36',1,'fftpack.F']]], - ['spanaly_649',['spanaly',['../spanaly_8f.html#a5cc846d796d393d7499cde0f3d1d6e6a',1,'spanaly.f']]], - ['spdz2uv_650',['spdz2uv',['../spdz2uv_8f.html#ae3a4a74c49f78a25425b610743dc0692',1,'spdz2uv.f']]], - ['speps_651',['speps',['../speps_8f.html#a0ab523ec5e1393ffca970897e63a9131',1,'speps.f']]], - ['spfft_652',['spfft',['../spfft_8f.html#a1041af8ac4f6a2407b5b7a799a13fb5d',1,'spfft.f']]], - ['spfft1_653',['spfft1',['../spfft1_8f.html#ac63643472eda83948c0b249b611346d6',1,'spfft1.f']]], - ['spffte_654',['spffte',['../spffte_8f.html#af06489254bd3e99030b39744fce32233',1,'spffte.f']]], - ['spfftpt_655',['spfftpt',['../spfftpt_8f.html#ad16e674ce87bd762a714853967f81356',1,'spfftpt.f']]], - ['spgradq_656',['spgradq',['../spgradq_8f.html#a0bb358cf2a405ce9f17c6e5dfde65849',1,'spgradq.f']]], - ['spgradx_657',['spgradx',['../spgradx_8f.html#a749bc07e763e9cd44490fff2284d00b4',1,'spgradx.f']]], - ['spgrady_658',['spgrady',['../spgrady_8f.html#a1b3e38e56560de7d7dcf19ea3e931cf1',1,'spgrady.f']]], - ['splaplac_659',['splaplac',['../splaplac_8f.html#a64338955857a3cf58283146940e7ae42',1,'splaplac.f']]], - ['splat_660',['splat',['../splat_8F.html#aa6db21451bb67635e7e4426546140e11',1,'splat.F']]], - ['splegend_661',['splegend',['../splegend_8f.html#a9c68adc80e97c43ac983b955dd6cabac',1,'splegend.f']]], - ['sppad_662',['sppad',['../sppad_8f.html#a4338b3ccd7844251bbdabf3da1d6476e',1,'sppad.f']]], - ['spsynth_663',['spsynth',['../spsynth_8f.html#aa6a8113a459918728c876673520126bf',1,'spsynth.f']]], - ['sptez_664',['sptez',['../sptez_8f.html#a418a7d182834b2e2dafae2fe881ba9fc',1,'sptez.f']]], - ['sptezd_665',['sptezd',['../sptezd_8f.html#a6c30b52dcb4da9e403eeeb307b9516d7',1,'sptezd.f']]], - ['sptezm_666',['sptezm',['../sptezm_8f.html#a1430a0df2cba7eefaf67c939684be2d1',1,'sptezm.f']]], - ['sptezmd_667',['sptezmd',['../sptezmd_8f.html#a2b9ead06893e51604bfb18928ddee996',1,'sptezmd.f']]], - ['sptezmv_668',['sptezmv',['../sptezmv_8f.html#a22dc4fc10c5225ec8d3c12ed3cb4786e',1,'sptezmv.f']]], - ['sptezv_669',['sptezv',['../sptezv_8f.html#a83e49d961c40a2621c3f2afe70846226',1,'sptezv.f']]], - ['sptgpm_670',['sptgpm',['../sptgpm_8f.html#a6cffaeaa602eaae5c03166f48065158d',1,'sptgpm.f']]], - ['sptgpmd_671',['sptgpmd',['../sptgpmd_8f.html#af71718c75a2b24b74fa7e1e4318d0539',1,'sptgpmd.f']]], - ['sptgpmv_672',['sptgpmv',['../sptgpmv_8f.html#a15de3accfd448d116324872c8fb1bb17',1,'sptgpmv.f']]], - ['sptgps_673',['sptgps',['../sptgps_8f.html#af06a2dccfa311014fc9f671b14f247b2',1,'sptgps.f']]], - ['sptgpsd_674',['sptgpsd',['../sptgpsd_8f.html#ad6d10c3360c47558a8116b2f5666ed30',1,'sptgpsd.f']]], - ['sptgpsv_675',['sptgpsv',['../sptgpsv_8f.html#af2bf2335047ec277730564dbfa859079',1,'sptgpsv.f']]], - ['sptgpt_676',['sptgpt',['../sptgpt_8f.html#a1b8d333bcc601e5b7e8d3dd1369f54b1',1,'sptgpt.f']]], - ['sptgptd_677',['sptgptd',['../sptgptd_8f.html#a64d1fe761662182ca3495531152d1cd3',1,'sptgptd.f']]], - ['sptgptsd_678',['sptgptsd',['../sptgptsd_8f.html#ad3ab15089a57b493cc74443ea3b3d88f',1,'sptgptsd.f']]], - ['sptgptv_679',['sptgptv',['../sptgptv_8f.html#a9af8a22564d132a887a5237f30710f13',1,'sptgptv.f']]], - ['sptgptvd_680',['sptgptvd',['../sptgptvd_8f.html#ae03c6c76cad685ae1ed32d74bcba6753',1,'sptgptvd.f']]], - ['sptran_681',['sptran',['../sptran_8f.html#af7610e42f0dcd199b8cf80f851dcfed0',1,'sptran.f']]], - ['sptrand_682',['sptrand',['../sptrand_8f.html#ae810abad32bcbdfb8345a30e50bcc1ef',1,'sptrand.f']]], - ['sptranf_683',['sptranf',['../sptranf_8f.html#acf086b5141203e48bdb7250441a16c8c',1,'sptranf.f']]], - ['sptranf0_684',['sptranf0',['../sptranf0_8f.html#aaf9f9002ccd7074dc04dbc40a5aad9f0',1,'sptranf0.f']]], - ['sptranf1_685',['sptranf1',['../sptranf1_8f.html#ad7cec2fd6729ca84b1fac3436f9730e6',1,'sptranf1.f']]], - ['sptranfv_686',['sptranfv',['../sptranfv_8f.html#a1a7aabbd358d4fe984dac6813c98b106',1,'sptranfv.f']]], - ['sptranv_687',['sptranv',['../sptranv_8f.html#a7d6aaa3ed70df1dfaf8dd4443b7190c1',1,'sptranv.f']]], - ['sptrun_688',['sptrun',['../sptrun_8f.html#a1f04574fbd5018f73b68bd2cd0ffc473',1,'sptrun.f']]], - ['sptrund_689',['sptrund',['../sptrund_8f.html#a2636d99e658dfabd4b85f15a76fca480',1,'sptrund.f']]], - ['sptrung_690',['sptrung',['../sptrung_8f.html#af41b64dad4789617a315515ef885912c',1,'sptrung.f']]], - ['sptrungv_691',['sptrungv',['../sptrungv_8f.html#ab7bbe6ecde57394b15e5d4925cb07164',1,'sptrungv.f']]], - ['sptrunl_692',['sptrunl',['../sptrunl_8f.html#a52c4250d24e52304e49aa1d82a93bdb8',1,'sptrunl.f']]], - ['sptrunm_693',['sptrunm',['../sptrunm_8f.html#a2a4e579890d3cf7f6a26091f544b6cb6',1,'sptrunm.f']]], - ['sptrunmv_694',['sptrunmv',['../sptrunmv_8f.html#a8b405d0621112d6852a3bb99602ac2fd',1,'sptrunmv.f']]], - ['sptruns_695',['sptruns',['../sptruns_8f.html#a34f156e2049105d012e445f8aa215444',1,'sptruns.f']]], - ['sptrunsv_696',['sptrunsv',['../sptrunsv_8f.html#a1373b651b9dea586e33d3033aae68656',1,'sptrunsv.f']]], - ['sptrunv_697',['sptrunv',['../sptrunv_8f.html#a9aa39c13dd38585b3afb30cb2486817f',1,'sptrunv.f']]], - ['spuv2dz_698',['spuv2dz',['../spuv2dz_8f.html#a27edc2d10e0a76a45e4aaae58bf018b9',1,'spuv2dz.f']]], - ['spvar_699',['spvar',['../spvar_8f.html#a840f95e09b8d930b38638a391933bee4',1,'spvar.f']]], - ['spwget_700',['spwget',['../spwget_8f.html#a9b6ce78350f7adf2fed874a18312c7a6',1,'spwget.f']]], - ['srcft_701',['srcft',['../fftpack_8F.html#acf248c4f27a9fa81cffdfded50eee742',1,'fftpack.F']]] + ['scfft_650',['scfft',['../fftpack_8F.html#a369071ea2d380c9d91ba36d1bf375e33',1,'fftpack.F']]], + ['scrft_651',['scrft',['../fftpack_8F.html#ac69cbd64be972c20a4424f5327fb4b36',1,'fftpack.F']]], + ['spanaly_652',['spanaly',['../spanaly_8f.html#a5cc846d796d393d7499cde0f3d1d6e6a',1,'spanaly.f']]], + ['spdz2uv_653',['spdz2uv',['../spdz2uv_8f.html#ae3a4a74c49f78a25425b610743dc0692',1,'spdz2uv.f']]], + ['speps_654',['speps',['../speps_8f.html#a0ab523ec5e1393ffca970897e63a9131',1,'speps.f']]], + ['spfft_655',['spfft',['../spfft_8f.html#a1041af8ac4f6a2407b5b7a799a13fb5d',1,'spfft.f']]], + ['spfft1_656',['spfft1',['../spfft1_8f.html#ac63643472eda83948c0b249b611346d6',1,'spfft1.f']]], + ['spffte_657',['spffte',['../spffte_8f.html#af06489254bd3e99030b39744fce32233',1,'spffte.f']]], + ['spfftpt_658',['spfftpt',['../spfftpt_8f.html#ad16e674ce87bd762a714853967f81356',1,'spfftpt.f']]], + ['spgradq_659',['spgradq',['../spgradq_8f.html#a0bb358cf2a405ce9f17c6e5dfde65849',1,'spgradq.f']]], + ['spgradx_660',['spgradx',['../spgradx_8f.html#a749bc07e763e9cd44490fff2284d00b4',1,'spgradx.f']]], + ['spgrady_661',['spgrady',['../spgrady_8f.html#a1b3e38e56560de7d7dcf19ea3e931cf1',1,'spgrady.f']]], + ['splaplac_662',['splaplac',['../splaplac_8f.html#a64338955857a3cf58283146940e7ae42',1,'splaplac.f']]], + ['splat_663',['splat',['../splat_8F.html#aa6db21451bb67635e7e4426546140e11',1,'splat.F']]], + ['splegend_664',['splegend',['../splegend_8f.html#a9c68adc80e97c43ac983b955dd6cabac',1,'splegend.f']]], + ['sppad_665',['sppad',['../sppad_8f.html#a4338b3ccd7844251bbdabf3da1d6476e',1,'sppad.f']]], + ['spsynth_666',['spsynth',['../spsynth_8f.html#aa6a8113a459918728c876673520126bf',1,'spsynth.f']]], + ['sptez_667',['sptez',['../sptez_8f.html#a418a7d182834b2e2dafae2fe881ba9fc',1,'sptez.f']]], + ['sptezd_668',['sptezd',['../sptezd_8f.html#a6c30b52dcb4da9e403eeeb307b9516d7',1,'sptezd.f']]], + ['sptezm_669',['sptezm',['../sptezm_8f.html#a1430a0df2cba7eefaf67c939684be2d1',1,'sptezm.f']]], + ['sptezmd_670',['sptezmd',['../sptezmd_8f.html#a2b9ead06893e51604bfb18928ddee996',1,'sptezmd.f']]], + ['sptezmv_671',['sptezmv',['../sptezmv_8f.html#a22dc4fc10c5225ec8d3c12ed3cb4786e',1,'sptezmv.f']]], + ['sptezv_672',['sptezv',['../sptezv_8f.html#a83e49d961c40a2621c3f2afe70846226',1,'sptezv.f']]], + ['sptgpm_673',['sptgpm',['../sptgpm_8f.html#a6cffaeaa602eaae5c03166f48065158d',1,'sptgpm.f']]], + ['sptgpmd_674',['sptgpmd',['../sptgpmd_8f.html#af71718c75a2b24b74fa7e1e4318d0539',1,'sptgpmd.f']]], + ['sptgpmv_675',['sptgpmv',['../sptgpmv_8f.html#a15de3accfd448d116324872c8fb1bb17',1,'sptgpmv.f']]], + ['sptgps_676',['sptgps',['../sptgps_8f.html#af06a2dccfa311014fc9f671b14f247b2',1,'sptgps.f']]], + ['sptgpsd_677',['sptgpsd',['../sptgpsd_8f.html#ad6d10c3360c47558a8116b2f5666ed30',1,'sptgpsd.f']]], + ['sptgpsv_678',['sptgpsv',['../sptgpsv_8f.html#af2bf2335047ec277730564dbfa859079',1,'sptgpsv.f']]], + ['sptgpt_679',['sptgpt',['../sptgpt_8f.html#a1b8d333bcc601e5b7e8d3dd1369f54b1',1,'sptgpt.f']]], + ['sptgptd_680',['sptgptd',['../sptgptd_8f.html#a64d1fe761662182ca3495531152d1cd3',1,'sptgptd.f']]], + ['sptgptsd_681',['sptgptsd',['../sptgptsd_8f.html#ad3ab15089a57b493cc74443ea3b3d88f',1,'sptgptsd.f']]], + ['sptgptv_682',['sptgptv',['../sptgptv_8f.html#a9af8a22564d132a887a5237f30710f13',1,'sptgptv.f']]], + ['sptgptvd_683',['sptgptvd',['../sptgptvd_8f.html#ae03c6c76cad685ae1ed32d74bcba6753',1,'sptgptvd.f']]], + ['sptran_684',['sptran',['../sptran_8f.html#af7610e42f0dcd199b8cf80f851dcfed0',1,'sptran.f']]], + ['sptrand_685',['sptrand',['../sptrand_8f.html#ae810abad32bcbdfb8345a30e50bcc1ef',1,'sptrand.f']]], + ['sptranf_686',['sptranf',['../sptranf_8f.html#acf086b5141203e48bdb7250441a16c8c',1,'sptranf.f']]], + ['sptranf0_687',['sptranf0',['../sptranf0_8f.html#aaf9f9002ccd7074dc04dbc40a5aad9f0',1,'sptranf0.f']]], + ['sptranf1_688',['sptranf1',['../sptranf1_8f.html#ad7cec2fd6729ca84b1fac3436f9730e6',1,'sptranf1.f']]], + ['sptranfv_689',['sptranfv',['../sptranfv_8f.html#a1a7aabbd358d4fe984dac6813c98b106',1,'sptranfv.f']]], + ['sptranv_690',['sptranv',['../sptranv_8f.html#a7d6aaa3ed70df1dfaf8dd4443b7190c1',1,'sptranv.f']]], + ['sptrun_691',['sptrun',['../sptrun_8f.html#a1f04574fbd5018f73b68bd2cd0ffc473',1,'sptrun.f']]], + ['sptrund_692',['sptrund',['../sptrund_8f.html#a2636d99e658dfabd4b85f15a76fca480',1,'sptrund.f']]], + ['sptrung_693',['sptrung',['../sptrung_8f.html#af41b64dad4789617a315515ef885912c',1,'sptrung.f']]], + ['sptrungv_694',['sptrungv',['../sptrungv_8f.html#ab7bbe6ecde57394b15e5d4925cb07164',1,'sptrungv.f']]], + ['sptrunl_695',['sptrunl',['../sptrunl_8f.html#a52c4250d24e52304e49aa1d82a93bdb8',1,'sptrunl.f']]], + ['sptrunm_696',['sptrunm',['../sptrunm_8f.html#a2a4e579890d3cf7f6a26091f544b6cb6',1,'sptrunm.f']]], + ['sptrunmv_697',['sptrunmv',['../sptrunmv_8f.html#a8b405d0621112d6852a3bb99602ac2fd',1,'sptrunmv.f']]], + ['sptruns_698',['sptruns',['../sptruns_8f.html#a34f156e2049105d012e445f8aa215444',1,'sptruns.f']]], + ['sptrunsv_699',['sptrunsv',['../sptrunsv_8f.html#a1373b651b9dea586e33d3033aae68656',1,'sptrunsv.f']]], + ['sptrunv_700',['sptrunv',['../sptrunv_8f.html#a9aa39c13dd38585b3afb30cb2486817f',1,'sptrunv.f']]], + ['spuv2dz_701',['spuv2dz',['../spuv2dz_8f.html#a27edc2d10e0a76a45e4aaae58bf018b9',1,'spuv2dz.f']]], + ['spvar_702',['spvar',['../spvar_8f.html#a840f95e09b8d930b38638a391933bee4',1,'spvar.f']]], + ['spwget_703',['spwget',['../spwget_8f.html#a9b6ce78350f7adf2fed874a18312c7a6',1,'spwget.f']]], + ['srcft_704',['srcft',['../fftpack_8F.html#acf248c4f27a9fa81cffdfded50eee742',1,'fftpack.F']]] ]; diff --git a/search/functions_c.html b/search/functions_c.html new file mode 100644 index 00000000..c4f32687 --- /dev/null +++ b/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 00000000..8074160f --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unuse_5fncep_5fpost_5farakawa_705',['unuse_ncep_post_arakawa',['../namespaceip__grid__mod.html#ac8e716adbe5c1156bfd20f936a4205de',1,'ip_grid_mod']]], + ['use_5fncep_5fpost_5farakawa_706',['use_ncep_post_arakawa',['../namespaceip__grid__mod.html#a1d570947cf124c28ba67305494bff450',1,'ip_grid_mod']]] +]; diff --git a/search/namespaces_0.js b/search/namespaces_0.js index 66fe5acf..9d67d19b 100644 --- a/search/namespaces_0.js +++ b/search/namespaces_0.js @@ -1,6 +1,6 @@ var searchData= [ - ['bicubic_5finterp_5fmod_419',['bicubic_interp_mod',['../namespacebicubic__interp__mod.html',1,'']]], - ['bilinear_5finterp_5fmod_420',['bilinear_interp_mod',['../namespacebilinear__interp__mod.html',1,'']]], - ['budget_5finterp_5fmod_421',['budget_interp_mod',['../namespacebudget__interp__mod.html',1,'']]] + ['bicubic_5finterp_5fmod_423',['bicubic_interp_mod',['../namespacebicubic__interp__mod.html',1,'']]], + ['bilinear_5finterp_5fmod_424',['bilinear_interp_mod',['../namespacebilinear__interp__mod.html',1,'']]], + ['budget_5finterp_5fmod_425',['budget_interp_mod',['../namespacebudget__interp__mod.html',1,'']]] ]; diff --git a/search/namespaces_1.js b/search/namespaces_1.js index b06e7e7c..e93bf1b4 100644 --- a/search/namespaces_1.js +++ b/search/namespaces_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['earth_5fradius_5fmod_422',['earth_radius_mod',['../namespaceearth__radius__mod.html',1,'']]] + ['earth_5fradius_5fmod_426',['earth_radius_mod',['../namespaceearth__radius__mod.html',1,'']]] ]; diff --git a/search/namespaces_2.js b/search/namespaces_2.js index be62d637..223057b8 100644 --- a/search/namespaces_2.js +++ b/search/namespaces_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['gdswzd_5fc_5fmod_423',['gdswzd_c_mod',['../namespacegdswzd__c__mod.html',1,'']]], - ['gdswzd_5fmod_424',['gdswzd_mod',['../namespacegdswzd__mod.html',1,'']]] + ['gdswzd_5fc_5fmod_427',['gdswzd_c_mod',['../namespacegdswzd__c__mod.html',1,'']]], + ['gdswzd_5fmod_428',['gdswzd_mod',['../namespacegdswzd__mod.html',1,'']]] ]; diff --git a/search/namespaces_3.js b/search/namespaces_3.js index a1d712f5..5c573362 100644 --- a/search/namespaces_3.js +++ b/search/namespaces_3.js @@ -1,20 +1,20 @@ var searchData= [ - ['ip_5fconstants_5fmod_425',['ip_constants_mod',['../namespaceip__constants__mod.html',1,'']]], - ['ip_5fequid_5fcylind_5fgrid_5fmod_426',['ip_equid_cylind_grid_mod',['../namespaceip__equid__cylind__grid__mod.html',1,'']]], - ['ip_5fgaussian_5fgrid_5fmod_427',['ip_gaussian_grid_mod',['../namespaceip__gaussian__grid__mod.html',1,'']]], - ['ip_5fgrid_5fdescriptor_5fmod_428',['ip_grid_descriptor_mod',['../namespaceip__grid__descriptor__mod.html',1,'']]], - ['ip_5fgrid_5ffactory_5fmod_429',['ip_grid_factory_mod',['../namespaceip__grid__factory__mod.html',1,'']]], - ['ip_5fgrid_5fmod_430',['ip_grid_mod',['../namespaceip__grid__mod.html',1,'']]], - ['ip_5fgrids_5fmod_431',['ip_grids_mod',['../namespaceip__grids__mod.html',1,'']]], - ['ip_5finterpolators_5fmod_432',['ip_interpolators_mod',['../namespaceip__interpolators__mod.html',1,'']]], - ['ip_5flambert_5fconf_5fgrid_5fmod_433',['ip_lambert_conf_grid_mod',['../namespaceip__lambert__conf__grid__mod.html',1,'']]], - ['ip_5fmercator_5fgrid_5fmod_434',['ip_mercator_grid_mod',['../namespaceip__mercator__grid__mod.html',1,'']]], - ['ip_5fmod_435',['ip_mod',['../namespaceip__mod.html',1,'']]], - ['ip_5fpolar_5fstereo_5fgrid_5fmod_436',['ip_polar_stereo_grid_mod',['../namespaceip__polar__stereo__grid__mod.html',1,'']]], - ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_437',['ip_rot_equid_cylind_egrid_mod',['../namespaceip__rot__equid__cylind__egrid__mod.html',1,'']]], - ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_438',['ip_rot_equid_cylind_grid_mod',['../namespaceip__rot__equid__cylind__grid__mod.html',1,'']]], - ['ip_5fstation_5fpoints_5fgrid_5fmod_439',['ip_station_points_grid_mod',['../namespaceip__station__points__grid__mod.html',1,'']]], - ['ipolates_5fmod_440',['ipolates_mod',['../namespaceipolates__mod.html',1,'']]], - ['ipolatev_5fmod_441',['ipolatev_mod',['../namespaceipolatev__mod.html',1,'']]] + ['ip_5fconstants_5fmod_429',['ip_constants_mod',['../namespaceip__constants__mod.html',1,'']]], + ['ip_5fequid_5fcylind_5fgrid_5fmod_430',['ip_equid_cylind_grid_mod',['../namespaceip__equid__cylind__grid__mod.html',1,'']]], + ['ip_5fgaussian_5fgrid_5fmod_431',['ip_gaussian_grid_mod',['../namespaceip__gaussian__grid__mod.html',1,'']]], + ['ip_5fgrid_5fdescriptor_5fmod_432',['ip_grid_descriptor_mod',['../namespaceip__grid__descriptor__mod.html',1,'']]], + ['ip_5fgrid_5ffactory_5fmod_433',['ip_grid_factory_mod',['../namespaceip__grid__factory__mod.html',1,'']]], + ['ip_5fgrid_5fmod_434',['ip_grid_mod',['../namespaceip__grid__mod.html',1,'']]], + ['ip_5fgrids_5fmod_435',['ip_grids_mod',['../namespaceip__grids__mod.html',1,'']]], + ['ip_5finterpolators_5fmod_436',['ip_interpolators_mod',['../namespaceip__interpolators__mod.html',1,'']]], + ['ip_5flambert_5fconf_5fgrid_5fmod_437',['ip_lambert_conf_grid_mod',['../namespaceip__lambert__conf__grid__mod.html',1,'']]], + ['ip_5fmercator_5fgrid_5fmod_438',['ip_mercator_grid_mod',['../namespaceip__mercator__grid__mod.html',1,'']]], + ['ip_5fmod_439',['ip_mod',['../namespaceip__mod.html',1,'']]], + ['ip_5fpolar_5fstereo_5fgrid_5fmod_440',['ip_polar_stereo_grid_mod',['../namespaceip__polar__stereo__grid__mod.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_441',['ip_rot_equid_cylind_egrid_mod',['../namespaceip__rot__equid__cylind__egrid__mod.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_442',['ip_rot_equid_cylind_grid_mod',['../namespaceip__rot__equid__cylind__grid__mod.html',1,'']]], + ['ip_5fstation_5fpoints_5fgrid_5fmod_443',['ip_station_points_grid_mod',['../namespaceip__station__points__grid__mod.html',1,'']]], + ['ipolates_5fmod_444',['ipolates_mod',['../namespaceipolates__mod.html',1,'']]], + ['ipolatev_5fmod_445',['ipolatev_mod',['../namespaceipolatev__mod.html',1,'']]] ]; diff --git a/search/namespaces_4.js b/search/namespaces_4.js index 95370e42..32397ba0 100644 --- a/search/namespaces_4.js +++ b/search/namespaces_4.js @@ -1,5 +1,5 @@ var searchData= [ - ['neighbor_5fbudget_5finterp_5fmod_442',['neighbor_budget_interp_mod',['../namespaceneighbor__budget__interp__mod.html',1,'']]], - ['neighbor_5finterp_5fmod_443',['neighbor_interp_mod',['../namespaceneighbor__interp__mod.html',1,'']]] + ['neighbor_5fbudget_5finterp_5fmod_446',['neighbor_budget_interp_mod',['../namespaceneighbor__budget__interp__mod.html',1,'']]], + ['neighbor_5finterp_5fmod_447',['neighbor_interp_mod',['../namespaceneighbor__interp__mod.html',1,'']]] ]; diff --git a/search/namespaces_5.js b/search/namespaces_5.js index 44468751..aac145d1 100644 --- a/search/namespaces_5.js +++ b/search/namespaces_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['polfix_5fmod_444',['polfix_mod',['../namespacepolfix__mod.html',1,'']]] + ['polfix_5fmod_448',['polfix_mod',['../namespacepolfix__mod.html',1,'']]] ]; diff --git a/search/namespaces_6.js b/search/namespaces_6.js index 0db5b9b7..c1c66095 100644 --- a/search/namespaces_6.js +++ b/search/namespaces_6.js @@ -1,4 +1,4 @@ var searchData= [ - ['spectral_5finterp_5fmod_445',['spectral_interp_mod',['../namespacespectral__interp__mod.html',1,'']]] + ['spectral_5finterp_5fmod_449',['spectral_interp_mod',['../namespacespectral__interp__mod.html',1,'']]] ]; diff --git a/search/pages_0.js b/search/pages_0.js index 1b149a48..cbef086c 100644 --- a/search/pages_0.js +++ b/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['introduction_783',['Introduction',['../index.html',1,'']]] + ['introduction_791',['Introduction',['../index.html',1,'']]] ]; diff --git a/search/searchdata.js b/search/searchdata.js index 913958db..f22ce80e 100644 --- a/search/searchdata.js +++ b/search/searchdata.js @@ -1,10 +1,10 @@ var indexSectionsWithContent = { - 0: "abcdefghijklmnoprswy", + 0: "abcdefghijklmnoprsuwy", 1: "giop", 2: "beginps", - 3: "befgilmnps", - 4: "cdefgilmnprs", + 3: "befgimnps", + 4: "cdefgilmnprsu", 5: "abcdeghijklmnoprswy", 6: "i" }; diff --git a/search/variables_0.js b/search/variables_0.js index b4c84e1c..57a598e5 100644 --- a/search/variables_0.js +++ b/search/variables_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['an_702',['an',['../namespaceip__lambert__conf__grid__mod.html#a82b75fe2d8495aab75b225c6309e61c8',1,'ip_lambert_conf_grid_mod']]] + ['an_707',['an',['../namespaceip__lambert__conf__grid__mod.html#a82b75fe2d8495aab75b225c6309e61c8',1,'ip_lambert_conf_grid_mod']]] ]; diff --git a/search/variables_1.js b/search/variables_1.js index a00dc525..d7cf62d1 100644 --- a/search/variables_1.js +++ b/search/variables_1.js @@ -1,7 +1,7 @@ var searchData= [ - ['bicubic_5finterp_5fid_703',['bicubic_interp_id',['../namespaceip__interpolators__mod.html#adfdc7760718083d85618df85320c495e',1,'ip_interpolators_mod']]], - ['bilinear_5finterp_5fid_704',['bilinear_interp_id',['../namespaceip__interpolators__mod.html#a753e4b6c113a9a8b226c3c834786f3e1',1,'ip_interpolators_mod']]], - ['blat_705',['blat',['../namespaceip__gaussian__grid__mod.html#ae2697b9c4dbe4945276633d1951e79fc',1,'ip_gaussian_grid_mod']]], - ['budget_5finterp_5fid_706',['budget_interp_id',['../namespaceip__interpolators__mod.html#a7df843ca4a64e3178f448aebf7dad359',1,'ip_interpolators_mod']]] + ['bicubic_5finterp_5fid_708',['bicubic_interp_id',['../namespaceip__interpolators__mod.html#adfdc7760718083d85618df85320c495e',1,'ip_interpolators_mod']]], + ['bilinear_5finterp_5fid_709',['bilinear_interp_id',['../namespaceip__interpolators__mod.html#a753e4b6c113a9a8b226c3c834786f3e1',1,'ip_interpolators_mod']]], + ['blat_710',['blat',['../namespaceip__gaussian__grid__mod.html#ae2697b9c4dbe4945276633d1951e79fc',1,'ip_gaussian_grid_mod']]], + ['budget_5finterp_5fid_711',['budget_interp_id',['../namespaceip__interpolators__mod.html#a7df843ca4a64e3178f448aebf7dad359',1,'ip_interpolators_mod']]] ]; diff --git a/search/variables_10.js b/search/variables_10.js index f504aa0c..24951903 100644 --- a/search/variables_10.js +++ b/search/variables_10.js @@ -1,8 +1,8 @@ var searchData= [ - ['sbd_776',['sbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a246ec0afc422f6cfcc3758ff62c6017f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]], - ['slat_777',['slat',['../namespaceip__rot__equid__cylind__egrid__mod.html#ae1f8503816477fb685fbadc7a9e50f0b',1,'ip_rot_equid_cylind_egrid_mod']]], - ['slat0_778',['slat0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#aca4b0ae69f756ef4854369bf88423d66',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::slat0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a8a02c6fc1ad38174e15679e69b5cbfdc',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::slat0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a72199c827ab3218b7f2aba35ad30b94d',1,'ip_rot_equid_cylind_egrid_mod::slat0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#a64831f92d5306513987a98e97a32aea1',1,'ip_rot_equid_cylind_grid_mod::slat0()']]], - ['slatr_779',['slatr',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aae4f801c95b7b61e2e6b1dd824d3688b',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::slatr()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a4ccccb64d3e7236d8cac19c279aab900',1,'ip_rot_equid_cylind_egrid_mod::slatr()']]], - ['spectral_5finterp_5fid_780',['spectral_interp_id',['../namespaceip__interpolators__mod.html#a83ba2963a0b686c6ae67b53f9c385851',1,'ip_interpolators_mod']]] + ['sbd_784',['sbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a246ec0afc422f6cfcc3758ff62c6017f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]], + ['slat_785',['slat',['../namespaceip__rot__equid__cylind__egrid__mod.html#ae1f8503816477fb685fbadc7a9e50f0b',1,'ip_rot_equid_cylind_egrid_mod']]], + ['slat0_786',['slat0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#aca4b0ae69f756ef4854369bf88423d66',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::slat0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a8a02c6fc1ad38174e15679e69b5cbfdc',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::slat0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a72199c827ab3218b7f2aba35ad30b94d',1,'ip_rot_equid_cylind_egrid_mod::slat0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#a64831f92d5306513987a98e97a32aea1',1,'ip_rot_equid_cylind_grid_mod::slat0()']]], + ['slatr_787',['slatr',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aae4f801c95b7b61e2e6b1dd824d3688b',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::slatr()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a4ccccb64d3e7236d8cac19c279aab900',1,'ip_rot_equid_cylind_egrid_mod::slatr()']]], + ['spectral_5finterp_5fid_788',['spectral_interp_id',['../namespaceip__interpolators__mod.html#a83ba2963a0b686c6ae67b53f9c385851',1,'ip_interpolators_mod']]] ]; diff --git a/search/variables_11.js b/search/variables_11.js index e4756d5e..cfd0b575 100644 --- a/search/variables_11.js +++ b/search/variables_11.js @@ -1,4 +1,4 @@ var searchData= [ - ['wbd_781',['wbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a33ae1763c4f1267091bee36a9c92e46a',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]] + ['wbd_789',['wbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a33ae1763c4f1267091bee36a9c92e46a',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]] ]; diff --git a/search/variables_12.js b/search/variables_12.js index 557b4d17..ad804807 100644 --- a/search/variables_12.js +++ b/search/variables_12.js @@ -1,4 +1,4 @@ var searchData= [ - ['ylat_5frow_782',['ylat_row',['../namespaceip__gaussian__grid__mod.html#a3591b5701f3d03931c6a9d5278e161dc',1,'ip_gaussian_grid_mod']]] + ['ylat_5frow_790',['ylat_row',['../namespaceip__gaussian__grid__mod.html#a3591b5701f3d03931c6a9d5278e161dc',1,'ip_gaussian_grid_mod']]] ]; diff --git a/search/variables_2.js b/search/variables_2.js index 460ddece..8a0b0188 100644 --- a/search/variables_2.js +++ b/search/variables_2.js @@ -1,7 +1,7 @@ var searchData= [ - ['clat_707',['clat',['../namespaceip__rot__equid__cylind__egrid__mod.html#aac1018f3ca1b7ad4b5d33f245678d416',1,'ip_rot_equid_cylind_egrid_mod']]], - ['clat0_708',['clat0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a7a1b97e05b77bb7563165bf3f3e97dda',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::clat0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a49835868e8c8b96e243a5992daee6ea5',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::clat0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a83649d02b55d6252d59514aec4eb3142',1,'ip_rot_equid_cylind_egrid_mod::clat0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#afeb699d0eaa8d157277e93fe8e8c5852',1,'ip_rot_equid_cylind_grid_mod::clat0()']]], - ['clatr_709',['clatr',['../namespaceip__rot__equid__cylind__egrid__mod.html#aad4e673a94976b2b5a9bfad9de9e6e30',1,'ip_rot_equid_cylind_egrid_mod']]], - ['clon_710',['clon',['../namespaceip__rot__equid__cylind__egrid__mod.html#a557d49c609fc8c5c564a3a5f10174eec',1,'ip_rot_equid_cylind_egrid_mod']]] + ['clat_712',['clat',['../namespaceip__rot__equid__cylind__egrid__mod.html#aac1018f3ca1b7ad4b5d33f245678d416',1,'ip_rot_equid_cylind_egrid_mod']]], + ['clat0_713',['clat0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a7a1b97e05b77bb7563165bf3f3e97dda',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::clat0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a49835868e8c8b96e243a5992daee6ea5',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::clat0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a83649d02b55d6252d59514aec4eb3142',1,'ip_rot_equid_cylind_egrid_mod::clat0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#afeb699d0eaa8d157277e93fe8e8c5852',1,'ip_rot_equid_cylind_grid_mod::clat0()']]], + ['clatr_714',['clatr',['../namespaceip__rot__equid__cylind__egrid__mod.html#aad4e673a94976b2b5a9bfad9de9e6e30',1,'ip_rot_equid_cylind_egrid_mod']]], + ['clon_715',['clon',['../namespaceip__rot__equid__cylind__egrid__mod.html#a557d49c609fc8c5c564a3a5f10174eec',1,'ip_rot_equid_cylind_egrid_mod']]] ]; diff --git a/search/variables_3.js b/search/variables_3.js index f371871c..f5621f5e 100644 --- a/search/variables_3.js +++ b/search/variables_3.js @@ -1,13 +1,13 @@ var searchData= [ - ['de2_711',['de2',['../namespaceip__polar__stereo__grid__mod.html#a605d287e34e60f553521a5de2da22962',1,'ip_polar_stereo_grid_mod']]], - ['descriptor_712',['descriptor',['../structip__grid__mod_1_1ip__grid.html#a4a2a0dab09f05931d12615b0ac74bc51',1,'ip_grid_mod::ip_grid']]], - ['dlat_713',['dlat',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a6bd00527219fc596b2c2a7ba47fec719',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::dlat()'],['../namespaceip__equid__cylind__grid__mod.html#a30cb127d26d74d2de6ab3cbfd63183fb',1,'ip_equid_cylind_grid_mod::dlat()']]], - ['dlats_714',['dlats',['../namespaceip__rot__equid__cylind__grid__mod.html#ab43075e39d4e2dde4110e608931a392d',1,'ip_rot_equid_cylind_grid_mod::dlats()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a0b2faca2325b413e1f3207778d4c4c68',1,'ip_rot_equid_cylind_egrid_mod::dlats()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a00d41c3d43370d3f02bb92d59f66866c',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::dlats()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#affd9cfc7a0e1d8e74735eac35b2e03c6',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::dlats()']]], - ['dlon_715',['dlon',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a35c454d320c59a6c71c4aebb881abcb8',1,'ip_gaussian_grid_mod::ip_gaussian_grid::dlon()'],['../namespaceip__mercator__grid__mod.html#a14e1cb3f8c05d2de49d2aa8dc69d104f',1,'ip_mercator_grid_mod::dlon()'],['../namespaceip__gaussian__grid__mod.html#a8852b7cfb7b99318140c66b0c551dc6d',1,'ip_gaussian_grid_mod::dlon()'],['../namespaceip__equid__cylind__grid__mod.html#a46335f95ac343f7751bd519aec0a160f',1,'ip_equid_cylind_grid_mod::dlon()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a455057778c7f2ad677956bdef2d754ee',1,'ip_mercator_grid_mod::ip_mercator_grid::dlon()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ae675dc8c49e64700d941eadc31e8f4e7',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::dlon()']]], - ['dlons_716',['dlons',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a76222910f6c9fa0c5374bed672904c85',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::dlons()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a23a172ccd2e026746925e2029c0a9206',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::dlons()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#af04f8a1044f4d9a7e0d13d38887adcbc',1,'ip_rot_equid_cylind_egrid_mod::dlons()'],['../namespaceip__rot__equid__cylind__grid__mod.html#aa0cf7bb2dd8be1239ae38c7220d29702',1,'ip_rot_equid_cylind_grid_mod::dlons()']]], - ['dphi_717',['dphi',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a39168528a2c207b2e2c5373487d705c5',1,'ip_mercator_grid_mod::ip_mercator_grid::dphi()'],['../namespaceip__mercator__grid__mod.html#a156e638e2d1b93e388d674462ac3f732',1,'ip_mercator_grid_mod::dphi()']]], - ['dpr_718',['dpr',['../namespaceip__constants__mod.html#ae6b74489db06341b78c3088b3f207011',1,'ip_constants_mod']]], - ['dxs_719',['dxs',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ac009bce0c0c14b3e0970da6c032a11b1',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::dxs()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#aa3288a7fbf2db34946116c771e5bc7dc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::dxs()'],['../namespaceip__lambert__conf__grid__mod.html#a196e94b5a2add34133c87f845394fa81',1,'ip_lambert_conf_grid_mod::dxs()'],['../namespaceip__polar__stereo__grid__mod.html#acf60181f89954e2ff31b08bb1b345354',1,'ip_polar_stereo_grid_mod::dxs()']]], - ['dys_720',['dys',['../namespaceip__polar__stereo__grid__mod.html#aea7950530d06d9c59ff61bf706df0a0f',1,'ip_polar_stereo_grid_mod::dys()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a46fa89562e4dd23c765029d2d6c087bc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::dys()'],['../namespaceip__lambert__conf__grid__mod.html#aad8b04b77b0920dbf9ed3827e2e8cfd7',1,'ip_lambert_conf_grid_mod::dys()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a95e155383895ad3f56a3876877b5896b',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::dys()']]] + ['de2_716',['de2',['../namespaceip__polar__stereo__grid__mod.html#a605d287e34e60f553521a5de2da22962',1,'ip_polar_stereo_grid_mod']]], + ['descriptor_717',['descriptor',['../structip__grid__mod_1_1ip__grid.html#a4a2a0dab09f05931d12615b0ac74bc51',1,'ip_grid_mod::ip_grid']]], + ['dlat_718',['dlat',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a6bd00527219fc596b2c2a7ba47fec719',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::dlat()'],['../namespaceip__equid__cylind__grid__mod.html#a30cb127d26d74d2de6ab3cbfd63183fb',1,'ip_equid_cylind_grid_mod::dlat()']]], + ['dlats_719',['dlats',['../namespaceip__rot__equid__cylind__grid__mod.html#ab43075e39d4e2dde4110e608931a392d',1,'ip_rot_equid_cylind_grid_mod::dlats()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a0b2faca2325b413e1f3207778d4c4c68',1,'ip_rot_equid_cylind_egrid_mod::dlats()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a00d41c3d43370d3f02bb92d59f66866c',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::dlats()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#affd9cfc7a0e1d8e74735eac35b2e03c6',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::dlats()']]], + ['dlon_720',['dlon',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a35c454d320c59a6c71c4aebb881abcb8',1,'ip_gaussian_grid_mod::ip_gaussian_grid::dlon()'],['../namespaceip__mercator__grid__mod.html#a14e1cb3f8c05d2de49d2aa8dc69d104f',1,'ip_mercator_grid_mod::dlon()'],['../namespaceip__gaussian__grid__mod.html#a8852b7cfb7b99318140c66b0c551dc6d',1,'ip_gaussian_grid_mod::dlon()'],['../namespaceip__equid__cylind__grid__mod.html#a46335f95ac343f7751bd519aec0a160f',1,'ip_equid_cylind_grid_mod::dlon()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a455057778c7f2ad677956bdef2d754ee',1,'ip_mercator_grid_mod::ip_mercator_grid::dlon()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ae675dc8c49e64700d941eadc31e8f4e7',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::dlon()']]], + ['dlons_721',['dlons',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a76222910f6c9fa0c5374bed672904c85',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::dlons()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a23a172ccd2e026746925e2029c0a9206',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::dlons()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#af04f8a1044f4d9a7e0d13d38887adcbc',1,'ip_rot_equid_cylind_egrid_mod::dlons()'],['../namespaceip__rot__equid__cylind__grid__mod.html#aa0cf7bb2dd8be1239ae38c7220d29702',1,'ip_rot_equid_cylind_grid_mod::dlons()']]], + ['dphi_722',['dphi',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a39168528a2c207b2e2c5373487d705c5',1,'ip_mercator_grid_mod::ip_mercator_grid::dphi()'],['../namespaceip__mercator__grid__mod.html#a156e638e2d1b93e388d674462ac3f732',1,'ip_mercator_grid_mod::dphi()']]], + ['dpr_723',['dpr',['../namespaceip__constants__mod.html#ae6b74489db06341b78c3088b3f207011',1,'ip_constants_mod']]], + ['dxs_724',['dxs',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ac009bce0c0c14b3e0970da6c032a11b1',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::dxs()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#aa3288a7fbf2db34946116c771e5bc7dc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::dxs()'],['../namespaceip__lambert__conf__grid__mod.html#a196e94b5a2add34133c87f845394fa81',1,'ip_lambert_conf_grid_mod::dxs()'],['../namespaceip__polar__stereo__grid__mod.html#acf60181f89954e2ff31b08bb1b345354',1,'ip_polar_stereo_grid_mod::dxs()']]], + ['dys_725',['dys',['../namespaceip__polar__stereo__grid__mod.html#aea7950530d06d9c59ff61bf706df0a0f',1,'ip_polar_stereo_grid_mod::dys()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a46fa89562e4dd23c765029d2d6c087bc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::dys()'],['../namespaceip__lambert__conf__grid__mod.html#aad8b04b77b0920dbf9ed3827e2e8cfd7',1,'ip_lambert_conf_grid_mod::dys()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a95e155383895ad3f56a3876877b5896b',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::dys()']]] ]; diff --git a/search/variables_4.js b/search/variables_4.js index d2c29a3f..630ea7b2 100644 --- a/search/variables_4.js +++ b/search/variables_4.js @@ -1,9 +1,9 @@ var searchData= [ - ['e2_721',['e2',['../namespaceip__polar__stereo__grid__mod.html#abf3a34d9bb00c39dac5225798aea4d5b',1,'ip_polar_stereo_grid_mod']]], - ['e2_5fwgs84_722',['e2_wgs84',['../namespaceip__constants__mod.html#af7783a977fa10c54d85282dc6ac5f545',1,'ip_constants_mod']]], - ['eccen_5fsquared_723',['eccen_squared',['../structip__grid__mod_1_1ip__grid.html#a180a5da6c470fac34b8439d4c0a32d2a',1,'ip_grid_mod::ip_grid']]], - ['elliptical_724',['elliptical',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a1bac1023f8d8cd631760403b222a8c3f',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid']]], - ['equid_5fcylind_5fgrid_5fid_5fgrib1_725',['equid_cylind_grid_id_grib1',['../namespaceip__grid__mod.html#ad96da95d40beceb1a1c405971e8130bb',1,'ip_grid_mod']]], - ['equid_5fcylind_5fgrid_5fid_5fgrib2_726',['equid_cylind_grid_id_grib2',['../namespaceip__grid__mod.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6',1,'ip_grid_mod']]] + ['e2_726',['e2',['../namespaceip__polar__stereo__grid__mod.html#abf3a34d9bb00c39dac5225798aea4d5b',1,'ip_polar_stereo_grid_mod']]], + ['e2_5fwgs84_727',['e2_wgs84',['../namespaceip__constants__mod.html#af7783a977fa10c54d85282dc6ac5f545',1,'ip_constants_mod']]], + ['eccen_5fsquared_728',['eccen_squared',['../structip__grid__mod_1_1ip__grid.html#a180a5da6c470fac34b8439d4c0a32d2a',1,'ip_grid_mod::ip_grid']]], + ['elliptical_729',['elliptical',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a1bac1023f8d8cd631760403b222a8c3f',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid']]], + ['equid_5fcylind_5fgrid_5fid_5fgrib1_730',['equid_cylind_grid_id_grib1',['../namespaceip__grid__mod.html#ad96da95d40beceb1a1c405971e8130bb',1,'ip_grid_mod']]], + ['equid_5fcylind_5fgrid_5fid_5fgrib2_731',['equid_cylind_grid_id_grib2',['../namespaceip__grid__mod.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6',1,'ip_grid_mod']]] ]; diff --git a/search/variables_5.js b/search/variables_5.js index 15a2a3a4..cb1ed52d 100644 --- a/search/variables_5.js +++ b/search/variables_5.js @@ -1,10 +1,10 @@ var searchData= [ - ['gaussian_5fgrid_5fid_5fgrib1_727',['gaussian_grid_id_grib1',['../namespaceip__grid__mod.html#a45e8afad72b1b8856b3e44f2dd3123b3',1,'ip_grid_mod']]], - ['gaussian_5fgrid_5fid_5fgrib2_728',['gaussian_grid_id_grib2',['../namespaceip__grid__mod.html#a36a9a73ecd50353f892341ae8a5c8316',1,'ip_grid_mod']]], - ['gds_729',['gds',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html#a08920c194e39d562fbf527939f0ac6c9',1,'ip_grid_descriptor_mod::grib1_descriptor']]], - ['gdt_5flen_730',['gdt_len',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#abf8e6d212308608a039e8e97c05c4a06',1,'ip_grid_descriptor_mod::grib2_descriptor']]], - ['gdt_5fnum_731',['gdt_num',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#aa5dd78817926e0246f93819ab7037e19',1,'ip_grid_descriptor_mod::grib2_descriptor']]], - ['gdt_5ftmpl_732',['gdt_tmpl',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#a3a90e1ef19332a1d8ec1f6a3193c6ebe',1,'ip_grid_descriptor_mod::grib2_descriptor']]], - ['grid_5fnum_733',['grid_num',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a6d4598dc4bbf46e059f636715cc390f1',1,'ip_grid_descriptor_mod::ip_grid_descriptor']]] + ['gaussian_5fgrid_5fid_5fgrib1_732',['gaussian_grid_id_grib1',['../namespaceip__grid__mod.html#a45e8afad72b1b8856b3e44f2dd3123b3',1,'ip_grid_mod']]], + ['gaussian_5fgrid_5fid_5fgrib2_733',['gaussian_grid_id_grib2',['../namespaceip__grid__mod.html#a36a9a73ecd50353f892341ae8a5c8316',1,'ip_grid_mod']]], + ['gds_734',['gds',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html#a08920c194e39d562fbf527939f0ac6c9',1,'ip_grid_descriptor_mod::grib1_descriptor']]], + ['gdt_5flen_735',['gdt_len',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#abf8e6d212308608a039e8e97c05c4a06',1,'ip_grid_descriptor_mod::grib2_descriptor']]], + ['gdt_5fnum_736',['gdt_num',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#aa5dd78817926e0246f93819ab7037e19',1,'ip_grid_descriptor_mod::grib2_descriptor']]], + ['gdt_5ftmpl_737',['gdt_tmpl',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#a3a90e1ef19332a1d8ec1f6a3193c6ebe',1,'ip_grid_descriptor_mod::grib2_descriptor']]], + ['grid_5fnum_738',['grid_num',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a6d4598dc4bbf46e059f636715cc390f1',1,'ip_grid_descriptor_mod::ip_grid_descriptor']]] ]; diff --git a/search/variables_6.js b/search/variables_6.js index 99ce010b..da399c85 100644 --- a/search/variables_6.js +++ b/search/variables_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['h_734',['h',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a733c8a9b6ed498aeec73fa8f11283c03',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::h()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a6df619b3050279d9d560e72a3e87168f',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::h()'],['../namespaceip__lambert__conf__grid__mod.html#aa91572e8b5ba3559c041f1750b6696c6',1,'ip_lambert_conf_grid_mod::h()'],['../namespaceip__polar__stereo__grid__mod.html#a5a63da5168a1432a1af42c0b668f0645',1,'ip_polar_stereo_grid_mod::h()']]], - ['hi_735',['hi',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#afb1ebcfab0d637688bcac84cbc8582fc',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::hi()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#ae71229713fc9322e23140541993459fc',1,'ip_gaussian_grid_mod::ip_gaussian_grid::hi()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a91b223ca51a556fa11b76b0c05e0d3f2',1,'ip_mercator_grid_mod::ip_mercator_grid::hi()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a970c2655cb03ad0927e03c1d550e3fe5',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::hi()']]] + ['h_739',['h',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a733c8a9b6ed498aeec73fa8f11283c03',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::h()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a6df619b3050279d9d560e72a3e87168f',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::h()'],['../namespaceip__lambert__conf__grid__mod.html#aa91572e8b5ba3559c041f1750b6696c6',1,'ip_lambert_conf_grid_mod::h()'],['../namespaceip__polar__stereo__grid__mod.html#a5a63da5168a1432a1af42c0b668f0645',1,'ip_polar_stereo_grid_mod::h()']]], + ['hi_740',['hi',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#afb1ebcfab0d637688bcac84cbc8582fc',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::hi()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#ae71229713fc9322e23140541993459fc',1,'ip_gaussian_grid_mod::ip_gaussian_grid::hi()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a91b223ca51a556fa11b76b0c05e0d3f2',1,'ip_mercator_grid_mod::ip_mercator_grid::hi()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a970c2655cb03ad0927e03c1d550e3fe5',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::hi()']]] ]; diff --git a/search/variables_7.js b/search/variables_7.js index ace09d2d..3d612840 100644 --- a/search/variables_7.js +++ b/search/variables_7.js @@ -1,6 +1,6 @@ var searchData= [ - ['im_736',['im',['../structip__grid__mod_1_1ip__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc',1,'ip_grid_mod::ip_grid']]], - ['irot_737',['irot',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0d90490fa5eb04604fc0e01bea2cf3cf',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::irot()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a13f3f267f5a26602eb93b6525f494a10',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::irot()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a558e99f37191cb2ea7398ac2a05ef29e',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::irot()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#ae4c44c4cf8d1376b24861534edbf514f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::irot()'],['../namespaceip__lambert__conf__grid__mod.html#a7dea876ed4206c5ecc0444aadb7d6acd',1,'ip_lambert_conf_grid_mod::irot()'],['../namespaceip__polar__stereo__grid__mod.html#a1269037aaecd12e75e17d8aac8e20c8c',1,'ip_polar_stereo_grid_mod::irot()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a93ed996cf2dc9569e356256ec946b571',1,'ip_rot_equid_cylind_egrid_mod::irot()'],['../namespaceip__rot__equid__cylind__grid__mod.html#abb0c2acdbd71f0c07ffaf9db54ce06c1',1,'ip_rot_equid_cylind_grid_mod::irot()']]], - ['iwrap_738',['iwrap',['../structip__grid__mod_1_1ip__grid.html#ae179622b9a4c764a5ca90385330941ed',1,'ip_grid_mod::ip_grid']]] + ['im_741',['im',['../structip__grid__mod_1_1ip__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc',1,'ip_grid_mod::ip_grid']]], + ['irot_742',['irot',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0d90490fa5eb04604fc0e01bea2cf3cf',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::irot()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a13f3f267f5a26602eb93b6525f494a10',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::irot()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a558e99f37191cb2ea7398ac2a05ef29e',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::irot()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#ae4c44c4cf8d1376b24861534edbf514f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::irot()'],['../namespaceip__lambert__conf__grid__mod.html#a7dea876ed4206c5ecc0444aadb7d6acd',1,'ip_lambert_conf_grid_mod::irot()'],['../namespaceip__polar__stereo__grid__mod.html#a1269037aaecd12e75e17d8aac8e20c8c',1,'ip_polar_stereo_grid_mod::irot()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a93ed996cf2dc9569e356256ec946b571',1,'ip_rot_equid_cylind_egrid_mod::irot()'],['../namespaceip__rot__equid__cylind__grid__mod.html#abb0c2acdbd71f0c07ffaf9db54ce06c1',1,'ip_rot_equid_cylind_grid_mod::irot()']]], + ['iwrap_743',['iwrap',['../structip__grid__mod_1_1ip__grid.html#ae179622b9a4c764a5ca90385330941ed',1,'ip_grid_mod::ip_grid']]] ]; diff --git a/search/variables_8.js b/search/variables_8.js index 897991b6..8c9529e2 100644 --- a/search/variables_8.js +++ b/search/variables_8.js @@ -1,10 +1,10 @@ var searchData= [ - ['j1_739',['j1',['../namespaceip__gaussian__grid__mod.html#af5c4024263aa3eaef5801849ae32c15a',1,'ip_gaussian_grid_mod']]], - ['jg_740',['jg',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a110f99e158a977a1679133235fa06c34',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], - ['jh_741',['jh',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a549ccd3ce1f5c75d99e8e04d4d4341b4',1,'ip_gaussian_grid_mod::ip_gaussian_grid::jh()'],['../namespaceip__gaussian__grid__mod.html#a67d6cd6d188a8bded8bdf64927617028',1,'ip_gaussian_grid_mod::jh()']]], - ['jm_742',['jm',['../structip__grid__mod_1_1ip__grid.html#a41a2a38288864520d8c50854d1843f87',1,'ip_grid_mod::ip_grid']]], - ['jscan_743',['jscan',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3e199827f764b162a14515e837c28903',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], - ['jwrap1_744',['jwrap1',['../structip__grid__mod_1_1ip__grid.html#a92976f110dd7e823799991137ac970a1',1,'ip_grid_mod::ip_grid']]], - ['jwrap2_745',['jwrap2',['../structip__grid__mod_1_1ip__grid.html#ae70be8cebcd217a49be4da1cebfc19d2',1,'ip_grid_mod::ip_grid']]] + ['j1_744',['j1',['../namespaceip__gaussian__grid__mod.html#af5c4024263aa3eaef5801849ae32c15a',1,'ip_gaussian_grid_mod']]], + ['jg_745',['jg',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a110f99e158a977a1679133235fa06c34',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], + ['jh_746',['jh',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a549ccd3ce1f5c75d99e8e04d4d4341b4',1,'ip_gaussian_grid_mod::ip_gaussian_grid::jh()'],['../namespaceip__gaussian__grid__mod.html#a67d6cd6d188a8bded8bdf64927617028',1,'ip_gaussian_grid_mod::jh()']]], + ['jm_747',['jm',['../structip__grid__mod_1_1ip__grid.html#a41a2a38288864520d8c50854d1843f87',1,'ip_grid_mod::ip_grid']]], + ['jscan_748',['jscan',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3e199827f764b162a14515e837c28903',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], + ['jwrap1_749',['jwrap1',['../structip__grid__mod_1_1ip__grid.html#a92976f110dd7e823799991137ac970a1',1,'ip_grid_mod::ip_grid']]], + ['jwrap2_750',['jwrap2',['../structip__grid__mod_1_1ip__grid.html#ae70be8cebcd217a49be4da1cebfc19d2',1,'ip_grid_mod::ip_grid']]] ]; diff --git a/search/variables_9.js b/search/variables_9.js index c3739311..fa2a4cf5 100644 --- a/search/variables_9.js +++ b/search/variables_9.js @@ -1,5 +1,5 @@ var searchData= [ - ['kd_746',['kd',['../namespaceip__rot__equid__cylind__egrid__mod.html#a50497d277c347a2991b0e34e85f1787e',1,'ip_rot_equid_cylind_egrid_mod::kd()'],['../namespaceip__rot__equid__cylind__grid__mod.html#af5dea0592cccce2de1c5c6a92d42cfd6',1,'ip_rot_equid_cylind_grid_mod::kd()']]], - ['kscan_747',['kscan',['../structip__grid__mod_1_1ip__grid.html#a084603b1c052e76c3335fea2e887cfce',1,'ip_grid_mod::ip_grid']]] + ['kd_751',['kd',['../namespaceip__rot__equid__cylind__egrid__mod.html#a50497d277c347a2991b0e34e85f1787e',1,'ip_rot_equid_cylind_egrid_mod::kd()'],['../namespaceip__rot__equid__cylind__grid__mod.html#af5dea0592cccce2de1c5c6a92d42cfd6',1,'ip_rot_equid_cylind_grid_mod::kd()']]], + ['kscan_752',['kscan',['../structip__grid__mod_1_1ip__grid.html#a084603b1c052e76c3335fea2e887cfce',1,'ip_grid_mod::ip_grid']]] ]; diff --git a/search/variables_a.js b/search/variables_a.js index 5d6aefe7..ad4c4fc7 100644 --- a/search/variables_a.js +++ b/search/variables_a.js @@ -1,5 +1,5 @@ var searchData= [ - ['lambert_5fconf_5fgrid_5fid_5fgrib1_748',['lambert_conf_grid_id_grib1',['../namespaceip__grid__mod.html#ab82b90d20f38ff39741f6890fa422d16',1,'ip_grid_mod']]], - ['lambert_5fconf_5fgrid_5fid_5fgrib2_749',['lambert_conf_grid_id_grib2',['../namespaceip__grid__mod.html#a2e49846c9122b1fe1fcdbb2913fc32fe',1,'ip_grid_mod']]] + ['lambert_5fconf_5fgrid_5fid_5fgrib1_753',['lambert_conf_grid_id_grib1',['../namespaceip__grid__mod.html#ab82b90d20f38ff39741f6890fa422d16',1,'ip_grid_mod']]], + ['lambert_5fconf_5fgrid_5fid_5fgrib2_754',['lambert_conf_grid_id_grib2',['../namespaceip__grid__mod.html#a2e49846c9122b1fe1fcdbb2913fc32fe',1,'ip_grid_mod']]] ]; diff --git a/search/variables_b.js b/search/variables_b.js index bdfc2114..e8cb2b62 100644 --- a/search/variables_b.js +++ b/search/variables_b.js @@ -1,5 +1,5 @@ var searchData= [ - ['mercator_5fgrid_5fid_5fgrib1_750',['mercator_grid_id_grib1',['../namespaceip__grid__mod.html#ab9ff525eca4f053b04ec96a83cb06682',1,'ip_grid_mod']]], - ['mercator_5fgrid_5fid_5fgrib2_751',['mercator_grid_id_grib2',['../namespaceip__grid__mod.html#af9c58af5162d96cb7d1ac5001139b856',1,'ip_grid_mod']]] + ['mercator_5fgrid_5fid_5fgrib1_755',['mercator_grid_id_grib1',['../namespaceip__grid__mod.html#ab9ff525eca4f053b04ec96a83cb06682',1,'ip_grid_mod']]], + ['mercator_5fgrid_5fid_5fgrib2_756',['mercator_grid_id_grib2',['../namespaceip__grid__mod.html#af9c58af5162d96cb7d1ac5001139b856',1,'ip_grid_mod']]] ]; diff --git a/search/variables_c.js b/search/variables_c.js index 56aaf9d0..56cfb716 100644 --- a/search/variables_c.js +++ b/search/variables_c.js @@ -1,8 +1,9 @@ var searchData= [ - ['neighbor_5fbudget_5finterp_5fid_752',['neighbor_budget_interp_id',['../namespaceip__interpolators__mod.html#ae77a1da241f5de94f1874004ee8e715c',1,'ip_interpolators_mod']]], - ['neighbor_5finterp_5fid_753',['neighbor_interp_id',['../namespaceip__interpolators__mod.html#a35e5fe3a2dd79d205c0503f550388258',1,'ip_interpolators_mod']]], - ['nm_754',['nm',['../structip__grid__mod_1_1ip__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30',1,'ip_grid_mod::ip_grid']]], - ['nscan_755',['nscan',['../structip__grid__mod_1_1ip__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18',1,'ip_grid_mod::ip_grid']]], - ['nscan_5ffield_5fpos_756',['nscan_field_pos',['../structip__grid__mod_1_1ip__grid.html#a0640093c52461763f904cc2f12c96b6c',1,'ip_grid_mod::ip_grid']]] + ['ncep_5fpost_5farakawa_757',['ncep_post_arakawa',['../namespaceip__grid__mod.html#a88751d2ee535d807b6d420fcfb99ee71',1,'ip_grid_mod']]], + ['neighbor_5fbudget_5finterp_5fid_758',['neighbor_budget_interp_id',['../namespaceip__interpolators__mod.html#ae77a1da241f5de94f1874004ee8e715c',1,'ip_interpolators_mod']]], + ['neighbor_5finterp_5fid_759',['neighbor_interp_id',['../namespaceip__interpolators__mod.html#a35e5fe3a2dd79d205c0503f550388258',1,'ip_interpolators_mod']]], + ['nm_760',['nm',['../structip__grid__mod_1_1ip__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30',1,'ip_grid_mod::ip_grid']]], + ['nscan_761',['nscan',['../structip__grid__mod_1_1ip__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18',1,'ip_grid_mod::ip_grid']]], + ['nscan_5ffield_5fpos_762',['nscan_field_pos',['../structip__grid__mod_1_1ip__grid.html#a0640093c52461763f904cc2f12c96b6c',1,'ip_grid_mod::ip_grid']]] ]; diff --git a/search/variables_d.js b/search/variables_d.js index e2bb8ef6..a47d3b06 100644 --- a/search/variables_d.js +++ b/search/variables_d.js @@ -1,4 +1,4 @@ var searchData= [ - ['orient_757',['orient',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0614cfdb69e59e3c3e2937f3319fe34a',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::orient()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aeaeb6d72861b9b62de5bcd435bc96ea4',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::orient()'],['../namespaceip__polar__stereo__grid__mod.html#aa4a88f48d7b78cfdfc54754882195d18',1,'ip_polar_stereo_grid_mod::orient()']]] + ['orient_763',['orient',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0614cfdb69e59e3c3e2937f3319fe34a',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::orient()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aeaeb6d72861b9b62de5bcd435bc96ea4',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::orient()'],['../namespaceip__polar__stereo__grid__mod.html#aa4a88f48d7b78cfdfc54754882195d18',1,'ip_polar_stereo_grid_mod::orient()']]] ]; diff --git a/search/variables_e.js b/search/variables_e.js index 245b1a37..a7a3969c 100644 --- a/search/variables_e.js +++ b/search/variables_e.js @@ -1,8 +1,8 @@ var searchData= [ - ['pi_758',['pi',['../namespaceip__constants__mod.html#a47f83a2267da693170054c958c401cd4',1,'ip_constants_mod']]], - ['pi2_759',['pi2',['../namespaceip__constants__mod.html#a309f7e3b1f83b6b272b12ce4fff501c5',1,'ip_constants_mod']]], - ['pi4_760',['pi4',['../namespaceip__constants__mod.html#a5fe7cdd86b44487666dc37f655d9ff15',1,'ip_constants_mod']]], - ['polar_5fstereo_5fgrid_5fid_5fgrib1_761',['polar_stereo_grid_id_grib1',['../namespaceip__grid__mod.html#afee73c2f09ea9de43c156dc594ae1df1',1,'ip_grid_mod']]], - ['polar_5fstereo_5fgrid_5fid_5fgrib2_762',['polar_stereo_grid_id_grib2',['../namespaceip__grid__mod.html#a5b3ad320b41791e65966e1bb498e9ae3',1,'ip_grid_mod']]] + ['pi_764',['pi',['../namespaceip__constants__mod.html#a47f83a2267da693170054c958c401cd4',1,'ip_constants_mod']]], + ['pi2_765',['pi2',['../namespaceip__constants__mod.html#a309f7e3b1f83b6b272b12ce4fff501c5',1,'ip_constants_mod']]], + ['pi4_766',['pi4',['../namespaceip__constants__mod.html#a5fe7cdd86b44487666dc37f655d9ff15',1,'ip_constants_mod']]], + ['polar_5fstereo_5fgrid_5fid_5fgrib1_767',['polar_stereo_grid_id_grib1',['../namespaceip__grid__mod.html#afee73c2f09ea9de43c156dc594ae1df1',1,'ip_grid_mod']]], + ['polar_5fstereo_5fgrid_5fid_5fgrib2_768',['polar_stereo_grid_id_grib2',['../namespaceip__grid__mod.html#a5b3ad320b41791e65966e1bb498e9ae3',1,'ip_grid_mod']]] ]; diff --git a/search/variables_f.js b/search/variables_f.js index 8be52307..36a45fd7 100644 --- a/search/variables_f.js +++ b/search/variables_f.js @@ -1,16 +1,18 @@ var searchData= [ - ['rerth_763',['rerth',['../namespaceip__gaussian__grid__mod.html#a8213e02ccf4325ad5db14f2e48990da2',1,'ip_gaussian_grid_mod::rerth()'],['../namespaceip__equid__cylind__grid__mod.html#ab5b84516fab9cee3316c07450f49746c',1,'ip_equid_cylind_grid_mod::rerth()'],['../namespaceip__lambert__conf__grid__mod.html#a9f0538d092cd7d2829a5b98247eb560d',1,'ip_lambert_conf_grid_mod::rerth()'],['../namespaceip__mercator__grid__mod.html#adaa27c5d41ee24185b6d020420ce9419',1,'ip_mercator_grid_mod::rerth()'],['../namespaceip__polar__stereo__grid__mod.html#a3315b2efb5cb9aebc0b2cb2773aa20b5',1,'ip_polar_stereo_grid_mod::rerth()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#aed7a425f4d300fe14ac1b48d76378edb',1,'ip_rot_equid_cylind_egrid_mod::rerth()'],['../structip__grid__mod_1_1ip__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8',1,'ip_grid_mod::ip_grid::rerth()'],['../namespaceip__rot__equid__cylind__grid__mod.html#ae08318392106d174ab36cf7dc05c570b',1,'ip_rot_equid_cylind_grid_mod::rerth()']]], - ['rerth_5fwgs84_764',['rerth_wgs84',['../namespaceip__constants__mod.html#ac6a501512f426673f064edbecd7a62fb',1,'ip_constants_mod']]], - ['rlat1_765',['rlat1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a493e017343795e89f794bae5229eb6a7',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlat1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a884837892bf520ea7950f95d8c562a08',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlat1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a00565fd51d334324e9d68d1fc8c52640',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlat1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a1f98e5046c7c1eda30735e5919b79cc7',1,'ip_mercator_grid_mod::ip_mercator_grid::rlat1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a618bb61b83c39dd344264933e51fa932',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlat1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#acdf76c4b3444d0d85dbf9ee09b5f35fc',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlat1()']]], - ['rlat2_766',['rlat2',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#acfd62fa8199f9b57b555364bca920e42',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid']]], - ['rlati_767',['rlati',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3826e3e6b4f3264932c890a3c9804cef',1,'ip_mercator_grid_mod::ip_mercator_grid']]], - ['rlati1_768',['rlati1',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a7dcfaef2adc076604ad32d1ecd1f1cb4',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid']]], - ['rlati2_769',['rlati2',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ae8b2c54b8d00685e179fec7786422f3b',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid']]], - ['rlon0_770',['rlon0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a65579b8557bffeedb99f384048dea14e',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a7b111301b2fc41270869ee182512f13c',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::rlon0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#a620a55069afd33b301240533915387df',1,'ip_rot_equid_cylind_grid_mod::rlon0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a134acf8ab7f40ff49ce8e03daad900e6',1,'ip_rot_equid_cylind_egrid_mod::rlon0()']]], - ['rlon1_771',['rlon1',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a61650c9ce1a2ce44243bf491e5d93728',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlon1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a3684458139a165cd719b054637a7d121',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#adb673d1f9dbc7d7ee6f87513a2eed723',1,'ip_mercator_grid_mod::ip_mercator_grid::rlon1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ab7e9e396d5eeb63c8079a901c2c8743f',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlon1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a583517b74d3c1c1b354fefe0d6871c4d',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlon1()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa927f5ecca3f2880ad88e60c8d4b8871',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon1()']]], - ['rlon2_772',['rlon2',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a0b9bfef606985f5e682f4ddb84c99d2c',1,'ip_mercator_grid_mod::ip_mercator_grid::rlon2()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3794a22c4866631c6b5bc6a8871e3e44',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlon2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a1e5b9f8ab3de743b5e392478694154ea',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon2()']]], - ['rot_5fequid_5fcylind_5fb_5fgrid_5fid_5fgrib1_773',['rot_equid_cylind_b_grid_id_grib1',['../namespaceip__grid__mod.html#adb7d7d18410aaae52d7eee2e97f04b14',1,'ip_grid_mod']]], - ['rot_5fequid_5fcylind_5fe_5fgrid_5fid_5fgrib1_774',['rot_equid_cylind_e_grid_id_grib1',['../namespaceip__grid__mod.html#a4e11ce780c3d165c282684188890af1c',1,'ip_grid_mod']]], - ['rot_5fequid_5fcylind_5fgrid_5fid_5fgrib2_775',['rot_equid_cylind_grid_id_grib2',['../namespaceip__grid__mod.html#adc7c650c524eb6425e77b2e0eac0979a',1,'ip_grid_mod']]] + ['rerth_769',['rerth',['../namespaceip__gaussian__grid__mod.html#a8213e02ccf4325ad5db14f2e48990da2',1,'ip_gaussian_grid_mod::rerth()'],['../namespaceip__equid__cylind__grid__mod.html#ab5b84516fab9cee3316c07450f49746c',1,'ip_equid_cylind_grid_mod::rerth()'],['../namespaceip__lambert__conf__grid__mod.html#a9f0538d092cd7d2829a5b98247eb560d',1,'ip_lambert_conf_grid_mod::rerth()'],['../namespaceip__mercator__grid__mod.html#adaa27c5d41ee24185b6d020420ce9419',1,'ip_mercator_grid_mod::rerth()'],['../namespaceip__polar__stereo__grid__mod.html#a3315b2efb5cb9aebc0b2cb2773aa20b5',1,'ip_polar_stereo_grid_mod::rerth()'],['../structip__grid__mod_1_1ip__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8',1,'ip_grid_mod::ip_grid::rerth()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#aed7a425f4d300fe14ac1b48d76378edb',1,'ip_rot_equid_cylind_egrid_mod::rerth()'],['../namespaceip__rot__equid__cylind__grid__mod.html#ae08318392106d174ab36cf7dc05c570b',1,'ip_rot_equid_cylind_grid_mod::rerth()']]], + ['rerth_5fwgs84_770',['rerth_wgs84',['../namespaceip__constants__mod.html#ac6a501512f426673f064edbecd7a62fb',1,'ip_constants_mod']]], + ['rlat1_771',['rlat1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a493e017343795e89f794bae5229eb6a7',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlat1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a884837892bf520ea7950f95d8c562a08',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlat1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a00565fd51d334324e9d68d1fc8c52640',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlat1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a1f98e5046c7c1eda30735e5919b79cc7',1,'ip_mercator_grid_mod::ip_mercator_grid::rlat1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a618bb61b83c39dd344264933e51fa932',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlat1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#acdf76c4b3444d0d85dbf9ee09b5f35fc',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlat1()']]], + ['rlat2_772',['rlat2',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#acfd62fa8199f9b57b555364bca920e42',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid']]], + ['rlati_773',['rlati',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3826e3e6b4f3264932c890a3c9804cef',1,'ip_mercator_grid_mod::ip_mercator_grid']]], + ['rlati1_774',['rlati1',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a7dcfaef2adc076604ad32d1ecd1f1cb4',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid']]], + ['rlati2_775',['rlati2',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ae8b2c54b8d00685e179fec7786422f3b',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid']]], + ['rlon0_776',['rlon0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a65579b8557bffeedb99f384048dea14e',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a7b111301b2fc41270869ee182512f13c',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::rlon0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#a620a55069afd33b301240533915387df',1,'ip_rot_equid_cylind_grid_mod::rlon0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a134acf8ab7f40ff49ce8e03daad900e6',1,'ip_rot_equid_cylind_egrid_mod::rlon0()']]], + ['rlon1_777',['rlon1',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a3684458139a165cd719b054637a7d121',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a61650c9ce1a2ce44243bf491e5d93728',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlon1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#adb673d1f9dbc7d7ee6f87513a2eed723',1,'ip_mercator_grid_mod::ip_mercator_grid::rlon1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ab7e9e396d5eeb63c8079a901c2c8743f',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlon1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a583517b74d3c1c1b354fefe0d6871c4d',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlon1()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa927f5ecca3f2880ad88e60c8d4b8871',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon1()']]], + ['rlon2_778',['rlon2',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a0b9bfef606985f5e682f4ddb84c99d2c',1,'ip_mercator_grid_mod::ip_mercator_grid::rlon2()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3794a22c4866631c6b5bc6a8871e3e44',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlon2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a1e5b9f8ab3de743b5e392478694154ea',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon2()']]], + ['rot_5fequid_5fcylind_5fb_5fgrid_5fid_5fgrib1_779',['rot_equid_cylind_b_grid_id_grib1',['../namespaceip__grid__mod.html#adb7d7d18410aaae52d7eee2e97f04b14',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fb_5fgrid_5fid_5fgrib2_780',['rot_equid_cylind_b_grid_id_grib2',['../namespaceip__grid__mod.html#adbda63b51409aaed34a707b222da8c43',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fe_5fgrid_5fid_5fgrib1_781',['rot_equid_cylind_e_grid_id_grib1',['../namespaceip__grid__mod.html#a4e11ce780c3d165c282684188890af1c',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fe_5fgrid_5fid_5fgrib2_782',['rot_equid_cylind_e_grid_id_grib2',['../namespaceip__grid__mod.html#a248f834201bea9295bbe6a99abd038f8',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fgrid_5fid_5fgrib2_783',['rot_equid_cylind_grid_id_grib2',['../namespaceip__grid__mod.html#adc7c650c524eb6425e77b2e0eac0979a',1,'ip_grid_mod']]] ]; diff --git a/sp__mod_8F_source.html b/sp__mod_8F_source.html new file mode 100644 index 00000000..6b8024ea --- /dev/null +++ b/sp__mod_8F_source.html @@ -0,0 +1,162 @@ + + + + + + + +NCEPLIBS-ip: sp_mod.F Source File + + + + + + + + + + + + + +
                    +
                    +
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    + + + + + +
                    +
                    NCEPLIBS-ip +  5.1.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sp_mod.F
                    +
                    +
                    +
                    1  module sp_mod
                    +
                    2 
                    +
                    3  contains
                    +
                    4 
                    +
                    5 #include "fftpack.F"
                    +
                    6 #include "ncpus.F"
                    +
                    7 #include "spanaly.f"
                    +
                    8 #include "spdz2uv.f"
                    +
                    9 #include "speps.f"
                    +
                    10 #include "spfft1.f"
                    +
                    11 #include "spffte.f"
                    +
                    12 #include "spfftpt.f"
                    +
                    13 #include "splaplac.f"
                    +
                    14 #include "splat.F"
                    +
                    15 #include "splegend.f"
                    +
                    16 #include "sppad.f"
                    +
                    17 #include "spsynth.f"
                    +
                    18 #include "sptezd.f"
                    +
                    19 #include "sptez.f"
                    +
                    20 #include "sptezmd.f"
                    +
                    21 #include "sptezm.f"
                    +
                    22 #include "sptezmv.f"
                    +
                    23 #include "sptezv.f"
                    +
                    24 #include "sptgpm.f"
                    +
                    25 #include "sptgpmv.f"
                    +
                    26 #include "sptgps.f"
                    +
                    27 #include "sptgpsv.f"
                    +
                    28 #include "sptgpt.f"
                    +
                    29 #include "sptgptv.f"
                    +
                    30 #include "sptrand.f"
                    +
                    31 #include "sptran.f"
                    +
                    32 #include "sptranf0.f"
                    +
                    33 #include "sptranf1.f"
                    +
                    34 #include "sptranf.f"
                    +
                    35 #include "sptranfv.f"
                    +
                    36 #include "sptranv.f"
                    +
                    37 #include "sptrun.f"
                    +
                    38 #include "sptrung.f"
                    +
                    39 #include "sptrungv.f"
                    +
                    40 #include "sptrunm.f"
                    +
                    41 #include "sptrunmv.f"
                    +
                    42 #include "sptruns.f"
                    +
                    43 #include "sptrunsv.f"
                    +
                    44 #include "sptrunv.f"
                    +
                    45 #include "spuv2dz.f"
                    +
                    46 #include "spwget.f"
                    +
                    47 
                    +
                    48 #ifdef BUILD_DEPRECATED
                    +
                    49 #include "spfft.f"
                    +
                    50 #include "spgradq.f"
                    +
                    51 #include "spgradx.f"
                    +
                    52 #include "spgrady.f"
                    +
                    53 #include "sptgpmd.f"
                    +
                    54 #include "sptgpsd.f"
                    +
                    55 #include "sptgptd.f"
                    +
                    56 #include "sptgptsd.f"
                    +
                    57 #include "sptgptvd.f"
                    +
                    58 #include "sptrund.f"
                    +
                    59 #include "sptrunl.f"
                    +
                    60 #include "spvar.f"
                    +
                    61 #endif
                    +
                    62 
                    +
                    63  end module
                    +
                    +
                    + + + + diff --git a/spanaly_8f.html b/spanaly_8f.html index f6447775..f3db851f 100644 --- a/spanaly_8f.html +++ b/spanaly_8f.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    @@ -102,7 +102,7 @@

                    Detailed Description

                    Analyze spectral from Fourier.

                    -

                    +

                    Program History Log

                    diff --git a/spanaly_8f_source.html b/spanaly_8f_source.html index 1d29aacf..f651984d 100644 --- a/spanaly_8f_source.html +++ b/spanaly_8f_source.html @@ -26,7 +26,7 @@ diff --git a/spdz2uv_8f.html b/spdz2uv_8f.html index 99193ab3..45148686 100644 --- a/spdz2uv_8f.html +++ b/spdz2uv_8f.html @@ -26,7 +26,7 @@ diff --git a/spdz2uv_8f_source.html b/spdz2uv_8f_source.html index 1a510e8c..2150369b 100644 --- a/spdz2uv_8f_source.html +++ b/spdz2uv_8f_source.html @@ -26,7 +26,7 @@ diff --git a/spectral__interp__mod_8F90.html b/spectral__interp__mod_8F90.html index 22f0ee15..7936949e 100644 --- a/spectral__interp__mod_8F90.html +++ b/spectral__interp__mod_8F90.html @@ -26,7 +26,7 @@ diff --git a/spectral__interp__mod_8F90_source.html b/spectral__interp__mod_8F90_source.html index fe196f10..0f451c14 100644 --- a/spectral__interp__mod_8F90_source.html +++ b/spectral__interp__mod_8F90_source.html @@ -26,7 +26,7 @@ @@ -94,1038 +94,1039 @@ -
                    14  implicit none
                    -
                    15 
                    -
                    16  private
                    -
                    17  public :: interpolate_spectral
                    -
                    18 
                    - -
                    20  module procedure interpolate_spectral_scalar
                    -
                    21  module procedure interpolate_spectral_vector
                    -
                    22  end interface interpolate_spectral
                    -
                    23 
                    -
                    24  interface polates4
                    -
                    25  module procedure polates4_grib1
                    -
                    26  module procedure polates4_grib2
                    -
                    27  end interface polates4
                    -
                    28 
                    -
                    29  interface polatev4
                    -
                    30  module procedure polatev4_grib1
                    -
                    31  module procedure polatev4_grib2
                    -
                    32  end interface polatev4
                    -
                    33 
                    -
                    34 contains
                    -
                    35 
                    -
                    60  subroutine interpolate_spectral_scalar(IPOPT,grid_in,grid_out, &
                    -
                    61  MI,MO,KM,IBI,GI, &
                    -
                    62  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    -
                    63  INTEGER, INTENT(IN ) :: IPOPT(20)
                    -
                    64  class(ip_grid), intent(in) :: grid_in, grid_out
                    -
                    65  INTEGER, INTENT(IN ) :: MI, MO
                    -
                    66  INTEGER, INTENT(IN ) :: IBI(KM), KM
                    -
                    67  INTEGER, INTENT( OUT) :: IBO(KM), IRET, NO
                    -
                    68  !
                    -
                    69  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    -
                    70  !
                    -
                    71  REAL, INTENT(IN ) :: GI(MI,KM)
                    -
                    72  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    -
                    73  REAL, INTENT( OUT) :: GO(MO,KM)
                    -
                    74 
                    +
                    14  use sp_mod
                    +
                    15  implicit none
                    +
                    16 
                    +
                    17  private
                    +
                    18  public :: interpolate_spectral
                    +
                    19 
                    + +
                    21  module procedure interpolate_spectral_scalar
                    +
                    22  module procedure interpolate_spectral_vector
                    +
                    23  end interface interpolate_spectral
                    +
                    24 
                    +
                    25  interface polates4
                    +
                    26  module procedure polates4_grib1
                    +
                    27  module procedure polates4_grib2
                    +
                    28  end interface polates4
                    +
                    29 
                    +
                    30  interface polatev4
                    +
                    31  module procedure polatev4_grib1
                    +
                    32  module procedure polatev4_grib2
                    +
                    33  end interface polatev4
                    +
                    34 
                    +
                    35 contains
                    +
                    36 
                    +
                    61  subroutine interpolate_spectral_scalar(IPOPT,grid_in,grid_out, &
                    +
                    62  MI,MO,KM,IBI,GI, &
                    +
                    63  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    64  INTEGER, INTENT(IN ) :: IPOPT(20)
                    +
                    65  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    66  INTEGER, INTENT(IN ) :: MI, MO
                    +
                    67  INTEGER, INTENT(IN ) :: IBI(KM), KM
                    +
                    68  INTEGER, INTENT( OUT) :: IBO(KM), IRET, NO
                    +
                    69  !
                    +
                    70  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    71  !
                    +
                    72  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    73  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    74  REAL, INTENT( OUT) :: GO(MO,KM)
                    75 
                    -
                    76  select type(desc_in => grid_in%descriptor)
                    -
                    77  type is(grib1_descriptor)
                    -
                    78  select type(desc_out => grid_out%descriptor)
                    -
                    79  type is(grib1_descriptor)
                    -
                    80  CALL polates4(ipopt,desc_in%gds,desc_out%gds,mi,mo,km,ibi,gi,no,rlat,rlon,ibo,lo,go,iret)
                    -
                    81  end select
                    -
                    82 
                    -
                    83  type is(grib2_descriptor)
                    -
                    84  select type(desc_out => grid_out%descriptor)
                    -
                    85  type is(grib2_descriptor)
                    -
                    86  CALL polates4(ipopt,desc_in%gdt_num,desc_in%gdt_tmpl,desc_in%gdt_len, &
                    -
                    87  desc_out%gdt_num,desc_out%gdt_tmpl,desc_out%gdt_len, &
                    -
                    88  mi,mo,km,ibi,gi,no,rlat,rlon,ibo,lo,go,iret)
                    -
                    89  end select
                    -
                    90  end select
                    -
                    91  end subroutine interpolate_spectral_scalar
                    -
                    92 
                    -
                    121  subroutine interpolate_spectral_vector(IPOPT,grid_in,grid_out, &
                    -
                    122  MI,MO,KM,IBI,UI,VI, &
                    -
                    123  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    -
                    124  class(ip_grid), intent(in) :: grid_in, grid_out
                    -
                    125  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    -
                    126  INTEGER, INTENT(IN ) :: KM, MI, MO
                    -
                    127  INTEGER, INTENT( OUT) :: IRET, IBO(KM), NO
                    -
                    128  !
                    -
                    129  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    -
                    130  !
                    -
                    131  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    -
                    132  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    -
                    133  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    -
                    134  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    -
                    135 
                    +
                    76 
                    +
                    77  select type(desc_in => grid_in%descriptor)
                    +
                    78  type is(grib1_descriptor)
                    +
                    79  select type(desc_out => grid_out%descriptor)
                    +
                    80  type is(grib1_descriptor)
                    +
                    81  CALL polates4(ipopt,desc_in%gds,desc_out%gds,mi,mo,km,ibi,gi,no,rlat,rlon,ibo,lo,go,iret)
                    +
                    82  end select
                    +
                    83 
                    +
                    84  type is(grib2_descriptor)
                    +
                    85  select type(desc_out => grid_out%descriptor)
                    +
                    86  type is(grib2_descriptor)
                    +
                    87  CALL polates4(ipopt,desc_in%gdt_num,desc_in%gdt_tmpl,desc_in%gdt_len, &
                    +
                    88  desc_out%gdt_num,desc_out%gdt_tmpl,desc_out%gdt_len, &
                    +
                    89  mi,mo,km,ibi,gi,no,rlat,rlon,ibo,lo,go,iret)
                    +
                    90  end select
                    +
                    91  end select
                    +
                    92  end subroutine interpolate_spectral_scalar
                    +
                    93 
                    +
                    122  subroutine interpolate_spectral_vector(IPOPT,grid_in,grid_out, &
                    +
                    123  MI,MO,KM,IBI,UI,VI, &
                    +
                    124  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    125  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    126  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    +
                    127  INTEGER, INTENT(IN ) :: KM, MI, MO
                    +
                    128  INTEGER, INTENT( OUT) :: IRET, IBO(KM), NO
                    +
                    129  !
                    +
                    130  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    131  !
                    +
                    132  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    133  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    134  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    135  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    136 
                    -
                    137  select type(desc_in => grid_in%descriptor)
                    -
                    138  type is(grib1_descriptor)
                    -
                    139  select type(desc_out => grid_out%descriptor)
                    -
                    140  type is(grib1_descriptor)
                    -
                    141  CALL polatev4_grib1(ipopt,desc_in%gds,desc_out%gds,mi,mo,km,ibi,ui,vi,&
                    -
                    142  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    -
                    143  end select
                    -
                    144 
                    -
                    145  type is(grib2_descriptor)
                    -
                    146  select type(desc_out => grid_out%descriptor)
                    -
                    147  type is(grib2_descriptor)
                    -
                    148  CALL polatev4(ipopt,desc_in%gdt_num,desc_in%gdt_tmpl,desc_in%gdt_len, &
                    -
                    149  desc_out%gdt_num,desc_out%gdt_tmpl,desc_out%gdt_len, &
                    -
                    150  mi,mo,km,ibi,ui,vi,&
                    -
                    151  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    -
                    152  end select
                    -
                    153  end select
                    -
                    154 
                    +
                    137 
                    +
                    138  select type(desc_in => grid_in%descriptor)
                    +
                    139  type is(grib1_descriptor)
                    +
                    140  select type(desc_out => grid_out%descriptor)
                    +
                    141  type is(grib1_descriptor)
                    +
                    142  CALL polatev4_grib1(ipopt,desc_in%gds,desc_out%gds,mi,mo,km,ibi,ui,vi,&
                    +
                    143  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    144  end select
                    +
                    145 
                    +
                    146  type is(grib2_descriptor)
                    +
                    147  select type(desc_out => grid_out%descriptor)
                    +
                    148  type is(grib2_descriptor)
                    +
                    149  CALL polatev4(ipopt,desc_in%gdt_num,desc_in%gdt_tmpl,desc_in%gdt_len, &
                    +
                    150  desc_out%gdt_num,desc_out%gdt_tmpl,desc_out%gdt_len, &
                    +
                    151  mi,mo,km,ibi,ui,vi,&
                    +
                    152  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    153  end select
                    +
                    154  end select
                    155 
                    -
                    156  end subroutine interpolate_spectral_vector
                    -
                    157 ! @author Mark Iredell @date 96-04-10
                    -
                    254  SUBROUTINE polates4_grib2(IPOPT,IGDTNUMI,IGDTMPLI,IGDTLENI, &
                    -
                    255  IGDTNUMO,IGDTMPLO,IGDTLENO, &
                    -
                    256  MI,MO,KM,IBI,GI, &
                    -
                    257  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    -
                    258  INTEGER, INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    -
                    259  INTEGER, INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    -
                    260  INTEGER, INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    -
                    261  INTEGER, INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    -
                    262  INTEGER, INTENT(IN ) :: IPOPT(20)
                    -
                    263  INTEGER, INTENT(IN ) :: MI, MO
                    -
                    264  INTEGER, INTENT(IN ) :: IBI(KM), KM
                    -
                    265  INTEGER, INTENT( OUT) :: IBO(KM), IRET, NO
                    -
                    266  !
                    -
                    267  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    -
                    268  !
                    -
                    269  REAL, INTENT(IN ) :: GI(MI,KM)
                    -
                    270  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    -
                    271  REAL, INTENT( OUT) :: GO(MO,KM)
                    -
                    272  !
                    -
                    273  REAL, PARAMETER :: FILL=-9999.
                    -
                    274  REAL, PARAMETER :: PI=3.14159265358979
                    -
                    275  REAL, PARAMETER :: DPR=180./pi
                    -
                    276  !
                    -
                    277  INTEGER :: IDRTI, IDRTO, IG, JG, IM, JM
                    -
                    278  INTEGER :: IGO, JGO, IMO, JMO
                    -
                    279  INTEGER :: ISCAN, JSCAN, NSCAN
                    -
                    280  INTEGER :: ISCANO, JSCANO, NSCANO
                    -
                    281  INTEGER :: ISKIPI, JSKIPI, ISCALE
                    -
                    282  INTEGER :: IMAXI, JMAXI, ISPEC
                    -
                    283  INTEGER :: IP, IPRIME, IPROJ, IROMB, K
                    -
                    284  INTEGER :: MAXWV, N, NI, NJ, NPS
                    -
                    285  !
                    -
                    286  REAL :: DE, DR, DY
                    -
                    287  REAL :: DLAT, DLON, DLATO, DLONO
                    -
                    288  REAL :: GO2(MO,KM), H, HI, HJ
                    -
                    289  REAL :: ORIENT, SLAT, RERTH, E2
                    -
                    290  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    -
                    291  REAL :: XMESH, XP, YP
                    -
                    292  REAL :: XPTS(MO), YPTS(MO)
                    -
                    293 
                    -
                    294  type(grib2_descriptor) :: desc_in, desc_out
                    -
                    295  class(ip_grid), allocatable :: grid_in, grid_out
                    -
                    296 
                    -
                    297  desc_in = init_descriptor(igdtnumi, igdtleni, igdtmpli)
                    -
                    298  desc_out = init_descriptor(igdtnumo, igdtleno, igdtmplo)
                    -
                    299 
                    -
                    300  call init_grid(grid_in, desc_in)
                    -
                    301  call init_grid(grid_out, desc_out)
                    -
                    302  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    303  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    -
                    304  iret=0
                    -
                    305  IF(igdtnumo.GE.0) THEN
                    -
                    306  !CALL GDSWZD(IGDTNUMO,IGDTMPLO,IGDTLENO, 0,MO,FILL,XPTS,YPTS,RLON,RLAT,NO)
                    -
                    307  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    -
                    308  IF(no.EQ.0) iret=3
                    -
                    309  ENDIF
                    -
                    310  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    311  ! AFFIRM APPROPRIATE INPUT GRID
                    -
                    312  ! LAT/LON OR GAUSSIAN
                    -
                    313  ! NO BITMAPS
                    -
                    314  ! FULL ZONAL COVERAGE
                    -
                    315  ! FULL MERIDIONAL COVERAGE
                    -
                    316  idrti=igdtnumi
                    -
                    317  IF(idrti==40) idrti=4
                    -
                    318  IF(idrti==0.OR.idrti==4)THEN
                    -
                    319  im=igdtmpli(8)
                    -
                    320  jm=igdtmpli(9)
                    -
                    321  iscale=igdtmpli(10)*igdtmpli(11)
                    -
                    322  IF(iscale==0) iscale=10**6
                    -
                    323  rlon1=float(igdtmpli(13))/float(iscale)
                    -
                    324  rlon2=float(igdtmpli(16))/float(iscale)
                    -
                    325  iscan=mod(igdtmpli(19)/128,2)
                    -
                    326  jscan=mod(igdtmpli(19)/64,2)
                    -
                    327  nscan=mod(igdtmpli(19)/32,2)
                    -
                    328  ELSE
                    -
                    329  iret=41
                    -
                    330  ENDIF
                    -
                    331  DO k=1,km
                    -
                    332  IF(ibi(k).NE.0) iret=41
                    -
                    333  ENDDO
                    -
                    334  IF(iret.EQ.0) THEN
                    -
                    335  IF(iscan.EQ.0) THEN
                    -
                    336  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    -
                    337  ELSE
                    -
                    338  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    -
                    339  ENDIF
                    -
                    340  ig=nint(360/abs(dlon))
                    -
                    341  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    -
                    342  imaxi=ig
                    -
                    343  jmaxi=jm
                    -
                    344  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    -
                    345  ENDIF
                    -
                    346  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    -
                    347  iscale=igdtmpli(10)*igdtmpli(11)
                    -
                    348  IF(iscale==0) iscale=10**6
                    -
                    349  rlat1=float(igdtmpli(12))/float(iscale)
                    -
                    350  rlat2=float(igdtmpli(15))/float(iscale)
                    -
                    351  dlat=(rlat2-rlat1)/(jm-1)
                    -
                    352  jg=nint(180/abs(dlat))
                    -
                    353  IF(jm.EQ.jg) idrti=256
                    -
                    354  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    -
                    355  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    -
                    356  jg=igdtmpli(18)*2
                    -
                    357  IF(jm.NE.jg) iret=41
                    -
                    358  ENDIF
                    -
                    359  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    360  ! SET PARAMETERS
                    -
                    361  IF(iret.EQ.0) THEN
                    -
                    362  iromb=ipopt(1)
                    -
                    363  maxwv=ipopt(2)
                    -
                    364  IF(maxwv.EQ.-1) THEN
                    -
                    365  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    -
                    366  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    -
                    367  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    -
                    368  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    -
                    369  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    -
                    370  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    -
                    371  ENDIF
                    -
                    372  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    -
                    373  ENDIF
                    -
                    374  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    375  ! INTERPOLATE
                    -
                    376  IF(iret.EQ.0) THEN
                    -
                    377  IF(nscan.EQ.0) THEN
                    -
                    378  iskipi=1
                    -
                    379  jskipi=im
                    -
                    380  ELSE
                    -
                    381  iskipi=jm
                    -
                    382  jskipi=1
                    -
                    383  ENDIF
                    -
                    384  IF(iscan.EQ.1) iskipi=-iskipi
                    -
                    385  IF(jscan.EQ.0) jskipi=-jskipi
                    -
                    386  ispec=0
                    -
                    387  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    -
                    388  IF((igdtnumo.EQ.0.OR.igdtnumo.EQ.40).AND. &
                    -
                    389  mod(igdtmplo(8),2).EQ.0.AND.igdtmplo(13).EQ.0.AND.igdtmplo(19).EQ.0) THEN
                    -
                    390  idrto=igdtnumo
                    -
                    391  IF(idrto==40)idrto=4
                    -
                    392  imo=igdtmplo(8)
                    -
                    393  jmo=igdtmplo(9)
                    -
                    394  iscale=igdtmplo(10)*igdtmplo(11)
                    -
                    395  IF(iscale==0) iscale=10**6
                    -
                    396  rlon2=float(igdtmplo(16))/float(iscale)
                    -
                    397  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    -
                    398  igo=nint(360/abs(dlono))
                    -
                    399  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    -
                    400  rlat1=float(igdtmplo(12))/float(iscale)
                    -
                    401  rlat2=float(igdtmplo(15))/float(iscale)
                    -
                    402  dlat=(rlat2-rlat1)/(jmo-1)
                    -
                    403  jgo=nint(180/abs(dlat))
                    -
                    404  IF(jmo.EQ.jgo) idrto=256
                    -
                    405  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    -
                    406  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    -
                    407  jgo=igdtmplo(18)*2
                    -
                    408  IF(jmo.EQ.jgo) ispec=1
                    -
                    409  ENDIF
                    -
                    410  IF(ispec.EQ.1) THEN
                    -
                    411  CALL sptrun(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    -
                    412  km,iprime,iskipi,jskipi,mi,0,0,mo,0,gi,go)
                    -
                    413  ENDIF
                    -
                    414  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    -
                    415  ELSEIF(igdtnumo.EQ.20.AND. &
                    -
                    416  igdtmplo(8).EQ.igdtmplo(9).AND.mod(igdtmplo(8),2).EQ.1.AND. &
                    -
                    417  igdtmplo(15).EQ.igdtmplo(16).AND.igdtmplo(18).EQ.64) THEN
                    -
                    418  nps=igdtmplo(8)
                    -
                    419  rlat1=float(igdtmplo(10))*1.e-6
                    -
                    420  rlon1=float(igdtmplo(11))*1.e-6
                    -
                    421  orient=float(igdtmplo(14))*1.e-6
                    -
                    422  xmesh=float(igdtmplo(15))*1.e-3
                    -
                    423  iproj=mod(igdtmplo(17)/128,2)
                    -
                    424  ip=(nps+1)/2
                    -
                    425  h=(-1.)**iproj
                    -
                    426  slat=float(abs(igdtmplo(13)))*1.e-6
                    -
                    427  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    -
                    428  de=(1.+sin(slat/dpr))*rerth
                    -
                    429  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    -
                    430  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    -
                    431  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    -
                    432  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    -
                    433  IF(iproj.EQ.0) THEN
                    -
                    434  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    -
                    435  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    436  slat,xmesh,orient,gi,go,go2)
                    -
                    437  ELSE
                    -
                    438  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    -
                    439  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    440  slat,xmesh,orient,gi,go2,go)
                    -
                    441  ENDIF
                    -
                    442  ispec=1
                    -
                    443  ENDIF
                    -
                    444  ! SPECIAL CASE OF MERCATOR GRID
                    -
                    445  ELSEIF(igdtnumo.EQ.10) THEN
                    -
                    446  ni=igdtmplo(8)
                    -
                    447  nj=igdtmplo(9)
                    -
                    448  rlat1=float(igdtmplo(10))*1.0e-6
                    -
                    449  rlon1=float(igdtmplo(11))*1.0e-6
                    -
                    450  rlon2=float(igdtmplo(15))*1.0e-6
                    -
                    451  rlati=float(igdtmplo(13))*1.0e-6
                    -
                    452  iscano=mod(igdtmplo(16)/128,2)
                    -
                    453  jscano=mod(igdtmplo(16)/64,2)
                    -
                    454  nscano=mod(igdtmplo(16)/32,2)
                    -
                    455  dy=float(igdtmplo(19))*1.0e-3
                    -
                    456  hi=(-1.)**iscano
                    -
                    457  hj=(-1.)**(1-jscano)
                    -
                    458  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    -
                    459  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    -
                    460  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    -
                    461  IF(nscano.EQ.0) THEN
                    -
                    462  CALL sptrunm(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    -
                    463  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    464  rlat1,rlon1,dlato,dlono,gi,go)
                    -
                    465  ispec=1
                    -
                    466  ENDIF
                    -
                    467  ENDIF
                    -
                    468  ! GENERAL SLOW CASE
                    -
                    469  IF(ispec.EQ.0) THEN
                    -
                    470  CALL sptrung(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    -
                    471  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon,gi,go)
                    -
                    472  ENDIF
                    -
                    473  DO k=1,km
                    -
                    474  ibo(k)=0
                    -
                    475  DO n=1,no
                    -
                    476  lo(n,k)=.true.
                    -
                    477  ENDDO
                    -
                    478  ENDDO
                    -
                    479  ELSE
                    -
                    480  DO k=1,km
                    -
                    481  ibo(k)=1
                    -
                    482  DO n=1,no
                    -
                    483  lo(n,k)=.false.
                    -
                    484  go(n,k)=0.
                    -
                    485  ENDDO
                    -
                    486  ENDDO
                    -
                    487  ENDIF
                    -
                    488  END SUBROUTINE polates4_grib2
                    -
                    489 
                    -
                    559  suBROUTINE polates4_grib1(IPOPT,KGDSI,KGDSO,MI,MO,KM,IBI,GI, &
                    -
                    560  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    -
                    561  INTEGER, INTENT(IN ) :: IPOPT(20), KGDSI(200)
                    -
                    562  INTEGER, INTENT(IN ) :: KGDSO(200), MI, MO
                    -
                    563  INTEGER, INTENT(IN ) :: IBI(KM), KM
                    -
                    564  INTEGER, INTENT( OUT) :: IBO(KM), IRET
                    -
                    565  !
                    -
                    566  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    -
                    567  !
                    -
                    568  REAL, INTENT(IN ) :: GI(MI,KM)
                    -
                    569  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    -
                    570  REAL, INTENT( OUT) :: GO(MO,KM)
                    -
                    571  !
                    -
                    572  REAL, PARAMETER :: FILL=-9999.
                    -
                    573  REAL, PARAMETER :: RERTH=6.3712e6
                    -
                    574  REAL, PARAMETER :: PI=3.14159265358979
                    -
                    575  REAL, PARAMETER :: DPR=180./pi
                    -
                    576  !
                    -
                    577  INTEGER :: IDRTI, IDRTO, IG, JG, IM, JM
                    -
                    578  INTEGER :: IGO, JGO, IMO, JMO
                    -
                    579  INTEGER :: ISCAN, JSCAN, NSCAN
                    -
                    580  INTEGER :: ISCANO, JSCANO, NSCANO
                    -
                    581  INTEGER :: ISKIPI, JSKIPI
                    -
                    582  INTEGER :: IMAXI, JMAXI, ISPEC
                    -
                    583  INTEGER :: IP, IPRIME, IPROJ, IROMB, K
                    -
                    584  INTEGER :: MAXWV, N, NI, NJ, NPS, NO
                    -
                    585  !
                    -
                    586  REAL :: DE, DR, DY
                    -
                    587  REAL :: DLAT, DLON, DLATO, DLONO
                    -
                    588  REAL :: GO2(MO,KM), H, HI, HJ
                    -
                    589  REAL :: ORIENT
                    -
                    590  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    -
                    591  REAL :: XMESH, XP, YP
                    -
                    592  REAL :: XPTS(MO), YPTS(MO)
                    -
                    593 
                    -
                    594  type(grib1_descriptor) :: desc_in, desc_out
                    -
                    595  class(ip_grid), allocatable :: grid_in, grid_out
                    -
                    596 
                    -
                    597  desc_in = init_descriptor(kgdsi)
                    -
                    598  desc_out = init_descriptor(kgdso)
                    -
                    599 
                    -
                    600  call init_grid(grid_in, desc_in)
                    -
                    601  call init_grid(grid_out, desc_out)
                    -
                    602 
                    -
                    603  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    604  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    -
                    605  iret=0
                    -
                    606  IF(kgdso(1).GE.0) THEN
                    -
                    607  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    -
                    608  IF(no.EQ.0) iret=3
                    -
                    609  ENDIF
                    -
                    610  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    611  ! AFFIRM APPROPRIATE INPUT GRID
                    -
                    612  ! LAT/LON OR GAUSSIAN
                    -
                    613  ! NO BITMAPS
                    -
                    614  ! FULL ZONAL COVERAGE
                    -
                    615  ! FULL MERIDIONAL COVERAGE
                    -
                    616  idrti=kgdsi(1)
                    -
                    617  im=kgdsi(2)
                    -
                    618  jm=kgdsi(3)
                    -
                    619  rlon1=kgdsi(5)*1.e-3
                    -
                    620  rlon2=kgdsi(8)*1.e-3
                    -
                    621  iscan=mod(kgdsi(11)/128,2)
                    -
                    622  jscan=mod(kgdsi(11)/64,2)
                    -
                    623  nscan=mod(kgdsi(11)/32,2)
                    -
                    624  IF(idrti.NE.0.AND.idrti.NE.4) iret=41
                    -
                    625  DO k=1,km
                    -
                    626  IF(ibi(k).NE.0) iret=41
                    -
                    627  ENDDO
                    -
                    628  IF(iret.EQ.0) THEN
                    -
                    629  IF(iscan.EQ.0) THEN
                    -
                    630  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    -
                    631  ELSE
                    -
                    632  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    -
                    633  ENDIF
                    -
                    634  ig=nint(360/abs(dlon))
                    -
                    635  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    -
                    636  imaxi=ig
                    -
                    637  jmaxi=jm
                    -
                    638  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    -
                    639  ENDIF
                    -
                    640  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    -
                    641  rlat1=kgdsi(4)*1.e-3
                    -
                    642  rlat2=kgdsi(7)*1.e-3
                    -
                    643  dlat=(rlat2-rlat1)/(jm-1)
                    -
                    644  jg=nint(180/abs(dlat))
                    -
                    645  IF(jm.EQ.jg) idrti=256
                    -
                    646  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    -
                    647  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    -
                    648  jg=kgdsi(10)*2
                    -
                    649  IF(jm.NE.jg) iret=41
                    -
                    650  ENDIF
                    -
                    651  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    652  ! SET PARAMETERS
                    -
                    653  IF(iret.EQ.0) THEN
                    -
                    654  iromb=ipopt(1)
                    -
                    655  maxwv=ipopt(2)
                    -
                    656  IF(maxwv.EQ.-1) THEN
                    -
                    657  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    -
                    658  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    -
                    659  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    -
                    660  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    -
                    661  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    -
                    662  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    -
                    663  ENDIF
                    -
                    664  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    -
                    665  ENDIF
                    -
                    666  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    667  ! INTERPOLATE
                    -
                    668  IF(iret.EQ.0) THEN
                    -
                    669  IF(nscan.EQ.0) THEN
                    -
                    670  iskipi=1
                    -
                    671  jskipi=im
                    -
                    672  ELSE
                    -
                    673  iskipi=jm
                    -
                    674  jskipi=1
                    -
                    675  ENDIF
                    -
                    676  IF(iscan.EQ.1) iskipi=-iskipi
                    -
                    677  IF(jscan.EQ.0) jskipi=-jskipi
                    -
                    678  ispec=0
                    -
                    679  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    -
                    680  IF((kgdso(1).EQ.0.OR.kgdso(1).EQ.4).AND. &
                    -
                    681  mod(kgdso(2),2).EQ.0.AND.kgdso(5).EQ.0.AND.kgdso(11).EQ.0) THEN
                    -
                    682  idrto=kgdso(1)
                    -
                    683  imo=kgdso(2)
                    -
                    684  jmo=kgdso(3)
                    -
                    685  rlon2=kgdso(8)*1.e-3
                    -
                    686  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    -
                    687  igo=nint(360/abs(dlono))
                    -
                    688  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    -
                    689  rlat1=kgdso(4)*1.e-3
                    -
                    690  rlat2=kgdso(7)*1.e-3
                    -
                    691  dlat=(rlat2-rlat1)/(jmo-1)
                    -
                    692  jgo=nint(180/abs(dlat))
                    -
                    693  IF(jmo.EQ.jgo) idrto=256
                    -
                    694  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    -
                    695  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    -
                    696  jgo=kgdso(10)*2
                    -
                    697  IF(jmo.EQ.jgo) ispec=1
                    -
                    698  ENDIF
                    -
                    699  IF(ispec.EQ.1) THEN
                    -
                    700  CALL sptrun(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    -
                    701  km,iprime,iskipi,jskipi,mi,0,0,mo,0,gi,go)
                    -
                    702  ENDIF
                    -
                    703  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    -
                    704  ELSEIF(kgdso(1).EQ.5.AND. &
                    -
                    705  kgdso(2).EQ.kgdso(3).AND.mod(kgdso(2),2).EQ.1.AND. &
                    -
                    706  kgdso(8).EQ.kgdso(9).AND.kgdso(11).EQ.64) THEN
                    -
                    707  nps=kgdso(2)
                    -
                    708  rlat1=kgdso(4)*1.e-3
                    -
                    709  rlon1=kgdso(5)*1.e-3
                    -
                    710  orient=kgdso(7)*1.e-3
                    -
                    711  xmesh=kgdso(8)
                    -
                    712  iproj=mod(kgdso(10)/128,2)
                    -
                    713  ip=(nps+1)/2
                    -
                    714  h=(-1.)**iproj
                    -
                    715  de=(1.+sin(60./dpr))*rerth
                    -
                    716  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    -
                    717  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    -
                    718  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    -
                    719  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    -
                    720  IF(iproj.EQ.0) THEN
                    -
                    721  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    -
                    722  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    723  60.,xmesh,orient,gi,go,go2)
                    -
                    724  ELSE
                    -
                    725  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    -
                    726  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    727  60.,xmesh,orient,gi,go2,go)
                    -
                    728  ENDIF
                    -
                    729  ispec=1
                    -
                    730  ENDIF
                    -
                    731  ! SPECIAL CASE OF MERCATOR GRID
                    -
                    732  ELSEIF(kgdso(1).EQ.1) THEN
                    -
                    733  ni=kgdso(2)
                    -
                    734  nj=kgdso(3)
                    -
                    735  rlat1=kgdso(4)*1.e-3
                    -
                    736  rlon1=kgdso(5)*1.e-3
                    -
                    737  rlon2=kgdso(8)*1.e-3
                    -
                    738  rlati=kgdso(9)*1.e-3
                    -
                    739  iscano=mod(kgdso(11)/128,2)
                    -
                    740  jscano=mod(kgdso(11)/64,2)
                    -
                    741  nscano=mod(kgdso(11)/32,2)
                    -
                    742  dy=kgdso(13)
                    -
                    743  hi=(-1.)**iscano
                    -
                    744  hj=(-1.)**(1-jscano)
                    -
                    745  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    -
                    746  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    -
                    747  IF(nscano.EQ.0) THEN
                    -
                    748  CALL sptrunm(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    -
                    749  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    750  rlat1,rlon1,dlato,dlono,gi,go)
                    -
                    751  ispec=1
                    -
                    752  ENDIF
                    -
                    753  ENDIF
                    -
                    754  ! GENERAL SLOW CASE
                    -
                    755  IF(ispec.EQ.0) THEN
                    -
                    756  CALL sptrung(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    -
                    757  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon,gi,go)
                    -
                    758  ENDIF
                    -
                    759  DO k=1,km
                    -
                    760  ibo(k)=0
                    -
                    761  DO n=1,no
                    -
                    762  lo(n,k)=.true.
                    -
                    763  ENDDO
                    -
                    764  ENDDO
                    -
                    765  ELSE
                    -
                    766  DO k=1,km
                    -
                    767  ibo(k)=1
                    -
                    768  DO n=1,no
                    -
                    769  lo(n,k)=.false.
                    -
                    770  go(n,k)=0.
                    -
                    771  ENDDO
                    -
                    772  ENDDO
                    -
                    773  ENDIF
                    -
                    774  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    775  END SUBROUTINE polates4_grib1
                    -
                    776 
                    +
                    156 
                    +
                    157  end subroutine interpolate_spectral_vector
                    +
                    158 ! @author Mark Iredell @date 96-04-10
                    +
                    255  SUBROUTINE polates4_grib2(IPOPT,IGDTNUMI,IGDTMPLI,IGDTLENI, &
                    +
                    256  IGDTNUMO,IGDTMPLO,IGDTLENO, &
                    +
                    257  MI,MO,KM,IBI,GI, &
                    +
                    258  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    259  INTEGER, INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    260  INTEGER, INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    261  INTEGER, INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    262  INTEGER, INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    263  INTEGER, INTENT(IN ) :: IPOPT(20)
                    +
                    264  INTEGER, INTENT(IN ) :: MI, MO
                    +
                    265  INTEGER, INTENT(IN ) :: IBI(KM), KM
                    +
                    266  INTEGER, INTENT( OUT) :: IBO(KM), IRET, NO
                    +
                    267  !
                    +
                    268  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    269  !
                    +
                    270  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    271  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    272  REAL, INTENT( OUT) :: GO(MO,KM)
                    +
                    273  !
                    +
                    274  REAL, PARAMETER :: FILL=-9999.
                    +
                    275  REAL, PARAMETER :: PI=3.14159265358979
                    +
                    276  REAL, PARAMETER :: DPR=180./pi
                    +
                    277  !
                    +
                    278  INTEGER :: IDRTI, IDRTO, IG, JG, IM, JM
                    +
                    279  INTEGER :: IGO, JGO, IMO, JMO
                    +
                    280  INTEGER :: ISCAN, JSCAN, NSCAN
                    +
                    281  INTEGER :: ISCANO, JSCANO, NSCANO
                    +
                    282  INTEGER :: ISKIPI, JSKIPI, ISCALE
                    +
                    283  INTEGER :: IMAXI, JMAXI, ISPEC
                    +
                    284  INTEGER :: IP, IPRIME, IPROJ, IROMB, K
                    +
                    285  INTEGER :: MAXWV, N, NI, NJ, NPS
                    +
                    286  !
                    +
                    287  REAL :: DE, DR, DY
                    +
                    288  REAL :: DLAT, DLON, DLATO, DLONO
                    +
                    289  REAL :: GO2(MO,KM), H, HI, HJ
                    +
                    290  REAL :: ORIENT, SLAT, RERTH, E2
                    +
                    291  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    +
                    292  REAL :: XMESH, XP, YP
                    +
                    293  REAL :: XPTS(MO), YPTS(MO)
                    +
                    294 
                    +
                    295  type(grib2_descriptor) :: desc_in, desc_out
                    +
                    296  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    297 
                    +
                    298  desc_in = init_descriptor(igdtnumi, igdtleni, igdtmpli)
                    +
                    299  desc_out = init_descriptor(igdtnumo, igdtleno, igdtmplo)
                    +
                    300 
                    +
                    301  call init_grid(grid_in, desc_in)
                    +
                    302  call init_grid(grid_out, desc_out)
                    +
                    303  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    304  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    305  iret=0
                    +
                    306  IF(igdtnumo.GE.0) THEN
                    +
                    307  !CALL GDSWZD(IGDTNUMO,IGDTMPLO,IGDTLENO, 0,MO,FILL,XPTS,YPTS,RLON,RLAT,NO)
                    +
                    308  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    309  IF(no.EQ.0) iret=3
                    +
                    310  ENDIF
                    +
                    311  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    312  ! AFFIRM APPROPRIATE INPUT GRID
                    +
                    313  ! LAT/LON OR GAUSSIAN
                    +
                    314  ! NO BITMAPS
                    +
                    315  ! FULL ZONAL COVERAGE
                    +
                    316  ! FULL MERIDIONAL COVERAGE
                    +
                    317  idrti=igdtnumi
                    +
                    318  IF(idrti==40) idrti=4
                    +
                    319  IF(idrti==0.OR.idrti==4)THEN
                    +
                    320  im=igdtmpli(8)
                    +
                    321  jm=igdtmpli(9)
                    +
                    322  iscale=igdtmpli(10)*igdtmpli(11)
                    +
                    323  IF(iscale==0) iscale=10**6
                    +
                    324  rlon1=float(igdtmpli(13))/float(iscale)
                    +
                    325  rlon2=float(igdtmpli(16))/float(iscale)
                    +
                    326  iscan=mod(igdtmpli(19)/128,2)
                    +
                    327  jscan=mod(igdtmpli(19)/64,2)
                    +
                    328  nscan=mod(igdtmpli(19)/32,2)
                    +
                    329  ELSE
                    +
                    330  iret=41
                    +
                    331  ENDIF
                    +
                    332  DO k=1,km
                    +
                    333  IF(ibi(k).NE.0) iret=41
                    +
                    334  ENDDO
                    +
                    335  IF(iret.EQ.0) THEN
                    +
                    336  IF(iscan.EQ.0) THEN
                    +
                    337  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    338  ELSE
                    +
                    339  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    340  ENDIF
                    +
                    341  ig=nint(360/abs(dlon))
                    +
                    342  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    +
                    343  imaxi=ig
                    +
                    344  jmaxi=jm
                    +
                    345  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    +
                    346  ENDIF
                    +
                    347  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    +
                    348  iscale=igdtmpli(10)*igdtmpli(11)
                    +
                    349  IF(iscale==0) iscale=10**6
                    +
                    350  rlat1=float(igdtmpli(12))/float(iscale)
                    +
                    351  rlat2=float(igdtmpli(15))/float(iscale)
                    +
                    352  dlat=(rlat2-rlat1)/(jm-1)
                    +
                    353  jg=nint(180/abs(dlat))
                    +
                    354  IF(jm.EQ.jg) idrti=256
                    +
                    355  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    +
                    356  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    +
                    357  jg=igdtmpli(18)*2
                    +
                    358  IF(jm.NE.jg) iret=41
                    +
                    359  ENDIF
                    +
                    360  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    361  ! SET PARAMETERS
                    +
                    362  IF(iret.EQ.0) THEN
                    +
                    363  iromb=ipopt(1)
                    +
                    364  maxwv=ipopt(2)
                    +
                    365  IF(maxwv.EQ.-1) THEN
                    +
                    366  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    +
                    367  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    +
                    368  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    +
                    369  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    +
                    370  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    +
                    371  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    +
                    372  ENDIF
                    +
                    373  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    +
                    374  ENDIF
                    +
                    375  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    376  ! INTERPOLATE
                    +
                    377  IF(iret.EQ.0) THEN
                    +
                    378  IF(nscan.EQ.0) THEN
                    +
                    379  iskipi=1
                    +
                    380  jskipi=im
                    +
                    381  ELSE
                    +
                    382  iskipi=jm
                    +
                    383  jskipi=1
                    +
                    384  ENDIF
                    +
                    385  IF(iscan.EQ.1) iskipi=-iskipi
                    +
                    386  IF(jscan.EQ.0) jskipi=-jskipi
                    +
                    387  ispec=0
                    +
                    388  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    +
                    389  IF((igdtnumo.EQ.0.OR.igdtnumo.EQ.40).AND. &
                    +
                    390  mod(igdtmplo(8),2).EQ.0.AND.igdtmplo(13).EQ.0.AND.igdtmplo(19).EQ.0) THEN
                    +
                    391  idrto=igdtnumo
                    +
                    392  IF(idrto==40)idrto=4
                    +
                    393  imo=igdtmplo(8)
                    +
                    394  jmo=igdtmplo(9)
                    +
                    395  iscale=igdtmplo(10)*igdtmplo(11)
                    +
                    396  IF(iscale==0) iscale=10**6
                    +
                    397  rlon2=float(igdtmplo(16))/float(iscale)
                    +
                    398  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    +
                    399  igo=nint(360/abs(dlono))
                    +
                    400  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    +
                    401  rlat1=float(igdtmplo(12))/float(iscale)
                    +
                    402  rlat2=float(igdtmplo(15))/float(iscale)
                    +
                    403  dlat=(rlat2-rlat1)/(jmo-1)
                    +
                    404  jgo=nint(180/abs(dlat))
                    +
                    405  IF(jmo.EQ.jgo) idrto=256
                    +
                    406  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    +
                    407  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    +
                    408  jgo=igdtmplo(18)*2
                    +
                    409  IF(jmo.EQ.jgo) ispec=1
                    +
                    410  ENDIF
                    +
                    411  IF(ispec.EQ.1) THEN
                    +
                    412  CALL sptrun(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    +
                    413  km,iprime,iskipi,jskipi,mi,0,0,mo,0,gi,go)
                    +
                    414  ENDIF
                    +
                    415  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    +
                    416  ELSEIF(igdtnumo.EQ.20.AND. &
                    +
                    417  igdtmplo(8).EQ.igdtmplo(9).AND.mod(igdtmplo(8),2).EQ.1.AND. &
                    +
                    418  igdtmplo(15).EQ.igdtmplo(16).AND.igdtmplo(18).EQ.64) THEN
                    +
                    419  nps=igdtmplo(8)
                    +
                    420  rlat1=float(igdtmplo(10))*1.e-6
                    +
                    421  rlon1=float(igdtmplo(11))*1.e-6
                    +
                    422  orient=float(igdtmplo(14))*1.e-6
                    +
                    423  xmesh=float(igdtmplo(15))*1.e-3
                    +
                    424  iproj=mod(igdtmplo(17)/128,2)
                    +
                    425  ip=(nps+1)/2
                    +
                    426  h=(-1.)**iproj
                    +
                    427  slat=float(abs(igdtmplo(13)))*1.e-6
                    +
                    428  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    +
                    429  de=(1.+sin(slat/dpr))*rerth
                    +
                    430  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    +
                    431  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    +
                    432  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    +
                    433  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    +
                    434  IF(iproj.EQ.0) THEN
                    +
                    435  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    436  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    437  slat,xmesh,orient,gi,go,go2)
                    +
                    438  ELSE
                    +
                    439  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    440  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    441  slat,xmesh,orient,gi,go2,go)
                    +
                    442  ENDIF
                    +
                    443  ispec=1
                    +
                    444  ENDIF
                    +
                    445  ! SPECIAL CASE OF MERCATOR GRID
                    +
                    446  ELSEIF(igdtnumo.EQ.10) THEN
                    +
                    447  ni=igdtmplo(8)
                    +
                    448  nj=igdtmplo(9)
                    +
                    449  rlat1=float(igdtmplo(10))*1.0e-6
                    +
                    450  rlon1=float(igdtmplo(11))*1.0e-6
                    +
                    451  rlon2=float(igdtmplo(15))*1.0e-6
                    +
                    452  rlati=float(igdtmplo(13))*1.0e-6
                    +
                    453  iscano=mod(igdtmplo(16)/128,2)
                    +
                    454  jscano=mod(igdtmplo(16)/64,2)
                    +
                    455  nscano=mod(igdtmplo(16)/32,2)
                    +
                    456  dy=float(igdtmplo(19))*1.0e-3
                    +
                    457  hi=(-1.)**iscano
                    +
                    458  hj=(-1.)**(1-jscano)
                    +
                    459  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    +
                    460  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    +
                    461  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    +
                    462  IF(nscano.EQ.0) THEN
                    +
                    463  CALL sptrunm(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    +
                    464  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    465  rlat1,rlon1,dlato,dlono,gi,go)
                    +
                    466  ispec=1
                    +
                    467  ENDIF
                    +
                    468  ENDIF
                    +
                    469  ! GENERAL SLOW CASE
                    +
                    470  IF(ispec.EQ.0) THEN
                    +
                    471  CALL sptrung(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    +
                    472  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon,gi,go)
                    +
                    473  ENDIF
                    +
                    474  DO k=1,km
                    +
                    475  ibo(k)=0
                    +
                    476  DO n=1,no
                    +
                    477  lo(n,k)=.true.
                    +
                    478  ENDDO
                    +
                    479  ENDDO
                    +
                    480  ELSE
                    +
                    481  DO k=1,km
                    +
                    482  ibo(k)=1
                    +
                    483  DO n=1,no
                    +
                    484  lo(n,k)=.false.
                    +
                    485  go(n,k)=0.
                    +
                    486  ENDDO
                    +
                    487  ENDDO
                    +
                    488  ENDIF
                    +
                    489  END SUBROUTINE polates4_grib2
                    +
                    490 
                    +
                    560  suBROUTINE polates4_grib1(IPOPT,KGDSI,KGDSO,MI,MO,KM,IBI,GI, &
                    +
                    561  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    562  INTEGER, INTENT(IN ) :: IPOPT(20), KGDSI(200)
                    +
                    563  INTEGER, INTENT(IN ) :: KGDSO(200), MI, MO
                    +
                    564  INTEGER, INTENT(IN ) :: IBI(KM), KM
                    +
                    565  INTEGER, INTENT( OUT) :: IBO(KM), IRET
                    +
                    566  !
                    +
                    567  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    568  !
                    +
                    569  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    570  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    571  REAL, INTENT( OUT) :: GO(MO,KM)
                    +
                    572  !
                    +
                    573  REAL, PARAMETER :: FILL=-9999.
                    +
                    574  REAL, PARAMETER :: RERTH=6.3712e6
                    +
                    575  REAL, PARAMETER :: PI=3.14159265358979
                    +
                    576  REAL, PARAMETER :: DPR=180./pi
                    +
                    577  !
                    +
                    578  INTEGER :: IDRTI, IDRTO, IG, JG, IM, JM
                    +
                    579  INTEGER :: IGO, JGO, IMO, JMO
                    +
                    580  INTEGER :: ISCAN, JSCAN, NSCAN
                    +
                    581  INTEGER :: ISCANO, JSCANO, NSCANO
                    +
                    582  INTEGER :: ISKIPI, JSKIPI
                    +
                    583  INTEGER :: IMAXI, JMAXI, ISPEC
                    +
                    584  INTEGER :: IP, IPRIME, IPROJ, IROMB, K
                    +
                    585  INTEGER :: MAXWV, N, NI, NJ, NPS, NO
                    +
                    586  !
                    +
                    587  REAL :: DE, DR, DY
                    +
                    588  REAL :: DLAT, DLON, DLATO, DLONO
                    +
                    589  REAL :: GO2(MO,KM), H, HI, HJ
                    +
                    590  REAL :: ORIENT
                    +
                    591  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    +
                    592  REAL :: XMESH, XP, YP
                    +
                    593  REAL :: XPTS(MO), YPTS(MO)
                    +
                    594 
                    +
                    595  type(grib1_descriptor) :: desc_in, desc_out
                    +
                    596  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    597 
                    +
                    598  desc_in = init_descriptor(kgdsi)
                    +
                    599  desc_out = init_descriptor(kgdso)
                    +
                    600 
                    +
                    601  call init_grid(grid_in, desc_in)
                    +
                    602  call init_grid(grid_out, desc_out)
                    +
                    603 
                    +
                    604  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    605  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    606  iret=0
                    +
                    607  IF(kgdso(1).GE.0) THEN
                    +
                    608  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    609  IF(no.EQ.0) iret=3
                    +
                    610  ENDIF
                    +
                    611  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    612  ! AFFIRM APPROPRIATE INPUT GRID
                    +
                    613  ! LAT/LON OR GAUSSIAN
                    +
                    614  ! NO BITMAPS
                    +
                    615  ! FULL ZONAL COVERAGE
                    +
                    616  ! FULL MERIDIONAL COVERAGE
                    +
                    617  idrti=kgdsi(1)
                    +
                    618  im=kgdsi(2)
                    +
                    619  jm=kgdsi(3)
                    +
                    620  rlon1=kgdsi(5)*1.e-3
                    +
                    621  rlon2=kgdsi(8)*1.e-3
                    +
                    622  iscan=mod(kgdsi(11)/128,2)
                    +
                    623  jscan=mod(kgdsi(11)/64,2)
                    +
                    624  nscan=mod(kgdsi(11)/32,2)
                    +
                    625  IF(idrti.NE.0.AND.idrti.NE.4) iret=41
                    +
                    626  DO k=1,km
                    +
                    627  IF(ibi(k).NE.0) iret=41
                    +
                    628  ENDDO
                    +
                    629  IF(iret.EQ.0) THEN
                    +
                    630  IF(iscan.EQ.0) THEN
                    +
                    631  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    632  ELSE
                    +
                    633  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    634  ENDIF
                    +
                    635  ig=nint(360/abs(dlon))
                    +
                    636  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    +
                    637  imaxi=ig
                    +
                    638  jmaxi=jm
                    +
                    639  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    +
                    640  ENDIF
                    +
                    641  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    +
                    642  rlat1=kgdsi(4)*1.e-3
                    +
                    643  rlat2=kgdsi(7)*1.e-3
                    +
                    644  dlat=(rlat2-rlat1)/(jm-1)
                    +
                    645  jg=nint(180/abs(dlat))
                    +
                    646  IF(jm.EQ.jg) idrti=256
                    +
                    647  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    +
                    648  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    +
                    649  jg=kgdsi(10)*2
                    +
                    650  IF(jm.NE.jg) iret=41
                    +
                    651  ENDIF
                    +
                    652  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    653  ! SET PARAMETERS
                    +
                    654  IF(iret.EQ.0) THEN
                    +
                    655  iromb=ipopt(1)
                    +
                    656  maxwv=ipopt(2)
                    +
                    657  IF(maxwv.EQ.-1) THEN
                    +
                    658  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    +
                    659  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    +
                    660  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    +
                    661  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    +
                    662  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    +
                    663  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    +
                    664  ENDIF
                    +
                    665  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    +
                    666  ENDIF
                    +
                    667  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    668  ! INTERPOLATE
                    +
                    669  IF(iret.EQ.0) THEN
                    +
                    670  IF(nscan.EQ.0) THEN
                    +
                    671  iskipi=1
                    +
                    672  jskipi=im
                    +
                    673  ELSE
                    +
                    674  iskipi=jm
                    +
                    675  jskipi=1
                    +
                    676  ENDIF
                    +
                    677  IF(iscan.EQ.1) iskipi=-iskipi
                    +
                    678  IF(jscan.EQ.0) jskipi=-jskipi
                    +
                    679  ispec=0
                    +
                    680  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    +
                    681  IF((kgdso(1).EQ.0.OR.kgdso(1).EQ.4).AND. &
                    +
                    682  mod(kgdso(2),2).EQ.0.AND.kgdso(5).EQ.0.AND.kgdso(11).EQ.0) THEN
                    +
                    683  idrto=kgdso(1)
                    +
                    684  imo=kgdso(2)
                    +
                    685  jmo=kgdso(3)
                    +
                    686  rlon2=kgdso(8)*1.e-3
                    +
                    687  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    +
                    688  igo=nint(360/abs(dlono))
                    +
                    689  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    +
                    690  rlat1=kgdso(4)*1.e-3
                    +
                    691  rlat2=kgdso(7)*1.e-3
                    +
                    692  dlat=(rlat2-rlat1)/(jmo-1)
                    +
                    693  jgo=nint(180/abs(dlat))
                    +
                    694  IF(jmo.EQ.jgo) idrto=256
                    +
                    695  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    +
                    696  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    +
                    697  jgo=kgdso(10)*2
                    +
                    698  IF(jmo.EQ.jgo) ispec=1
                    +
                    699  ENDIF
                    +
                    700  IF(ispec.EQ.1) THEN
                    +
                    701  CALL sptrun(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    +
                    702  km,iprime,iskipi,jskipi,mi,0,0,mo,0,gi,go)
                    +
                    703  ENDIF
                    +
                    704  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    +
                    705  ELSEIF(kgdso(1).EQ.5.AND. &
                    +
                    706  kgdso(2).EQ.kgdso(3).AND.mod(kgdso(2),2).EQ.1.AND. &
                    +
                    707  kgdso(8).EQ.kgdso(9).AND.kgdso(11).EQ.64) THEN
                    +
                    708  nps=kgdso(2)
                    +
                    709  rlat1=kgdso(4)*1.e-3
                    +
                    710  rlon1=kgdso(5)*1.e-3
                    +
                    711  orient=kgdso(7)*1.e-3
                    +
                    712  xmesh=kgdso(8)
                    +
                    713  iproj=mod(kgdso(10)/128,2)
                    +
                    714  ip=(nps+1)/2
                    +
                    715  h=(-1.)**iproj
                    +
                    716  de=(1.+sin(60./dpr))*rerth
                    +
                    717  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    +
                    718  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    +
                    719  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    +
                    720  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    +
                    721  IF(iproj.EQ.0) THEN
                    +
                    722  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    723  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    724  60.,xmesh,orient,gi,go,go2)
                    +
                    725  ELSE
                    +
                    726  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    727  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    728  60.,xmesh,orient,gi,go2,go)
                    +
                    729  ENDIF
                    +
                    730  ispec=1
                    +
                    731  ENDIF
                    +
                    732  ! SPECIAL CASE OF MERCATOR GRID
                    +
                    733  ELSEIF(kgdso(1).EQ.1) THEN
                    +
                    734  ni=kgdso(2)
                    +
                    735  nj=kgdso(3)
                    +
                    736  rlat1=kgdso(4)*1.e-3
                    +
                    737  rlon1=kgdso(5)*1.e-3
                    +
                    738  rlon2=kgdso(8)*1.e-3
                    +
                    739  rlati=kgdso(9)*1.e-3
                    +
                    740  iscano=mod(kgdso(11)/128,2)
                    +
                    741  jscano=mod(kgdso(11)/64,2)
                    +
                    742  nscano=mod(kgdso(11)/32,2)
                    +
                    743  dy=kgdso(13)
                    +
                    744  hi=(-1.)**iscano
                    +
                    745  hj=(-1.)**(1-jscano)
                    +
                    746  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    +
                    747  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    +
                    748  IF(nscano.EQ.0) THEN
                    +
                    749  CALL sptrunm(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    +
                    750  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    751  rlat1,rlon1,dlato,dlono,gi,go)
                    +
                    752  ispec=1
                    +
                    753  ENDIF
                    +
                    754  ENDIF
                    +
                    755  ! GENERAL SLOW CASE
                    +
                    756  IF(ispec.EQ.0) THEN
                    +
                    757  CALL sptrung(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    +
                    758  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon,gi,go)
                    +
                    759  ENDIF
                    +
                    760  DO k=1,km
                    +
                    761  ibo(k)=0
                    +
                    762  DO n=1,no
                    +
                    763  lo(n,k)=.true.
                    +
                    764  ENDDO
                    +
                    765  ENDDO
                    +
                    766  ELSE
                    +
                    767  DO k=1,km
                    +
                    768  ibo(k)=1
                    +
                    769  DO n=1,no
                    +
                    770  lo(n,k)=.false.
                    +
                    771  go(n,k)=0.
                    +
                    772  ENDDO
                    +
                    773  ENDDO
                    +
                    774  ENDIF
                    +
                    775  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    776  END SUBROUTINE polates4_grib1
                    777 
                    -
                    887  SUBROUTINE polatev4_grib2(IPOPT,IGDTNUMI,IGDTMPLI,IGDTLENI, &
                    -
                    888  IGDTNUMO,IGDTMPLO,IGDTLENO, &
                    -
                    889  MI,MO,KM,IBI,UI,VI, &
                    -
                    890  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    -
                    891  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    -
                    892  INTEGER, INTENT(IN ) :: KM, MI, MO
                    -
                    893  INTEGER, INTENT( OUT) :: IRET, IBO(KM), NO
                    -
                    894  INTEGER, INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    -
                    895  INTEGER, INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    -
                    896  INTEGER, INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    -
                    897  INTEGER, INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    -
                    898  !
                    -
                    899  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    -
                    900  !
                    -
                    901  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    -
                    902  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    -
                    903  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    -
                    904  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    -
                    905  !
                    -
                    906  REAL, PARAMETER :: FILL=-9999.
                    -
                    907  REAL, PARAMETER :: PI=3.14159265358979
                    -
                    908  REAL, PARAMETER :: DPR=180./pi
                    -
                    909  !
                    -
                    910  INTEGER :: IDRTO, IROMB, ISKIPI, ISPEC
                    -
                    911  INTEGER :: IDRTI, IMAXI, JMAXI, IM, JM
                    -
                    912  INTEGER :: IPRIME, IG, IMO, JMO, IGO, JGO
                    -
                    913  INTEGER :: ISCAN, JSCAN, NSCAN
                    -
                    914  INTEGER :: ISCANO, JSCANO, NSCANO
                    -
                    915  INTEGER :: ISCALE, IP, IPROJ, JSKIPI, JG
                    -
                    916  INTEGER :: K, MAXWV, N, NI, NJ, NPS
                    -
                    917  !
                    -
                    918  REAL :: DLAT, DLON, DLATO, DLONO, DE, DR, DY
                    -
                    919  REAL :: DUM, E2, H, HI, HJ
                    -
                    920  REAL :: ORIENT, RERTH, SLAT
                    -
                    921  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    -
                    922  REAL :: UROT, VROT, UO2(MO,KM),VO2(MO,KM)
                    -
                    923  REAL :: XMESH, X, XP, YP, XPTS(MO),YPTS(MO)
                    -
                    924 
                    -
                    925  type(grib2_descriptor) :: desc_in, desc_out
                    -
                    926  class(ip_grid), allocatable :: grid_in, grid_out
                    -
                    927 
                    -
                    928  desc_in = init_descriptor(igdtnumi, igdtleni, igdtmpli)
                    -
                    929  desc_out = init_descriptor(igdtnumo, igdtleno, igdtmplo)
                    -
                    930 
                    -
                    931  call init_grid(grid_in, desc_in)
                    -
                    932  call init_grid(grid_out, desc_out)
                    -
                    933 
                    -
                    934  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    935  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    -
                    936  iret=0
                    -
                    937  IF(igdtnumo.GE.0) THEN
                    -
                    938  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts, &
                    -
                    939  rlon,rlat,no,crot,srot)
                    -
                    940  IF(no.EQ.0) iret=3
                    -
                    941  ENDIF
                    -
                    942  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    943  ! AFFIRM APPROPRIATE INPUT GRID
                    -
                    944  ! LAT/LON OR GAUSSIAN
                    -
                    945  ! NO BITMAPS
                    -
                    946  ! FULL ZONAL COVERAGE
                    -
                    947  ! FULL MERIDIONAL COVERAGE
                    -
                    948  idrti=igdtnumi
                    -
                    949  IF(idrti==40) idrti=4
                    -
                    950  IF(idrti==0.OR.idrti==4)THEN
                    -
                    951  im=igdtmpli(8)
                    -
                    952  jm=igdtmpli(9)
                    -
                    953  iscale=igdtmpli(10)*igdtmpli(11)
                    -
                    954  IF(iscale==0) iscale=10**6
                    -
                    955  rlon1=float(igdtmpli(13))/float(iscale)
                    -
                    956  rlon2=float(igdtmpli(16))/float(iscale)
                    -
                    957  iscan=mod(igdtmpli(19)/128,2)
                    -
                    958  jscan=mod(igdtmpli(19)/64,2)
                    -
                    959  nscan=mod(igdtmpli(19)/32,2)
                    -
                    960  ELSE
                    -
                    961  iret=41
                    -
                    962  ENDIF
                    -
                    963  DO k=1,km
                    -
                    964  IF(ibi(k).NE.0) iret=41
                    -
                    965  ENDDO
                    -
                    966  IF(iret.EQ.0) THEN
                    -
                    967  IF(iscan.EQ.0) THEN
                    -
                    968  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    -
                    969  ELSE
                    -
                    970  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    -
                    971  ENDIF
                    -
                    972  ig=nint(360/abs(dlon))
                    -
                    973  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    -
                    974  imaxi=ig
                    -
                    975  jmaxi=jm
                    -
                    976  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    -
                    977  ENDIF
                    -
                    978  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    -
                    979  iscale=igdtmpli(10)*igdtmpli(11)
                    -
                    980  IF(iscale==0) iscale=10**6
                    -
                    981  rlat1=float(igdtmpli(12))/float(iscale)
                    -
                    982  rlat2=float(igdtmpli(15))/float(iscale)
                    -
                    983  dlat=(rlat2-rlat1)/(jm-1)
                    -
                    984  jg=nint(180/abs(dlat))
                    -
                    985  IF(jm.EQ.jg) idrti=256
                    -
                    986  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    -
                    987  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    -
                    988  jg=igdtmpli(18)*2
                    -
                    989  IF(jm.NE.jg) iret=41
                    -
                    990  ENDIF
                    -
                    991  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    992  ! SET PARAMETERS
                    -
                    993  IF(iret.EQ.0) THEN
                    -
                    994  iromb=ipopt(1)
                    -
                    995  maxwv=ipopt(2)
                    -
                    996  IF(maxwv.EQ.-1) THEN
                    -
                    997  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    -
                    998  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    -
                    999  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    -
                    1000  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    -
                    1001  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    -
                    1002  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    -
                    1003  ENDIF
                    -
                    1004  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    -
                    1005  ENDIF
                    -
                    1006  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    1007  ! INTERPOLATE
                    -
                    1008  IF(iret.EQ.0) THEN
                    -
                    1009  IF(nscan.EQ.0) THEN
                    -
                    1010  iskipi=1
                    -
                    1011  jskipi=im
                    -
                    1012  ELSE
                    -
                    1013  iskipi=jm
                    -
                    1014  jskipi=1
                    -
                    1015  ENDIF
                    -
                    1016  IF(iscan.EQ.1) iskipi=-iskipi
                    -
                    1017  IF(jscan.EQ.0) jskipi=-jskipi
                    -
                    1018  ispec=0
                    -
                    1019  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    -
                    1020  IF((igdtnumo.EQ.0.OR.igdtnumo.EQ.40).AND. &
                    -
                    1021  mod(igdtmplo(8),2).EQ.0.AND.igdtmplo(13).EQ.0.AND. &
                    -
                    1022  igdtmplo(19).EQ.0) THEN
                    -
                    1023  idrto=igdtnumo
                    -
                    1024  IF(idrto==40)idrto=4
                    -
                    1025  imo=igdtmplo(8)
                    -
                    1026  jmo=igdtmplo(9)
                    -
                    1027  iscale=igdtmplo(10)*igdtmplo(11)
                    -
                    1028  IF(iscale==0) iscale=10**6
                    -
                    1029  rlon2=float(igdtmplo(16))/float(iscale)
                    -
                    1030  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    -
                    1031  igo=nint(360/abs(dlono))
                    -
                    1032  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    -
                    1033  rlat1=float(igdtmplo(12))/float(iscale)
                    -
                    1034  rlat2=float(igdtmplo(15))/float(iscale)
                    -
                    1035  dlat=(rlat2-rlat1)/(jmo-1)
                    -
                    1036  jgo=nint(180/abs(dlat))
                    -
                    1037  IF(jmo.EQ.jgo) idrto=256
                    -
                    1038  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    -
                    1039  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    -
                    1040  jgo=igdtmplo(18)*2
                    -
                    1041  IF(jmo.EQ.jgo) ispec=1
                    -
                    1042  ENDIF
                    -
                    1043  IF(ispec.EQ.1) THEN
                    -
                    1044  CALL sptrunv(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    -
                    1045  km,iprime,iskipi,jskipi,mi,0,0,mo,0,ui,vi, &
                    -
                    1046  .true.,uo,vo,.false.,dum,dum,.false.,dum,dum)
                    -
                    1047  ENDIF
                    -
                    1048  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    -
                    1049  ELSEIF(igdtnumo.EQ.20.AND. &
                    -
                    1050  igdtmplo(8).EQ.igdtmplo(9).AND.mod(igdtmplo(8),2).EQ.1.AND. &
                    -
                    1051  igdtmplo(15).EQ.igdtmplo(16).AND.igdtmplo(18).EQ.64.AND. &
                    -
                    1052  mod(igdtmplo(12)/8,2).EQ.1) THEN
                    -
                    1053  nps=igdtmplo(8)
                    -
                    1054  rlat1=float(igdtmplo(10))*1.e-6
                    -
                    1055  rlon1=float(igdtmplo(11))*1.e-6
                    -
                    1056  orient=float(igdtmplo(14))*1.e-6
                    -
                    1057  xmesh=float(igdtmplo(15))*1.e-3
                    -
                    1058  iproj=mod(igdtmplo(17)/128,2)
                    -
                    1059  ip=(nps+1)/2
                    -
                    1060  h=(-1.)**iproj
                    -
                    1061  slat=float(abs(igdtmplo(13)))*1.e-6
                    -
                    1062  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    -
                    1063  de=(1.+sin(slat/dpr))*rerth
                    -
                    1064  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    -
                    1065  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    -
                    1066  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    -
                    1067  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    -
                    1068  IF(iproj.EQ.0) THEN
                    -
                    1069  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    -
                    1070  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    1071  slat,xmesh,orient,ui,vi,.true.,uo,vo,uo2,vo2, &
                    -
                    1072  .false.,dum,dum,dum,dum, &
                    -
                    1073  .false.,dum,dum,dum,dum)
                    -
                    1074  ELSE
                    -
                    1075  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    -
                    1076  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    1077  slat,xmesh,orient,ui,vi,.true.,uo2,vo2,uo,vo, &
                    -
                    1078  .false.,dum,dum,dum,dum, &
                    -
                    1079  .false.,dum,dum,dum,dum)
                    -
                    1080  ENDIF
                    -
                    1081  ispec=1
                    -
                    1082  ENDIF
                    -
                    1083  ! SPECIAL CASE OF MERCATOR GRID
                    -
                    1084  ELSEIF(igdtnumo.EQ.10) THEN
                    -
                    1085  ni=igdtmplo(8)
                    -
                    1086  nj=igdtmplo(9)
                    -
                    1087  rlat1=float(igdtmplo(10))*1.0e-6
                    -
                    1088  rlon1=float(igdtmplo(11))*1.0e-6
                    -
                    1089  rlon2=float(igdtmplo(15))*1.0e-6
                    -
                    1090  rlati=float(igdtmplo(13))*1.0e-6
                    -
                    1091  iscano=mod(igdtmplo(16)/128,2)
                    -
                    1092  jscano=mod(igdtmplo(16)/64,2)
                    -
                    1093  nscano=mod(igdtmplo(16)/32,2)
                    -
                    1094  dy=float(igdtmplo(19))*1.0e-3
                    -
                    1095  hi=(-1.)**iscano
                    -
                    1096  hj=(-1.)**(1-jscano)
                    -
                    1097  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    -
                    1098  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    -
                    1099  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    -
                    1100  IF(nscano.EQ.0) THEN
                    -
                    1101  CALL sptrunmv(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    -
                    1102  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    1103  rlat1,rlon1,dlato,dlono,ui,vi, &
                    -
                    1104  .true.,uo,vo,.false.,dum,dum,.false.,dum,dum)
                    -
                    1105  ispec=1
                    -
                    1106  ENDIF
                    -
                    1107  ENDIF
                    -
                    1108  ! GENERAL SLOW CASE
                    -
                    1109  IF(ispec.EQ.0) THEN
                    -
                    1110  CALL sptrungv(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    -
                    1111  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon, &
                    -
                    1112  ui,vi,.true.,uo,vo,.false.,x,x,.false.,x,x)
                    -
                    1113  DO k=1,km
                    -
                    1114  ibo(k)=0
                    -
                    1115  DO n=1,no
                    -
                    1116  lo(n,k)=.true.
                    -
                    1117  urot=crot(n)*uo(n,k)-srot(n)*vo(n,k)
                    -
                    1118  vrot=srot(n)*uo(n,k)+crot(n)*vo(n,k)
                    -
                    1119  uo(n,k)=urot
                    -
                    1120  vo(n,k)=vrot
                    -
                    1121  ENDDO
                    -
                    1122  ENDDO
                    -
                    1123  ENDIF
                    -
                    1124  ELSE
                    -
                    1125  DO k=1,km
                    -
                    1126  ibo(k)=1
                    -
                    1127  DO n=1,no
                    -
                    1128  lo(n,k)=.false.
                    -
                    1129  uo(n,k)=0.
                    -
                    1130  vo(n,k)=0.
                    -
                    1131  ENDDO
                    -
                    1132  ENDDO
                    -
                    1133  ENDIF
                    -
                    1134  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    1135  END SUBROUTINE polatev4_grib2
                    -
                    1136 
                    -
                    1221  SUBROUTINE polatev4_grib1(IPOPT,KGDSI,KGDSO,MI,MO,KM,IBI,UI,VI, &
                    -
                    1222  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    -
                    1223  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    -
                    1224  INTEGER, INTENT(IN ) :: KM, MI, MO
                    -
                    1225  INTEGER, INTENT( OUT) :: IRET, IBO(KM)
                    -
                    1226  INTEGER, INTENT(IN) :: KGDSI(200),KGDSO(200)
                    -
                    1227  !
                    -
                    1228  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    -
                    1229  !
                    -
                    1230  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    -
                    1231  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    -
                    1232  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    -
                    1233  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    -
                    1234  !
                    -
                    1235  REAL, PARAMETER :: FILL=-9999.
                    -
                    1236  REAL, PARAMETER :: RERTH=6.3712e6
                    -
                    1237  REAL, PARAMETER :: PI=3.14159265358979
                    -
                    1238  REAL, PARAMETER :: DPR=180./pi
                    -
                    1239  !
                    -
                    1240  INTEGER :: IDRTO, IROMB, ISKIPI, ISPEC
                    -
                    1241  INTEGER :: IDRTI, IMAXI, JMAXI, IM, JM
                    -
                    1242  INTEGER :: IPRIME, IG, IMO, JMO, IGO, JGO
                    -
                    1243  INTEGER :: ISCAN, JSCAN, NSCAN
                    -
                    1244  INTEGER :: ISCANO, JSCANO, NSCANO
                    -
                    1245  INTEGER :: IP, IPROJ, JSKIPI, JG
                    -
                    1246  INTEGER :: K, MAXWV, N, NI, NJ, NO, NPS
                    -
                    1247  !
                    -
                    1248  REAL :: DLAT, DLON, DLATO, DLONO, DE, DR, DY
                    -
                    1249  REAL :: DUM, H, HI, HJ
                    -
                    1250  REAL :: ORIENT
                    -
                    1251  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    -
                    1252  REAL :: UROT, VROT, UO2(MO,KM),VO2(MO,KM)
                    -
                    1253  REAL :: XMESH, X, XP, YP, XPTS(MO),YPTS(MO)
                    -
                    1254 
                    -
                    1255  type(grib1_descriptor) :: desc_in, desc_out
                    -
                    1256  class(ip_grid), allocatable :: grid_in, grid_out
                    -
                    1257 
                    -
                    1258  desc_in = init_descriptor(kgdsi)
                    -
                    1259  desc_out = init_descriptor(kgdso)
                    -
                    1260 
                    -
                    1261  call init_grid(grid_in, desc_in)
                    -
                    1262  call init_grid(grid_out, desc_out)
                    -
                    1263  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    1264  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    -
                    1265  iret=0
                    -
                    1266  IF(kgdso(1).GE.0) THEN
                    -
                    1267  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no,crot,srot)
                    -
                    1268  IF(no.EQ.0) iret=3
                    -
                    1269  ENDIF
                    -
                    1270  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    1271  ! AFFIRM APPROPRIATE INPUT GRID
                    -
                    1272  ! LAT/LON OR GAUSSIAN
                    -
                    1273  ! NO BITMAPS
                    -
                    1274  ! FULL ZONAL COVERAGE
                    -
                    1275  ! FULL MERIDIONAL COVERAGE
                    -
                    1276  idrti=kgdsi(1)
                    -
                    1277  im=kgdsi(2)
                    -
                    1278  jm=kgdsi(3)
                    -
                    1279  rlon1=kgdsi(5)*1.e-3
                    -
                    1280  rlon2=kgdsi(8)*1.e-3
                    -
                    1281  iscan=mod(kgdsi(11)/128,2)
                    -
                    1282  jscan=mod(kgdsi(11)/64,2)
                    -
                    1283  nscan=mod(kgdsi(11)/32,2)
                    -
                    1284  IF(idrti.NE.0.AND.idrti.NE.4) iret=41
                    -
                    1285  DO k=1,km
                    -
                    1286  IF(ibi(k).NE.0) iret=41
                    -
                    1287  ENDDO
                    -
                    1288  IF(iret.EQ.0) THEN
                    -
                    1289  IF(iscan.EQ.0) THEN
                    -
                    1290  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    -
                    1291  ELSE
                    -
                    1292  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    -
                    1293  ENDIF
                    -
                    1294  ig=nint(360/abs(dlon))
                    -
                    1295  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    -
                    1296  imaxi=ig
                    -
                    1297  jmaxi=jm
                    -
                    1298  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    -
                    1299  ENDIF
                    -
                    1300  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    -
                    1301  rlat1=kgdsi(4)*1.e-3
                    -
                    1302  rlat2=kgdsi(7)*1.e-3
                    -
                    1303  dlat=(rlat2-rlat1)/(jm-1)
                    -
                    1304  jg=nint(180/abs(dlat))
                    -
                    1305  IF(jm.EQ.jg) idrti=256
                    -
                    1306  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    -
                    1307  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    -
                    1308  jg=kgdsi(10)*2
                    -
                    1309  IF(jm.NE.jg) iret=41
                    -
                    1310  ENDIF
                    -
                    1311  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    1312  ! SET PARAMETERS
                    -
                    1313  IF(iret.EQ.0) THEN
                    -
                    1314  iromb=ipopt(1)
                    -
                    1315  maxwv=ipopt(2)
                    -
                    1316  IF(maxwv.EQ.-1) THEN
                    -
                    1317  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    -
                    1318  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    -
                    1319  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    -
                    1320  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    -
                    1321  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    -
                    1322  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    -
                    1323  ENDIF
                    -
                    1324  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    -
                    1325  ENDIF
                    -
                    1326  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    1327  ! INTERPOLATE
                    -
                    1328  IF(iret.EQ.0) THEN
                    -
                    1329  IF(nscan.EQ.0) THEN
                    -
                    1330  iskipi=1
                    -
                    1331  jskipi=im
                    -
                    1332  ELSE
                    -
                    1333  iskipi=jm
                    -
                    1334  jskipi=1
                    -
                    1335  ENDIF
                    -
                    1336  IF(iscan.EQ.1) iskipi=-iskipi
                    -
                    1337  IF(jscan.EQ.0) jskipi=-jskipi
                    -
                    1338  ispec=0
                    -
                    1339  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    -
                    1340  IF((kgdso(1).EQ.0.OR.kgdso(1).EQ.4).AND. &
                    -
                    1341  mod(kgdso(2),2).EQ.0.AND.kgdso(5).EQ.0.AND. &
                    -
                    1342  kgdso(11).EQ.0) THEN
                    -
                    1343  idrto=kgdso(1)
                    -
                    1344  imo=kgdso(2)
                    -
                    1345  jmo=kgdso(3)
                    -
                    1346  rlon2=kgdso(8)*1.e-3
                    -
                    1347  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    -
                    1348  igo=nint(360/abs(dlono))
                    -
                    1349  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    -
                    1350  rlat1=kgdso(4)*1.e-3
                    -
                    1351  rlat2=kgdso(7)*1.e-3
                    -
                    1352  dlat=(rlat2-rlat1)/(jmo-1)
                    -
                    1353  jgo=nint(180/abs(dlat))
                    -
                    1354  IF(jmo.EQ.jgo) idrto=256
                    -
                    1355  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    -
                    1356  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    -
                    1357  jgo=kgdso(10)*2
                    -
                    1358  IF(jmo.EQ.jgo) ispec=1
                    -
                    1359  ENDIF
                    -
                    1360  IF(ispec.EQ.1) THEN
                    -
                    1361  CALL sptrunv(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    -
                    1362  km,iprime,iskipi,jskipi,mi,0,0,mo,0,ui,vi, &
                    -
                    1363  .true.,uo,vo,.false.,dum,dum,.false.,dum,dum)
                    -
                    1364  ENDIF
                    -
                    1365  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    -
                    1366  ELSEIF(kgdso(1).EQ.5.AND. &
                    -
                    1367  kgdso(2).EQ.kgdso(3).AND.mod(kgdso(2),2).EQ.1.AND. &
                    -
                    1368  kgdso(8).EQ.kgdso(9).AND.kgdso(11).EQ.64.AND. &
                    -
                    1369  mod(kgdso(6)/8,2).EQ.1) THEN
                    -
                    1370  nps=kgdso(2)
                    -
                    1371  rlat1=kgdso(4)*1.e-3
                    -
                    1372  rlon1=kgdso(5)*1.e-3
                    -
                    1373  orient=kgdso(7)*1.e-3
                    -
                    1374  xmesh=kgdso(8)
                    -
                    1375  iproj=mod(kgdso(10)/128,2)
                    -
                    1376  ip=(nps+1)/2
                    -
                    1377  h=(-1.)**iproj
                    -
                    1378  de=(1.+sin(60./dpr))*rerth
                    -
                    1379  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    -
                    1380  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    -
                    1381  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    -
                    1382  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    -
                    1383  IF(iproj.EQ.0) THEN
                    -
                    1384  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    -
                    1385  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    1386  60.,xmesh,orient,ui,vi,.true.,uo,vo,uo2,vo2, &
                    -
                    1387  .false.,dum,dum,dum,dum, &
                    -
                    1388  .false.,dum,dum,dum,dum)
                    -
                    1389  ELSE
                    -
                    1390  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    -
                    1391  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    1392  60.,xmesh,orient,ui,vi,.true.,uo2,vo2,uo,vo, &
                    -
                    1393  .false.,dum,dum,dum,dum, &
                    -
                    1394  .false.,dum,dum,dum,dum)
                    -
                    1395  ENDIF
                    -
                    1396  ispec=1
                    -
                    1397  ENDIF
                    -
                    1398  ! SPECIAL CASE OF MERCATOR GRID
                    -
                    1399  ELSEIF(kgdso(1).EQ.1) THEN
                    -
                    1400  ni=kgdso(2)
                    -
                    1401  nj=kgdso(3)
                    -
                    1402  rlat1=kgdso(4)*1.e-3
                    -
                    1403  rlon1=kgdso(5)*1.e-3
                    -
                    1404  rlon2=kgdso(8)*1.e-3
                    -
                    1405  rlati=kgdso(9)*1.e-3
                    -
                    1406  iscano=mod(kgdso(11)/128,2)
                    -
                    1407  jscano=mod(kgdso(11)/64,2)
                    -
                    1408  nscano=mod(kgdso(11)/32,2)
                    -
                    1409  dy=kgdso(13)
                    -
                    1410  hi=(-1.)**iscano
                    -
                    1411  hj=(-1.)**(1-jscano)
                    -
                    1412  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    -
                    1413  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    -
                    1414  IF(nscano.EQ.0) THEN
                    -
                    1415  CALL sptrunmv(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    -
                    1416  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    -
                    1417  rlat1,rlon1,dlato,dlono,ui,vi, &
                    -
                    1418  .true.,uo,vo,.false.,dum,dum,.false.,dum,dum)
                    -
                    1419  ispec=1
                    -
                    1420  ENDIF
                    -
                    1421  ENDIF
                    -
                    1422  ! GENERAL SLOW CASE
                    -
                    1423  IF(ispec.EQ.0) THEN
                    -
                    1424  CALL sptrungv(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    -
                    1425  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon, &
                    -
                    1426  ui,vi,.true.,uo,vo,.false.,x,x,.false.,x,x)
                    -
                    1427  DO k=1,km
                    -
                    1428  ibo(k)=0
                    -
                    1429  DO n=1,no
                    -
                    1430  lo(n,k)=.true.
                    -
                    1431  urot=crot(n)*uo(n,k)-srot(n)*vo(n,k)
                    -
                    1432  vrot=srot(n)*uo(n,k)+crot(n)*vo(n,k)
                    -
                    1433  uo(n,k)=urot
                    -
                    1434  vo(n,k)=vrot
                    -
                    1435  ENDDO
                    -
                    1436  ENDDO
                    -
                    1437  ENDIF
                    -
                    1438  ELSE
                    -
                    1439  DO k=1,km
                    -
                    1440  ibo(k)=1
                    -
                    1441  DO n=1,no
                    -
                    1442  lo(n,k)=.false.
                    -
                    1443  uo(n,k)=0.
                    -
                    1444  vo(n,k)=0.
                    -
                    1445  ENDDO
                    -
                    1446  ENDDO
                    -
                    1447  ENDIF
                    -
                    1448  END SUBROUTINE polatev4_grib1
                    -
                    1449 end module spectral_interp_mod
                    +
                    778 
                    +
                    888  SUBROUTINE polatev4_grib2(IPOPT,IGDTNUMI,IGDTMPLI,IGDTLENI, &
                    +
                    889  IGDTNUMO,IGDTMPLO,IGDTLENO, &
                    +
                    890  MI,MO,KM,IBI,UI,VI, &
                    +
                    891  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    892  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    +
                    893  INTEGER, INTENT(IN ) :: KM, MI, MO
                    +
                    894  INTEGER, INTENT( OUT) :: IRET, IBO(KM), NO
                    +
                    895  INTEGER, INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    896  INTEGER, INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    897  INTEGER, INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    898  INTEGER, INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    899  !
                    +
                    900  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    901  !
                    +
                    902  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    903  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    904  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    905  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    +
                    906  !
                    +
                    907  REAL, PARAMETER :: FILL=-9999.
                    +
                    908  REAL, PARAMETER :: PI=3.14159265358979
                    +
                    909  REAL, PARAMETER :: DPR=180./pi
                    +
                    910  !
                    +
                    911  INTEGER :: IDRTO, IROMB, ISKIPI, ISPEC
                    +
                    912  INTEGER :: IDRTI, IMAXI, JMAXI, IM, JM
                    +
                    913  INTEGER :: IPRIME, IG, IMO, JMO, IGO, JGO
                    +
                    914  INTEGER :: ISCAN, JSCAN, NSCAN
                    +
                    915  INTEGER :: ISCANO, JSCANO, NSCANO
                    +
                    916  INTEGER :: ISCALE, IP, IPROJ, JSKIPI, JG
                    +
                    917  INTEGER :: K, MAXWV, N, NI, NJ, NPS
                    +
                    918  !
                    +
                    919  REAL :: DLAT, DLON, DLATO, DLONO, DE, DR, DY
                    +
                    920  REAL :: E2, H, HI, HJ, DUMM(1)
                    +
                    921  REAL :: ORIENT, RERTH, SLAT
                    +
                    922  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    +
                    923  REAL :: UROT, VROT, UO2(MO,KM),VO2(MO,KM)
                    +
                    924  REAL :: XMESH, XP, YP, XPTS(MO),YPTS(MO)
                    +
                    925 
                    +
                    926  type(grib2_descriptor) :: desc_in, desc_out
                    +
                    927  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    928 
                    +
                    929  desc_in = init_descriptor(igdtnumi, igdtleni, igdtmpli)
                    +
                    930  desc_out = init_descriptor(igdtnumo, igdtleno, igdtmplo)
                    +
                    931 
                    +
                    932  call init_grid(grid_in, desc_in)
                    +
                    933  call init_grid(grid_out, desc_out)
                    +
                    934 
                    +
                    935  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    936  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    937  iret=0
                    +
                    938  IF(igdtnumo.GE.0) THEN
                    +
                    939  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts, &
                    +
                    940  rlon,rlat,no,crot,srot)
                    +
                    941  IF(no.EQ.0) iret=3
                    +
                    942  ENDIF
                    +
                    943  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    944  ! AFFIRM APPROPRIATE INPUT GRID
                    +
                    945  ! LAT/LON OR GAUSSIAN
                    +
                    946  ! NO BITMAPS
                    +
                    947  ! FULL ZONAL COVERAGE
                    +
                    948  ! FULL MERIDIONAL COVERAGE
                    +
                    949  idrti=igdtnumi
                    +
                    950  IF(idrti==40) idrti=4
                    +
                    951  IF(idrti==0.OR.idrti==4)THEN
                    +
                    952  im=igdtmpli(8)
                    +
                    953  jm=igdtmpli(9)
                    +
                    954  iscale=igdtmpli(10)*igdtmpli(11)
                    +
                    955  IF(iscale==0) iscale=10**6
                    +
                    956  rlon1=float(igdtmpli(13))/float(iscale)
                    +
                    957  rlon2=float(igdtmpli(16))/float(iscale)
                    +
                    958  iscan=mod(igdtmpli(19)/128,2)
                    +
                    959  jscan=mod(igdtmpli(19)/64,2)
                    +
                    960  nscan=mod(igdtmpli(19)/32,2)
                    +
                    961  ELSE
                    +
                    962  iret=41
                    +
                    963  ENDIF
                    +
                    964  DO k=1,km
                    +
                    965  IF(ibi(k).NE.0) iret=41
                    +
                    966  ENDDO
                    +
                    967  IF(iret.EQ.0) THEN
                    +
                    968  IF(iscan.EQ.0) THEN
                    +
                    969  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    970  ELSE
                    +
                    971  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    972  ENDIF
                    +
                    973  ig=nint(360/abs(dlon))
                    +
                    974  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    +
                    975  imaxi=ig
                    +
                    976  jmaxi=jm
                    +
                    977  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    +
                    978  ENDIF
                    +
                    979  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    +
                    980  iscale=igdtmpli(10)*igdtmpli(11)
                    +
                    981  IF(iscale==0) iscale=10**6
                    +
                    982  rlat1=float(igdtmpli(12))/float(iscale)
                    +
                    983  rlat2=float(igdtmpli(15))/float(iscale)
                    +
                    984  dlat=(rlat2-rlat1)/(jm-1)
                    +
                    985  jg=nint(180/abs(dlat))
                    +
                    986  IF(jm.EQ.jg) idrti=256
                    +
                    987  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    +
                    988  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    +
                    989  jg=igdtmpli(18)*2
                    +
                    990  IF(jm.NE.jg) iret=41
                    +
                    991  ENDIF
                    +
                    992  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    993  ! SET PARAMETERS
                    +
                    994  IF(iret.EQ.0) THEN
                    +
                    995  iromb=ipopt(1)
                    +
                    996  maxwv=ipopt(2)
                    +
                    997  IF(maxwv.EQ.-1) THEN
                    +
                    998  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    +
                    999  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    +
                    1000  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    +
                    1001  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    +
                    1002  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    +
                    1003  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    +
                    1004  ENDIF
                    +
                    1005  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    +
                    1006  ENDIF
                    +
                    1007  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1008  ! INTERPOLATE
                    +
                    1009  IF(iret.EQ.0) THEN
                    +
                    1010  IF(nscan.EQ.0) THEN
                    +
                    1011  iskipi=1
                    +
                    1012  jskipi=im
                    +
                    1013  ELSE
                    +
                    1014  iskipi=jm
                    +
                    1015  jskipi=1
                    +
                    1016  ENDIF
                    +
                    1017  IF(iscan.EQ.1) iskipi=-iskipi
                    +
                    1018  IF(jscan.EQ.0) jskipi=-jskipi
                    +
                    1019  ispec=0
                    +
                    1020  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    +
                    1021  IF((igdtnumo.EQ.0.OR.igdtnumo.EQ.40).AND. &
                    +
                    1022  mod(igdtmplo(8),2).EQ.0.AND.igdtmplo(13).EQ.0.AND. &
                    +
                    1023  igdtmplo(19).EQ.0) THEN
                    +
                    1024  idrto=igdtnumo
                    +
                    1025  IF(idrto==40)idrto=4
                    +
                    1026  imo=igdtmplo(8)
                    +
                    1027  jmo=igdtmplo(9)
                    +
                    1028  iscale=igdtmplo(10)*igdtmplo(11)
                    +
                    1029  IF(iscale==0) iscale=10**6
                    +
                    1030  rlon2=float(igdtmplo(16))/float(iscale)
                    +
                    1031  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    +
                    1032  igo=nint(360/abs(dlono))
                    +
                    1033  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    +
                    1034  rlat1=float(igdtmplo(12))/float(iscale)
                    +
                    1035  rlat2=float(igdtmplo(15))/float(iscale)
                    +
                    1036  dlat=(rlat2-rlat1)/(jmo-1)
                    +
                    1037  jgo=nint(180/abs(dlat))
                    +
                    1038  IF(jmo.EQ.jgo) idrto=256
                    +
                    1039  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    +
                    1040  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    +
                    1041  jgo=igdtmplo(18)*2
                    +
                    1042  IF(jmo.EQ.jgo) ispec=1
                    +
                    1043  ENDIF
                    +
                    1044  IF(ispec.EQ.1) THEN
                    +
                    1045  CALL sptrunv(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    +
                    1046  km,iprime,iskipi,jskipi,mi,0,0,mo,0,ui,vi, &
                    +
                    1047  .true.,uo,vo,.false.,dumm,dumm,.false.,dumm,dumm)
                    +
                    1048  ENDIF
                    +
                    1049  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    +
                    1050  ELSEIF(igdtnumo.EQ.20.AND. &
                    +
                    1051  igdtmplo(8).EQ.igdtmplo(9).AND.mod(igdtmplo(8),2).EQ.1.AND. &
                    +
                    1052  igdtmplo(15).EQ.igdtmplo(16).AND.igdtmplo(18).EQ.64.AND. &
                    +
                    1053  mod(igdtmplo(12)/8,2).EQ.1) THEN
                    +
                    1054  nps=igdtmplo(8)
                    +
                    1055  rlat1=float(igdtmplo(10))*1.e-6
                    +
                    1056  rlon1=float(igdtmplo(11))*1.e-6
                    +
                    1057  orient=float(igdtmplo(14))*1.e-6
                    +
                    1058  xmesh=float(igdtmplo(15))*1.e-3
                    +
                    1059  iproj=mod(igdtmplo(17)/128,2)
                    +
                    1060  ip=(nps+1)/2
                    +
                    1061  h=(-1.)**iproj
                    +
                    1062  slat=float(abs(igdtmplo(13)))*1.e-6
                    +
                    1063  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    +
                    1064  de=(1.+sin(slat/dpr))*rerth
                    +
                    1065  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    +
                    1066  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    +
                    1067  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    +
                    1068  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    +
                    1069  IF(iproj.EQ.0) THEN
                    +
                    1070  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    1071  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1072  slat,xmesh,orient,ui,vi,.true.,uo,vo,uo2,vo2, &
                    +
                    1073  .false.,dumm,dumm,dumm,dumm, &
                    +
                    1074  .false.,dumm,dumm,dumm,dumm)
                    +
                    1075  ELSE
                    +
                    1076  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    1077  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1078  slat,xmesh,orient,ui,vi,.true.,uo2,vo2,uo,vo, &
                    +
                    1079  .false.,dumm,dumm,dumm,dumm, &
                    +
                    1080  .false.,dumm,dumm,dumm,dumm)
                    +
                    1081  ENDIF
                    +
                    1082  ispec=1
                    +
                    1083  ENDIF
                    +
                    1084  ! SPECIAL CASE OF MERCATOR GRID
                    +
                    1085  ELSEIF(igdtnumo.EQ.10) THEN
                    +
                    1086  ni=igdtmplo(8)
                    +
                    1087  nj=igdtmplo(9)
                    +
                    1088  rlat1=float(igdtmplo(10))*1.0e-6
                    +
                    1089  rlon1=float(igdtmplo(11))*1.0e-6
                    +
                    1090  rlon2=float(igdtmplo(15))*1.0e-6
                    +
                    1091  rlati=float(igdtmplo(13))*1.0e-6
                    +
                    1092  iscano=mod(igdtmplo(16)/128,2)
                    +
                    1093  jscano=mod(igdtmplo(16)/64,2)
                    +
                    1094  nscano=mod(igdtmplo(16)/32,2)
                    +
                    1095  dy=float(igdtmplo(19))*1.0e-3
                    +
                    1096  hi=(-1.)**iscano
                    +
                    1097  hj=(-1.)**(1-jscano)
                    +
                    1098  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    +
                    1099  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    +
                    1100  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    +
                    1101  IF(nscano.EQ.0) THEN
                    +
                    1102  CALL sptrunmv(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    +
                    1103  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1104  rlat1,rlon1,dlato,dlono,ui,vi, &
                    +
                    1105  .true.,uo,vo,.false.,dumm,dumm,.false.,dumm,dumm)
                    +
                    1106  ispec=1
                    +
                    1107  ENDIF
                    +
                    1108  ENDIF
                    +
                    1109  ! GENERAL SLOW CASE
                    +
                    1110  IF(ispec.EQ.0) THEN
                    +
                    1111  CALL sptrungv(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    +
                    1112  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon, &
                    +
                    1113  ui,vi,.true.,uo,vo,.false.,dumm,dumm,.false.,dumm,dumm)
                    +
                    1114  DO k=1,km
                    +
                    1115  ibo(k)=0
                    +
                    1116  DO n=1,no
                    +
                    1117  lo(n,k)=.true.
                    +
                    1118  urot=crot(n)*uo(n,k)-srot(n)*vo(n,k)
                    +
                    1119  vrot=srot(n)*uo(n,k)+crot(n)*vo(n,k)
                    +
                    1120  uo(n,k)=urot
                    +
                    1121  vo(n,k)=vrot
                    +
                    1122  ENDDO
                    +
                    1123  ENDDO
                    +
                    1124  ENDIF
                    +
                    1125  ELSE
                    +
                    1126  DO k=1,km
                    +
                    1127  ibo(k)=1
                    +
                    1128  DO n=1,no
                    +
                    1129  lo(n,k)=.false.
                    +
                    1130  uo(n,k)=0.
                    +
                    1131  vo(n,k)=0.
                    +
                    1132  ENDDO
                    +
                    1133  ENDDO
                    +
                    1134  ENDIF
                    +
                    1135  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1136  END SUBROUTINE polatev4_grib2
                    +
                    1137 
                    +
                    1222  SUBROUTINE polatev4_grib1(IPOPT,KGDSI,KGDSO,MI,MO,KM,IBI,UI,VI, &
                    +
                    1223  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    1224  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    +
                    1225  INTEGER, INTENT(IN ) :: KM, MI, MO
                    +
                    1226  INTEGER, INTENT( OUT) :: IRET, IBO(KM)
                    +
                    1227  INTEGER, INTENT(IN) :: KGDSI(200),KGDSO(200)
                    +
                    1228  !
                    +
                    1229  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    1230  !
                    +
                    1231  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    1232  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    1233  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    1234  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    +
                    1235  !
                    +
                    1236  REAL, PARAMETER :: FILL=-9999.
                    +
                    1237  REAL, PARAMETER :: RERTH=6.3712e6
                    +
                    1238  REAL, PARAMETER :: PI=3.14159265358979
                    +
                    1239  REAL, PARAMETER :: DPR=180./pi
                    +
                    1240  !
                    +
                    1241  INTEGER :: IDRTO, IROMB, ISKIPI, ISPEC
                    +
                    1242  INTEGER :: IDRTI, IMAXI, JMAXI, IM, JM
                    +
                    1243  INTEGER :: IPRIME, IG, IMO, JMO, IGO, JGO
                    +
                    1244  INTEGER :: ISCAN, JSCAN, NSCAN
                    +
                    1245  INTEGER :: ISCANO, JSCANO, NSCANO
                    +
                    1246  INTEGER :: IP, IPROJ, JSKIPI, JG
                    +
                    1247  INTEGER :: K, MAXWV, N, NI, NJ, NO, NPS
                    +
                    1248  !
                    +
                    1249  REAL :: DLAT, DLON, DLATO, DLONO, DE, DR, DY
                    +
                    1250  REAL :: H, HI, HJ, DUMM(1)
                    +
                    1251  REAL :: ORIENT
                    +
                    1252  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    +
                    1253  REAL :: UROT, VROT, UO2(MO,KM),VO2(MO,KM)
                    +
                    1254  REAL :: XMESH, XP, YP, XPTS(MO),YPTS(MO)
                    +
                    1255 
                    +
                    1256  type(grib1_descriptor) :: desc_in, desc_out
                    +
                    1257  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    1258 
                    +
                    1259  desc_in = init_descriptor(kgdsi)
                    +
                    1260  desc_out = init_descriptor(kgdso)
                    +
                    1261 
                    +
                    1262  call init_grid(grid_in, desc_in)
                    +
                    1263  call init_grid(grid_out, desc_out)
                    +
                    1264  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1265  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    1266  iret=0
                    +
                    1267  IF(kgdso(1).GE.0) THEN
                    +
                    1268  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no,crot,srot)
                    +
                    1269  IF(no.EQ.0) iret=3
                    +
                    1270  ENDIF
                    +
                    1271  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1272  ! AFFIRM APPROPRIATE INPUT GRID
                    +
                    1273  ! LAT/LON OR GAUSSIAN
                    +
                    1274  ! NO BITMAPS
                    +
                    1275  ! FULL ZONAL COVERAGE
                    +
                    1276  ! FULL MERIDIONAL COVERAGE
                    +
                    1277  idrti=kgdsi(1)
                    +
                    1278  im=kgdsi(2)
                    +
                    1279  jm=kgdsi(3)
                    +
                    1280  rlon1=kgdsi(5)*1.e-3
                    +
                    1281  rlon2=kgdsi(8)*1.e-3
                    +
                    1282  iscan=mod(kgdsi(11)/128,2)
                    +
                    1283  jscan=mod(kgdsi(11)/64,2)
                    +
                    1284  nscan=mod(kgdsi(11)/32,2)
                    +
                    1285  IF(idrti.NE.0.AND.idrti.NE.4) iret=41
                    +
                    1286  DO k=1,km
                    +
                    1287  IF(ibi(k).NE.0) iret=41
                    +
                    1288  ENDDO
                    +
                    1289  IF(iret.EQ.0) THEN
                    +
                    1290  IF(iscan.EQ.0) THEN
                    +
                    1291  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    1292  ELSE
                    +
                    1293  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    1294  ENDIF
                    +
                    1295  ig=nint(360/abs(dlon))
                    +
                    1296  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    +
                    1297  imaxi=ig
                    +
                    1298  jmaxi=jm
                    +
                    1299  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    +
                    1300  ENDIF
                    +
                    1301  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    +
                    1302  rlat1=kgdsi(4)*1.e-3
                    +
                    1303  rlat2=kgdsi(7)*1.e-3
                    +
                    1304  dlat=(rlat2-rlat1)/(jm-1)
                    +
                    1305  jg=nint(180/abs(dlat))
                    +
                    1306  IF(jm.EQ.jg) idrti=256
                    +
                    1307  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    +
                    1308  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    +
                    1309  jg=kgdsi(10)*2
                    +
                    1310  IF(jm.NE.jg) iret=41
                    +
                    1311  ENDIF
                    +
                    1312  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1313  ! SET PARAMETERS
                    +
                    1314  IF(iret.EQ.0) THEN
                    +
                    1315  iromb=ipopt(1)
                    +
                    1316  maxwv=ipopt(2)
                    +
                    1317  IF(maxwv.EQ.-1) THEN
                    +
                    1318  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    +
                    1319  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    +
                    1320  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    +
                    1321  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    +
                    1322  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    +
                    1323  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    +
                    1324  ENDIF
                    +
                    1325  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    +
                    1326  ENDIF
                    +
                    1327  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1328  ! INTERPOLATE
                    +
                    1329  IF(iret.EQ.0) THEN
                    +
                    1330  IF(nscan.EQ.0) THEN
                    +
                    1331  iskipi=1
                    +
                    1332  jskipi=im
                    +
                    1333  ELSE
                    +
                    1334  iskipi=jm
                    +
                    1335  jskipi=1
                    +
                    1336  ENDIF
                    +
                    1337  IF(iscan.EQ.1) iskipi=-iskipi
                    +
                    1338  IF(jscan.EQ.0) jskipi=-jskipi
                    +
                    1339  ispec=0
                    +
                    1340  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    +
                    1341  IF((kgdso(1).EQ.0.OR.kgdso(1).EQ.4).AND. &
                    +
                    1342  mod(kgdso(2),2).EQ.0.AND.kgdso(5).EQ.0.AND. &
                    +
                    1343  kgdso(11).EQ.0) THEN
                    +
                    1344  idrto=kgdso(1)
                    +
                    1345  imo=kgdso(2)
                    +
                    1346  jmo=kgdso(3)
                    +
                    1347  rlon2=kgdso(8)*1.e-3
                    +
                    1348  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    +
                    1349  igo=nint(360/abs(dlono))
                    +
                    1350  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    +
                    1351  rlat1=kgdso(4)*1.e-3
                    +
                    1352  rlat2=kgdso(7)*1.e-3
                    +
                    1353  dlat=(rlat2-rlat1)/(jmo-1)
                    +
                    1354  jgo=nint(180/abs(dlat))
                    +
                    1355  IF(jmo.EQ.jgo) idrto=256
                    +
                    1356  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    +
                    1357  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    +
                    1358  jgo=kgdso(10)*2
                    +
                    1359  IF(jmo.EQ.jgo) ispec=1
                    +
                    1360  ENDIF
                    +
                    1361  IF(ispec.EQ.1) THEN
                    +
                    1362  CALL sptrunv(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    +
                    1363  km,iprime,iskipi,jskipi,mi,0,0,mo,0,ui,vi, &
                    +
                    1364  .true.,uo,vo,.false.,dumm,dumm,.false.,dumm,dumm)
                    +
                    1365  ENDIF
                    +
                    1366  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    +
                    1367  ELSEIF(kgdso(1).EQ.5.AND. &
                    +
                    1368  kgdso(2).EQ.kgdso(3).AND.mod(kgdso(2),2).EQ.1.AND. &
                    +
                    1369  kgdso(8).EQ.kgdso(9).AND.kgdso(11).EQ.64.AND. &
                    +
                    1370  mod(kgdso(6)/8,2).EQ.1) THEN
                    +
                    1371  nps=kgdso(2)
                    +
                    1372  rlat1=kgdso(4)*1.e-3
                    +
                    1373  rlon1=kgdso(5)*1.e-3
                    +
                    1374  orient=kgdso(7)*1.e-3
                    +
                    1375  xmesh=kgdso(8)
                    +
                    1376  iproj=mod(kgdso(10)/128,2)
                    +
                    1377  ip=(nps+1)/2
                    +
                    1378  h=(-1.)**iproj
                    +
                    1379  de=(1.+sin(60./dpr))*rerth
                    +
                    1380  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    +
                    1381  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    +
                    1382  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    +
                    1383  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    +
                    1384  IF(iproj.EQ.0) THEN
                    +
                    1385  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    1386  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1387  60.,xmesh,orient,ui,vi,.true.,uo,vo,uo2,vo2, &
                    +
                    1388  .false.,dumm,dumm,dumm,dumm, &
                    +
                    1389  .false.,dumm,dumm,dumm,dumm)
                    +
                    1390  ELSE
                    +
                    1391  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    1392  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1393  60.,xmesh,orient,ui,vi,.true.,uo2,vo2,uo,vo, &
                    +
                    1394  .false.,dumm,dumm,dumm,dumm, &
                    +
                    1395  .false.,dumm,dumm,dumm,dumm)
                    +
                    1396  ENDIF
                    +
                    1397  ispec=1
                    +
                    1398  ENDIF
                    +
                    1399  ! SPECIAL CASE OF MERCATOR GRID
                    +
                    1400  ELSEIF(kgdso(1).EQ.1) THEN
                    +
                    1401  ni=kgdso(2)
                    +
                    1402  nj=kgdso(3)
                    +
                    1403  rlat1=kgdso(4)*1.e-3
                    +
                    1404  rlon1=kgdso(5)*1.e-3
                    +
                    1405  rlon2=kgdso(8)*1.e-3
                    +
                    1406  rlati=kgdso(9)*1.e-3
                    +
                    1407  iscano=mod(kgdso(11)/128,2)
                    +
                    1408  jscano=mod(kgdso(11)/64,2)
                    +
                    1409  nscano=mod(kgdso(11)/32,2)
                    +
                    1410  dy=kgdso(13)
                    +
                    1411  hi=(-1.)**iscano
                    +
                    1412  hj=(-1.)**(1-jscano)
                    +
                    1413  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    +
                    1414  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    +
                    1415  IF(nscano.EQ.0) THEN
                    +
                    1416  CALL sptrunmv(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    +
                    1417  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1418  rlat1,rlon1,dlato,dlono,ui,vi, &
                    +
                    1419  .true.,uo,vo,.false.,dumm,dumm,.false.,dumm,dumm)
                    +
                    1420  ispec=1
                    +
                    1421  ENDIF
                    +
                    1422  ENDIF
                    +
                    1423  ! GENERAL SLOW CASE
                    +
                    1424  IF(ispec.EQ.0) THEN
                    +
                    1425  CALL sptrungv(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    +
                    1426  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon, &
                    +
                    1427  ui,vi,.true.,uo,vo,.false.,dumm,dumm,.false.,dumm,dumm)
                    +
                    1428  DO k=1,km
                    +
                    1429  ibo(k)=0
                    +
                    1430  DO n=1,no
                    +
                    1431  lo(n,k)=.true.
                    +
                    1432  urot=crot(n)*uo(n,k)-srot(n)*vo(n,k)
                    +
                    1433  vrot=srot(n)*uo(n,k)+crot(n)*vo(n,k)
                    +
                    1434  uo(n,k)=urot
                    +
                    1435  vo(n,k)=vrot
                    +
                    1436  ENDDO
                    +
                    1437  ENDDO
                    +
                    1438  ENDIF
                    +
                    1439  ELSE
                    +
                    1440  DO k=1,km
                    +
                    1441  ibo(k)=1
                    +
                    1442  DO n=1,no
                    +
                    1443  lo(n,k)=.false.
                    +
                    1444  uo(n,k)=0.
                    +
                    1445  vo(n,k)=0.
                    +
                    1446  ENDDO
                    +
                    1447  ENDDO
                    +
                    1448  ENDIF
                    +
                    1449  END SUBROUTINE polatev4_grib1
                    +
                    1450 end module spectral_interp_mod
                    - - - + + +
                    Determine earth radius and shape.
                    subroutine, public earth_radius(IGDTMPL, IGDTLEN, RADIUS, ECCEN_SQUARED)
                    Determine earth radius and shape.
                    Driver module for gdswzd routines.
                    Definition: gdswzd_mod.F90:25
                    @@ -1133,12 +1134,12 @@
                    Routines for creating an ip_grid given a Grib descriptor.
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    Interpolate spectral.
                    -
                    subroutine polatev4_grib2(IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate vector fields (spectral).
                    -
                    subroutine interpolate_spectral_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate spectral scalar.
                    -
                    subroutine polates4_grib2(IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate scalar fields (spectral).
                    -
                    subroutine polates4_grib1(IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate scalar fields (spectral).
                    -
                    subroutine interpolate_spectral_vector(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate spectral vector.
                    -
                    subroutine polatev4_grib1(IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate vector fields (spectral).
                    +
                    subroutine polatev4_grib2(IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate vector fields (spectral).
                    +
                    subroutine interpolate_spectral_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate spectral scalar.
                    +
                    subroutine polates4_grib2(IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate scalar fields (spectral).
                    +
                    subroutine polates4_grib1(IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate scalar fields (spectral).
                    +
                    subroutine interpolate_spectral_vector(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate spectral vector.
                    +
                    subroutine polatev4_grib1(IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate vector fields (spectral).
                    subroutine sptrun(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRIDI, GRIDO)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptrun.f:58
                    subroutine sptrung(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NRSKIP, NGSKIP, JCPU, RLAT, RLON, GRIDI, GP)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptrung.f:68
                    subroutine sptrungv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NRSKIP, NGSKIP, JCPU, RLAT, RLON, GRIDUI, GRIDVI, LUV, UP, VP, LDZ, DP, ZP, LPS, PP, SP)
                    THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTORS FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELD...
                    Definition: sptrungv.f:85
                    @@ -1149,7 +1150,7 @@
                    subroutine sptrunv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRIDUI, GRIDVI, LUV, GRIDUO, GRIDVO, LDZ, GRIDDO, GRIDZO, LPS, GRIDPO, GRIDSO)
                    This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields...
                    Definition: sptrunv.f:96
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    Grib-2 descriptor containing a grib2 GDT represented by an integer array.
                    -
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:58
                    diff --git a/speps_8f.html b/speps_8f.html index 684d2fad..c56a4928 100644 --- a/speps_8f.html +++ b/speps_8f.html @@ -26,7 +26,7 @@ diff --git a/speps_8f_source.html b/speps_8f_source.html index 1b2a8af4..27153cbd 100644 --- a/speps_8f_source.html +++ b/speps_8f_source.html @@ -26,7 +26,7 @@ diff --git a/spfft1_8f.html b/spfft1_8f.html index 4ab7b4fc..1aae07f9 100644 --- a/spfft1_8f.html +++ b/spfft1_8f.html @@ -26,7 +26,7 @@ @@ -189,7 +189,7 @@

                    Definition at line 32 of file spfft1.f.

                    -

                    References scrft(), and srcft().

                    +

                    References scrft(), and srcft().

                    diff --git a/spfft1_8f_source.html b/spfft1_8f_source.html index ff1f1efe..7e233e21 100644 --- a/spfft1_8f_source.html +++ b/spfft1_8f_source.html @@ -26,7 +26,7 @@

                    @@ -121,32 +121,35 @@
                    33  IMPLICIT NONE
                    34  INTEGER,INTENT(IN):: IMAX,INCW,INCG,KMAX,IDIR
                    35  COMPLEX,INTENT(INOUT):: W(INCW,KMAX)
                    -
                    36  REAL,INTENT(INOUT):: G(INCG,KMAX)
                    -
                    37  REAL:: AUX1(25000+INT(0.82*IMAX))
                    -
                    38  REAL:: AUX2(20000+INT(0.57*IMAX))
                    -
                    39  INTEGER:: NAUX1,NAUX2
                    -
                    40 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    41  naux1=25000+int(0.82*imax)
                    -
                    42  naux2=20000+int(0.57*imax)
                    -
                    43 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    44 C FOURIER TO PHYSICAL TRANSFORM.
                    -
                    45  SELECT CASE(idir)
                    -
                    46  CASE(1:)
                    -
                    47  CALL scrft(1,w,incw,g,incg,imax,kmax,-1,1.,
                    -
                    48  & aux1,naux1,aux2,naux2,0.,0)
                    -
                    49  CALL scrft(0,w,incw,g,incg,imax,kmax,-1,1.,
                    +
                    36  REAL:: WREAL(INCW,KMAX)
                    +
                    37  REAL,INTENT(INOUT):: G(INCG,KMAX)
                    +
                    38  REAL:: AUX1(25000+INT(0.82*IMAX))
                    +
                    39  REAL:: AUX2(20000+INT(0.57*IMAX))
                    +
                    40  INTEGER:: NAUX1,NAUX2
                    +
                    41 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    42  naux1=25000+int(0.82*imax)
                    +
                    43  naux2=20000+int(0.57*imax)
                    +
                    44  wreal=real(w)
                    +
                    45 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    46 C FOURIER TO PHYSICAL TRANSFORM.
                    +
                    47  SELECT CASE(idir)
                    +
                    48  CASE(1:)
                    +
                    49  CALL scrft(1,real(w),incw,g,incg,imax,kmax,-1,1.,
                    50  & aux1,naux1,aux2,naux2,0.,0)
                    -
                    51 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    52 C PHYSICAL TO FOURIER TRANSFORM.
                    -
                    53  CASE(:-1)
                    -
                    54  CALL srcft(1,g,incg,w,incw,imax,kmax,+1,1./imax,
                    -
                    55  & aux1,naux1,aux2,naux2,0.,0)
                    -
                    56  CALL srcft(0,g,incg,w,incw,imax,kmax,+1,1./imax,
                    +
                    51  CALL scrft(0,real(w),incw,g,incg,imax,kmax,-1,1.,
                    +
                    52  & aux1,naux1,aux2,naux2,0.,0)
                    +
                    53 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    54 C PHYSICAL TO FOURIER TRANSFORM.
                    +
                    55  CASE(:-1)
                    +
                    56  CALL srcft(1,g,incg,wreal,incw,imax,kmax,+1,1./imax,
                    57  & aux1,naux1,aux2,naux2,0.,0)
                    -
                    58  END SELECT
                    -
                    59  END SUBROUTINE
                    -
                    subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    scrft
                    Definition: fftpack.F:80
                    -
                    subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    srcft
                    Definition: fftpack.F:209
                    +
                    58  CALL srcft(0,g,incg,wreal,incw,imax,kmax,+1,1./imax,
                    +
                    59  & aux1,naux1,aux2,naux2,0.,0)
                    +
                    60  END SELECT
                    +
                    61  w=cmplx(wreal,0.0)
                    +
                    62  END SUBROUTINE
                    +
                    subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    scrft
                    Definition: fftpack.F:82
                    +
                    subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    srcft
                    Definition: fftpack.F:215
                    subroutine spfft1(IMAX, INCW, INCG, KMAX, W, G, IDIR)
                    This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space...
                    Definition: spfft1.f:33
                    diff --git a/spfft_8f.html b/spfft_8f.html index 6b9a9edf..6bc0daab 100644 --- a/spfft_8f.html +++ b/spfft_8f.html @@ -26,7 +26,7 @@ @@ -190,7 +190,7 @@

                    Definition at line 40 of file spfft.f.

                    -

                    References scrft(), and srcft().

                    +

                    References scrft(), and srcft().

                    diff --git a/spfft_8f_source.html b/spfft_8f_source.html index 37cb9c8a..8fbb20e0 100644 --- a/spfft_8f_source.html +++ b/spfft_8f_source.html @@ -26,7 +26,7 @@

                    @@ -130,39 +130,42 @@
                    42  IMPLICIT NONE
                    43  INTEGER,INTENT(IN):: IMAX,INCW,INCG,KMAX,IDIR
                    44  COMPLEX,INTENT(INOUT):: W(INCW,KMAX)
                    -
                    45  REAL,INTENT(INOUT):: G(INCG,KMAX)
                    -
                    46  INTEGER,SAVE:: NAUX1=0
                    -
                    47  REAL,SAVE,ALLOCATABLE:: AUX1CR(:),AUX1RC(:)
                    -
                    48  INTEGER:: NAUX2
                    -
                    49  REAL:: AUX2(20000+INT(0.57*IMAX))
                    -
                    50 
                    -
                    51  naux2=20000+int(0.57*imax)
                    -
                    52 
                    -
                    53 C INITIALIZATION.
                    -
                    54 C ALLOCATE AND FILL AUXILIARY ARRAYS WITH TRIGONOMETRIC DATA
                    -
                    55  SELECT CASE(idir)
                    -
                    56  CASE(0)
                    -
                    57  IF(naux1.GT.0) DEALLOCATE(aux1cr,aux1rc)
                    -
                    58  naux1=25000+int(0.82*imax)
                    -
                    59  ALLOCATE(aux1cr(naux1),aux1rc(naux1))
                    -
                    60  CALL scrft(1,w,incw,g,incg,imax,kmax,-1,1.,
                    -
                    61  & aux1cr,naux1,aux2,naux2,0.,0)
                    -
                    62  CALL srcft(1,g,incg,w,incw,imax,kmax,+1,1./imax,
                    -
                    63  & aux1rc,naux1,aux2,naux2,0.,0)
                    -
                    64 
                    -
                    65 C FOURIER TO PHYSICAL TRANSFORM.
                    -
                    66  CASE(1:)
                    -
                    67  CALL scrft(0,w,incw,g,incg,imax,kmax,-1,1.,
                    -
                    68  & aux1cr,naux1,aux2,naux2,0.,0)
                    -
                    69 
                    -
                    70 C PHYSICAL TO FOURIER TRANSFORM.
                    -
                    71  CASE(:-1)
                    -
                    72  CALL srcft(0,g,incg,w,incw,imax,kmax,+1,1./imax,
                    -
                    73  & aux1rc,naux1,aux2,naux2,0.,0)
                    -
                    74  END SELECT
                    -
                    75  END SUBROUTINE
                    -
                    subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    scrft
                    Definition: fftpack.F:80
                    -
                    subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    srcft
                    Definition: fftpack.F:209
                    +
                    45  REAL:: WREAL(INCW,KMAX)
                    +
                    46  REAL,INTENT(INOUT):: G(INCG,KMAX)
                    +
                    47  INTEGER,SAVE:: NAUX1=0
                    +
                    48  REAL,SAVE,ALLOCATABLE:: AUX1CR(:),AUX1RC(:)
                    +
                    49  INTEGER:: NAUX2
                    +
                    50  REAL:: AUX2(20000+INT(0.57*IMAX))
                    +
                    51 
                    +
                    52  naux2=20000+int(0.57*imax)
                    +
                    53 
                    +
                    54  wreal=real(w)
                    +
                    55 C INITIALIZATION.
                    +
                    56 C ALLOCATE AND FILL AUXILIARY ARRAYS WITH TRIGONOMETRIC DATA
                    +
                    57  SELECT CASE(idir)
                    +
                    58  CASE(0)
                    +
                    59  IF(naux1.GT.0) DEALLOCATE(aux1cr,aux1rc)
                    +
                    60  naux1=25000+int(0.82*imax)
                    +
                    61  ALLOCATE(aux1cr(naux1),aux1rc(naux1))
                    +
                    62  CALL scrft(1,wreal,incw,g,incg,imax,kmax,-1,1.,
                    +
                    63  & aux1cr,naux1,aux2,naux2,0.,0)
                    +
                    64  CALL srcft(1,g,incg,wreal,incw,imax,kmax,+1,1./imax,
                    +
                    65  & aux1rc,naux1,aux2,naux2,0.,0)
                    +
                    66 
                    +
                    67 C FOURIER TO PHYSICAL TRANSFORM.
                    +
                    68  CASE(1:)
                    +
                    69  CALL scrft(0,wreal,incw,g,incg,imax,kmax,-1,1.,
                    +
                    70  & aux1cr,naux1,aux2,naux2,0.,0)
                    +
                    71 
                    +
                    72 C PHYSICAL TO FOURIER TRANSFORM.
                    +
                    73  CASE(:-1)
                    +
                    74  CALL srcft(0,g,incg,wreal,incw,imax,kmax,+1,1./imax,
                    +
                    75  & aux1rc,naux1,aux2,naux2,0.,0)
                    +
                    76  END SELECT
                    +
                    77  w=cmplx(wreal)
                    +
                    78  END SUBROUTINE
                    +
                    subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    scrft
                    Definition: fftpack.F:82
                    +
                    subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    srcft
                    Definition: fftpack.F:215
                    subroutine spfft(IMAX, INCW, INCG, KMAX, W, G, IDIR)
                    This subprogram performs multiple fast fourier transforms between complex amplitudes in fourier space...
                    Definition: spfft.f:41
                    diff --git a/spffte_8f.html b/spffte_8f.html index 34bf6596..4710a7b0 100644 --- a/spffte_8f.html +++ b/spffte_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Perform multiple fast Fourier transforms.

                    -

                    +

                    Program History Log

                    @@ -208,7 +208,7 @@

                    Definition at line 48 of file spffte.f.

                    -

                    References dcrft(), drcft(), scrft(), and srcft().

                    +

                    References dcrft(), drcft(), scrft(), and srcft().

                    Referenced by sptranf0(), and sptranf1().

                    diff --git a/spffte_8f_source.html b/spffte_8f_source.html index 463652f3..69d39699 100644 --- a/spffte_8f_source.html +++ b/spffte_8f_source.html @@ -26,7 +26,7 @@

                    @@ -139,90 +139,93 @@
                    51  REAL,INTENT(INOUT):: W(2*INCW,KMAX)
                    52  REAL,INTENT(INOUT):: G(INCG,KMAX)
                    53  REAL(8),INTENT(INOUT):: AFFT(50000+4*IMAX)
                    -
                    54  INTEGER:: INIT,INC2X,INC2Y,N,M,ISIGN,NAUX1,NAUX2,NAUX3
                    -
                    55 C ==EM== ^(4)
                    -
                    56  REAL:: SCALE
                    -
                    57  REAL(8):: AUX2(20000+2*IMAX),AUX3
                    -
                    58  INTEGER:: IACR,IARC
                    -
                    59 
                    -
                    60  naux1=25000+2*imax
                    -
                    61  naux2=20000+2*imax
                    -
                    62  naux3=1
                    -
                    63  iacr=1
                    -
                    64  iarc=1+naux1
                    -
                    65 
                    -
                    66 C INITIALIZATION.
                    -
                    67 C FILL AUXILIARY ARRAYS WITH TRIGONOMETRIC DATA
                    -
                    68  SELECT CASE(idir)
                    -
                    69  CASE(0)
                    -
                    70  init=1
                    -
                    71  inc2x=incw
                    -
                    72  inc2y=incg
                    -
                    73  n=imax
                    -
                    74  m=kmax
                    -
                    75  isign=-1
                    -
                    76  scale=1.
                    -
                    77  IF(digits(1.).LT.digits(1._8)) THEN
                    -
                    78  CALL scrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    -
                    79  & afft(iacr),naux1,aux2,naux2,aux3,naux3)
                    -
                    80  ELSE
                    -
                    81  CALL dcrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    -
                    82  & afft(iacr),naux1,aux2,naux2)
                    -
                    83  ENDIF
                    -
                    84  init=1
                    -
                    85  inc2x=incg
                    -
                    86  inc2y=incw
                    -
                    87  n=imax
                    -
                    88  m=kmax
                    -
                    89  isign=+1
                    -
                    90  scale=1./imax
                    -
                    91  IF(digits(1.).LT.digits(1._8)) THEN
                    -
                    92  CALL srcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    -
                    93  & afft(iarc),naux1,aux2,naux2,aux3,naux3)
                    -
                    94  ELSE
                    -
                    95  CALL drcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    -
                    96  & afft(iarc),naux1,aux2,naux2)
                    -
                    97  ENDIF
                    -
                    98 
                    -
                    99 C FOURIER TO PHYSICAL TRANSFORM.
                    -
                    100  CASE(1:)
                    -
                    101  init=0
                    -
                    102  inc2x=incw
                    -
                    103  inc2y=incg
                    -
                    104  n=imax
                    -
                    105  m=kmax
                    -
                    106  isign=-1
                    -
                    107  scale=1.
                    -
                    108  IF(digits(1.).LT.digits(1._8)) THEN
                    -
                    109  CALL scrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    -
                    110  & afft(iacr),naux1,aux2,naux2,aux3,naux3)
                    -
                    111  ELSE
                    -
                    112  CALL dcrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    -
                    113  & afft(iacr),naux1,aux2,naux2)
                    -
                    114  ENDIF
                    -
                    115 
                    -
                    116 C PHYSICAL TO FOURIER TRANSFORM.
                    -
                    117  CASE(:-1)
                    -
                    118  init=0
                    -
                    119  inc2x=incg
                    -
                    120  inc2y=incw
                    -
                    121  n=imax
                    -
                    122  m=kmax
                    -
                    123  isign=+1
                    -
                    124  scale=1./imax
                    -
                    125  IF(digits(1.).LT.digits(1._8)) THEN
                    -
                    126  CALL srcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    -
                    127  & afft(iarc),naux1,aux2,naux2,aux3,naux3)
                    -
                    128  ELSE
                    -
                    129  CALL drcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    -
                    130  & afft(iarc),naux1,aux2,naux2)
                    -
                    131  ENDIF
                    -
                    132  END SELECT
                    -
                    133  END SUBROUTINE
                    -
                    subroutine drcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    drcft
                    Definition: fftpack.F:160
                    +
                    54  REAL:: AFFTR(50000+4*IMAX)
                    +
                    55  INTEGER:: INIT,INC2X,INC2Y,N,M,ISIGN,NAUX1,NAUX2,NAUX3
                    +
                    56 C ==EM== ^(4)
                    +
                    57  REAL:: SCALE
                    +
                    58  REAL :: AUX2(20000+2*IMAX),AUX3
                    +
                    59  INTEGER:: IACR,IARC
                    +
                    60 
                    +
                    61  naux1=25000+2*imax
                    +
                    62  naux2=20000+2*imax
                    +
                    63  naux3=1
                    +
                    64  iacr=1
                    +
                    65  iarc=1+naux1
                    +
                    66  afftr=real(afft)
                    +
                    67 
                    +
                    68 C INITIALIZATION.
                    +
                    69 C FILL AUXILIARY ARRAYS WITH TRIGONOMETRIC DATA
                    +
                    70  SELECT CASE(idir)
                    +
                    71  CASE(0)
                    +
                    72  init=1
                    +
                    73  inc2x=incw
                    +
                    74  inc2y=incg
                    +
                    75  n=imax
                    +
                    76  m=kmax
                    +
                    77  isign=-1
                    +
                    78  scale=1.
                    +
                    79  IF(digits(1.).LT.digits(1._8)) THEN
                    +
                    80  CALL scrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    +
                    81  & afftr(iacr),naux1,aux2,naux2,aux3,naux3)
                    +
                    82  ELSE
                    +
                    83  CALL dcrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    +
                    84  & afftr(iacr),naux1,aux2,naux2)
                    +
                    85  ENDIF
                    +
                    86  init=1
                    +
                    87  inc2x=incg
                    +
                    88  inc2y=incw
                    +
                    89  n=imax
                    +
                    90  m=kmax
                    +
                    91  isign=+1
                    +
                    92  scale=1./imax
                    +
                    93  IF(digits(1.).LT.digits(1._8)) THEN
                    +
                    94  CALL srcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    +
                    95  & afftr(iarc),naux1,aux2,naux2,aux3,naux3)
                    +
                    96  ELSE
                    +
                    97  CALL drcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    +
                    98  & afftr(iarc),naux1,aux2,naux2)
                    +
                    99  ENDIF
                    +
                    100 
                    +
                    101 C FOURIER TO PHYSICAL TRANSFORM.
                    +
                    102  CASE(1:)
                    +
                    103  init=0
                    +
                    104  inc2x=incw
                    +
                    105  inc2y=incg
                    +
                    106  n=imax
                    +
                    107  m=kmax
                    +
                    108  isign=-1
                    +
                    109  scale=1.
                    +
                    110  IF(digits(1.).LT.digits(1._8)) THEN
                    +
                    111  CALL scrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    +
                    112  & afftr(iacr),naux1,aux2,naux2,aux3,naux3)
                    +
                    113  ELSE
                    +
                    114  CALL dcrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    +
                    115  & afftr(iacr),naux1,aux2,naux2)
                    +
                    116  ENDIF
                    +
                    117 
                    +
                    118 C PHYSICAL TO FOURIER TRANSFORM.
                    +
                    119  CASE(:-1)
                    +
                    120  init=0
                    +
                    121  inc2x=incg
                    +
                    122  inc2y=incw
                    +
                    123  n=imax
                    +
                    124  m=kmax
                    +
                    125  isign=+1
                    +
                    126  scale=1./imax
                    +
                    127  IF(digits(1.).LT.digits(1._8)) THEN
                    +
                    128  CALL srcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    +
                    129  & afftr(iarc),naux1,aux2,naux2,aux3,naux3)
                    +
                    130  ELSE
                    +
                    131  CALL drcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    +
                    132  & afftr(iarc),naux1,aux2,naux2)
                    +
                    133  ENDIF
                    +
                    134  END SELECT
                    +
                    135  afft=real(afftr,kind=8)
                    +
                    136  END SUBROUTINE
                    +
                    subroutine drcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    drcft
                    Definition: fftpack.F:164
                    subroutine dcrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    dcrft
                    Definition: fftpack.F:34
                    -
                    subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    scrft
                    Definition: fftpack.F:80
                    -
                    subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    srcft
                    Definition: fftpack.F:209
                    +
                    subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    scrft
                    Definition: fftpack.F:82
                    +
                    subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    srcft
                    Definition: fftpack.F:215
                    subroutine spffte(IMAX, INCW, INCG, KMAX, W, G, IDIR, AFFT)
                    This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space...
                    Definition: spffte.f:49
                    diff --git a/spfftpt_8f.html b/spfftpt_8f.html index 2a132f4a..795ad261 100644 --- a/spfftpt_8f.html +++ b/spfftpt_8f.html @@ -26,7 +26,7 @@ diff --git a/spfftpt_8f_source.html b/spfftpt_8f_source.html index 5d0ac32a..d5574160 100644 --- a/spfftpt_8f_source.html +++ b/spfftpt_8f_source.html @@ -26,7 +26,7 @@ diff --git a/spgradq_8f.html b/spgradq_8f.html index bba0b0aa..b1495d40 100644 --- a/spgradq_8f.html +++ b/spgradq_8f.html @@ -26,7 +26,7 @@ diff --git a/spgradq_8f_source.html b/spgradq_8f_source.html index 6917638a..b1b29ede 100644 --- a/spgradq_8f_source.html +++ b/spgradq_8f_source.html @@ -26,7 +26,7 @@ diff --git a/spgradx_8f.html b/spgradx_8f.html index b239b9d5..f18a6604 100644 --- a/spgradx_8f.html +++ b/spgradx_8f.html @@ -26,7 +26,7 @@ diff --git a/spgradx_8f_source.html b/spgradx_8f_source.html index 59190c5b..32de9c2d 100644 --- a/spgradx_8f_source.html +++ b/spgradx_8f_source.html @@ -26,7 +26,7 @@ diff --git a/spgrady_8f.html b/spgrady_8f.html index 83ba029d..fa75c33c 100644 --- a/spgrady_8f.html +++ b/spgrady_8f.html @@ -26,7 +26,7 @@ diff --git a/spgrady_8f_source.html b/spgrady_8f_source.html index dc6a635b..1d44b973 100644 --- a/spgrady_8f_source.html +++ b/spgrady_8f_source.html @@ -26,7 +26,7 @@ diff --git a/splaplac_8f.html b/splaplac_8f.html index 538bcfe4..3589a880 100644 --- a/splaplac_8f.html +++ b/splaplac_8f.html @@ -26,7 +26,7 @@ diff --git a/splaplac_8f_source.html b/splaplac_8f_source.html index 9a37b1cd..d73b3247 100644 --- a/splaplac_8f_source.html +++ b/splaplac_8f_source.html @@ -26,7 +26,7 @@ diff --git a/splat_8F.html b/splat_8F.html index 8ea153e4..dc01b1de 100644 --- a/splat_8F.html +++ b/splat_8F.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Computes cosines of colatitude and Gaussian weights for sets of latitudes.

                    -

                    +

                    Program History Log

                    @@ -195,9 +195,7 @@

                    Definition at line 45 of file splat.F.

                    -

                    References lubksb(), and ludcmp().

                    - -

                    Referenced by ip_gaussian_grid_mod::gdswzd_gaussian(), and sptranf0().

                    +

                    Referenced by ip_gaussian_grid_mod::gdswzd_gaussian(), and sptranf0().

                    diff --git a/splat_8F_source.html b/splat_8F_source.html index 1462fab7..f1408b6e 100644 --- a/splat_8F_source.html +++ b/splat_8F_source.html @@ -26,7 +26,7 @@

                    @@ -152,7 +152,7 @@
                    64  $ 146.870307625, 150.011882457, 153.153458019, 156.295034268 /
                    65  REAL:: DLT,D1=1.
                    66  REAL AWORK((JMAX+1)/2,((JMAX+1)/2)),BWORK(((JMAX+1)/2))
                    -
                    67  INTEGER:: JHE,JHO,J0=0
                    +
                    67  INTEGER:: JHE,JHO,INFO
                    68  INTEGER IPVT((JMAX+1)/2)
                    69  parameter(pi=3.14159265358979,c=(1.-(2./pi)**2)*0.25)
                    70 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    @@ -189,8 +189,8 @@
                    101  ENDDO
                    102 CDIR$ IVDEP
                    103  DO j=1,jh
                    -
                    104  slat(j)=slatd(j)
                    -
                    105  wlat(j)=(2.*(1.-slatd(j)**2))/(jmax*pkm1(j))**2
                    +
                    104  slat(j)=real(slatd(j))
                    +
                    105  wlat(j)=real((2.*(1.-slatd(j)**2))/(jmax*pkm1(j))**2)
                    106  slat(jmax+1-j)=-slat(j)
                    107  wlat(jmax+1-j)=wlat(j)
                    108  ENDDO
                    @@ -221,65 +221,75 @@
                    133  bwork(js)=-d1/(4*(js-1)**2-1)
                    134  ENDDO
                    135 
                    -
                    136  call ludcmp(awork,jho,jhe,ipvt)
                    -
                    137  call lubksb(awork,jho,jhe,ipvt,bwork)
                    -
                    138 
                    -
                    139  wlat(1)=0.
                    -
                    140  DO j=1,jho
                    -
                    141  wlat(j+1)=bwork(j)
                    -
                    142  ENDDO
                    -
                    143 CDIR$ IVDEP
                    -
                    144  DO j=1,jh
                    -
                    145  print *, j, jmax, jmax+1-j
                    -
                    146  slat(jmax+1-j)=-slat(j)
                    -
                    147  wlat(jmax+1-j)=wlat(j)
                    +
                    136  ! Call LAPACK routines
                    +
                    137 #if (LSIZE==4)
                    +
                    138  CALL sgetrf(jho, jho, awork, jhe, ipvt, info)
                    +
                    139  CALL sgetrs('N', jho, 1, awork, jhe, ipvt, bwork, jho, info)
                    +
                    140 #else
                    +
                    141  CALL dgetrf(jho, jho, awork, jhe, ipvt, info)
                    +
                    142  CALL dgetrs('N', jho, 1, awork, jhe, ipvt, bwork, jho, info)
                    +
                    143 #endif
                    +
                    144 
                    +
                    145  wlat(1)=0.
                    +
                    146  DO j=1,jho
                    +
                    147  wlat(j+1)=bwork(j)
                    148  ENDDO
                    -
                    149  IF(jhe.GT.jh) THEN
                    -
                    150  slat(jhe)=0.
                    -
                    151  wlat(jhe)=2.*wlat(jhe)
                    -
                    152  ENDIF
                    -
                    153 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    154 C EQUALLY-SPACED LATITUDES EXCLUDING POLES
                    -
                    155  ELSEIF(idrt.EQ.256) THEN
                    -
                    156  jh=jmax/2
                    -
                    157  jhe=(jmax+1)/2
                    -
                    158  jho=jhe
                    -
                    159  dlt=pi/jmax
                    -
                    160  slat(1)=1.
                    -
                    161  DO j=1,jh
                    -
                    162  slat(j)=cos((j-0.5)*dlt)
                    -
                    163  ENDDO
                    -
                    164  DO js=1,jho
                    -
                    165  DO j=1,jho
                    -
                    166  awork(js,j)=cos(2*(js-1)*(j-0.5)*dlt)
                    -
                    167  ENDDO
                    -
                    168  ENDDO
                    -
                    169  DO js=1,jho
                    -
                    170  bwork(js)=-d1/(4*(js-1)**2-1)
                    -
                    171  ENDDO
                    -
                    172 
                    -
                    173  call ludcmp(awork,jho,jhe,ipvt,d)
                    -
                    174  call lubksb(awork,jho,jhe,ipvt,bwork)
                    -
                    175 
                    -
                    176  wlat(1)=0.
                    -
                    177  DO j=1,jho
                    -
                    178  wlat(j)=bwork(j)
                    -
                    179  ENDDO
                    -
                    180 CDIR$ IVDEP
                    -
                    181  DO j=1,jh
                    -
                    182  slat(jmax+1-j)=-slat(j)
                    -
                    183  wlat(jmax+1-j)=wlat(j)
                    -
                    184  ENDDO
                    -
                    185  IF(jhe.GT.jh) THEN
                    -
                    186  slat(jhe)=0.
                    -
                    187  wlat(jhe)=2.*wlat(jhe)
                    -
                    188  ENDIF
                    -
                    189  ENDIF
                    -
                    190 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    191  RETURN
                    -
                    192  END
                    -
                    subroutine ludcmp(A, N, NP, INDX)
                    Replaces an NxN matrix a with the LU decomposition.
                    Definition: lapack_gen.F:52
                    -
                    subroutine lubksb(A, N, NP, INDX, B)
                    Solves a system of linear equations, follows call to ludcmp().
                    Definition: lapack_gen.F:17
                    +
                    149 CDIR$ IVDEP
                    +
                    150  DO j=1,jh
                    +
                    151  print *, j, jmax, jmax+1-j
                    +
                    152  slat(jmax+1-j)=-slat(j)
                    +
                    153  wlat(jmax+1-j)=wlat(j)
                    +
                    154  ENDDO
                    +
                    155  IF(jhe.GT.jh) THEN
                    +
                    156  slat(jhe)=0.
                    +
                    157  wlat(jhe)=2.*wlat(jhe)
                    +
                    158  ENDIF
                    +
                    159 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    160 C EQUALLY-SPACED LATITUDES EXCLUDING POLES
                    +
                    161  ELSEIF(idrt.EQ.256) THEN
                    +
                    162  jh=jmax/2
                    +
                    163  jhe=(jmax+1)/2
                    +
                    164  jho=jhe
                    +
                    165  dlt=pi/jmax
                    +
                    166  slat(1)=1.
                    +
                    167  DO j=1,jh
                    +
                    168  slat(j)=cos((j-0.5)*dlt)
                    +
                    169  ENDDO
                    +
                    170  DO js=1,jho
                    +
                    171  DO j=1,jho
                    +
                    172  awork(js,j)=cos(2*(js-1)*(j-0.5)*dlt)
                    +
                    173  ENDDO
                    +
                    174  ENDDO
                    +
                    175  DO js=1,jho
                    +
                    176  bwork(js)=-d1/(4*(js-1)**2-1)
                    +
                    177  ENDDO
                    +
                    178 
                    +
                    179  ! Call LAPACK routines
                    +
                    180 #if (LSIZE==4)
                    +
                    181  CALL sgetrf(jho, jho, awork, jhe, ipvt, info)
                    +
                    182  CALL sgetrs('N', jho, 1, awork, jhe, ipvt, bwork, jho, info)
                    +
                    183 #else
                    +
                    184  CALL dgetrf(jho, jho, awork, jhe, ipvt, info)
                    +
                    185  CALL dgetrs('N', jho, 1, awork, jhe, ipvt, bwork, jho, info)
                    +
                    186 #endif
                    +
                    187 
                    +
                    188  wlat(1)=0.
                    +
                    189  DO j=1,jho
                    +
                    190  wlat(j)=bwork(j)
                    +
                    191  ENDDO
                    +
                    192 CDIR$ IVDEP
                    +
                    193  DO j=1,jh
                    +
                    194  slat(jmax+1-j)=-slat(j)
                    +
                    195  wlat(jmax+1-j)=wlat(j)
                    +
                    196  ENDDO
                    +
                    197  IF(jhe.GT.jh) THEN
                    +
                    198  slat(jhe)=0.
                    +
                    199  wlat(jhe)=2.*wlat(jhe)
                    +
                    200  ENDIF
                    +
                    201  ENDIF
                    +
                    202 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    203  RETURN
                    +
                    204  END
                    subroutine splat(IDRT, JMAX, SLAT, WLAT)
                    Computes cosines of colatitude and Gaussian weights for one of the following specific global sets of ...
                    Definition: splat.F:46
                    diff --git a/splegend_8f.html b/splegend_8f.html index eaa4c202..60627878 100644 --- a/splegend_8f.html +++ b/splegend_8f.html @@ -26,7 +26,7 @@ diff --git a/splegend_8f_source.html b/splegend_8f_source.html index cde06ce3..0259094a 100644 --- a/splegend_8f_source.html +++ b/splegend_8f_source.html @@ -26,7 +26,7 @@ @@ -135,88 +135,95 @@
                    47  REAL EPS((M+1)*((I+1)*M+2)/2),EPSTOP(M+1)
                    48  REAL PLN((M+1)*((I+1)*M+2)/2),PLNTOP(M+1)
                    49  REAL(KIND=selected_real_kind(15,45)):: dln((m+1)*((i+1)*m+2)/2)
                    -
                    50 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    51 C ITERATIVELY COMPUTE PLN WITHIN SPECTRAL DOMAIN AT POLE
                    -
                    52  m1=m+1
                    -
                    53  m2=2*m+i+1
                    -
                    54  mx=(m+1)*((i+1)*m+2)/2
                    -
                    55  IF(clat.EQ.0.) THEN
                    -
                    56  dln(1)=sqrt(0.5)
                    -
                    57  IF(m.GT.0) THEN
                    -
                    58  dln(m1+1)=sqrt(0.75)
                    -
                    59  dln(2)=slat*dln(1)/eps(2)
                    -
                    60  ENDIF
                    -
                    61  IF(m.GT.1) THEN
                    -
                    62  dln(m1+2)=slat*dln(m1+1)/eps(m1+2)
                    -
                    63  dln(3)=(slat*dln(2)-eps(2)*dln(1))/eps(3)
                    -
                    64  DO n=3,m
                    -
                    65  k=1+n
                    -
                    66  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    -
                    67  k=m1+n
                    -
                    68  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    -
                    69  ENDDO
                    -
                    70  IF(i.EQ.1) THEN
                    -
                    71  k=m2
                    -
                    72  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    -
                    73  ENDIF
                    -
                    74  DO k=m2+1,mx
                    -
                    75  dln(k)=0.
                    -
                    76  ENDDO
                    -
                    77  ENDIF
                    -
                    78 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    79 C COMPUTE POLYNOMIALS OVER TOP OF SPECTRAL DOMAIN
                    -
                    80  k=m1+1
                    -
                    81  plntop(1)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/epstop(1)
                    -
                    82  IF(m.GT.0) THEN
                    -
                    83  k=m2+1
                    -
                    84  plntop(2)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/epstop(2)
                    -
                    85  DO l=2,m
                    -
                    86  plntop(l+1)=0.
                    -
                    87  ENDDO
                    -
                    88  ENDIF
                    -
                    89 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    90 C ITERATIVELY COMPUTE PLN(L,L) (BOTTOM HYPOTENUSE OF DOMAIN)
                    -
                    91  ELSE
                    -
                    92  nml=0
                    -
                    93  k=1
                    -
                    94  dln(k)=sqrt(0.5)
                    -
                    95  DO l=1,m+(i-1)*nml
                    -
                    96  kp=k
                    -
                    97  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    -
                    98  dln(k)=dln(kp)*clat*sqrt(float(2*l+1)/float(2*l))
                    -
                    99  ENDDO
                    -
                    100 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    101 C COMPUTE PLN(L,L+1) (DIAGONAL NEXT TO BOTTOM HYPOTENUSE OF DOMAIN)
                    -
                    102  nml=1
                    -
                    103 CDIR$ IVDEP
                    -
                    104  DO l=0,m+(i-1)*nml
                    -
                    105  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    -
                    106  dln(k)=slat*dln(k-1)/eps(k)
                    -
                    107  ENDDO
                    -
                    108 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    109 C COMPUTE REMAINING PLN IN SPECTRAL DOMAIN
                    -
                    110  DO nml=2,m
                    -
                    111 CDIR$ IVDEP
                    -
                    112  DO l=0,m+(i-1)*nml
                    -
                    113  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    -
                    114  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    -
                    115  ENDDO
                    -
                    116  ENDDO
                    -
                    117 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    118 C COMPUTE POLYNOMIALS OVER TOP OF SPECTRAL DOMAIN
                    -
                    119  DO l=0,m
                    -
                    120  nml=m+1+(i-1)*l
                    -
                    121  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    -
                    122  plntop(l+1)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/epstop(l+1)
                    -
                    123  ENDDO
                    -
                    124  ENDIF
                    -
                    125 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    126 C RETURN VALUES
                    -
                    127  DO k=1,mx
                    -
                    128  pln(k)=dln(k)
                    -
                    129  ENDDO
                    -
                    130  RETURN
                    -
                    131  END
                    +
                    50  REAL :: TINYREAL=tiny(1.0), rdln1, rdln2
                    +
                    51 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    52 C ITERATIVELY COMPUTE PLN WITHIN SPECTRAL DOMAIN AT POLE
                    +
                    53  m1=m+1
                    +
                    54  m2=2*m+i+1
                    +
                    55  mx=(m+1)*((i+1)*m+2)/2
                    +
                    56  IF(abs(clat).LT.tinyreal) THEN
                    +
                    57  dln(1)=sqrt(0.5)
                    +
                    58  IF(m.GT.0) THEN
                    +
                    59  dln(m1+1)=sqrt(0.75)
                    +
                    60  dln(2)=slat*dln(1)/eps(2)
                    +
                    61  ENDIF
                    +
                    62  IF(m.GT.1) THEN
                    +
                    63  dln(m1+2)=slat*dln(m1+1)/eps(m1+2)
                    +
                    64  dln(3)=(slat*dln(2)-eps(2)*dln(1))/eps(3)
                    +
                    65  DO n=3,m
                    +
                    66  k=1+n
                    +
                    67  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    +
                    68  k=m1+n
                    +
                    69  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    +
                    70  ENDDO
                    +
                    71  IF(i.EQ.1) THEN
                    +
                    72  k=m2
                    +
                    73  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    +
                    74  ENDIF
                    +
                    75  DO k=m2+1,mx
                    +
                    76  dln(k)=0.
                    +
                    77  ENDDO
                    +
                    78  ENDIF
                    +
                    79 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    80 C COMPUTE POLYNOMIALS OVER TOP OF SPECTRAL DOMAIN
                    +
                    81  k=m1+1
                    +
                    82  rdln1=real(dln(k-1))
                    +
                    83  rdln2=real(dln(k-2))
                    +
                    84  plntop(1)=(slat*rdln1-eps(k-1)*rdln2)/epstop(1)
                    +
                    85  IF(m.GT.0) THEN
                    +
                    86  k=m2+1
                    +
                    87  rdln1=real(dln(k-1))
                    +
                    88  rdln2=real(dln(k-2))
                    +
                    89  plntop(2)=(slat*rdln1-eps(k-1)*rdln2)/epstop(2)
                    +
                    90  DO l=2,m
                    +
                    91  plntop(l+1)=0.
                    +
                    92  ENDDO
                    +
                    93  ENDIF
                    +
                    94 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    95 C ITERATIVELY COMPUTE PLN(L,L) (BOTTOM HYPOTENUSE OF DOMAIN)
                    +
                    96  ELSE
                    +
                    97  nml=0
                    +
                    98  k=1
                    +
                    99  dln(k)=sqrt(0.5)
                    +
                    100  DO l=1,m+(i-1)*nml
                    +
                    101  kp=k
                    +
                    102  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    +
                    103  dln(k)=dln(kp)*clat*sqrt(float(2*l+1)/float(2*l))
                    +
                    104  ENDDO
                    +
                    105 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    106 C COMPUTE PLN(L,L+1) (DIAGONAL NEXT TO BOTTOM HYPOTENUSE OF DOMAIN)
                    +
                    107  nml=1
                    +
                    108 CDIR$ IVDEP
                    +
                    109  DO l=0,m+(i-1)*nml
                    +
                    110  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    +
                    111  dln(k)=slat*dln(k-1)/eps(k)
                    +
                    112  ENDDO
                    +
                    113 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    114 C COMPUTE REMAINING PLN IN SPECTRAL DOMAIN
                    +
                    115  DO nml=2,m
                    +
                    116 CDIR$ IVDEP
                    +
                    117  DO l=0,m+(i-1)*nml
                    +
                    118  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    +
                    119  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    +
                    120  ENDDO
                    +
                    121  ENDDO
                    +
                    122 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    123 C COMPUTE POLYNOMIALS OVER TOP OF SPECTRAL DOMAIN
                    +
                    124  DO l=0,m
                    +
                    125  nml=m+1+(i-1)*l
                    +
                    126  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    +
                    127  rdln1=real(dln(k-1))
                    +
                    128  rdln2=real(dln(k-2))
                    +
                    129  plntop(l+1)=(slat*rdln1-eps(k-1)*rdln2)/epstop(l+1)
                    +
                    130  ENDDO
                    +
                    131  ENDIF
                    +
                    132 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    133 C RETURN VALUES
                    +
                    134  DO k=1,mx
                    +
                    135  pln(k)=real(dln(k))
                    +
                    136  ENDDO
                    +
                    137  RETURN
                    +
                    138  END
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    diff --git a/sppad_8f.html b/sppad_8f.html index 513b29a5..89bd770b 100644 --- a/sppad_8f.html +++ b/sppad_8f.html @@ -26,7 +26,7 @@ diff --git a/sppad_8f_source.html b/sppad_8f_source.html index b3429e10..fae04c86 100644 --- a/sppad_8f_source.html +++ b/sppad_8f_source.html @@ -26,7 +26,7 @@ diff --git a/spsynth_8f.html b/spsynth_8f.html index 98e123bf..f9ff4462 100644 --- a/spsynth_8f.html +++ b/spsynth_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Synthesize Fourier coefficients from spectral coefficients.

                    -

                    +

                    Program History Log

                    diff --git a/spsynth_8f_source.html b/spsynth_8f_source.html index c80d1102..7235ebde 100644 --- a/spsynth_8f_source.html +++ b/spsynth_8f_source.html @@ -26,7 +26,7 @@ @@ -129,121 +129,122 @@
                    41  INTEGER MP(KM)
                    42  REAL SPC(NC,KM),SPCTOP(NCTOP,KM)
                    43  REAL F(IX,2,KM)
                    -
                    44 
                    -
                    45 C ZERO OUT FOURIER COEFFICIENTS.
                    -
                    46  DO k=1,km
                    -
                    47  DO l=0,im/2
                    -
                    48  f(2*l+1,1,k)=0.
                    -
                    49  f(2*l+2,1,k)=0.
                    -
                    50  f(2*l+1,2,k)=0.
                    -
                    51  f(2*l+2,2,k)=0.
                    -
                    52  ENDDO
                    -
                    53  ENDDO
                    -
                    54 
                    -
                    55 C SYNTHESIS OVER POLE.
                    -
                    56 C INITIALIZE FOURIER COEFFICIENTS WITH TERMS OVER TOP OF THE SPECTRUM.
                    -
                    57 C INITIALIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    -
                    58  IF(clat.EQ.0) THEN
                    -
                    59  ltope=mod(m+1+i,2)
                    -
                    60 !C$OMP PARALLEL DO PRIVATE(LB,LE,L,KS,KP,N,F1R,F1I)
                    -
                    61  DO k=1,km
                    -
                    62  lb=mp(k)
                    -
                    63  le=mp(k)
                    -
                    64  IF(mp(k).EQ.10) THEN
                    -
                    65  lb=0
                    -
                    66  le=1
                    -
                    67  ENDIF
                    -
                    68  l=lb
                    -
                    69  IF(l.EQ.1) THEN
                    -
                    70  IF(l.EQ.ltope) THEN
                    -
                    71  f(2*l+1,1,k)=plntop(l+1)*spctop(2*l+1,k)
                    -
                    72  f(2*l+2,1,k)=plntop(l+1)*spctop(2*l+2,k)
                    -
                    73  ELSE
                    -
                    74  f(2*l+1,2,k)=plntop(l+1)*spctop(2*l+1,k)
                    -
                    75  f(2*l+2,2,k)=plntop(l+1)*spctop(2*l+2,k)
                    -
                    76  ENDIF
                    -
                    77  ENDIF
                    -
                    78 C FOR EACH ZONAL WAVENUMBER, SYNTHESIZE TERMS OVER TOTAL WAVENUMBER.
                    -
                    79 C SYNTHESIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    -
                    80  DO l=lb,le
                    -
                    81  ks=l*(2*m+(i-1)*(l-1))
                    -
                    82  kp=ks/2+1
                    -
                    83  DO n=l,i*l+m,2
                    -
                    84  f(2*l+1,1,k)=f(2*l+1,1,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    -
                    85  f(2*l+2,1,k)=f(2*l+2,1,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    -
                    86  ENDDO
                    -
                    87  DO n=l+1,i*l+m,2
                    -
                    88  f(2*l+1,2,k)=f(2*l+1,2,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    -
                    89  f(2*l+2,2,k)=f(2*l+2,2,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    -
                    90  ENDDO
                    -
                    91 C SEPARATE FOURIER COEFFICIENTS FROM EACH HEMISPHERE.
                    -
                    92 C ODD POLYNOMIALS CONTRIBUTE NEGATIVELY TO THE SOUTHERN HEMISPHERE.
                    -
                    93  f1r=f(2*l+1,1,k)
                    -
                    94  f1i=f(2*l+2,1,k)
                    -
                    95  f(2*l+1,1,k)=f1r+f(2*l+1,2,k)
                    -
                    96  f(2*l+2,1,k)=f1i+f(2*l+2,2,k)
                    -
                    97  f(2*l+1,2,k)=f1r-f(2*l+1,2,k)
                    -
                    98  f(2*l+2,2,k)=f1i-f(2*l+2,2,k)
                    -
                    99  ENDDO
                    -
                    100  ENDDO
                    -
                    101 
                    -
                    102 C SYNTHESIS OVER FINITE LATITUDE.
                    -
                    103 C INITIALIZE FOURIER COEFFICIENTS WITH TERMS OVER TOP OF THE SPECTRUM.
                    -
                    104 C INITIALIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    -
                    105  ELSE
                    -
                    106  lx=min(m,im/2)
                    -
                    107  ltope=mod(m+1,2)
                    -
                    108  ltopo=1-ltope
                    -
                    109  le=1+i*ltope
                    -
                    110  lo=2-i*ltopo
                    -
                    111 !C$OMP PARALLEL DO PRIVATE(L,KS,KP,N,F1R,F1I)
                    -
                    112  DO k=1,km
                    -
                    113  IF(mp(k).EQ.1) THEN
                    -
                    114  DO l=ltope,lx,2
                    -
                    115  f(2*l+1,le,k)=plntop(l+1)*spctop(2*l+1,k)
                    -
                    116  f(2*l+2,le,k)=plntop(l+1)*spctop(2*l+2,k)
                    -
                    117  ENDDO
                    -
                    118  DO l=ltopo,lx,2
                    -
                    119  f(2*l+1,lo,k)=plntop(l+1)*spctop(2*l+1,k)
                    -
                    120  f(2*l+2,lo,k)=plntop(l+1)*spctop(2*l+2,k)
                    -
                    121  ENDDO
                    -
                    122  ENDIF
                    -
                    123 C FOR EACH ZONAL WAVENUMBER, SYNTHESIZE TERMS OVER TOTAL WAVENUMBER.
                    -
                    124 C SYNTHESIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    -
                    125  DO l=0,lx
                    -
                    126  ks=l*(2*m+(i-1)*(l-1))
                    -
                    127  kp=ks/2+1
                    -
                    128  DO n=l,i*l+m,2
                    -
                    129  f(2*l+1,1,k)=f(2*l+1,1,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    -
                    130  f(2*l+2,1,k)=f(2*l+2,1,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    -
                    131  ENDDO
                    -
                    132  DO n=l+1,i*l+m,2
                    -
                    133  f(2*l+1,2,k)=f(2*l+1,2,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    -
                    134  f(2*l+2,2,k)=f(2*l+2,2,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    -
                    135  ENDDO
                    -
                    136  ENDDO
                    -
                    137 C SEPARATE FOURIER COEFFICIENTS FROM EACH HEMISPHERE.
                    -
                    138 C ODD POLYNOMIALS CONTRIBUTE NEGATIVELY TO THE SOUTHERN HEMISPHERE.
                    -
                    139 C DIVIDE VECTOR COMPONENTS BY COSINE LATITUDE.
                    -
                    140  DO l=0,lx
                    -
                    141  f1r=f(2*l+1,1,k)
                    -
                    142  f1i=f(2*l+2,1,k)
                    -
                    143  f(2*l+1,1,k)=f1r+f(2*l+1,2,k)
                    -
                    144  f(2*l+2,1,k)=f1i+f(2*l+2,2,k)
                    -
                    145  f(2*l+1,2,k)=f1r-f(2*l+1,2,k)
                    -
                    146  f(2*l+2,2,k)=f1i-f(2*l+2,2,k)
                    -
                    147  ENDDO
                    -
                    148  IF(mp(k).EQ.1) THEN
                    -
                    149  DO l=0,lx
                    -
                    150  f(2*l+1,1,k)=f(2*l+1,1,k)/clat
                    -
                    151  f(2*l+2,1,k)=f(2*l+2,1,k)/clat
                    -
                    152  f(2*l+1,2,k)=f(2*l+1,2,k)/clat
                    -
                    153  f(2*l+2,2,k)=f(2*l+2,2,k)/clat
                    -
                    154  ENDDO
                    -
                    155  ENDIF
                    -
                    156  ENDDO
                    -
                    157  ENDIF
                    -
                    158  END
                    +
                    44  REAL :: TINYREAL=tiny(1.0)
                    +
                    45 
                    +
                    46 C ZERO OUT FOURIER COEFFICIENTS.
                    +
                    47  DO k=1,km
                    +
                    48  DO l=0,im/2
                    +
                    49  f(2*l+1,1,k)=0.
                    +
                    50  f(2*l+2,1,k)=0.
                    +
                    51  f(2*l+1,2,k)=0.
                    +
                    52  f(2*l+2,2,k)=0.
                    +
                    53  ENDDO
                    +
                    54  ENDDO
                    +
                    55 
                    +
                    56 C SYNTHESIS OVER POLE.
                    +
                    57 C INITIALIZE FOURIER COEFFICIENTS WITH TERMS OVER TOP OF THE SPECTRUM.
                    +
                    58 C INITIALIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    +
                    59  IF(abs(clat).LT.tinyreal) THEN
                    +
                    60  ltope=mod(m+1+i,2)
                    +
                    61 !C$OMP PARALLEL DO PRIVATE(LB,LE,L,KS,KP,N,F1R,F1I)
                    +
                    62  DO k=1,km
                    +
                    63  lb=mp(k)
                    +
                    64  le=mp(k)
                    +
                    65  IF(mp(k).EQ.10) THEN
                    +
                    66  lb=0
                    +
                    67  le=1
                    +
                    68  ENDIF
                    +
                    69  l=lb
                    +
                    70  IF(l.EQ.1) THEN
                    +
                    71  IF(l.EQ.ltope) THEN
                    +
                    72  f(2*l+1,1,k)=plntop(l+1)*spctop(2*l+1,k)
                    +
                    73  f(2*l+2,1,k)=plntop(l+1)*spctop(2*l+2,k)
                    +
                    74  ELSE
                    +
                    75  f(2*l+1,2,k)=plntop(l+1)*spctop(2*l+1,k)
                    +
                    76  f(2*l+2,2,k)=plntop(l+1)*spctop(2*l+2,k)
                    +
                    77  ENDIF
                    +
                    78  ENDIF
                    +
                    79 C FOR EACH ZONAL WAVENUMBER, SYNTHESIZE TERMS OVER TOTAL WAVENUMBER.
                    +
                    80 C SYNTHESIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    +
                    81  DO l=lb,le
                    +
                    82  ks=l*(2*m+(i-1)*(l-1))
                    +
                    83  kp=ks/2+1
                    +
                    84  DO n=l,i*l+m,2
                    +
                    85  f(2*l+1,1,k)=f(2*l+1,1,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    +
                    86  f(2*l+2,1,k)=f(2*l+2,1,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    +
                    87  ENDDO
                    +
                    88  DO n=l+1,i*l+m,2
                    +
                    89  f(2*l+1,2,k)=f(2*l+1,2,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    +
                    90  f(2*l+2,2,k)=f(2*l+2,2,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    +
                    91  ENDDO
                    +
                    92 C SEPARATE FOURIER COEFFICIENTS FROM EACH HEMISPHERE.
                    +
                    93 C ODD POLYNOMIALS CONTRIBUTE NEGATIVELY TO THE SOUTHERN HEMISPHERE.
                    +
                    94  f1r=f(2*l+1,1,k)
                    +
                    95  f1i=f(2*l+2,1,k)
                    +
                    96  f(2*l+1,1,k)=f1r+f(2*l+1,2,k)
                    +
                    97  f(2*l+2,1,k)=f1i+f(2*l+2,2,k)
                    +
                    98  f(2*l+1,2,k)=f1r-f(2*l+1,2,k)
                    +
                    99  f(2*l+2,2,k)=f1i-f(2*l+2,2,k)
                    +
                    100  ENDDO
                    +
                    101  ENDDO
                    +
                    102 
                    +
                    103 C SYNTHESIS OVER FINITE LATITUDE.
                    +
                    104 C INITIALIZE FOURIER COEFFICIENTS WITH TERMS OVER TOP OF THE SPECTRUM.
                    +
                    105 C INITIALIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    +
                    106  ELSE
                    +
                    107  lx=min(m,im/2)
                    +
                    108  ltope=mod(m+1,2)
                    +
                    109  ltopo=1-ltope
                    +
                    110  le=1+i*ltope
                    +
                    111  lo=2-i*ltopo
                    +
                    112 !C$OMP PARALLEL DO PRIVATE(L,KS,KP,N,F1R,F1I)
                    +
                    113  DO k=1,km
                    +
                    114  IF(mp(k).EQ.1) THEN
                    +
                    115  DO l=ltope,lx,2
                    +
                    116  f(2*l+1,le,k)=plntop(l+1)*spctop(2*l+1,k)
                    +
                    117  f(2*l+2,le,k)=plntop(l+1)*spctop(2*l+2,k)
                    +
                    118  ENDDO
                    +
                    119  DO l=ltopo,lx,2
                    +
                    120  f(2*l+1,lo,k)=plntop(l+1)*spctop(2*l+1,k)
                    +
                    121  f(2*l+2,lo,k)=plntop(l+1)*spctop(2*l+2,k)
                    +
                    122  ENDDO
                    +
                    123  ENDIF
                    +
                    124 C FOR EACH ZONAL WAVENUMBER, SYNTHESIZE TERMS OVER TOTAL WAVENUMBER.
                    +
                    125 C SYNTHESIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    +
                    126  DO l=0,lx
                    +
                    127  ks=l*(2*m+(i-1)*(l-1))
                    +
                    128  kp=ks/2+1
                    +
                    129  DO n=l,i*l+m,2
                    +
                    130  f(2*l+1,1,k)=f(2*l+1,1,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    +
                    131  f(2*l+2,1,k)=f(2*l+2,1,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    +
                    132  ENDDO
                    +
                    133  DO n=l+1,i*l+m,2
                    +
                    134  f(2*l+1,2,k)=f(2*l+1,2,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    +
                    135  f(2*l+2,2,k)=f(2*l+2,2,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    +
                    136  ENDDO
                    +
                    137  ENDDO
                    +
                    138 C SEPARATE FOURIER COEFFICIENTS FROM EACH HEMISPHERE.
                    +
                    139 C ODD POLYNOMIALS CONTRIBUTE NEGATIVELY TO THE SOUTHERN HEMISPHERE.
                    +
                    140 C DIVIDE VECTOR COMPONENTS BY COSINE LATITUDE.
                    +
                    141  DO l=0,lx
                    +
                    142  f1r=f(2*l+1,1,k)
                    +
                    143  f1i=f(2*l+2,1,k)
                    +
                    144  f(2*l+1,1,k)=f1r+f(2*l+1,2,k)
                    +
                    145  f(2*l+2,1,k)=f1i+f(2*l+2,2,k)
                    +
                    146  f(2*l+1,2,k)=f1r-f(2*l+1,2,k)
                    +
                    147  f(2*l+2,2,k)=f1i-f(2*l+2,2,k)
                    +
                    148  ENDDO
                    +
                    149  IF(mp(k).EQ.1) THEN
                    +
                    150  DO l=0,lx
                    +
                    151  f(2*l+1,1,k)=f(2*l+1,1,k)/clat
                    +
                    152  f(2*l+2,1,k)=f(2*l+2,1,k)/clat
                    +
                    153  f(2*l+1,2,k)=f(2*l+1,2,k)/clat
                    +
                    154  f(2*l+2,2,k)=f(2*l+2,2,k)/clat
                    +
                    155  ENDDO
                    +
                    156  ENDIF
                    +
                    157  ENDDO
                    +
                    158  ENDIF
                    +
                    159  END
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    diff --git a/sptez_8f.html b/sptez_8f.html index e69c0bb0..dabb0310 100644 --- a/sptez_8f.html +++ b/sptez_8f.html @@ -26,7 +26,7 @@ diff --git a/sptez_8f_source.html b/sptez_8f_source.html index c72ceb9b..e907436c 100644 --- a/sptez_8f_source.html +++ b/sptez_8f_source.html @@ -26,7 +26,7 @@ @@ -149,7 +149,7 @@
                    61  jb=1
                    62  je=(jmax+1)/2
                    63  jc=ncpus()
                    -
                    64 ! print *, " EM: SPTEZ:::JJJJJJJJJJJJJJJJJJJCCCCCCCCCCC=" ,JC
                    +
                    64 ! print *, " EM: SPTEZ:::JJJJJJJJJJJJJJJJJJJCCCCCCCCCCC=" ,JC
                    65  IF(idir.LT.0) wave=0
                    66 
                    67  CALL sptranf(iromb,maxwv,idrt,imax,jmax,1,
                    diff --git a/sptezd_8f.html b/sptezd_8f.html index dbb5f245..0d2359c9 100644 --- a/sptezd_8f.html +++ b/sptezd_8f.html @@ -26,7 +26,7 @@ @@ -152,7 +152,7 @@

                    - + diff --git a/sptezd_8f_source.html b/sptezd_8f_source.html index 370a4b70..d86821c3 100644 --- a/sptezd_8f_source.html +++ b/sptezd_8f_source.html @@ -26,7 +26,7 @@ @@ -138,7 +138,7 @@
                    50  SUBROUTINE sptezd(IROMB,MAXWV,IDRT,IMAX,JMAX,
                    51  & WAVE,GRIDMN,GRIDX,GRIDY,IDIR)
                    52 
                    -
                    53  REAL WAVE(*),GRIDX(IMAX,JMAX),GRIDY(IMAX,JMAX)
                    +
                    53  REAL WAVE(*),GRIDX(IMAX,JMAX),GRIDY(IMAX,JMAX),GRIDMN(*)
                    54 
                    55  jc=ncpus()
                    56  CALL sptrand(iromb,maxwv,idrt,imax,jmax,1,
                    diff --git a/sptezm_8f.html b/sptezm_8f.html index 57138f17..d3955611 100644 --- a/sptezm_8f.html +++ b/sptezm_8f.html @@ -26,7 +26,7 @@ diff --git a/sptezm_8f_source.html b/sptezm_8f_source.html index 4b9a7720..a68c0f93 100644 --- a/sptezm_8f_source.html +++ b/sptezm_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptezmd_8f.html b/sptezmd_8f.html index 29e74a14..80753eaf 100644 --- a/sptezmd_8f.html +++ b/sptezmd_8f.html @@ -26,7 +26,7 @@ diff --git a/sptezmd_8f_source.html b/sptezmd_8f_source.html index 881cc4cd..2e7916a5 100644 --- a/sptezmd_8f_source.html +++ b/sptezmd_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptezmv_8f.html b/sptezmv_8f.html index 86831b90..8556ba90 100644 --- a/sptezmv_8f.html +++ b/sptezmv_8f.html @@ -26,7 +26,7 @@ diff --git a/sptezmv_8f_source.html b/sptezmv_8f_source.html index e3acbec4..20f789af 100644 --- a/sptezmv_8f_source.html +++ b/sptezmv_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptezv_8f.html b/sptezv_8f.html index 483d7cc3..be8521ff 100644 --- a/sptezv_8f.html +++ b/sptezv_8f.html @@ -26,7 +26,7 @@ diff --git a/sptezv_8f_source.html b/sptezv_8f_source.html index 3c9b5c1c..d467cea5 100644 --- a/sptezv_8f_source.html +++ b/sptezv_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptgpm_8f.html b/sptgpm_8f.html index 13c6c40e..aa4450a7 100644 --- a/sptgpm_8f.html +++ b/sptgpm_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                     real, dimension(*)  GRIDMN,
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Transform spectral scalar to Mercator.

                    -

                    +

                    Program history log:

                    diff --git a/sptgpm_8f_source.html b/sptgpm_8f_source.html index 48cf1a00..65c529ce 100644 --- a/sptgpm_8f_source.html +++ b/sptgpm_8f_source.html @@ -26,7 +26,7 @@ @@ -152,64 +152,63 @@
                    64  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
                    65  REAL F(2*MAXWV+3,2,KMAX)
                    66  REAL CLAT(MJ),SLAT(MJ),CLON(MAXWV,MI),SLON(MAXWV,MI)
                    -
                    67  parameter(rerth=6.3712e6)
                    -
                    68  parameter(pi=3.14159265358979,dpr=180./pi)
                    -
                    69 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    70 C CALCULATE PRELIMINARY CONSTANTS
                    -
                    71  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    -
                    72  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    -
                    73  mxtop=maxwv+1
                    -
                    74  idim=2*maxwv+3
                    -
                    75  kw=kwskip
                    -
                    76  kg=kgskip
                    -
                    77  ni=niskip
                    -
                    78  nj=njskip
                    -
                    79  IF(kw.EQ.0) kw=2*mx
                    -
                    80  IF(kg.EQ.0) kg=mi*mj
                    -
                    81  IF(ni.EQ.0) ni=1
                    -
                    82  IF(nj.EQ.0) nj=mi
                    -
                    83  DO i=1,mi
                    -
                    84  rlon=mod(rlon1+dlon*(i-1)+3600,360.)
                    -
                    85  DO l=1,maxwv
                    -
                    86  clon(l,i)=cos(l*rlon/dpr)
                    -
                    87  slon(l,i)=sin(l*rlon/dpr)
                    -
                    88  ENDDO
                    -
                    89  ENDDO
                    -
                    90  ye=1-log(tan((rlat1+90)/2/dpr))*dpr/dlat
                    -
                    91  DO j=1,mj
                    -
                    92  rlat=atan(exp(dlat/dpr*(j-ye)))*2*dpr-90
                    -
                    93  clat(j)=cos(rlat/dpr)
                    -
                    94  slat(j)=sin(rlat/dpr)
                    -
                    95  ENDDO
                    -
                    96  mp=0
                    -
                    97 C$OMP PARALLEL DO
                    -
                    98  DO k=1,kmax
                    -
                    99  wtop(1:2*mxtop,k)=0
                    -
                    100  ENDDO
                    -
                    101 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    102 C TRANSFORM TO GRID
                    -
                    103 C$OMP PARALLEL DO PRIVATE(PLN,PLNTOP,F,IJK)
                    -
                    104  DO j=1,mj
                    -
                    105  CALL splegend(iromb,maxwv,slat(j),clat(j),eps,epstop,
                    -
                    106  & pln,plntop)
                    -
                    107  CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
                    -
                    108  & clat(j),pln,plntop,mp,wave,wtop,f)
                    -
                    109  DO k=1,kmax
                    -
                    110  DO i=1,mi
                    -
                    111  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    -
                    112  gm(ijk)=f(1,1,k)
                    -
                    113  ENDDO
                    -
                    114  DO l=1,maxwv
                    -
                    115  DO i=1,mi
                    -
                    116  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    -
                    117  gm(ijk)=gm(ijk)+2.*(f(2*l+1,1,k)*clon(l,i)
                    -
                    118  & -f(2*l+2,1,k)*slon(l,i))
                    -
                    119  ENDDO
                    -
                    120  ENDDO
                    -
                    121  ENDDO
                    -
                    122  ENDDO
                    -
                    123 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    124  END
                    +
                    67  parameter(pi=3.14159265358979,dpr=180./pi)
                    +
                    68 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    69 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    70  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    71  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    72  mxtop=maxwv+1
                    +
                    73  idim=2*maxwv+3
                    +
                    74  kw=kwskip
                    +
                    75  kg=kgskip
                    +
                    76  ni=niskip
                    +
                    77  nj=njskip
                    +
                    78  IF(kw.EQ.0) kw=2*mx
                    +
                    79  IF(kg.EQ.0) kg=mi*mj
                    +
                    80  IF(ni.EQ.0) ni=1
                    +
                    81  IF(nj.EQ.0) nj=mi
                    +
                    82  DO i=1,mi
                    +
                    83  rlon=mod(rlon1+dlon*(i-1)+3600,360.)
                    +
                    84  DO l=1,maxwv
                    +
                    85  clon(l,i)=cos(l*rlon/dpr)
                    +
                    86  slon(l,i)=sin(l*rlon/dpr)
                    +
                    87  ENDDO
                    +
                    88  ENDDO
                    +
                    89  ye=1-log(tan((rlat1+90)/2/dpr))*dpr/dlat
                    +
                    90  DO j=1,mj
                    +
                    91  rlat=atan(exp(dlat/dpr*(j-ye)))*2*dpr-90
                    +
                    92  clat(j)=cos(rlat/dpr)
                    +
                    93  slat(j)=sin(rlat/dpr)
                    +
                    94  ENDDO
                    +
                    95  mp=0
                    +
                    96 C$OMP PARALLEL DO
                    +
                    97  DO k=1,kmax
                    +
                    98  wtop(1:2*mxtop,k)=0
                    +
                    99  ENDDO
                    +
                    100 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    101 C TRANSFORM TO GRID
                    +
                    102 C$OMP PARALLEL DO PRIVATE(PLN,PLNTOP,F,IJK)
                    +
                    103  DO j=1,mj
                    +
                    104  CALL splegend(iromb,maxwv,slat(j),clat(j),eps,epstop,
                    +
                    105  & pln,plntop)
                    +
                    106  CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
                    +
                    107  & clat(j),pln,plntop,mp,wave,wtop,f)
                    +
                    108  DO k=1,kmax
                    +
                    109  DO i=1,mi
                    +
                    110  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    +
                    111  gm(ijk)=f(1,1,k)
                    +
                    112  ENDDO
                    +
                    113  DO l=1,maxwv
                    +
                    114  DO i=1,mi
                    +
                    115  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    +
                    116  gm(ijk)=gm(ijk)+2.*(f(2*l+1,1,k)*clon(l,i)
                    +
                    117  & -f(2*l+2,1,k)*slon(l,i))
                    +
                    118  ENDDO
                    +
                    119  ENDDO
                    +
                    120  ENDDO
                    +
                    121  ENDDO
                    +
                    122 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    123  END
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    subroutine sptgpm(IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVE, GM)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to sca...
                    Definition: sptgpm.f:56
                    diff --git a/sptgpmd_8f.html b/sptgpmd_8f.html index 8471d635..b5ce380c 100644 --- a/sptgpmd_8f.html +++ b/sptgpmd_8f.html @@ -26,7 +26,7 @@ diff --git a/sptgpmd_8f_source.html b/sptgpmd_8f_source.html index 6bacf70f..2f78312e 100644 --- a/sptgpmd_8f_source.html +++ b/sptgpmd_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptgpmv_8f.html b/sptgpmv_8f.html index 2312de75..fdaeed43 100644 --- a/sptgpmv_8f.html +++ b/sptgpmv_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Transform spectral vector to Mercator.

                    -

                    +

                    Program history log:

                    diff --git a/sptgpmv_8f_source.html b/sptgpmv_8f_source.html index 4c03f661..71c666ac 100644 --- a/sptgpmv_8f_source.html +++ b/sptgpmv_8f_source.html @@ -26,7 +26,7 @@ @@ -160,75 +160,74 @@
                    72  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
                    73  REAL F(2*MAXWV+3,2,2*KMAX)
                    74  REAL CLAT(MJ),SLAT(MJ),CLON(MAXWV,MI),SLON(MAXWV,MI)
                    -
                    75  parameter(rerth=6.3712e6)
                    -
                    76  parameter(pi=3.14159265358979,dpr=180./pi)
                    -
                    77 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    78 C CALCULATE PRELIMINARY CONSTANTS
                    -
                    79  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    -
                    80  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    -
                    81  mxtop=maxwv+1
                    -
                    82  mdim=2*mx+1
                    -
                    83  idim=2*maxwv+3
                    -
                    84  kw=kwskip
                    -
                    85  kg=kgskip
                    -
                    86  ni=niskip
                    -
                    87  nj=njskip
                    -
                    88  IF(kw.EQ.0) kw=2*mx
                    -
                    89  IF(kg.EQ.0) kg=mi*mj
                    -
                    90  IF(ni.EQ.0) ni=1
                    -
                    91  IF(nj.EQ.0) nj=mi
                    -
                    92  DO i=1,mi
                    -
                    93  rlon=mod(rlon1+dlon*(i-1)+3600,360.)
                    -
                    94  DO l=1,maxwv
                    -
                    95  clon(l,i)=cos(l*rlon/dpr)
                    -
                    96  slon(l,i)=sin(l*rlon/dpr)
                    -
                    97  ENDDO
                    -
                    98  ENDDO
                    -
                    99  ye=1-log(tan((rlat1+90)/2/dpr))*dpr/dlat
                    -
                    100  DO j=1,mj
                    -
                    101  rlat=atan(exp(dlat/dpr*(j-ye)))*2*dpr-90
                    -
                    102  clat(j)=cos(rlat/dpr)
                    -
                    103  slat(j)=sin(rlat/dpr)
                    -
                    104  ENDDO
                    -
                    105  mp=1
                    -
                    106 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    107 C CALCULATE SPECTRAL WINDS
                    -
                    108 C$OMP PARALLEL DO PRIVATE(KWS)
                    -
                    109  DO k=1,kmax
                    -
                    110  kws=(k-1)*kw
                    -
                    111  CALL spdz2uv(iromb,maxwv,enn1,elonn1,eon,eontop,
                    -
                    112  & waved(kws+1),wavez(kws+1),
                    -
                    113  & w(1,k),w(1,kmax+k),wtop(1,k),wtop(1,kmax+k))
                    -
                    114  ENDDO
                    -
                    115 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    116 C TRANSFORM TO GRID
                    -
                    117 C$OMP PARALLEL DO PRIVATE(PLN,PLNTOP,F,KU,KV,IJK)
                    -
                    118  DO j=1,mj
                    -
                    119  CALL splegend(iromb,maxwv,slat(j),clat(j),eps,epstop,
                    -
                    120  & pln,plntop)
                    -
                    121  CALL spsynth(iromb,maxwv,2*maxwv,idim,mdim,2*mxtop,2*kmax,
                    -
                    122  & clat(j),pln,plntop,mp,w,wtop,f)
                    -
                    123  DO k=1,kmax
                    -
                    124  ku=k
                    -
                    125  kv=k+kmax
                    -
                    126  DO i=1,mi
                    -
                    127  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    -
                    128  um(ijk)=f(1,1,ku)
                    -
                    129  vm(ijk)=f(1,1,kv)
                    -
                    130  ENDDO
                    -
                    131  DO l=1,maxwv
                    -
                    132  DO i=1,mi
                    -
                    133  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    -
                    134  um(ijk)=um(ijk)+2.*(f(2*l+1,1,ku)*clon(l,i)
                    -
                    135  & -f(2*l+2,1,ku)*slon(l,i))
                    -
                    136  vm(ijk)=vm(ijk)+2.*(f(2*l+1,1,kv)*clon(l,i)
                    -
                    137  & -f(2*l+2,1,kv)*slon(l,i))
                    -
                    138  ENDDO
                    -
                    139  ENDDO
                    -
                    140  ENDDO
                    -
                    141  ENDDO
                    -
                    142 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    143  END
                    +
                    75  parameter(pi=3.14159265358979,dpr=180./pi)
                    +
                    76 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    77 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    78  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    79  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    80  mxtop=maxwv+1
                    +
                    81  mdim=2*mx+1
                    +
                    82  idim=2*maxwv+3
                    +
                    83  kw=kwskip
                    +
                    84  kg=kgskip
                    +
                    85  ni=niskip
                    +
                    86  nj=njskip
                    +
                    87  IF(kw.EQ.0) kw=2*mx
                    +
                    88  IF(kg.EQ.0) kg=mi*mj
                    +
                    89  IF(ni.EQ.0) ni=1
                    +
                    90  IF(nj.EQ.0) nj=mi
                    +
                    91  DO i=1,mi
                    +
                    92  rlon=mod(rlon1+dlon*(i-1)+3600,360.)
                    +
                    93  DO l=1,maxwv
                    +
                    94  clon(l,i)=cos(l*rlon/dpr)
                    +
                    95  slon(l,i)=sin(l*rlon/dpr)
                    +
                    96  ENDDO
                    +
                    97  ENDDO
                    +
                    98  ye=1-log(tan((rlat1+90)/2/dpr))*dpr/dlat
                    +
                    99  DO j=1,mj
                    +
                    100  rlat=atan(exp(dlat/dpr*(j-ye)))*2*dpr-90
                    +
                    101  clat(j)=cos(rlat/dpr)
                    +
                    102  slat(j)=sin(rlat/dpr)
                    +
                    103  ENDDO
                    +
                    104  mp=1
                    +
                    105 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    106 C CALCULATE SPECTRAL WINDS
                    +
                    107 C$OMP PARALLEL DO PRIVATE(KWS)
                    +
                    108  DO k=1,kmax
                    +
                    109  kws=(k-1)*kw
                    +
                    110  CALL spdz2uv(iromb,maxwv,enn1,elonn1,eon,eontop,
                    +
                    111  & waved(kws+1),wavez(kws+1),
                    +
                    112  & w(1,k),w(1,kmax+k),wtop(1,k),wtop(1,kmax+k))
                    +
                    113  ENDDO
                    +
                    114 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    115 C TRANSFORM TO GRID
                    +
                    116 C$OMP PARALLEL DO PRIVATE(PLN,PLNTOP,F,KU,KV,IJK)
                    +
                    117  DO j=1,mj
                    +
                    118  CALL splegend(iromb,maxwv,slat(j),clat(j),eps,epstop,
                    +
                    119  & pln,plntop)
                    +
                    120  CALL spsynth(iromb,maxwv,2*maxwv,idim,mdim,2*mxtop,2*kmax,
                    +
                    121  & clat(j),pln,plntop,mp,w,wtop,f)
                    +
                    122  DO k=1,kmax
                    +
                    123  ku=k
                    +
                    124  kv=k+kmax
                    +
                    125  DO i=1,mi
                    +
                    126  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    +
                    127  um(ijk)=f(1,1,ku)
                    +
                    128  vm(ijk)=f(1,1,kv)
                    +
                    129  ENDDO
                    +
                    130  DO l=1,maxwv
                    +
                    131  DO i=1,mi
                    +
                    132  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    +
                    133  um(ijk)=um(ijk)+2.*(f(2*l+1,1,ku)*clon(l,i)
                    +
                    134  & -f(2*l+2,1,ku)*slon(l,i))
                    +
                    135  vm(ijk)=vm(ijk)+2.*(f(2*l+1,1,kv)*clon(l,i)
                    +
                    136  & -f(2*l+2,1,kv)*slon(l,i))
                    +
                    137  ENDDO
                    +
                    138  ENDDO
                    +
                    139  ENDDO
                    +
                    140  ENDDO
                    +
                    141 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    142  END
                    subroutine spdz2uv(I, M, ENN1, ELONN1, EON, EONTOP, D, Z, U, V, UTOP, VTOP)
                    Computes the wind components from divergence and vorticity in spectral space.
                    Definition: spdz2uv.f:49
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    diff --git a/sptgps_8f.html b/sptgps_8f.html index 0ea18ca6..8b17dee0 100644 --- a/sptgps_8f.html +++ b/sptgps_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Transform spectral scalar to polar stereo.

                    -

                    +

                    Program History Log

                    diff --git a/sptgps_8f_source.html b/sptgps_8f_source.html index 5e1936ad..3aac1362 100644 --- a/sptgps_8f_source.html +++ b/sptgps_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptgpsd_8f.html b/sptgpsd_8f.html index 887d8868..951e05dd 100644 --- a/sptgpsd_8f.html +++ b/sptgpsd_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Transform spectral to polar stereographic gradients.

                    -

                    +

                    Program history log:

                    diff --git a/sptgpsd_8f_source.html b/sptgpsd_8f_source.html index 3c361ef9..75c49195 100644 --- a/sptgpsd_8f_source.html +++ b/sptgpsd_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptgpsv_8f.html b/sptgpsv_8f.html index a16d2f9a..fdcaf59b 100644 --- a/sptgpsv_8f.html +++ b/sptgpsv_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Transform spectral vector to polar stereo.

                    -

                    +

                    Program History Log

                    diff --git a/sptgpsv_8f_source.html b/sptgpsv_8f_source.html index 4792ddcb..3422cb0b 100644 --- a/sptgpsv_8f_source.html +++ b/sptgpsv_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptgpt_8f.html b/sptgpt_8f.html index 71aec305..2d0b850b 100644 --- a/sptgpt_8f.html +++ b/sptgpt_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Transform spectral scalar to station points.

                    -

                    +

                    Program History Log

                    diff --git a/sptgpt_8f_source.html b/sptgpt_8f_source.html index b873a634..70741732 100644 --- a/sptgpt_8f_source.html +++ b/sptgpt_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptgptd_8f.html b/sptgptd_8f.html index 35b6d8e5..0888fc77 100644 --- a/sptgptd_8f.html +++ b/sptgptd_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Transform spectral to station point gradients.

                    -

                    +

                    Program History Log

                    diff --git a/sptgptd_8f_source.html b/sptgptd_8f_source.html index 9a34783f..5d45d7ca 100644 --- a/sptgptd_8f_source.html +++ b/sptgptd_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptgptsd_8f.html b/sptgptsd_8f.html index b3a36610..f1b24209 100644 --- a/sptgptsd_8f.html +++ b/sptgptsd_8f.html @@ -26,7 +26,7 @@ @@ -104,7 +104,7 @@

                    Transform spectral scalar to station points.

                    Author
                    Iredell
                    Date
                    96-02-29
                    -

                    +

                    Program History Log

                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    diff --git a/sptgptsd_8f_source.html b/sptgptsd_8f_source.html index 78844f24..dc78dd3d 100644 --- a/sptgptsd_8f_source.html +++ b/sptgptsd_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptgptv_8f.html b/sptgptv_8f.html index ec850798..ff0ef75b 100644 --- a/sptgptv_8f.html +++ b/sptgptv_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Transform spectral vector to station points.

                    -

                    +

                    Program History Log

                    diff --git a/sptgptv_8f_source.html b/sptgptv_8f_source.html index bc2c949a..fb9575ed 100644 --- a/sptgptv_8f_source.html +++ b/sptgptv_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptgptvd_8f.html b/sptgptvd_8f.html index 0519a396..6fb47a35 100644 --- a/sptgptvd_8f.html +++ b/sptgptvd_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Transform spectral vector to station points.

                    -

                    +

                    Program History Log

                    diff --git a/sptgptvd_8f_source.html b/sptgptvd_8f_source.html index f599caeb..53aeaf77 100644 --- a/sptgptvd_8f_source.html +++ b/sptgptvd_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptran_8f.html b/sptran_8f.html index ebd2b075..9fb66fbb 100644 --- a/sptran_8f.html +++ b/sptran_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Perform a scalar spherical transform.

                    -

                    +

                    Program History Log

                    diff --git a/sptran_8f_source.html b/sptran_8f_source.html index 18552512..88dedaa8 100644 --- a/sptran_8f_source.html +++ b/sptran_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptrand_8f.html b/sptrand_8f.html index 08fa5cdd..d4338b9d 100644 --- a/sptrand_8f.html +++ b/sptrand_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Perform a gradient spherical transform.

                    -

                    +

                    Program History Log

                    diff --git a/sptrand_8f_source.html b/sptrand_8f_source.html index 291d35d6..5f90bd36 100644 --- a/sptrand_8f_source.html +++ b/sptrand_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptranf0_8f.html b/sptranf0_8f.html index 9ea80dac..cf5dd981 100644 --- a/sptranf0_8f.html +++ b/sptranf0_8f.html @@ -26,7 +26,7 @@ diff --git a/sptranf0_8f_source.html b/sptranf0_8f_source.html index 18aed35a..c145b7d3 100644 --- a/sptranf0_8f_source.html +++ b/sptranf0_8f_source.html @@ -26,7 +26,7 @@ @@ -132,24 +132,26 @@
                    44  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2,JB:JE)
                    45  REAL PLNTOP(MAXWV+1,JB:JE)
                    46  REAL SLATX(JMAX),WLATX(JMAX)
                    -
                    47 
                    -
                    48  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    -
                    49  CALL spffte(imax,(imax+2)/2,imax,2,0.,0.,0,afft)
                    -
                    50  CALL splat(idrt,jmax,slatx,wlatx)
                    -
                    51  jhe=(jmax+1)/2
                    -
                    52  IF(jhe.GT.jmax/2) wlatx(jhe)=wlatx(jhe)/2
                    -
                    53  DO j=jb,je
                    -
                    54  clat(j)=sqrt(1.-slatx(j)**2)
                    -
                    55  slat(j)=slatx(j)
                    -
                    56  wlat(j)=wlatx(j)
                    -
                    57  ENDDO
                    -
                    58 C$OMP PARALLEL DO
                    -
                    59  DO j=jb,je
                    -
                    60  CALL splegend(iromb,maxwv,slat(j),clat(j),eps,epstop,
                    -
                    61  & pln(1,j),plntop(1,j))
                    -
                    62  ENDDO
                    -
                    63 
                    -
                    64  END
                    +
                    47  REAL W(IMAX+2,2),G(IMAX,2)
                    +
                    48 
                    +
                    49  w = 0.0
                    +
                    50  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    51  CALL spffte(imax,(imax+2)/2,imax,2,w,g,0,afft)
                    +
                    52  CALL splat(idrt,jmax,slatx,wlatx)
                    +
                    53  jhe=(jmax+1)/2
                    +
                    54  IF(jhe.GT.jmax/2) wlatx(jhe)=wlatx(jhe)/2
                    +
                    55  DO j=jb,je
                    +
                    56  clat(j)=sqrt(1.-slatx(j)**2)
                    +
                    57  slat(j)=slatx(j)
                    +
                    58  wlat(j)=wlatx(j)
                    +
                    59  ENDDO
                    +
                    60 C$OMP PARALLEL DO
                    +
                    61  DO j=jb,je
                    +
                    62  CALL splegend(iromb,maxwv,slat(j),clat(j),eps,epstop,
                    +
                    63  & pln(1,j),plntop(1,j))
                    +
                    64  ENDDO
                    +
                    65 
                    +
                    66  END
                    subroutine spffte(IMAX, INCW, INCG, KMAX, W, G, IDIR, AFFT)
                    This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space...
                    Definition: spffte.f:49
                    subroutine splat(IDRT, JMAX, SLAT, WLAT)
                    Computes cosines of colatitude and Gaussian weights for one of the following specific global sets of ...
                    Definition: splat.F:46
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    diff --git a/sptranf1_8f.html b/sptranf1_8f.html index 876c5a68..ee94d7e0 100644 --- a/sptranf1_8f.html +++ b/sptranf1_8f.html @@ -26,7 +26,7 @@ diff --git a/sptranf1_8f_source.html b/sptranf1_8f_source.html index 0c0f8374..d836688b 100644 --- a/sptranf1_8f_source.html +++ b/sptranf1_8f_source.html @@ -26,7 +26,7 @@ @@ -148,7 +148,7 @@
                    60  IF(idir.GT.0) THEN
                    61  DO j=jb,je
                    62  CALL spsynth(iromb,maxwv,imax,imax+2,kw,kwtop,1,
                    -
                    63  & clat(j),pln(1,j),plntop(1,j),mp,
                    +
                    63  & clat(j),pln(1,j),plntop(1,j),(/mp/),
                    64  & w,wtop,f)
                    65  CALL spffte(imax,(imax+2)/2,imax,2,f,g(1,1,j),+1,afft)
                    66  ENDDO
                    @@ -156,7 +156,7 @@
                    68  DO j=jb,je
                    69  CALL spffte(imax,(imax+2)/2,imax,2,f,g(1,1,j),-1,afft)
                    70  CALL spanaly(iromb,maxwv,imax,imax+2,kw,kwtop,1,
                    -
                    71  & wlat(j),clat(j),pln(1,j),plntop(1,j),mp,
                    +
                    71  & wlat(j),clat(j),pln(1,j),plntop(1,j),(/mp/),
                    72  & f,w,wtop)
                    73  ENDDO
                    74  ENDIF
                    diff --git a/sptranf_8f.html b/sptranf_8f.html index d02bb2b6..a33379e1 100644 --- a/sptranf_8f.html +++ b/sptranf_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Perform a scalar spherical transform.

                    -

                    +

                    Program History Log

                    diff --git a/sptranf_8f_source.html b/sptranf_8f_source.html index d7823863..579c9765 100644 --- a/sptranf_8f_source.html +++ b/sptranf_8f_source.html @@ -26,7 +26,7 @@ @@ -186,7 +186,7 @@
                    98  IF(idir.GT.0) THEN
                    99 C$OMP PARALLEL DO PRIVATE(AFFT_TMP,KWS,WTOP,G,IJKN,IJKS)
                    100  DO k=1,kmax
                    -
                    101  afft_tmp=afft
                    +
                    101  afft_tmp=afft
                    102  kws=(k-1)*kw
                    103  wtop=0
                    104  DO j=jb,je
                    @@ -217,7 +217,7 @@
                    129  ELSE
                    130 C$OMP PARALLEL DO PRIVATE(AFFT_TMP,KWS,WTOP,G,IJKN,IJKS)
                    131  DO k=1,kmax
                    -
                    132  afft_tmp=afft
                    +
                    132  afft_tmp=afft
                    133  kws=(k-1)*kw
                    134  wtop=0
                    135  DO j=jb,je
                    diff --git a/sptranfv_8f.html b/sptranfv_8f.html index 752e5b5f..46469efd 100644 --- a/sptranfv_8f.html +++ b/sptranfv_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Perform a vector spherical transform.

                    -

                    +

                    Program History Log

                    diff --git a/sptranfv_8f_source.html b/sptranfv_8f_source.html index c74a3db8..91e20040 100644 --- a/sptranfv_8f_source.html +++ b/sptranfv_8f_source.html @@ -26,7 +26,7 @@ @@ -178,7 +178,7 @@
                    90  REAL CLAT(JB:JE),SLAT(JB:JE),WLAT(JB:JE)
                    91  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2,JB:JE)
                    92  REAL PLNTOP(MAXWV+1,JB:JE)
                    -
                    93  INTEGER MP(2)
                    +
                    93  INTEGER MP
                    94  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2,2)
                    95  REAL WTOP(2*(MAXWV+1),2)
                    96  REAL G(IMAX,2,2)
                    @@ -195,7 +195,7 @@
                    107  IF(idir.GT.0) THEN
                    108 C$OMP PARALLEL DO PRIVATE(AFFT_TMP,KWS,W,WTOP,G,IJKN,IJKS)
                    109  DO k=1,kmax
                    -
                    110  afft_tmp=afft
                    +
                    110  afft_tmp=afft
                    111  kws=(k-1)*kw
                    112  CALL spdz2uv(iromb,maxwv,enn1,elonn1,eon,eontop,
                    113  & waved(kws+1),wavez(kws+1),
                    @@ -237,7 +237,7 @@
                    149  ELSE
                    150 C$OMP PARALLEL DO PRIVATE(AFFT_TMP,KWS,W,WTOP,G,IJKN,IJKS,WINC)
                    151  DO k=1,kmax
                    -
                    152  afft_tmp=afft
                    +
                    152  afft_tmp=afft
                    153  kws=(k-1)*kw
                    154  w=0
                    155  wtop=0
                    diff --git a/sptranv_8f.html b/sptranv_8f.html index c9f687ed..c95dd51c 100644 --- a/sptranv_8f.html +++ b/sptranv_8f.html @@ -26,7 +26,7 @@ @@ -102,7 +102,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    Perform a vector spherical transform.

                    -

                    +

                    Program History Log

                    diff --git a/sptranv_8f_source.html b/sptranv_8f_source.html index b0ac5987..1493c46d 100644 --- a/sptranv_8f_source.html +++ b/sptranv_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptrun_8f.html b/sptrun_8f.html index be942950..fcaf1b2b 100644 --- a/sptrun_8f.html +++ b/sptrun_8f.html @@ -26,7 +26,7 @@ @@ -300,7 +300,7 @@

                    References ncpus(), and sptran().

                    -

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    +

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    diff --git a/sptrun_8f_source.html b/sptrun_8f_source.html index 89f40431..3d77bdac 100644 --- a/sptrun_8f_source.html +++ b/sptrun_8f_source.html @@ -26,7 +26,7 @@

                    diff --git a/sptrund_8f.html b/sptrund_8f.html index d02110c0..6fe8896c 100644 --- a/sptrund_8f.html +++ b/sptrund_8f.html @@ -26,7 +26,7 @@ @@ -224,7 +224,7 @@

                    - + diff --git a/sptrund_8f_source.html b/sptrund_8f_source.html index 9400222f..a6b7d3d2 100644 --- a/sptrund_8f_source.html +++ b/sptrund_8f_source.html @@ -26,7 +26,7 @@ @@ -162,7 +162,7 @@
                    74  & ISKIPO,JSKIPO,KSKIPO,JCPU,GRID,
                    75  & GRIDMN,GRIDX,GRIDY)
                    76 
                    -
                    77  REAL GRID(*),GRIDX(*),GRIDY(*)
                    +
                    77  REAL GRID(*),GRIDX(*),GRIDY(*),GRIDMN(*)
                    78  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    79 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    80 C TRANSFORM INPUT GRID TO WAVE
                    diff --git a/sptrung_8f.html b/sptrung_8f.html index 15472f58..2332b302 100644 --- a/sptrung_8f.html +++ b/sptrung_8f.html @@ -26,7 +26,7 @@ @@ -289,7 +289,7 @@

                    References ncpus(), sptgpt(), and sptran().

                    -

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    +

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    diff --git a/sptrung_8f_source.html b/sptrung_8f_source.html index 292f2034..a23390f1 100644 --- a/sptrung_8f_source.html +++ b/sptrung_8f_source.html @@ -26,7 +26,7 @@

                    diff --git a/sptrungv_8f.html b/sptrungv_8f.html index 3da4ee8d..43b9cbac 100644 --- a/sptrungv_8f.html +++ b/sptrungv_8f.html @@ -26,7 +26,7 @@ @@ -359,7 +359,7 @@

                    References ncpus(), splaplac(), sptgpt(), sptgptv(), sptranv(), and spwget().

                    -

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    +

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    diff --git a/sptrungv_8f_source.html b/sptrungv_8f_source.html index c082002a..7dab915f 100644 --- a/sptrungv_8f_source.html +++ b/sptrungv_8f_source.html @@ -26,7 +26,7 @@

                    diff --git a/sptrunl_8f.html b/sptrunl_8f.html index ed3e4750..26b7b2c6 100644 --- a/sptrunl_8f.html +++ b/sptrunl_8f.html @@ -26,7 +26,7 @@ diff --git a/sptrunl_8f_source.html b/sptrunl_8f_source.html index e443a7e4..fafc43c1 100644 --- a/sptrunl_8f_source.html +++ b/sptrunl_8f_source.html @@ -26,7 +26,7 @@ diff --git a/sptrunm_8f.html b/sptrunm_8f.html index 8a699326..1e62005e 100644 --- a/sptrunm_8f.html +++ b/sptrunm_8f.html @@ -26,7 +26,7 @@ @@ -310,7 +310,7 @@

                    References ncpus(), sptgpm(), and sptran().

                    -

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    +

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    diff --git a/sptrunm_8f_source.html b/sptrunm_8f_source.html index 938fb84a..860840d6 100644 --- a/sptrunm_8f_source.html +++ b/sptrunm_8f_source.html @@ -26,7 +26,7 @@

                    diff --git a/sptrunmv_8f.html b/sptrunmv_8f.html index ad58ea0a..33407bf7 100644 --- a/sptrunmv_8f.html +++ b/sptrunmv_8f.html @@ -26,7 +26,7 @@ @@ -377,7 +377,7 @@

                    References ncpus(), splaplac(), sptgpm(), sptgpmv(), sptranv(), and spwget().

                    -

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    +

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    diff --git a/sptrunmv_8f_source.html b/sptrunmv_8f_source.html index 7a37712d..ecd958df 100644 --- a/sptrunmv_8f_source.html +++ b/sptrunmv_8f_source.html @@ -26,7 +26,7 @@

                    @@ -185,60 +185,59 @@
                    97  LOGICAL LUV,LDZ,LPS
                    98  REAL GRIDUI(*),GRIDVI(*)
                    99  REAL UM(*),VM(*),DM(*),ZM(*),PM(*),SM(*)
                    -
                    100  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    -
                    101  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    -
                    102  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    -
                    103  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    -
                    104  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    -
                    105  REAL WD((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    -
                    106  REAL WZ((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    -
                    107 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    108 C TRANSFORM INPUT GRID TO WAVE
                    -
                    109  jc=jcpu
                    -
                    110  IF(jc.EQ.0) jc=ncpus()
                    -
                    111  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    -
                    112  mdim=2*mx+1
                    -
                    113  jn=-jskipi
                    -
                    114  IF(jn.EQ.0) jn=imaxi
                    -
                    115  js=-jn
                    -
                    116  inp=(jmaxi-1)*max(0,-jn)+1
                    -
                    117  isp=(jmaxi-1)*max(0,-js)+1
                    -
                    118  CALL sptranv(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    -
                    119  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    -
                    120  & wd,wz,
                    -
                    121  & gridui(inp),gridui(isp),gridvi(inp),gridvi(isp),-1)
                    -
                    122 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    123 C TRANSFORM WAVE TO OUTPUT WINDS
                    -
                    124  IF(luv) THEN
                    -
                    125  CALL sptgpmv(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    -
                    126  & rlat1,rlon1,dlat,dlon,wd,wz,um,vm)
                    -
                    127  ENDIF
                    -
                    128 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    129 C TRANSFORM WAVE TO OUTPUT DIVERGENCE AND VORTICITY
                    -
                    130  IF(ldz) THEN
                    -
                    131  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    -
                    132  & rlat1,rlon1,dlat,dlon,wd,dm)
                    -
                    133  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    -
                    134  & rlat1,rlon1,dlat,dlon,wz,zm)
                    -
                    135  ENDIF
                    -
                    136 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    137 C TRANSFORM WAVE TO OUTPUT POTENTIAL AND STREAMFUNCTION
                    -
                    138  IF(lps) THEN
                    -
                    139  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    -
                    140 C$OMP PARALLEL DO
                    -
                    141  DO k=1,kmax
                    -
                    142  CALL splaplac(iromb,maxwv,enn1,wd(1,k),wd(1,k),-1)
                    -
                    143  CALL splaplac(iromb,maxwv,enn1,wz(1,k),wz(1,k),-1)
                    -
                    144  wd(1:2,k)=0.
                    -
                    145  wz(1:2,k)=0.
                    -
                    146  ENDDO
                    -
                    147  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    -
                    148  & rlat1,rlon1,dlat,dlon,wd,pm)
                    -
                    149  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    -
                    150  & rlat1,rlon1,dlat,dlon,wz,sm)
                    -
                    151  ENDIF
                    -
                    152 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    153  END
                    +
                    100  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    101  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    102  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    103  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    104  REAL WD((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    105  REAL WZ((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    106 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    107 C TRANSFORM INPUT GRID TO WAVE
                    +
                    108  jc=jcpu
                    +
                    109  IF(jc.EQ.0) jc=ncpus()
                    +
                    110  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    111  mdim=2*mx+1
                    +
                    112  jn=-jskipi
                    +
                    113  IF(jn.EQ.0) jn=imaxi
                    +
                    114  js=-jn
                    +
                    115  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    116  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    117  CALL sptranv(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    118  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    119  & wd,wz,
                    +
                    120  & gridui(inp),gridui(isp),gridvi(inp),gridvi(isp),-1)
                    +
                    121 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    122 C TRANSFORM WAVE TO OUTPUT WINDS
                    +
                    123  IF(luv) THEN
                    +
                    124  CALL sptgpmv(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    125  & rlat1,rlon1,dlat,dlon,wd,wz,um,vm)
                    +
                    126  ENDIF
                    +
                    127 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    128 C TRANSFORM WAVE TO OUTPUT DIVERGENCE AND VORTICITY
                    +
                    129  IF(ldz) THEN
                    +
                    130  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    131  & rlat1,rlon1,dlat,dlon,wd,dm)
                    +
                    132  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    133  & rlat1,rlon1,dlat,dlon,wz,zm)
                    +
                    134  ENDIF
                    +
                    135 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    136 C TRANSFORM WAVE TO OUTPUT POTENTIAL AND STREAMFUNCTION
                    +
                    137  IF(lps) THEN
                    +
                    138  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    139 C$OMP PARALLEL DO
                    +
                    140  DO k=1,kmax
                    +
                    141  CALL splaplac(iromb,maxwv,enn1,wd(1,k),wd(1,k),-1)
                    +
                    142  CALL splaplac(iromb,maxwv,enn1,wz(1,k),wz(1,k),-1)
                    +
                    143  wd(1:2,k)=0.
                    +
                    144  wz(1:2,k)=0.
                    +
                    145  ENDDO
                    +
                    146  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    147  & rlat1,rlon1,dlat,dlon,wd,pm)
                    +
                    148  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    149  & rlat1,rlon1,dlat,dlon,wz,sm)
                    +
                    150  ENDIF
                    +
                    151 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    152  END
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    subroutine sptgpm(IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVE, GM)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to sca...
                    Definition: sptgpm.f:56
                    diff --git a/sptruns_8f.html b/sptruns_8f.html index e397cd69..8491dd6d 100644 --- a/sptruns_8f.html +++ b/sptruns_8f.html @@ -26,7 +26,7 @@ @@ -304,7 +304,7 @@

                    References ncpus(), sptgps(), and sptran().

                    -

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    +

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    diff --git a/sptruns_8f_source.html b/sptruns_8f_source.html index 74712071..58997ed2 100644 --- a/sptruns_8f_source.html +++ b/sptruns_8f_source.html @@ -26,7 +26,7 @@

                    diff --git a/sptrunsv_8f.html b/sptrunsv_8f.html index 5195500e..eada62f8 100644 --- a/sptrunsv_8f.html +++ b/sptrunsv_8f.html @@ -26,7 +26,7 @@ @@ -409,7 +409,7 @@

                    References ncpus(), splaplac(), sptgps(), sptgpsv(), sptranv(), and spwget().

                    -

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    +

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    diff --git a/sptrunsv_8f_source.html b/sptrunsv_8f_source.html index 0029e4ad..c3298aa7 100644 --- a/sptrunsv_8f_source.html +++ b/sptrunsv_8f_source.html @@ -26,7 +26,7 @@

                    diff --git a/sptrunv_8f.html b/sptrunv_8f.html index f43a3dd2..19b8f50e 100644 --- a/sptrunv_8f.html +++ b/sptrunv_8f.html @@ -26,7 +26,7 @@ @@ -358,7 +358,7 @@

                    References ncpus(), splaplac(), sptran(), sptranv(), and spwget().

                    -

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    +

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    diff --git a/sptrunv_8f_source.html b/sptrunv_8f_source.html index c0f8849c..9d41d87d 100644 --- a/sptrunv_8f_source.html +++ b/sptrunv_8f_source.html @@ -26,7 +26,7 @@

                    diff --git a/spuv2dz_8f.html b/spuv2dz_8f.html index 83f9967e..2d5eff30 100644 --- a/spuv2dz_8f.html +++ b/spuv2dz_8f.html @@ -26,7 +26,7 @@ diff --git a/spuv2dz_8f_source.html b/spuv2dz_8f_source.html index 6ed36e93..f382afec 100644 --- a/spuv2dz_8f_source.html +++ b/spuv2dz_8f_source.html @@ -26,7 +26,7 @@ diff --git a/spvar_8f.html b/spvar_8f.html index 9ae5b7dd..73948c37 100644 --- a/spvar_8f.html +++ b/spvar_8f.html @@ -26,7 +26,7 @@ diff --git a/spvar_8f_source.html b/spvar_8f_source.html index f79bdc57..9f559d95 100644 --- a/spvar_8f_source.html +++ b/spvar_8f_source.html @@ -26,7 +26,7 @@ diff --git a/spwget_8f.html b/spwget_8f.html index 6cbd0401..8d9f2dd3 100644 --- a/spwget_8f.html +++ b/spwget_8f.html @@ -26,7 +26,7 @@ diff --git a/spwget_8f_source.html b/spwget_8f_source.html index 4f2632a1..2ed57cce 100644 --- a/spwget_8f_source.html +++ b/spwget_8f_source.html @@ -26,7 +26,7 @@ diff --git a/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html b/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html index 1805006f..62d9b4da 100644 --- a/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html +++ b/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html @@ -26,7 +26,7 @@ @@ -203,7 +203,7 @@

                    Returns
                    Integer position in grib field to locate grid point.
                    -

                    Definition at line 82 of file ip_grid_mod.F90.

                    +

                    Definition at line 88 of file ip_grid_mod.F90.

                    @@ -257,7 +257,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 84 of file ip_grid_mod.F90.

                    +

                    Definition at line 90 of file ip_grid_mod.F90.

                    @@ -338,7 +338,7 @@

                    Definition at line 53 of file ip_grid_mod.F90.

                    +

                    Definition at line 59 of file ip_grid_mod.F90.

                    @@ -418,7 +418,7 @@

                    Definition at line 72 of file ip_grid_mod.F90.

                    +

                    Definition at line 78 of file ip_grid_mod.F90.

                    @@ -471,7 +471,7 @@

                    Definition at line 55 of file ip_grid_mod.F90.

                    +

                    Definition at line 61 of file ip_grid_mod.F90.

                    @@ -497,7 +497,7 @@

                    Definition at line 68 of file ip_grid_mod.F90.

                    +

                    Definition at line 74 of file ip_grid_mod.F90.

                    @@ -523,7 +523,7 @@

                    Definition at line 56 of file ip_grid_mod.F90.

                    +

                    Definition at line 62 of file ip_grid_mod.F90.

                    @@ -549,7 +549,7 @@

                    Definition at line 69 of file ip_grid_mod.F90.

                    +

                    Definition at line 75 of file ip_grid_mod.F90.

                    @@ -575,7 +575,7 @@

                    Definition at line 70 of file ip_grid_mod.F90.

                    +

                    Definition at line 76 of file ip_grid_mod.F90.

                    @@ -601,7 +601,7 @@

                    Definition at line 64 of file ip_grid_mod.F90.

                    +

                    Definition at line 70 of file ip_grid_mod.F90.

                    @@ -627,7 +627,7 @@

                    Definition at line 57 of file ip_grid_mod.F90.

                    +

                    Definition at line 63 of file ip_grid_mod.F90.

                    @@ -662,7 +662,7 @@

                    Definition at line 63 of file ip_grid_mod.F90.

                    +

                    Definition at line 69 of file ip_grid_mod.F90.

                    @@ -689,7 +689,7 @@

                    Definition at line 66 of file ip_grid_mod.F90.

                    +

                    Definition at line 72 of file ip_grid_mod.F90.

                    @@ -715,7 +715,7 @@

                    Definition at line 71 of file ip_grid_mod.F90.

                    +

                    Definition at line 77 of file ip_grid_mod.F90.

                    diff --git a/structip__gaussian__grid__mod_1_1ip__gaussian__grid.html b/structip__gaussian__grid__mod_1_1ip__gaussian__grid.html index e4ccb16b..aef84e3c 100644 --- a/structip__gaussian__grid__mod_1_1ip__gaussian__grid.html +++ b/structip__gaussian__grid__mod_1_1ip__gaussian__grid.html @@ -26,7 +26,7 @@

                    @@ -181,7 +181,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                     real, dimension(*)  GRIDMN,
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    NCEPLIBS-ip -  5.0.0 +  5.1.0

                    Detailed Description

                    -

                    Definition at line 24 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 25 of file ip_gaussian_grid_mod.F90.

                    Member Function/Subroutine Documentation

                    ◆ field_pos()

                    @@ -206,7 +206,7 @@

                    Returns
                    Integer position in grib field to locate grid point.
                    -

                    Definition at line 82 of file ip_grid_mod.F90.

                    +

                    Definition at line 88 of file ip_grid_mod.F90.

                    @@ -233,7 +233,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 40 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 41 of file ip_gaussian_grid_mod.F90.

                    @@ -260,7 +260,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 84 of file ip_grid_mod.F90.

                    +

                    Definition at line 90 of file ip_grid_mod.F90.

                    @@ -287,7 +287,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 35 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 36 of file ip_gaussian_grid_mod.F90.

                    @@ -314,7 +314,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 37 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 38 of file ip_gaussian_grid_mod.F90.

                    @@ -341,7 +341,7 @@

                    Definition at line 53 of file ip_grid_mod.F90.

                    +

                    Definition at line 59 of file ip_grid_mod.F90.

                    @@ -368,7 +368,7 @@

                    GRIB2 Section 3, octets 64-67.

                    -

                    Definition at line 26 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 27 of file ip_gaussian_grid_mod.F90.

                    @@ -394,7 +394,7 @@

                    Definition at line 72 of file ip_grid_mod.F90.

                    +

                    Definition at line 78 of file ip_grid_mod.F90.

                    @@ -421,7 +421,7 @@

                    -

                    Definition at line 30 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 31 of file ip_gaussian_grid_mod.F90.

                    @@ -447,7 +447,7 @@

                    Definition at line 55 of file ip_grid_mod.F90.

                    +

                    Definition at line 61 of file ip_grid_mod.F90.

                    @@ -473,7 +473,7 @@

                    Definition at line 68 of file ip_grid_mod.F90.

                    +

                    Definition at line 74 of file ip_grid_mod.F90.

                    @@ -500,7 +500,7 @@

                    Definition at line 31 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 32 of file ip_gaussian_grid_mod.F90.

                    @@ -527,7 +527,7 @@

                    -

                    Definition at line 25 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 26 of file ip_gaussian_grid_mod.F90.

                    @@ -553,7 +553,7 @@

                    Definition at line 56 of file ip_grid_mod.F90.

                    +

                    Definition at line 62 of file ip_grid_mod.F90.

                    @@ -580,7 +580,7 @@

                    Definition at line 32 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 33 of file ip_gaussian_grid_mod.F90.

                    @@ -606,7 +606,7 @@

                    Definition at line 69 of file ip_grid_mod.F90.

                    +

                    Definition at line 75 of file ip_grid_mod.F90.

                    @@ -632,7 +632,7 @@

                    Definition at line 70 of file ip_grid_mod.F90.

                    +

                    Definition at line 76 of file ip_grid_mod.F90.

                    @@ -658,7 +658,7 @@

                    Definition at line 64 of file ip_grid_mod.F90.

                    +

                    Definition at line 70 of file ip_grid_mod.F90.

                    @@ -684,7 +684,7 @@

                    Definition at line 57 of file ip_grid_mod.F90.

                    +

                    Definition at line 63 of file ip_grid_mod.F90.

                    @@ -719,7 +719,7 @@

                    Definition at line 63 of file ip_grid_mod.F90.

                    +

                    Definition at line 69 of file ip_grid_mod.F90.

                    @@ -746,7 +746,7 @@

                    Definition at line 66 of file ip_grid_mod.F90.

                    +

                    Definition at line 72 of file ip_grid_mod.F90.

                    @@ -772,7 +772,7 @@

                    Definition at line 71 of file ip_grid_mod.F90.

                    +

                    Definition at line 77 of file ip_grid_mod.F90.

                    @@ -799,7 +799,7 @@

                    Definition at line 27 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 28 of file ip_gaussian_grid_mod.F90.

                    @@ -826,7 +826,7 @@

                    Definition at line 28 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 29 of file ip_gaussian_grid_mod.F90.

                    @@ -853,7 +853,7 @@

                    Definition at line 29 of file ip_gaussian_grid_mod.F90.

                    +

                    Definition at line 30 of file ip_gaussian_grid_mod.F90.

                    diff --git a/structip__grid__descriptor__mod_1_1grib1__descriptor.html b/structip__grid__descriptor__mod_1_1grib1__descriptor.html index 54b0689e..e440e729 100644 --- a/structip__grid__descriptor__mod_1_1grib1__descriptor.html +++ b/structip__grid__descriptor__mod_1_1grib1__descriptor.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    diff --git a/structip__grid__descriptor__mod_1_1grib2__descriptor.html b/structip__grid__descriptor__mod_1_1grib2__descriptor.html index f8a20292..97d86f73 100644 --- a/structip__grid__descriptor__mod_1_1grib2__descriptor.html +++ b/structip__grid__descriptor__mod_1_1grib2__descriptor.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    diff --git a/structip__grid__descriptor__mod_1_1ip__grid__descriptor.html b/structip__grid__descriptor__mod_1_1ip__grid__descriptor.html index 3ae0ed05..d7f674e8 100644 --- a/structip__grid__descriptor__mod_1_1ip__grid__descriptor.html +++ b/structip__grid__descriptor__mod_1_1ip__grid__descriptor.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    diff --git a/structip__grid__mod_1_1ip__grid.html b/structip__grid__mod_1_1ip__grid.html index 6b38ae6f..65436865 100644 --- a/structip__grid__mod_1_1ip__grid.html +++ b/structip__grid__mod_1_1ip__grid.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    @@ -179,7 +179,7 @@
                    Author
                    Kyle Gerheiser
                    Date
                    July 2021
                    -

                    Definition at line 52 of file ip_grid_mod.F90.

                    +

                    Definition at line 58 of file ip_grid_mod.F90.

                    Member Function/Subroutine Documentation

                    ◆ field_pos()

                    @@ -204,7 +204,7 @@

                    Returns
                    Integer position in grib field to locate grid point.
                    -

                    Definition at line 82 of file ip_grid_mod.F90.

                    +

                    Definition at line 88 of file ip_grid_mod.F90.

                    @@ -231,7 +231,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 79 of file ip_grid_mod.F90.

                    +

                    Definition at line 85 of file ip_grid_mod.F90.

                    @@ -258,7 +258,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 84 of file ip_grid_mod.F90.

                    +

                    Definition at line 90 of file ip_grid_mod.F90.

                    @@ -285,7 +285,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 75 of file ip_grid_mod.F90.

                    +

                    Definition at line 81 of file ip_grid_mod.F90.

                    @@ -312,7 +312,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 77 of file ip_grid_mod.F90.

                    +

                    Definition at line 83 of file ip_grid_mod.F90.

                    @@ -339,7 +339,7 @@

                    Definition at line 53 of file ip_grid_mod.F90.

                    +

                    Definition at line 59 of file ip_grid_mod.F90.

                    @@ -365,7 +365,7 @@

                    Definition at line 72 of file ip_grid_mod.F90.

                    +

                    Definition at line 78 of file ip_grid_mod.F90.

                    @@ -391,7 +391,7 @@

                    Definition at line 55 of file ip_grid_mod.F90.

                    +

                    Definition at line 61 of file ip_grid_mod.F90.

                    @@ -417,7 +417,7 @@

                    Definition at line 68 of file ip_grid_mod.F90.

                    +

                    Definition at line 74 of file ip_grid_mod.F90.

                    @@ -443,7 +443,7 @@

                    Definition at line 56 of file ip_grid_mod.F90.

                    +

                    Definition at line 62 of file ip_grid_mod.F90.

                    @@ -469,7 +469,7 @@

                    Definition at line 69 of file ip_grid_mod.F90.

                    +

                    Definition at line 75 of file ip_grid_mod.F90.

                    @@ -495,7 +495,7 @@

                    Definition at line 70 of file ip_grid_mod.F90.

                    +

                    Definition at line 76 of file ip_grid_mod.F90.

                    @@ -521,7 +521,7 @@

                    Definition at line 64 of file ip_grid_mod.F90.

                    +

                    Definition at line 70 of file ip_grid_mod.F90.

                    @@ -547,7 +547,7 @@

                    Definition at line 57 of file ip_grid_mod.F90.

                    +

                    Definition at line 63 of file ip_grid_mod.F90.

                    @@ -582,7 +582,7 @@

                    Definition at line 63 of file ip_grid_mod.F90.

                    +

                    Definition at line 69 of file ip_grid_mod.F90.

                    @@ -609,7 +609,7 @@

                    Definition at line 66 of file ip_grid_mod.F90.

                    +

                    Definition at line 72 of file ip_grid_mod.F90.

                    @@ -635,7 +635,7 @@

                    Definition at line 71 of file ip_grid_mod.F90.

                    +

                    Definition at line 77 of file ip_grid_mod.F90.

                    diff --git a/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html b/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html index 50329453..d99f1331 100644 --- a/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html +++ b/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    @@ -209,7 +209,7 @@

                    Returns
                    Integer position in grib field to locate grid point.
                    -

                    Definition at line 82 of file ip_grid_mod.F90.

                    +

                    Definition at line 88 of file ip_grid_mod.F90.

                    @@ -263,7 +263,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 84 of file ip_grid_mod.F90.

                    +

                    Definition at line 90 of file ip_grid_mod.F90.

                    @@ -344,7 +344,7 @@

                    Definition at line 53 of file ip_grid_mod.F90.

                    +

                    Definition at line 59 of file ip_grid_mod.F90.

                    @@ -424,7 +424,7 @@

                    Definition at line 72 of file ip_grid_mod.F90.

                    +

                    Definition at line 78 of file ip_grid_mod.F90.

                    @@ -477,7 +477,7 @@

                    Definition at line 55 of file ip_grid_mod.F90.

                    +

                    Definition at line 61 of file ip_grid_mod.F90.

                    @@ -530,7 +530,7 @@

                    Definition at line 68 of file ip_grid_mod.F90.

                    +

                    Definition at line 74 of file ip_grid_mod.F90.

                    @@ -556,7 +556,7 @@

                    Definition at line 56 of file ip_grid_mod.F90.

                    +

                    Definition at line 62 of file ip_grid_mod.F90.

                    @@ -582,7 +582,7 @@

                    Definition at line 69 of file ip_grid_mod.F90.

                    +

                    Definition at line 75 of file ip_grid_mod.F90.

                    @@ -608,7 +608,7 @@

                    Definition at line 70 of file ip_grid_mod.F90.

                    +

                    Definition at line 76 of file ip_grid_mod.F90.

                    @@ -634,7 +634,7 @@

                    Definition at line 64 of file ip_grid_mod.F90.

                    +

                    Definition at line 70 of file ip_grid_mod.F90.

                    @@ -660,7 +660,7 @@

                    Definition at line 57 of file ip_grid_mod.F90.

                    +

                    Definition at line 63 of file ip_grid_mod.F90.

                    @@ -695,7 +695,7 @@

                    Definition at line 63 of file ip_grid_mod.F90.

                    +

                    Definition at line 69 of file ip_grid_mod.F90.

                    @@ -722,7 +722,7 @@

                    Definition at line 66 of file ip_grid_mod.F90.

                    +

                    Definition at line 72 of file ip_grid_mod.F90.

                    @@ -775,7 +775,7 @@

                    Definition at line 71 of file ip_grid_mod.F90.

                    +

                    Definition at line 77 of file ip_grid_mod.F90.

                    diff --git a/structip__mercator__grid__mod_1_1ip__mercator__grid.html b/structip__mercator__grid__mod_1_1ip__mercator__grid.html index 9fee703e..f210f13e 100644 --- a/structip__mercator__grid__mod_1_1ip__mercator__grid.html +++ b/structip__mercator__grid__mod_1_1ip__mercator__grid.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    @@ -203,7 +203,7 @@

                    Returns
                    Integer position in grib field to locate grid point.
                    -

                    Definition at line 82 of file ip_grid_mod.F90.

                    +

                    Definition at line 88 of file ip_grid_mod.F90.

                    @@ -259,7 +259,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 84 of file ip_grid_mod.F90.

                    +

                    Definition at line 90 of file ip_grid_mod.F90.

                    @@ -340,7 +340,7 @@

                    Definition at line 53 of file ip_grid_mod.F90.

                    +

                    Definition at line 59 of file ip_grid_mod.F90.

                    @@ -420,7 +420,7 @@

                    Definition at line 72 of file ip_grid_mod.F90.

                    +

                    Definition at line 78 of file ip_grid_mod.F90.

                    @@ -473,7 +473,7 @@

                    Definition at line 55 of file ip_grid_mod.F90.

                    +

                    Definition at line 61 of file ip_grid_mod.F90.

                    @@ -499,7 +499,7 @@

                    Definition at line 68 of file ip_grid_mod.F90.

                    +

                    Definition at line 74 of file ip_grid_mod.F90.

                    @@ -525,7 +525,7 @@

                    Definition at line 56 of file ip_grid_mod.F90.

                    +

                    Definition at line 62 of file ip_grid_mod.F90.

                    @@ -551,7 +551,7 @@

                    Definition at line 69 of file ip_grid_mod.F90.

                    +

                    Definition at line 75 of file ip_grid_mod.F90.

                    @@ -577,7 +577,7 @@

                    Definition at line 70 of file ip_grid_mod.F90.

                    +

                    Definition at line 76 of file ip_grid_mod.F90.

                    @@ -603,7 +603,7 @@

                    Definition at line 64 of file ip_grid_mod.F90.

                    +

                    Definition at line 70 of file ip_grid_mod.F90.

                    @@ -629,7 +629,7 @@

                    Definition at line 57 of file ip_grid_mod.F90.

                    +

                    Definition at line 63 of file ip_grid_mod.F90.

                    @@ -664,7 +664,7 @@

                    Definition at line 63 of file ip_grid_mod.F90.

                    +

                    Definition at line 69 of file ip_grid_mod.F90.

                    @@ -691,7 +691,7 @@

                    Definition at line 66 of file ip_grid_mod.F90.

                    +

                    Definition at line 72 of file ip_grid_mod.F90.

                    @@ -717,7 +717,7 @@

                    Definition at line 71 of file ip_grid_mod.F90.

                    +

                    Definition at line 77 of file ip_grid_mod.F90.

                    diff --git a/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html b/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html index 87045228..e96e0fc3 100644 --- a/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html +++ b/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    @@ -209,7 +209,7 @@

                    Returns
                    Integer position in grib field to locate grid point.
                    -

                    Definition at line 82 of file ip_grid_mod.F90.

                    +

                    Definition at line 88 of file ip_grid_mod.F90.

                    @@ -263,7 +263,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 84 of file ip_grid_mod.F90.

                    +

                    Definition at line 90 of file ip_grid_mod.F90.

                    @@ -344,7 +344,7 @@

                    Definition at line 53 of file ip_grid_mod.F90.

                    +

                    Definition at line 59 of file ip_grid_mod.F90.

                    @@ -422,7 +422,7 @@

                    Definition at line 72 of file ip_grid_mod.F90.

                    +

                    Definition at line 78 of file ip_grid_mod.F90.

                    @@ -501,7 +501,7 @@

                    Definition at line 55 of file ip_grid_mod.F90.

                    +

                    Definition at line 61 of file ip_grid_mod.F90.

                    @@ -554,7 +554,7 @@

                    Definition at line 68 of file ip_grid_mod.F90.

                    +

                    Definition at line 74 of file ip_grid_mod.F90.

                    @@ -580,7 +580,7 @@

                    Definition at line 56 of file ip_grid_mod.F90.

                    +

                    Definition at line 62 of file ip_grid_mod.F90.

                    @@ -606,7 +606,7 @@

                    Definition at line 69 of file ip_grid_mod.F90.

                    +

                    Definition at line 75 of file ip_grid_mod.F90.

                    @@ -632,7 +632,7 @@

                    Definition at line 70 of file ip_grid_mod.F90.

                    +

                    Definition at line 76 of file ip_grid_mod.F90.

                    @@ -658,7 +658,7 @@

                    Definition at line 64 of file ip_grid_mod.F90.

                    +

                    Definition at line 70 of file ip_grid_mod.F90.

                    @@ -684,7 +684,7 @@

                    Definition at line 57 of file ip_grid_mod.F90.

                    +

                    Definition at line 63 of file ip_grid_mod.F90.

                    @@ -719,7 +719,7 @@

                    Definition at line 63 of file ip_grid_mod.F90.

                    +

                    Definition at line 69 of file ip_grid_mod.F90.

                    @@ -746,7 +746,7 @@

                    Definition at line 66 of file ip_grid_mod.F90.

                    +

                    Definition at line 72 of file ip_grid_mod.F90.

                    @@ -798,7 +798,7 @@

                    Definition at line 71 of file ip_grid_mod.F90.

                    +

                    Definition at line 77 of file ip_grid_mod.F90.

                    diff --git a/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html b/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html index cb1ff911..89d8efc4 100644 --- a/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html +++ b/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    @@ -209,7 +209,7 @@

                    Returns
                    Integer position in grib field to locate grid point.
                    -

                    Definition at line 82 of file ip_grid_mod.F90.

                    +

                    Definition at line 88 of file ip_grid_mod.F90.

                    @@ -263,7 +263,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 84 of file ip_grid_mod.F90.

                    +

                    Definition at line 90 of file ip_grid_mod.F90.

                    @@ -370,7 +370,7 @@

                    Definition at line 53 of file ip_grid_mod.F90.

                    +

                    Definition at line 59 of file ip_grid_mod.F90.

                    @@ -448,7 +448,7 @@

                    Definition at line 72 of file ip_grid_mod.F90.

                    +

                    Definition at line 78 of file ip_grid_mod.F90.

                    @@ -500,7 +500,7 @@

                    Definition at line 55 of file ip_grid_mod.F90.

                    +

                    Definition at line 61 of file ip_grid_mod.F90.

                    @@ -553,7 +553,7 @@

                    Definition at line 68 of file ip_grid_mod.F90.

                    +

                    Definition at line 74 of file ip_grid_mod.F90.

                    @@ -579,7 +579,7 @@

                    Definition at line 56 of file ip_grid_mod.F90.

                    +

                    Definition at line 62 of file ip_grid_mod.F90.

                    @@ -605,7 +605,7 @@

                    Definition at line 69 of file ip_grid_mod.F90.

                    +

                    Definition at line 75 of file ip_grid_mod.F90.

                    @@ -631,7 +631,7 @@

                    Definition at line 70 of file ip_grid_mod.F90.

                    +

                    Definition at line 76 of file ip_grid_mod.F90.

                    @@ -657,7 +657,7 @@

                    Definition at line 64 of file ip_grid_mod.F90.

                    +

                    Definition at line 70 of file ip_grid_mod.F90.

                    @@ -683,7 +683,7 @@

                    Definition at line 57 of file ip_grid_mod.F90.

                    +

                    Definition at line 63 of file ip_grid_mod.F90.

                    @@ -718,7 +718,7 @@

                    Definition at line 63 of file ip_grid_mod.F90.

                    +

                    Definition at line 69 of file ip_grid_mod.F90.

                    @@ -745,7 +745,7 @@

                    Definition at line 66 of file ip_grid_mod.F90.

                    +

                    Definition at line 72 of file ip_grid_mod.F90.

                    @@ -771,7 +771,7 @@

                    Definition at line 71 of file ip_grid_mod.F90.

                    +

                    Definition at line 77 of file ip_grid_mod.F90.

                    diff --git a/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html b/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html index 8ba671d8..6a372b93 100644 --- a/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html +++ b/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    @@ -206,7 +206,7 @@

                    Returns
                    Integer position in grib field to locate grid point.
                    -

                    Definition at line 82 of file ip_grid_mod.F90.

                    +

                    Definition at line 88 of file ip_grid_mod.F90.

                    @@ -260,7 +260,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 84 of file ip_grid_mod.F90.

                    +

                    Definition at line 90 of file ip_grid_mod.F90.

                    @@ -367,7 +367,7 @@

                    Definition at line 53 of file ip_grid_mod.F90.

                    +

                    Definition at line 59 of file ip_grid_mod.F90.

                    @@ -445,7 +445,7 @@

                    Definition at line 72 of file ip_grid_mod.F90.

                    +

                    Definition at line 78 of file ip_grid_mod.F90.

                    @@ -471,7 +471,7 @@

                    Definition at line 55 of file ip_grid_mod.F90.

                    +

                    Definition at line 61 of file ip_grid_mod.F90.

                    @@ -524,7 +524,7 @@

                    Definition at line 68 of file ip_grid_mod.F90.

                    +

                    Definition at line 74 of file ip_grid_mod.F90.

                    @@ -550,7 +550,7 @@

                    Definition at line 56 of file ip_grid_mod.F90.

                    +

                    Definition at line 62 of file ip_grid_mod.F90.

                    @@ -576,7 +576,7 @@

                    Definition at line 69 of file ip_grid_mod.F90.

                    +

                    Definition at line 75 of file ip_grid_mod.F90.

                    @@ -602,7 +602,7 @@

                    Definition at line 70 of file ip_grid_mod.F90.

                    +

                    Definition at line 76 of file ip_grid_mod.F90.

                    @@ -628,7 +628,7 @@

                    Definition at line 64 of file ip_grid_mod.F90.

                    +

                    Definition at line 70 of file ip_grid_mod.F90.

                    @@ -654,7 +654,7 @@

                    Definition at line 57 of file ip_grid_mod.F90.

                    +

                    Definition at line 63 of file ip_grid_mod.F90.

                    @@ -689,7 +689,7 @@

                    Definition at line 63 of file ip_grid_mod.F90.

                    +

                    Definition at line 69 of file ip_grid_mod.F90.

                    @@ -716,7 +716,7 @@

                    Definition at line 66 of file ip_grid_mod.F90.

                    +

                    Definition at line 72 of file ip_grid_mod.F90.

                    @@ -742,7 +742,7 @@

                    Definition at line 71 of file ip_grid_mod.F90.

                    +

                    Definition at line 77 of file ip_grid_mod.F90.

                    diff --git a/structip__station__points__grid__mod_1_1ip__station__points__grid.html b/structip__station__points__grid__mod_1_1ip__station__points__grid.html index 743c02d6..3082ed30 100644 --- a/structip__station__points__grid__mod_1_1ip__station__points__grid.html +++ b/structip__station__points__grid__mod_1_1ip__station__points__grid.html @@ -26,7 +26,7 @@
                    NCEPLIBS-ip -  5.0.0 +  5.1.0
                    @@ -182,7 +182,7 @@

                    Returns
                    Integer position in grib field to locate grid point.
                    -

                    Definition at line 82 of file ip_grid_mod.F90.

                    +

                    Definition at line 88 of file ip_grid_mod.F90.

                    @@ -236,7 +236,7 @@

                    Returns
                    N/A
                    -

                    Definition at line 84 of file ip_grid_mod.F90.

                    +

                    Definition at line 90 of file ip_grid_mod.F90.

                    @@ -317,7 +317,7 @@

                    Definition at line 53 of file ip_grid_mod.F90.

                    +

                    Definition at line 59 of file ip_grid_mod.F90.

                    @@ -343,7 +343,7 @@

                    Definition at line 72 of file ip_grid_mod.F90.

                    +

                    Definition at line 78 of file ip_grid_mod.F90.

                    @@ -369,7 +369,7 @@

                    Definition at line 55 of file ip_grid_mod.F90.

                    +

                    Definition at line 61 of file ip_grid_mod.F90.

                    @@ -395,7 +395,7 @@

                    Definition at line 68 of file ip_grid_mod.F90.

                    +

                    Definition at line 74 of file ip_grid_mod.F90.

                    @@ -421,7 +421,7 @@

                    Definition at line 56 of file ip_grid_mod.F90.

                    +

                    Definition at line 62 of file ip_grid_mod.F90.

                    @@ -447,7 +447,7 @@

                    Definition at line 69 of file ip_grid_mod.F90.

                    +

                    Definition at line 75 of file ip_grid_mod.F90.

                    @@ -473,7 +473,7 @@

                    Definition at line 70 of file ip_grid_mod.F90.

                    +

                    Definition at line 76 of file ip_grid_mod.F90.

                    @@ -499,7 +499,7 @@

                    Definition at line 64 of file ip_grid_mod.F90.

                    +

                    Definition at line 70 of file ip_grid_mod.F90.

                    @@ -525,7 +525,7 @@

                    Definition at line 57 of file ip_grid_mod.F90.

                    +

                    Definition at line 63 of file ip_grid_mod.F90.

                    @@ -560,7 +560,7 @@

                    Definition at line 63 of file ip_grid_mod.F90.

                    +

                    Definition at line 69 of file ip_grid_mod.F90.

                    @@ -587,7 +587,7 @@

                    Definition at line 66 of file ip_grid_mod.F90.

                    +

                    Definition at line 72 of file ip_grid_mod.F90.

                    @@ -613,7 +613,7 @@

                    Definition at line 71 of file ip_grid_mod.F90.

                    +

                    Definition at line 77 of file ip_grid_mod.F90.

                    diff --git a/ver-5.0.0/annotated.html b/ver-5.0.0/annotated.html new file mode 100644 index 00000000..97be86b9 --- /dev/null +++ b/ver-5.0.0/annotated.html @@ -0,0 +1,152 @@ + + + + + + + +NCEPLIBS-ip: Data Types List + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    Data Types List
                    +
                    +
                    +
                    Here are the data types with brief descriptions:
                    +
                    [detail level 12]
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                     Nbicubic_interp_modBicubic interpolation routines for scalars and vectors
                     Cinterpolate_bicubic
                     Nbilinear_interp_modBilinear interpolation routines for scalars and vectors
                     Cinterpolate_bilinear
                     Nbudget_interp_modBudget interpolation routines for scalars and vectors
                     Cinterpolate_budget
                     Ngdswzd_modDriver module for gdswzd routines
                     Cgdswzd
                     Nip_equid_cylind_grid_modEquidistant cylindrical grib decoder and grid coordinate transformations
                     Cip_equid_cylind_grid
                     Nip_gaussian_grid_modGaussian grid coordinate transformations
                     Cip_gaussian_grid
                     Nip_grid_descriptor_modUsers derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions
                     Cgrib1_descriptorDescriptor representing a grib1 grib descriptor section (GDS) with an integer array
                     Cgrib2_descriptorGrib-2 descriptor containing a grib2 GDT represented by an integer array
                     Cinit_descriptor
                     Cip_grid_descriptorAbstract descriptor object which represents a grib1 or grib2 descriptor
                     Coperator(==)
                     Nip_grid_factory_modRoutines for creating an ip_grid given a Grib descriptor
                     Cinit_grid
                     Nip_grid_modAbstract ip_grid type
                     Cgdswzd_interface
                     Cinit_grib1_interface
                     Cinit_grib2_interface
                     Cip_gridAbstract grid that holds fields and methods common to all grids
                     Coperator(==)Check equality
                     Nip_lambert_conf_grid_modLambert conformal grib decoder and grid coordinate transformations
                     Cip_lambert_conf_grid
                     Nip_mercator_grid_modGDS wizard for mercator cylindrical
                     Cip_mercator_grid
                     Nip_polar_stereo_grid_modGDS wizard for polar stereographic azimuthal
                     Cip_polar_stereo_grid
                     Nip_rot_equid_cylind_egrid_modRotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E
                     Cip_rot_equid_cylind_egrid
                     Nip_rot_equid_cylind_grid_modRotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D
                     Cip_rot_equid_cylind_grid
                     Nip_station_points_grid_modInterpolate gridded data to a series of station points
                     Cip_station_points_grid
                     Nipolates_modTop-level driver for scalar interpolation interpolation routine ipolates()
                     Cipolates
                     Nipolatev_modTop-level driver for vector interpolation interpolation routine ipolatev()
                     Cipolatev
                     Nneighbor_budget_interp_modInterpolate scalar fields (neighbor)
                     Cinterpolate_neighbor_budget
                     Nneighbor_interp_modInterpolate scalar fields (neighbor)
                     Cinterpolate_neighbor
                     Nspectral_interp_modInterpolate spectral
                     Cinterpolate_spectral
                     Cpolates4
                     Cpolatev4
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/annotated_dup.js b/ver-5.0.0/annotated_dup.js new file mode 100644 index 00000000..fdb0e0fd --- /dev/null +++ b/ver-5.0.0/annotated_dup.js @@ -0,0 +1,73 @@ +var annotated_dup = +[ + [ "bicubic_interp_mod", "namespacebicubic__interp__mod.html", [ + [ "interpolate_bicubic", "interfacebicubic__interp__mod_1_1interpolate__bicubic.html", "interfacebicubic__interp__mod_1_1interpolate__bicubic" ] + ] ], + [ "bilinear_interp_mod", "namespacebilinear__interp__mod.html", [ + [ "interpolate_bilinear", "interfacebilinear__interp__mod_1_1interpolate__bilinear.html", "interfacebilinear__interp__mod_1_1interpolate__bilinear" ] + ] ], + [ "budget_interp_mod", "namespacebudget__interp__mod.html", [ + [ "interpolate_budget", "interfacebudget__interp__mod_1_1interpolate__budget.html", "interfacebudget__interp__mod_1_1interpolate__budget" ] + ] ], + [ "gdswzd_mod", "namespacegdswzd__mod.html", [ + [ "gdswzd", "interfacegdswzd__mod_1_1gdswzd.html", "interfacegdswzd__mod_1_1gdswzd" ] + ] ], + [ "ip_equid_cylind_grid_mod", "namespaceip__equid__cylind__grid__mod.html", [ + [ "ip_equid_cylind_grid", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid" ] + ] ], + [ "ip_gaussian_grid_mod", "namespaceip__gaussian__grid__mod.html", [ + [ "ip_gaussian_grid", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html", "structip__gaussian__grid__mod_1_1ip__gaussian__grid" ] + ] ], + [ "ip_grid_descriptor_mod", "namespaceip__grid__descriptor__mod.html", [ + [ "grib1_descriptor", "structip__grid__descriptor__mod_1_1grib1__descriptor.html", "structip__grid__descriptor__mod_1_1grib1__descriptor" ], + [ "grib2_descriptor", "structip__grid__descriptor__mod_1_1grib2__descriptor.html", "structip__grid__descriptor__mod_1_1grib2__descriptor" ], + [ "init_descriptor", "interfaceip__grid__descriptor__mod_1_1init__descriptor.html", "interfaceip__grid__descriptor__mod_1_1init__descriptor" ], + [ "ip_grid_descriptor", "structip__grid__descriptor__mod_1_1ip__grid__descriptor.html", "structip__grid__descriptor__mod_1_1ip__grid__descriptor" ], + [ "operator(==)", "interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html", "interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08" ] + ] ], + [ "ip_grid_factory_mod", "namespaceip__grid__factory__mod.html", [ + [ "init_grid", "interfaceip__grid__factory__mod_1_1init__grid.html", "interfaceip__grid__factory__mod_1_1init__grid" ] + ] ], + [ "ip_grid_mod", "namespaceip__grid__mod.html", [ + [ "gdswzd_interface", "interfaceip__grid__mod_1_1gdswzd__interface.html", "interfaceip__grid__mod_1_1gdswzd__interface" ], + [ "init_grib1_interface", "interfaceip__grid__mod_1_1init__grib1__interface.html", "interfaceip__grid__mod_1_1init__grib1__interface" ], + [ "init_grib2_interface", "interfaceip__grid__mod_1_1init__grib2__interface.html", "interfaceip__grid__mod_1_1init__grib2__interface" ], + [ "ip_grid", "structip__grid__mod_1_1ip__grid.html", "structip__grid__mod_1_1ip__grid" ], + [ "operator(==)", "interfaceip__grid__mod_1_1operator_07_0a_0a_08.html", "interfaceip__grid__mod_1_1operator_07_0a_0a_08" ] + ] ], + [ "ip_lambert_conf_grid_mod", "namespaceip__lambert__conf__grid__mod.html", [ + [ "ip_lambert_conf_grid", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid" ] + ] ], + [ "ip_mercator_grid_mod", "namespaceip__mercator__grid__mod.html", [ + [ "ip_mercator_grid", "structip__mercator__grid__mod_1_1ip__mercator__grid.html", "structip__mercator__grid__mod_1_1ip__mercator__grid" ] + ] ], + [ "ip_polar_stereo_grid_mod", "namespaceip__polar__stereo__grid__mod.html", [ + [ "ip_polar_stereo_grid", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid" ] + ] ], + [ "ip_rot_equid_cylind_egrid_mod", "namespaceip__rot__equid__cylind__egrid__mod.html", [ + [ "ip_rot_equid_cylind_egrid", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid" ] + ] ], + [ "ip_rot_equid_cylind_grid_mod", "namespaceip__rot__equid__cylind__grid__mod.html", [ + [ "ip_rot_equid_cylind_grid", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid" ] + ] ], + [ "ip_station_points_grid_mod", "namespaceip__station__points__grid__mod.html", [ + [ "ip_station_points_grid", "structip__station__points__grid__mod_1_1ip__station__points__grid.html", "structip__station__points__grid__mod_1_1ip__station__points__grid" ] + ] ], + [ "ipolates_mod", "namespaceipolates__mod.html", [ + [ "ipolates", "interfaceipolates__mod_1_1ipolates.html", "interfaceipolates__mod_1_1ipolates" ] + ] ], + [ "ipolatev_mod", "namespaceipolatev__mod.html", [ + [ "ipolatev", "interfaceipolatev__mod_1_1ipolatev.html", "interfaceipolatev__mod_1_1ipolatev" ] + ] ], + [ "neighbor_budget_interp_mod", "namespaceneighbor__budget__interp__mod.html", [ + [ "interpolate_neighbor_budget", "interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html", "interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget" ] + ] ], + [ "neighbor_interp_mod", "namespaceneighbor__interp__mod.html", [ + [ "interpolate_neighbor", "interfaceneighbor__interp__mod_1_1interpolate__neighbor.html", "interfaceneighbor__interp__mod_1_1interpolate__neighbor" ] + ] ], + [ "spectral_interp_mod", "namespacespectral__interp__mod.html", [ + [ "interpolate_spectral", "interfacespectral__interp__mod_1_1interpolate__spectral.html", "interfacespectral__interp__mod_1_1interpolate__spectral" ], + [ "polates4", "interfacespectral__interp__mod_1_1polates4.html", "interfacespectral__interp__mod_1_1polates4" ], + [ "polatev4", "interfacespectral__interp__mod_1_1polatev4.html", "interfacespectral__interp__mod_1_1polatev4" ] + ] ] +]; \ No newline at end of file diff --git a/ver-5.0.0/bc_s.png b/ver-5.0.0/bc_s.png new file mode 100644 index 00000000..224b29aa Binary files /dev/null and b/ver-5.0.0/bc_s.png differ diff --git a/ver-5.0.0/bdwn.png b/ver-5.0.0/bdwn.png new file mode 100644 index 00000000..940a0b95 Binary files /dev/null and b/ver-5.0.0/bdwn.png differ diff --git a/ver-5.0.0/bicubic__interp__mod_8F90.html b/ver-5.0.0/bicubic__interp__mod_8F90.html new file mode 100644 index 00000000..b524a502 --- /dev/null +++ b/ver-5.0.0/bicubic__interp__mod_8F90.html @@ -0,0 +1,134 @@ + + + + + + + +NCEPLIBS-ip: bicubic_interp_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    bicubic_interp_mod.F90 File Reference
                    +
                    +
                    + +

                    Bicubic interpolation routines for scalars and vectors. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    interface  bicubic_interp_mod::interpolate_bicubic
                     
                    + + + + +

                    +Modules

                    module  bicubic_interp_mod
                     Bicubic interpolation routines for scalars and vectors.
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine bicubic_interp_mod::interpolate_bicubic_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     This subprogram performs bicubic interpolation from any grid to any grid for scalar fields. More...
                     
                    subroutine bicubic_interp_mod::interpolate_bicubic_vector (ipopt, grid_in, grid_out, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram performs bicubic interpolation from any grid to any grid for vector fields. More...
                     
                    +

                    Detailed Description

                    +

                    Bicubic interpolation routines for scalars and vectors.

                    +
                    Author
                    Mark Iredell, Kyle Gerheiser, Eric Engle
                    + +

                    Definition in file bicubic_interp_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/bicubic__interp__mod_8F90.js b/ver-5.0.0/bicubic__interp__mod_8F90.js new file mode 100644 index 00000000..6b9a6998 --- /dev/null +++ b/ver-5.0.0/bicubic__interp__mod_8F90.js @@ -0,0 +1,6 @@ +var bicubic__interp__mod_8F90 = +[ + [ "interpolate_bicubic", "interfacebicubic__interp__mod_1_1interpolate__bicubic.html", "interfacebicubic__interp__mod_1_1interpolate__bicubic" ], + [ "interpolate_bicubic_scalar", "bicubic__interp__mod_8F90.html#a54a442e47f1be9511c1684a337d7e2d1", null ], + [ "interpolate_bicubic_vector", "bicubic__interp__mod_8F90.html#a9d27db7d350fc2699aaf5057c3b53d16", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/bicubic__interp__mod_8F90_source.html b/ver-5.0.0/bicubic__interp__mod_8F90_source.html new file mode 100644 index 00000000..32bb7b9f --- /dev/null +++ b/ver-5.0.0/bicubic__interp__mod_8F90_source.html @@ -0,0 +1,565 @@ + + + + + + + +NCEPLIBS-ip: bicubic_interp_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    bicubic_interp_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + +
                    9  use gdswzd_mod
                    +
                    10  use polfix_mod
                    +
                    11  use ip_grids_mod
                    +
                    12  implicit none
                    +
                    13 
                    +
                    14  private
                    +
                    15  public :: interpolate_bicubic
                    +
                    16 
                    + +
                    18  module procedure interpolate_bicubic_scalar
                    +
                    19  module procedure interpolate_bicubic_vector
                    +
                    20  end interface interpolate_bicubic
                    +
                    21 
                    +
                    22  ! Smallest positive real value (use for equality comparisons)
                    +
                    23  REAL :: TINYREAL=tiny(1.0)
                    +
                    24 
                    +
                    25 contains
                    +
                    26 
                    +
                    80  SUBROUTINE interpolate_bicubic_scalar(IPOPT,grid_in,grid_out, &
                    +
                    81  MI,MO,KM,IBI,LI,GI, &
                    +
                    82  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    83  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    84  INTEGER, INTENT(IN ) :: IPOPT(20)
                    +
                    85  INTEGER, INTENT(IN ) :: MI,MO,KM
                    +
                    86  INTEGER, INTENT(IN ) :: IBI(KM)
                    +
                    87  INTEGER, INTENT(INOUT) :: NO
                    +
                    88  INTEGER, INTENT( OUT) :: IRET, IBO(KM)
                    +
                    89  !
                    +
                    90  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    91  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    92  !
                    +
                    93  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    94  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    95  REAL, INTENT( OUT) :: GO(MO,KM)
                    +
                    96  !
                    +
                    97  REAL, PARAMETER :: FILL=-9999.
                    +
                    98  !
                    +
                    99  INTEGER :: IJX(4),IJY(4)
                    +
                    100  INTEGER :: MCON,MP,N,I,J,K
                    +
                    101  INTEGER :: NK,NV
                    +
                    102  LOGICAL :: SAME_GRIDI, SAME_GRIDO
                    +
                    103  !
                    +
                    104  REAL :: PMP,XIJ,YIJ,XF,YF
                    +
                    105  REAL :: G,W,GMIN,GMAX
                    +
                    106  REAL :: WX(4),WY(4)
                    +
                    107  REAL :: XPTS(MO),YPTS(MO)
                    +
                    108  logical :: to_station_points
                    +
                    109 
                    +
                    110  ! Save coeffecients between calls and only compute if grids have changed
                    +
                    111  REAL, ALLOCATABLE,SAVE :: RLATX(:),RLONX(:)
                    +
                    112  REAL, ALLOCATABLE,SAVE :: WXY(:,:,:)
                    +
                    113  INTEGER, SAVE :: NOX=-1,iretx=-1
                    +
                    114  INTEGER, ALLOCATABLE,SAVE :: NXY(:,:,:),NC(:)
                    +
                    115  class(ip_grid), allocatable,save :: prev_grid_in, prev_grid_out
                    +
                    116 
                    +
                    117  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    118  ! SET PARAMETERS
                    +
                    119  iret=0
                    +
                    120  mcon=ipopt(1)
                    +
                    121  mp=ipopt(2)
                    +
                    122  IF(mp.EQ.-1.OR.mp.EQ.0) mp=50
                    +
                    123  IF(mp.LT.0.OR.mp.GT.100) iret=32
                    +
                    124  pmp=mp*0.01
                    +
                    125 
                    +
                    126  if (.not. allocated(prev_grid_in) .or. .not. allocated(prev_grid_out)) then
                    +
                    127  allocate(prev_grid_in, source = grid_in)
                    +
                    128  allocate(prev_grid_out, source = grid_out)
                    +
                    129 
                    +
                    130  same_gridi = .false.
                    +
                    131  same_grido = .false.
                    +
                    132  else
                    +
                    133  same_gridi = grid_in == prev_grid_in
                    +
                    134  same_grido = grid_out == prev_grid_out
                    +
                    135 
                    +
                    136  if (.not. same_gridi .or. .not. same_grido) then
                    +
                    137  deallocate(prev_grid_in)
                    +
                    138  deallocate(prev_grid_out)
                    +
                    139 
                    +
                    140  allocate(prev_grid_in, source = grid_in)
                    +
                    141  allocate(prev_grid_out, source = grid_out)
                    +
                    142  end if
                    +
                    143  end if
                    +
                    144 
                    +
                    145  select type(grid_out)
                    +
                    146  type is(ip_station_points_grid)
                    +
                    147  to_station_points = .true.
                    +
                    148  class default
                    +
                    149  to_station_points = .false.
                    +
                    150  end select
                    +
                    151 
                    +
                    152  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    153  ! SAVE OR SKIP WEIGHT COMPUTATION
                    +
                    154  IF(iret.EQ.0.AND.(to_station_points.OR..NOT.same_gridi.OR..NOT.same_grido))THEN
                    +
                    155  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    156  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    157  CALL gdswzd(grid_out,0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    158  IF(no.EQ.0) iret=3
                    +
                    159  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    160  ! LOCATE INPUT POINTS
                    +
                    161  CALL gdswzd(grid_in,-1,no,fill,xpts,ypts,rlon,rlat,nv)
                    +
                    162  IF(iret.EQ.0.AND.nv.EQ.0) iret=2
                    +
                    163  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    164  ! ALLOCATE AND SAVE GRID DATA
                    +
                    165  IF(nox.NE.no) THEN
                    +
                    166  IF(nox.GE.0) DEALLOCATE(rlatx,rlonx,nc,nxy,wxy)
                    +
                    167  ALLOCATE(rlatx(no),rlonx(no),nc(no),nxy(4,4,no),wxy(4,4,no))
                    +
                    168  nox=no
                    +
                    169  ENDIF
                    +
                    170  iretx=iret
                    +
                    171  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    172  ! COMPUTE WEIGHTS
                    +
                    173  IF(iret.EQ.0) THEN
                    +
                    174  !$OMP PARALLEL DO PRIVATE(N,XIJ,YIJ,IJX,IJY,XF,YF,J,I,WX,WY) SCHEDULE(STATIC)
                    +
                    175  DO n=1,no
                    +
                    176  rlonx(n)=rlon(n)
                    +
                    177  rlatx(n)=rlat(n)
                    +
                    178  xij=xpts(n)
                    +
                    179  yij=ypts(n)
                    +
                    180  IF(abs(xij-fill).GT.tinyreal.AND.abs(yij-fill).GT.tinyreal) THEN
                    +
                    181  ijx(1:4)=floor(xij-1)+(/0,1,2,3/)
                    +
                    182  ijy(1:4)=floor(yij-1)+(/0,1,2,3/)
                    +
                    183  xf=xij-ijx(2)
                    +
                    184  yf=yij-ijy(2)
                    +
                    185  DO j=1,4
                    +
                    186  DO i=1,4
                    +
                    187  nxy(i,j,n) = grid_in%field_pos(ijx(i), ijy(j))
                    +
                    188  ENDDO
                    +
                    189  ENDDO
                    +
                    190  IF(minval(nxy(1:4,1:4,n)).GT.0) THEN
                    +
                    191  ! BICUBIC WHERE 16-POINT STENCIL IS AVAILABLE
                    +
                    192  nc(n)=1
                    +
                    193  wx(1)=xf*(1-xf)*(2-xf)/(-6.)
                    +
                    194  wx(2)=(xf+1)*(1-xf)*(2-xf)/2.
                    +
                    195  wx(3)=(xf+1)*xf*(2-xf)/2.
                    +
                    196  wx(4)=(xf+1)*xf*(1-xf)/(-6.)
                    +
                    197  wy(1)=yf*(1-yf)*(2-yf)/(-6.)
                    +
                    198  wy(2)=(yf+1)*(1-yf)*(2-yf)/2.
                    +
                    199  wy(3)=(yf+1)*yf*(2-yf)/2.
                    +
                    200  wy(4)=(yf+1)*yf*(1-yf)/(-6.)
                    +
                    201  ELSE
                    +
                    202  ! BILINEAR ELSEWHERE NEAR THE EDGE OF THE GRID
                    +
                    203  nc(n)=2
                    +
                    204  wx(1)=0
                    +
                    205  wx(2)=(1-xf)
                    +
                    206  wx(3)=xf
                    +
                    207  wx(4)=0
                    +
                    208  wy(1)=0
                    +
                    209  wy(2)=(1-yf)
                    +
                    210  wy(3)=yf
                    +
                    211  wy(4)=0
                    +
                    212  ENDIF
                    +
                    213  DO j=1,4
                    +
                    214  DO i=1,4
                    +
                    215  wxy(i,j,n)=wx(i)*wy(j)
                    +
                    216  ENDDO
                    +
                    217  ENDDO
                    +
                    218  ELSE
                    +
                    219  nc(n)=0
                    +
                    220  ENDIF
                    +
                    221  ENDDO
                    +
                    222  ENDIF
                    +
                    223  ENDIF
                    +
                    224  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    225  ! INTERPOLATE OVER ALL FIELDS
                    +
                    226  IF(iret.EQ.0.AND.iretx.EQ.0) THEN
                    +
                    227  IF(.not. to_station_points) THEN
                    +
                    228  no=nox
                    +
                    229  DO n=1,no
                    +
                    230  rlon(n)=rlonx(n)
                    +
                    231  rlat(n)=rlatx(n)
                    +
                    232  ENDDO
                    +
                    233  ENDIF
                    +
                    234  !$OMP PARALLEL DO PRIVATE(NK,K,N,G,W,GMIN,GMAX,J,I) SCHEDULE(STATIC)
                    +
                    235  DO nk=1,no*km
                    +
                    236  k=(nk-1)/no+1
                    +
                    237  n=nk-no*(k-1)
                    +
                    238  IF(nc(n).GT.0) THEN
                    +
                    239  g=0
                    +
                    240  w=0
                    +
                    241  IF(mcon.GT.0) gmin=huge(gmin)
                    +
                    242  IF(mcon.GT.0) gmax=-huge(gmax)
                    +
                    243  DO j=nc(n),5-nc(n)
                    +
                    244  DO i=nc(n),5-nc(n)
                    +
                    245  IF(nxy(i,j,n).GT.0)THEN
                    +
                    246  IF(ibi(k).EQ.0.OR.li(nxy(i,j,n),k))THEN
                    +
                    247  g=g+wxy(i,j,n)*gi(nxy(i,j,n),k)
                    +
                    248  w=w+wxy(i,j,n)
                    +
                    249  IF(mcon.GT.0) gmin=min(gmin,gi(nxy(i,j,n),k))
                    +
                    250  IF(mcon.GT.0) gmax=max(gmax,gi(nxy(i,j,n),k))
                    +
                    251  ENDIF
                    +
                    252  ENDIF
                    +
                    253  ENDDO
                    +
                    254  ENDDO
                    +
                    255  lo(n,k)=w.GE.pmp
                    +
                    256  IF(lo(n,k)) THEN
                    +
                    257  go(n,k)=g/w
                    +
                    258  IF(mcon.GT.0) go(n,k)=min(max(go(n,k),gmin),gmax)
                    +
                    259  ELSE
                    +
                    260  go(n,k)=0.
                    +
                    261  ENDIF
                    +
                    262  ELSE
                    +
                    263  lo(n,k)=.false.
                    +
                    264  go(n,k)=0.
                    +
                    265  ENDIF
                    +
                    266  ENDDO
                    +
                    267  DO k=1,km
                    +
                    268  ibo(k)=ibi(k)
                    +
                    269  IF(.NOT.all(lo(1:no,k))) ibo(k)=1
                    +
                    270  ENDDO
                    +
                    271  select type(grid_out)
                    +
                    272  type is(ip_equid_cylind_grid)
                    +
                    273  CALL polfixs(no,mo,km,rlat,ibo,lo,go)
                    +
                    274  end select
                    +
                    275  ELSE
                    +
                    276  IF(iret.EQ.0) iret=iretx
                    +
                    277  IF(.not. to_station_points) no=0
                    +
                    278  ENDIF
                    +
                    279  end subroutine interpolate_bicubic_scalar
                    +
                    280 
                    +
                    338  subroutine interpolate_bicubic_vector(ipopt, grid_in, grid_out, &
                    +
                    339  mi, mo, km, ibi, li, ui, vi, &
                    +
                    340  no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                    +
                    341  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    342  INTEGER, INTENT(IN ) :: IPOPT(20)
                    +
                    343  INTEGER, INTENT(IN ) :: IBI(KM),MI,MO,KM
                    +
                    344  INTEGER, INTENT(INOUT) :: NO
                    +
                    345  INTEGER, INTENT( OUT) :: IRET, IBO(KM)
                    +
                    346  !
                    +
                    347  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    348  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    349  !
                    +
                    350  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    351  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO),CROT(MO),SROT(MO)
                    +
                    352  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    353  !
                    +
                    354  REAL, PARAMETER :: FILL=-9999.
                    +
                    355  !
                    +
                    356  INTEGER :: IJX(4),IJY(4)
                    +
                    357  INTEGER :: MCON,MP,N,I,J,K,NK,NV
                    +
                    358  !
                    +
                    359  LOGICAL :: SAME_GRIDI,SAME_GRIDO
                    +
                    360  !
                    +
                    361  REAL :: CM,SM,UROT,VROT
                    +
                    362  REAL :: PMP,XIJ,YIJ,XF,YF
                    +
                    363  REAL :: U,V,W,UMIN,UMAX,VMIN,VMAX
                    +
                    364  REAL :: XPTS(MO),YPTS(MO)
                    +
                    365  REAL :: WX(4),WY(4)
                    +
                    366  REAL :: XPTI(MI),YPTI(MI),RLOI(MI),RLAI(MI)
                    +
                    367  REAL :: CROI(MI),SROI(MI)
                    +
                    368 
                    +
                    369  logical :: to_station_points
                    +
                    370 
                    +
                    371  ! Save coeffecients between calls and only compute if grids have changed
                    +
                    372  REAL, ALLOCATABLE, SAVE :: RLATX(:),RLONX(:),CROTX(:),SROTX(:)
                    +
                    373  REAL, ALLOCATABLE, SAVE :: WXY(:,:,:),CXY(:,:,:),SXY(:,:,:)
                    +
                    374  INTEGER, SAVE :: NOX=-1,iretx=-1
                    +
                    375  INTEGER, ALLOCATABLE, SAVE :: NXY(:,:,:),NC(:)
                    +
                    376  class(ip_grid), allocatable, save :: prev_grid_in, prev_grid_out
                    +
                    377  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    378  ! SET PARAMETERS
                    +
                    379  iret=0
                    +
                    380  mcon=ipopt(1)
                    +
                    381  mp=ipopt(2)
                    +
                    382  IF(mp.EQ.-1.OR.mp.EQ.0) mp=50
                    +
                    383  IF(mp.LT.0.OR.mp.GT.100) iret=32
                    +
                    384  pmp=mp*0.01
                    +
                    385 
                    +
                    386 
                    +
                    387  if (.not. allocated(prev_grid_in) .or. .not. allocated(prev_grid_out)) then
                    +
                    388  allocate(prev_grid_in, source = grid_in)
                    +
                    389  allocate(prev_grid_out, source = grid_out)
                    +
                    390 
                    +
                    391  same_gridi = .false.
                    +
                    392  same_grido = .false.
                    +
                    393  else
                    +
                    394  same_gridi = grid_in == prev_grid_in
                    +
                    395  same_grido = grid_out == prev_grid_out
                    +
                    396 
                    +
                    397  if (.not. same_gridi .or. .not. same_grido) then
                    +
                    398  deallocate(prev_grid_in)
                    +
                    399  deallocate(prev_grid_out)
                    +
                    400 
                    +
                    401  allocate(prev_grid_in, source = grid_in)
                    +
                    402  allocate(prev_grid_out, source = grid_out)
                    +
                    403  end if
                    +
                    404  end if
                    +
                    405 
                    +
                    406  select type(grid_out)
                    +
                    407  type is(ip_station_points_grid)
                    +
                    408  to_station_points = .true.
                    +
                    409  class default
                    +
                    410  to_station_points = .false.
                    +
                    411  end select
                    +
                    412 
                    +
                    413  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    414  ! SAVE OR SKIP WEIGHT COMPUTATION
                    +
                    415  IF(iret.EQ.0.AND.(to_station_points.OR..NOT.same_gridi.OR..NOT.same_grido))THEN
                    +
                    416  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    417  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    418  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no,crot,srot)
                    +
                    419  IF(no.EQ.0) iret=3
                    +
                    420  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    421  ! LOCATE INPUT POINTS
                    +
                    422  CALL gdswzd(grid_in,-1,no,fill,xpts,ypts,rlon,rlat,nv)
                    +
                    423  IF(iret.EQ.0.AND.nv.EQ.0) iret=2
                    +
                    424  CALL gdswzd(grid_in, 0,mi,fill,xpti,ypti,rloi,rlai,nv,croi,sroi)
                    +
                    425  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    426  ! ALLOCATE AND SAVE GRID DATA
                    +
                    427  IF(nox.NE.no) THEN
                    +
                    428  IF(nox.GE.0) DEALLOCATE(rlatx,rlonx,crotx,srotx,nc,nxy,wxy,cxy,sxy)
                    +
                    429  ALLOCATE(rlatx(no),rlonx(no),crotx(no),srotx(no),nc(no), &
                    +
                    430  nxy(4,4,no),wxy(4,4,no),cxy(4,4,no),sxy(4,4,no))
                    +
                    431  nox=no
                    +
                    432  ENDIF
                    +
                    433  iretx=iret
                    +
                    434  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    435  ! COMPUTE WEIGHTS
                    +
                    436  IF(iret.EQ.0) THEN
                    +
                    437  !$OMP PARALLEL DO PRIVATE(N,XIJ,YIJ,IJX,IJY,XF,YF,J,I,WX,WY,CM,SM) SCHEDULE(STATIC)
                    +
                    438  DO n=1,no
                    +
                    439  rlonx(n)=rlon(n)
                    +
                    440  rlatx(n)=rlat(n)
                    +
                    441  crotx(n)=crot(n)
                    +
                    442  srotx(n)=srot(n)
                    +
                    443  xij=xpts(n)
                    +
                    444  yij=ypts(n)
                    +
                    445  IF(abs(xij-fill).GT.tinyreal.AND.abs(yij-fill).GT.tinyreal) THEN
                    +
                    446  ijx(1:4)=floor(xij-1)+(/0,1,2,3/)
                    +
                    447  ijy(1:4)=floor(yij-1)+(/0,1,2,3/)
                    +
                    448  xf=xij-ijx(2)
                    +
                    449  yf=yij-ijy(2)
                    +
                    450  DO j=1,4
                    +
                    451  DO i=1,4
                    +
                    452  nxy(i,j,n) = grid_in%field_pos(ijx(i), ijy(j))
                    +
                    453  ENDDO
                    +
                    454  ENDDO
                    +
                    455  IF(minval(nxy(1:4,1:4,n)).GT.0) THEN
                    +
                    456  ! BICUBIC WHERE 16-POINT STENCIL IS AVAILABLE
                    +
                    457  nc(n)=1
                    +
                    458  wx(1)=xf*(1-xf)*(2-xf)/(-6.)
                    +
                    459  wx(2)=(xf+1)*(1-xf)*(2-xf)/2.
                    +
                    460  wx(3)=(xf+1)*xf*(2-xf)/2.
                    +
                    461  wx(4)=(xf+1)*xf*(1-xf)/(-6.)
                    +
                    462  wy(1)=yf*(1-yf)*(2-yf)/(-6.)
                    +
                    463  wy(2)=(yf+1)*(1-yf)*(2-yf)/2.
                    +
                    464  wy(3)=(yf+1)*yf*(2-yf)/2.
                    +
                    465  wy(4)=(yf+1)*yf*(1-yf)/(-6.)
                    +
                    466  ELSE
                    +
                    467  ! BILINEAR ELSEWHERE NEAR THE EDGE OF THE GRID
                    +
                    468  nc(n)=2
                    +
                    469  wx(1)=0
                    +
                    470  wx(2)=(1-xf)
                    +
                    471  wx(3)=xf
                    +
                    472  wx(4)=0
                    +
                    473  wy(1)=0
                    +
                    474  wy(2)=(1-yf)
                    +
                    475  wy(3)=yf
                    +
                    476  wy(4)=0
                    +
                    477  ENDIF
                    +
                    478  DO j=1,4
                    +
                    479  DO i=1,4
                    +
                    480  wxy(i,j,n)=wx(i)*wy(j)
                    +
                    481  IF(nxy(i,j,n).GT.0) THEN
                    +
                    482  CALL movect(rlai(nxy(i,j,n)),rloi(nxy(i,j,n)), &
                    +
                    483  rlat(n),rlon(n),cm,sm)
                    +
                    484  cxy(i,j,n)=cm*croi(nxy(i,j,n))+sm*sroi(nxy(i,j,n))
                    +
                    485  sxy(i,j,n)=sm*croi(nxy(i,j,n))-cm*sroi(nxy(i,j,n))
                    +
                    486  ENDIF
                    +
                    487  ENDDO
                    +
                    488  ENDDO
                    +
                    489  ELSE
                    +
                    490  nc(n)=0
                    +
                    491  ENDIF
                    +
                    492  ENDDO
                    +
                    493  ENDIF
                    +
                    494  ENDIF
                    +
                    495  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    496  ! INTERPOLATE OVER ALL FIELDS
                    +
                    497  IF(iret.EQ.0.AND.iretx.EQ.0) THEN
                    +
                    498  IF(.not. to_station_points) THEN
                    +
                    499  no=nox
                    +
                    500  DO n=1,no
                    +
                    501  rlon(n)=rlonx(n)
                    +
                    502  rlat(n)=rlatx(n)
                    +
                    503  crot(n)=crotx(n)
                    +
                    504  srot(n)=srotx(n)
                    +
                    505  ENDDO
                    +
                    506  ENDIF
                    +
                    507  !$OMP PARALLEL DO PRIVATE(NK,K,N,U,V,W,UMIN,UMAX,VMIN,VMAX,UROT,VROT,J,I) SCHEDULE(STATIC)
                    +
                    508  DO nk=1,no*km
                    +
                    509  k=(nk-1)/no+1
                    +
                    510  n=nk-no*(k-1)
                    +
                    511  IF(nc(n).GT.0) THEN
                    +
                    512  u=0
                    +
                    513  v=0
                    +
                    514  w=0
                    +
                    515  IF(mcon.GT.0) umin=huge(umin)
                    +
                    516  IF(mcon.GT.0) umax=-huge(umax)
                    +
                    517  IF(mcon.GT.0) vmin=huge(vmin)
                    +
                    518  IF(mcon.GT.0) vmax=-huge(vmax)
                    +
                    519  DO j=nc(n),5-nc(n)
                    +
                    520  DO i=nc(n),5-nc(n)
                    +
                    521  IF(nxy(i,j,n).GT.0) THEN
                    +
                    522  IF(ibi(k).EQ.0.OR.li(nxy(i,j,n),k)) THEN
                    +
                    523  urot=cxy(i,j,n)*ui(nxy(i,j,n),k)-sxy(i,j,n)*vi(nxy(i,j,n),k)
                    +
                    524  vrot=sxy(i,j,n)*ui(nxy(i,j,n),k)+cxy(i,j,n)*vi(nxy(i,j,n),k)
                    +
                    525  u=u+wxy(i,j,n)*urot
                    +
                    526  v=v+wxy(i,j,n)*vrot
                    +
                    527  w=w+wxy(i,j,n)
                    +
                    528  IF(mcon.GT.0) umin=min(umin,urot)
                    +
                    529  IF(mcon.GT.0) umax=max(umax,urot)
                    +
                    530  IF(mcon.GT.0) vmin=min(vmin,vrot)
                    +
                    531  IF(mcon.GT.0) vmax=max(vmax,vrot)
                    +
                    532  ENDIF
                    +
                    533  ENDIF
                    +
                    534  ENDDO
                    +
                    535  ENDDO
                    +
                    536  lo(n,k)=w.GE.pmp
                    +
                    537  IF(lo(n,k)) THEN
                    +
                    538  urot=crot(n)*u-srot(n)*v
                    +
                    539  vrot=srot(n)*u+crot(n)*v
                    +
                    540  uo(n,k)=urot/w
                    +
                    541  vo(n,k)=vrot/w
                    +
                    542  IF(mcon.GT.0) uo(n,k)=min(max(uo(n,k),umin),umax)
                    +
                    543  IF(mcon.GT.0) vo(n,k)=min(max(vo(n,k),vmin),vmax)
                    +
                    544  ELSE
                    +
                    545  uo(n,k)=0.
                    +
                    546  vo(n,k)=0.
                    +
                    547  ENDIF
                    +
                    548  ELSE
                    +
                    549  lo(n,k)=.false.
                    +
                    550  uo(n,k)=0.
                    +
                    551  vo(n,k)=0.
                    +
                    552  ENDIF
                    +
                    553  ENDDO
                    +
                    554  DO k=1,km
                    +
                    555  ibo(k)=ibi(k)
                    +
                    556  IF(.NOT.all(lo(1:no,k))) ibo(k)=1
                    +
                    557  ENDDO
                    +
                    558  select type(grid_out)
                    +
                    559  type is(ip_equid_cylind_grid)
                    +
                    560  CALL polfixv(no,mo,km,rlat,rlon,ibo,lo,uo,vo)
                    +
                    561  end select
                    +
                    562  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    563  ELSE
                    +
                    564  IF(iret.EQ.0) iret=iretx
                    +
                    565  IF(.not. to_station_points) no=0
                    +
                    566  ENDIF
                    +
                    567  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    568  end subroutine interpolate_bicubic_vector
                    +
                    569 
                    +
                    570 end module bicubic_interp_mod
                    + + +
                    subroutine movect(FLAT, FLON, TLAT, TLON, CROT, SROT)
                    This subprogram provides the rotation parameters to move a vector along a great circle from one posit...
                    Definition: movect.F90:26
                    +
                    Bicubic interpolation routines for scalars and vectors.
                    +
                    subroutine interpolate_bicubic_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    This subprogram performs bicubic interpolation from any grid to any grid for scalar fields.
                    +
                    subroutine interpolate_bicubic_vector(ipopt, grid_in, grid_out, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                    This subprogram performs bicubic interpolation from any grid to any grid for vector fields.
                    +
                    Driver module for gdswzd routines.
                    Definition: gdswzd_mod.F90:25
                    +
                    Re-export the individual grids.
                    Definition: ip_grids_mod.F90:7
                    +
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:7
                    +
                    subroutine, public polfixs(NM, NX, KM, RLAT, IB, LO, GO)
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:30
                    +
                    subroutine, public polfixv(NM, NX, KM, RLAT, RLON, IB, LO, UO, VO)
                    Make multiple pole vector values consistent,.
                    Definition: polfix_mod.F90:125
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/bilinear__interp__mod_8F90.html b/ver-5.0.0/bilinear__interp__mod_8F90.html new file mode 100644 index 00000000..23ef2200 --- /dev/null +++ b/ver-5.0.0/bilinear__interp__mod_8F90.html @@ -0,0 +1,134 @@ + + + + + + + +NCEPLIBS-ip: bilinear_interp_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    bilinear_interp_mod.F90 File Reference
                    +
                    +
                    + +

                    Bilinear interpolation routines for scalars and vectors. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    interface  bilinear_interp_mod::interpolate_bilinear
                     
                    + + + + +

                    +Modules

                    module  bilinear_interp_mod
                     Bilinear interpolation routines for scalars and vectors.
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine bilinear_interp_mod::interpolate_bilinear_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     This subprogram performs bilinear interpolation from any grid to any grid for scalar fields. More...
                     
                    subroutine bilinear_interp_mod::interpolate_bilinear_vector (ipopt, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     This subprogram performs bilinear interpolation from any grid to any grid for vector fields. More...
                     
                    +

                    Detailed Description

                    +

                    Bilinear interpolation routines for scalars and vectors.

                    +
                    Author
                    Mark Iredell, Kyle Gerheiser, Eric Engle
                    + +

                    Definition in file bilinear_interp_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/bilinear__interp__mod_8F90.js b/ver-5.0.0/bilinear__interp__mod_8F90.js new file mode 100644 index 00000000..27b7b9c0 --- /dev/null +++ b/ver-5.0.0/bilinear__interp__mod_8F90.js @@ -0,0 +1,6 @@ +var bilinear__interp__mod_8F90 = +[ + [ "interpolate_bilinear", "interfacebilinear__interp__mod_1_1interpolate__bilinear.html", "interfacebilinear__interp__mod_1_1interpolate__bilinear" ], + [ "interpolate_bilinear_scalar", "bilinear__interp__mod_8F90.html#a34d2eea4682104097dccf3e7ab6a9398", null ], + [ "interpolate_bilinear_vector", "bilinear__interp__mod_8F90.html#abc218f8774d2af09299eb299d6f38e04", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/bilinear__interp__mod_8F90_source.html b/ver-5.0.0/bilinear__interp__mod_8F90_source.html new file mode 100644 index 00000000..b02bd4fc --- /dev/null +++ b/ver-5.0.0/bilinear__interp__mod_8F90_source.html @@ -0,0 +1,534 @@ + + + + + + + +NCEPLIBS-ip: bilinear_interp_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    bilinear_interp_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + +
                    9  use gdswzd_mod
                    +
                    10  use ip_grids_mod
                    + + +
                    13  use polfix_mod
                    +
                    14  implicit none
                    +
                    15 
                    +
                    16  private
                    +
                    17  public :: interpolate_bilinear
                    +
                    18 
                    + +
                    20  module procedure interpolate_bilinear_scalar
                    +
                    21  module procedure interpolate_bilinear_vector
                    +
                    22  end interface interpolate_bilinear
                    +
                    23 
                    +
                    24  ! Smallest positive real value (use for equality comparisons)
                    +
                    25  REAL :: TINYREAL=tiny(1.0)
                    +
                    26 
                    +
                    27 contains
                    +
                    28 
                    +
                    72  subroutine interpolate_bilinear_scalar(IPOPT,grid_in,grid_out,MI,MO,KM,IBI,LI,GI,NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    73  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    74  INTEGER, INTENT(IN ) :: IPOPT(20)
                    +
                    75  INTEGER, INTENT(IN ) :: MI,MO,KM
                    +
                    76  INTEGER, INTENT(IN ) :: IBI(KM)
                    +
                    77  INTEGER, INTENT(INOUT) :: NO
                    +
                    78  INTEGER, INTENT( OUT) :: IRET, IBO(KM)
                    +
                    79  !
                    +
                    80  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    81  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    82  !
                    +
                    83  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    84  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    85  REAL, INTENT( OUT) :: GO(MO,KM)
                    +
                    86  !
                    +
                    87  REAL, PARAMETER :: FILL=-9999.
                    +
                    88  !
                    +
                    89  INTEGER :: IJX(2),IJY(2)
                    +
                    90  INTEGER :: MP,N,I,J,K
                    +
                    91  INTEGER :: NK,NV
                    +
                    92  INTEGER :: MSPIRAL,I1,J1,IXS,JXS
                    +
                    93  INTEGER :: MX,KXS,KXT,IX,JX,NX
                    +
                    94  !
                    +
                    95  LOGICAL :: SAME_GRIDI, SAME_GRIDO
                    +
                    96  !
                    +
                    97  REAL :: WX(2),WY(2)
                    +
                    98  REAL :: XPTS(MO),YPTS(MO)
                    +
                    99  REAL :: PMP,XIJ,YIJ,XF,YF,G,W
                    +
                    100 
                    +
                    101  logical :: to_station_points
                    +
                    102 
                    +
                    103  ! Save coeffecients between calls and only compute if grids have changed
                    +
                    104  INTEGER, SAVE :: NOX=-1,iretx=-1
                    +
                    105  INTEGER, ALLOCATABLE,SAVE :: NXY(:,:,:)
                    +
                    106  REAL, ALLOCATABLE,SAVE :: RLATX(:),RLONX(:)
                    +
                    107  REAL, ALLOCATABLE,SAVE :: WXY(:,:,:)
                    +
                    108  class(ip_grid), allocatable,save :: prev_grid_in, prev_grid_out
                    +
                    109 
                    +
                    110  iret=0
                    +
                    111  mp=ipopt(1)
                    +
                    112  IF(mp.EQ.-1.OR.mp.EQ.0) mp=50
                    +
                    113  IF(mp.LT.0.OR.mp.GT.100) iret=32
                    +
                    114  pmp=mp*0.01
                    +
                    115  mspiral=max(ipopt(2),0)
                    +
                    116 
                    +
                    117  if (.not. allocated(prev_grid_in) .or. .not. allocated(prev_grid_out)) then
                    +
                    118  allocate(prev_grid_in, source = grid_in)
                    +
                    119  allocate(prev_grid_out, source = grid_out)
                    +
                    120 
                    +
                    121  same_gridi = .false.
                    +
                    122  same_grido = .false.
                    +
                    123  else
                    +
                    124  same_gridi = grid_in == prev_grid_in
                    +
                    125  same_grido = grid_out == prev_grid_out
                    +
                    126 
                    +
                    127  if (.not. same_gridi .or. .not. same_grido) then
                    +
                    128  deallocate(prev_grid_in)
                    +
                    129  deallocate(prev_grid_out)
                    +
                    130 
                    +
                    131  allocate(prev_grid_in, source = grid_in)
                    +
                    132  allocate(prev_grid_out, source = grid_out)
                    +
                    133  end if
                    +
                    134  end if
                    +
                    135 
                    +
                    136  select type(grid_out)
                    +
                    137  type is(ip_station_points_grid)
                    +
                    138  to_station_points = .true.
                    +
                    139  class default
                    +
                    140  to_station_points = .false.
                    +
                    141  end select
                    +
                    142 
                    +
                    143  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    144  ! SAVE OR SKIP WEIGHT COMPUTATION
                    +
                    145  IF(iret==0.AND.(to_station_points.OR..NOT.same_gridi.OR..NOT.same_grido))THEN
                    +
                    146  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    147  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    148  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    149  IF(no.EQ.0) iret=3
                    +
                    150  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    151  ! LOCATE INPUT POINTS
                    +
                    152  CALL gdswzd(grid_in,-1,no,fill,xpts,ypts,rlon,rlat,nv)
                    +
                    153  IF(iret.EQ.0.AND.nv.EQ.0) iret=2
                    +
                    154  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    155  ! ALLOCATE AND SAVE GRID DATA
                    +
                    156  IF(nox.NE.no) THEN
                    +
                    157  IF(nox.GE.0) DEALLOCATE(rlatx,rlonx,nxy,wxy)
                    +
                    158  ALLOCATE(rlatx(no),rlonx(no),nxy(2,2,no),wxy(2,2,no))
                    +
                    159  nox=no
                    +
                    160  ENDIF
                    +
                    161  iretx=iret
                    +
                    162  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    163  ! COMPUTE WEIGHTS
                    +
                    164  IF(iret.EQ.0) THEN
                    +
                    165  !$OMP PARALLEL DO PRIVATE(N,XIJ,YIJ,IJX,IJY,XF,YF,J,I,WX,WY) SCHEDULE(STATIC)
                    +
                    166  DO n=1,no
                    +
                    167  rlonx(n)=rlon(n)
                    +
                    168  rlatx(n)=rlat(n)
                    +
                    169  xij=xpts(n)
                    +
                    170  yij=ypts(n)
                    +
                    171  IF(abs(xij-fill).GT.tinyreal.AND.abs(yij-fill).GT.tinyreal) THEN
                    +
                    172  ijx(1:2)=floor(xij)+(/0,1/)
                    +
                    173  ijy(1:2)=floor(yij)+(/0,1/)
                    +
                    174  xf=xij-ijx(1)
                    +
                    175  yf=yij-ijy(1)
                    +
                    176  wx(1)=(1-xf)
                    +
                    177  wx(2)=xf
                    +
                    178  wy(1)=(1-yf)
                    +
                    179  wy(2)=yf
                    +
                    180  DO j=1,2
                    +
                    181  DO i=1,2
                    +
                    182  nxy(i,j,n)=grid_in%field_pos(ijx(i), ijy(j))
                    +
                    183  wxy(i,j,n)=wx(i)*wy(j)
                    +
                    184  ENDDO
                    +
                    185  ENDDO
                    +
                    186  ELSE
                    +
                    187  nxy(:,:,n)=0
                    +
                    188  ENDIF
                    +
                    189  ENDDO
                    +
                    190  ENDIF
                    +
                    191  ENDIF
                    +
                    192  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    193  ! INTERPOLATE OVER ALL FIELDS
                    +
                    194  IF(iret.EQ.0.AND.iretx.EQ.0) THEN
                    +
                    195  IF(.not. to_station_points) THEN
                    +
                    196  no=nox
                    +
                    197  DO n=1,no
                    +
                    198  rlon(n)=rlonx(n)
                    +
                    199  rlat(n)=rlatx(n)
                    +
                    200  ENDDO
                    +
                    201  ENDIF
                    +
                    202  !$OMP PARALLEL DO &
                    +
                    203  !$OMP PRIVATE(NK,K,N,G,W,J,I) &
                    +
                    204  !$OMP PRIVATE(I1,J1,IXS,JXS,MX,KXS,KXT,IX,JX,NX) SCHEDULE(STATIC)
                    +
                    205  DO nk=1,no*km
                    +
                    206  k=(nk-1)/no+1
                    +
                    207  n=nk-no*(k-1)
                    +
                    208  g=0
                    +
                    209  w=0
                    +
                    210  DO j=1,2
                    +
                    211  DO i=1,2
                    +
                    212  IF(nxy(i,j,n).GT.0)THEN
                    +
                    213  IF(ibi(k).EQ.0.OR.li(nxy(i,j,n),k)) THEN
                    +
                    214  g=g+wxy(i,j,n)*gi(nxy(i,j,n),k)
                    +
                    215  w=w+wxy(i,j,n)
                    +
                    216  ENDIF
                    +
                    217  ENDIF
                    +
                    218  ENDDO
                    +
                    219  ENDDO
                    +
                    220  lo(n,k)=w.GE.pmp
                    +
                    221  IF(lo(n,k)) THEN
                    +
                    222  go(n,k)=g/w
                    +
                    223  ELSEIF(mspiral.GT.0.AND.abs(xpts(n)-fill).GT.tinyreal.AND.abs(ypts(n)-fill).GT.tinyreal) THEN
                    +
                    224  i1=nint(xpts(n))
                    +
                    225  j1=nint(ypts(n))
                    +
                    226  ixs=int(sign(1.,xpts(n)-i1))
                    +
                    227  jxs=int(sign(1.,ypts(n)-j1))
                    +
                    228  spiral : DO mx=1,mspiral**2
                    +
                    229  kxs=int(sqrt(4*mx-2.5))
                    +
                    230  kxt=mx-(kxs**2/4+1)
                    +
                    231  SELECT CASE(mod(kxs,4))
                    +
                    232  CASE(1)
                    +
                    233  ix=i1-ixs*(kxs/4-kxt)
                    +
                    234  jx=j1-jxs*kxs/4
                    +
                    235  CASE(2)
                    +
                    236  ix=i1+ixs*(1+kxs/4)
                    +
                    237  jx=j1-jxs*(kxs/4-kxt)
                    +
                    238  CASE(3)
                    +
                    239  ix=i1+ixs*(1+kxs/4-kxt)
                    +
                    240  jx=j1+jxs*(1+kxs/4)
                    +
                    241  CASE DEFAULT
                    +
                    242  ix=i1-ixs*kxs/4
                    +
                    243  jx=j1+jxs*(kxs/4-kxt)
                    +
                    244  END SELECT
                    +
                    245  nx=grid_in%field_pos(ix, jx)
                    +
                    246  IF(nx.GT.0.)THEN
                    +
                    247  IF(li(nx,k).OR.ibi(k).EQ.0)THEN
                    +
                    248  go(n,k)=gi(nx,k)
                    +
                    249  lo(n,k)=.true.
                    +
                    250  EXIT spiral
                    +
                    251  ENDIF
                    +
                    252  ENDIF
                    +
                    253  ENDDO spiral
                    +
                    254  IF(.NOT.lo(n,k))THEN
                    +
                    255  ibo(k)=1
                    +
                    256  go(n,k)=0.
                    +
                    257  ENDIF
                    +
                    258  ELSE
                    +
                    259  go(n,k)=0.
                    +
                    260  ENDIF
                    +
                    261  ENDDO
                    +
                    262  DO k=1,km
                    +
                    263  ibo(k)=ibi(k)
                    +
                    264  IF(.NOT.all(lo(1:no,k))) ibo(k)=1
                    +
                    265  ENDDO
                    +
                    266  select type(grid_out)
                    +
                    267  type is(ip_equid_cylind_grid)
                    +
                    268  CALL polfixs(no,mo,km,rlat,ibo,lo,go)
                    +
                    269  end select
                    +
                    270  ELSE
                    +
                    271  IF(iret.EQ.0) iret=iretx
                    +
                    272  IF(.not. to_station_points) no=0
                    +
                    273  ENDIF
                    +
                    274 
                    +
                    275  end subroutine interpolate_bilinear_scalar
                    +
                    276 
                    +
                    329  SUBROUTINE interpolate_bilinear_vector(ipopt,grid_in,grid_out, &
                    +
                    330  MI,MO,KM,IBI,LI,UI,VI, &
                    +
                    331  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    332  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    333  INTEGER, INTENT(IN ) :: IPOPT(20),IBI(KM),MI,MO,KM
                    +
                    334  INTEGER, INTENT(INOUT) :: NO
                    +
                    335  INTEGER, INTENT( OUT) :: IRET, IBO(KM)
                    +
                    336  !
                    +
                    337  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    338  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    339  !
                    +
                    340  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    341  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO),CROT(MO),SROT(MO)
                    +
                    342  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    343  !
                    +
                    344  REAL, PARAMETER :: FILL=-9999.
                    +
                    345  !
                    +
                    346  INTEGER :: IJX(2),IJY(2)
                    +
                    347  INTEGER :: MP,N,I,J,K,NK,NV
                    +
                    348  !
                    +
                    349  LOGICAL :: SAME_GRIDI, SAME_GRIDO
                    +
                    350  !
                    +
                    351  REAL :: CM,SM,UROT,VROT
                    +
                    352  REAL :: PMP,XIJ,YIJ,XF,YF,U,V,W
                    +
                    353  REAL :: XPTS(MO),YPTS(MO)
                    +
                    354  REAL :: WX(2),WY(2)
                    +
                    355  REAL :: XPTI(MI),YPTI(MI)
                    +
                    356  REAL :: RLOI(MI),RLAI(MI)
                    +
                    357  REAL :: CROI(MI),SROI(MI)
                    +
                    358 
                    +
                    359  logical :: to_station_points
                    +
                    360 
                    +
                    361  ! Save coeffecients between calls and only compute if grids have changed
                    +
                    362  INTEGER, SAVE :: NOX=-1,iretx=-1
                    +
                    363  INTEGER, ALLOCATABLE,SAVE :: NXY(:,:,:)
                    +
                    364  REAL, ALLOCATABLE,SAVE :: RLATX(:),RLONX(:)
                    +
                    365  REAL, ALLOCATABLE,SAVE :: CROTX(:),SROTX(:)
                    +
                    366  REAL, ALLOCATABLE,SAVE :: WXY(:,:,:),CXY(:,:,:),SXY(:,:,:)
                    +
                    367  class(ip_grid), allocatable,save :: prev_grid_in, prev_grid_out
                    +
                    368 
                    +
                    369  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    370  ! SET PARAMETERS
                    +
                    371  iret=0
                    +
                    372  mp=ipopt(1)
                    +
                    373  IF(mp.EQ.-1.OR.mp.EQ.0) mp=50
                    +
                    374  IF(mp.LT.0.OR.mp.GT.100) iret=32
                    +
                    375  pmp=mp*0.01
                    +
                    376 
                    +
                    377  if (.not. allocated(prev_grid_in) .or. .not. allocated(prev_grid_out)) then
                    +
                    378  allocate(prev_grid_in, source = grid_in)
                    +
                    379  allocate(prev_grid_out, source = grid_out)
                    +
                    380 
                    +
                    381  same_gridi = .false.
                    +
                    382  same_grido = .false.
                    +
                    383  else
                    +
                    384  same_gridi = grid_in == prev_grid_in
                    +
                    385  same_grido = grid_out == prev_grid_out
                    +
                    386 
                    +
                    387  if (.not. same_gridi .or. .not. same_grido) then
                    +
                    388  deallocate(prev_grid_in)
                    +
                    389  deallocate(prev_grid_out)
                    +
                    390 
                    +
                    391  allocate(prev_grid_in, source = grid_in)
                    +
                    392  allocate(prev_grid_out, source = grid_out)
                    +
                    393  end if
                    +
                    394  end if
                    +
                    395 
                    +
                    396  select type(grid_out)
                    +
                    397  type is(ip_station_points_grid)
                    +
                    398  to_station_points = .true.
                    +
                    399  class default
                    +
                    400  to_station_points = .false.
                    +
                    401  end select
                    +
                    402 
                    +
                    403  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    404  ! SAVE OR SKIP WEIGHT COMPUTATION
                    +
                    405  IF(iret.EQ.0.AND.(to_station_points.OR..NOT.same_gridi.OR..NOT.same_grido))THEN
                    +
                    406  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    407  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    408  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no,crot,srot)
                    +
                    409  IF(no.EQ.0) iret=3
                    +
                    410  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    411  ! LOCATE INPUT POINTS
                    +
                    412  CALL gdswzd(grid_in,-1,no,fill,xpts,ypts,rlon,rlat,nv)
                    +
                    413  IF(iret.EQ.0.AND.nv.EQ.0) iret=2
                    +
                    414  CALL gdswzd(grid_in, 0,mi,fill,xpti,ypti,rloi,rlai,nv,croi,sroi)
                    +
                    415  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    416  ! ALLOCATE AND SAVE GRID DATA
                    +
                    417  IF(nox.NE.no) THEN
                    +
                    418  IF(nox.GE.0) DEALLOCATE(rlatx,rlonx,crotx,srotx,nxy,wxy,cxy,sxy)
                    +
                    419  ALLOCATE(rlatx(no),rlonx(no),crotx(no),srotx(no), &
                    +
                    420  nxy(2,2,no),wxy(2,2,no),cxy(2,2,no),sxy(2,2,no))
                    +
                    421  nox=no
                    +
                    422  ENDIF
                    +
                    423  iretx=iret
                    +
                    424  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    425  ! COMPUTE WEIGHTS
                    +
                    426  IF(iret.EQ.0) THEN
                    +
                    427  !$OMP PARALLEL DO PRIVATE(N,XIJ,YIJ,IJX,IJY,XF,YF,J,I,WX,WY,CM,SM) SCHEDULE(STATIC)
                    +
                    428  DO n=1,no
                    +
                    429  rlonx(n)=rlon(n)
                    +
                    430  rlatx(n)=rlat(n)
                    +
                    431  crotx(n)=crot(n)
                    +
                    432  srotx(n)=srot(n)
                    +
                    433  xij=xpts(n)
                    +
                    434  yij=ypts(n)
                    +
                    435  IF(abs(xij-fill).GT.tinyreal.AND.abs(yij-fill).GT.tinyreal) THEN
                    +
                    436  ijx(1:2)=floor(xij)+(/0,1/)
                    +
                    437  ijy(1:2)=floor(yij)+(/0,1/)
                    +
                    438  xf=xij-ijx(1)
                    +
                    439  yf=yij-ijy(1)
                    +
                    440  wx(1)=(1-xf)
                    +
                    441  wx(2)=xf
                    +
                    442  wy(1)=(1-yf)
                    +
                    443  wy(2)=yf
                    +
                    444  DO j=1,2
                    +
                    445  DO i=1,2
                    +
                    446  nxy(i, j, n) = grid_in%field_pos(ijx(i), ijy(j))
                    +
                    447  wxy(i,j,n)=wx(i)*wy(j)
                    +
                    448  IF(nxy(i,j,n).GT.0) THEN
                    +
                    449  CALL movect(rlai(nxy(i,j,n)),rloi(nxy(i,j,n)), &
                    +
                    450  rlat(n),rlon(n),cm,sm)
                    +
                    451  cxy(i,j,n)=cm*croi(nxy(i,j,n))+sm*sroi(nxy(i,j,n))
                    +
                    452  sxy(i,j,n)=sm*croi(nxy(i,j,n))-cm*sroi(nxy(i,j,n))
                    +
                    453  ENDIF
                    +
                    454  ENDDO
                    +
                    455  ENDDO
                    +
                    456  ELSE
                    +
                    457  nxy(:,:,n)=0
                    +
                    458  ENDIF
                    +
                    459  ENDDO
                    +
                    460  ENDIF ! IS IRET 0?
                    +
                    461  ENDIF
                    +
                    462  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    463  ! INTERPOLATE OVER ALL FIELDS
                    +
                    464  IF(iret.EQ.0.AND.iretx.EQ.0) THEN
                    +
                    465  IF(.not. to_station_points) THEN
                    +
                    466  no=nox
                    +
                    467  DO n=1,no
                    +
                    468  rlon(n)=rlonx(n)
                    +
                    469  rlat(n)=rlatx(n)
                    +
                    470  crot(n)=crotx(n)
                    +
                    471  srot(n)=srotx(n)
                    +
                    472  ENDDO
                    +
                    473  ENDIF
                    +
                    474  !$OMP PARALLEL DO PRIVATE(NK,K,N,U,V,W,UROT,VROT,J,I) SCHEDULE(STATIC)
                    +
                    475  DO nk=1,no*km
                    +
                    476  k=(nk-1)/no+1
                    +
                    477  n=nk-no*(k-1)
                    +
                    478  u=0
                    +
                    479  v=0
                    +
                    480  w=0
                    +
                    481  DO j=1,2
                    +
                    482  DO i=1,2
                    +
                    483  IF(nxy(i,j,n).GT.0) THEN
                    +
                    484  IF(ibi(k).EQ.0.OR.li(nxy(i,j,n),k)) THEN
                    +
                    485  urot=cxy(i,j,n)*ui(nxy(i,j,n),k)-sxy(i,j,n)*vi(nxy(i,j,n),k)
                    +
                    486  vrot=sxy(i,j,n)*ui(nxy(i,j,n),k)+cxy(i,j,n)*vi(nxy(i,j,n),k)
                    +
                    487  u=u+wxy(i,j,n)*urot
                    +
                    488  v=v+wxy(i,j,n)*vrot
                    +
                    489  w=w+wxy(i,j,n)
                    +
                    490  ENDIF
                    +
                    491  ENDIF
                    +
                    492  ENDDO
                    +
                    493  ENDDO
                    +
                    494  lo(n,k)=w.GE.pmp
                    +
                    495  IF(lo(n,k)) THEN
                    +
                    496  urot=crot(n)*u-srot(n)*v
                    +
                    497  vrot=srot(n)*u+crot(n)*v
                    +
                    498  uo(n,k)=urot/w
                    +
                    499  vo(n,k)=vrot/w
                    +
                    500  ELSE
                    +
                    501  uo(n,k)=0.
                    +
                    502  vo(n,k)=0.
                    +
                    503  ENDIF
                    +
                    504  ENDDO ! NK LOOP
                    +
                    505  DO k=1,km
                    +
                    506  ibo(k)=ibi(k)
                    +
                    507  IF(.NOT.all(lo(1:no,k))) ibo(k)=1
                    +
                    508  ENDDO
                    +
                    509 
                    +
                    510  select type(grid_out)
                    +
                    511  type is(ip_equid_cylind_grid)
                    +
                    512  CALL polfixv(no,mo,km,rlat,rlon,ibo,lo,uo,vo)
                    +
                    513  end select
                    +
                    514 
                    +
                    515  ELSE
                    +
                    516  IF(iret.EQ.0) iret=iretx
                    +
                    517  IF(.not. to_station_points) no=0
                    +
                    518  ENDIF
                    +
                    519  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    520  END SUBROUTINE interpolate_bilinear_vector
                    +
                    521 
                    +
                    522 end module bilinear_interp_mod
                    + + +
                    subroutine movect(FLAT, FLON, TLAT, TLON, CROT, SROT)
                    This subprogram provides the rotation parameters to move a vector along a great circle from one posit...
                    Definition: movect.F90:26
                    +
                    Bilinear interpolation routines for scalars and vectors.
                    +
                    subroutine interpolate_bilinear_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    This subprogram performs bilinear interpolation from any grid to any grid for scalar fields.
                    +
                    subroutine interpolate_bilinear_vector(ipopt, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    This subprogram performs bilinear interpolation from any grid to any grid for vector fields.
                    +
                    Driver module for gdswzd routines.
                    Definition: gdswzd_mod.F90:25
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Routines for creating an ip_grid given a Grib descriptor.
                    +
                    Re-export the individual grids.
                    Definition: ip_grids_mod.F90:7
                    +
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:7
                    +
                    subroutine, public polfixs(NM, NX, KM, RLAT, IB, LO, GO)
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:30
                    +
                    subroutine, public polfixv(NM, NX, KM, RLAT, RLON, IB, LO, UO, VO)
                    Make multiple pole vector values consistent,.
                    Definition: polfix_mod.F90:125
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/budget__interp__mod_8F90.html b/ver-5.0.0/budget__interp__mod_8F90.html new file mode 100644 index 00000000..1649db1a --- /dev/null +++ b/ver-5.0.0/budget__interp__mod_8F90.html @@ -0,0 +1,135 @@ + + + + + + + +NCEPLIBS-ip: budget_interp_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    budget_interp_mod.F90 File Reference
                    +
                    +
                    + +

                    Budget interpolation routines for scalars and vectors. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    interface  budget_interp_mod::interpolate_budget
                     
                    + + + + +

                    +Modules

                    module  budget_interp_mod
                     Budget interpolation routines for scalars and vectors.
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine budget_interp_mod::interpolate_budget_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Performs budget interpolation from any grid to any grid (or to random station points) for scalar fields. More...
                     
                    subroutine budget_interp_mod::interpolate_budget_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     This subprogram performs budget interpolation from any grid to any grid (or to random station points) for vector fields. More...
                     
                    +

                    Detailed Description

                    +

                    Budget interpolation routines for scalars and vectors.

                    +
                    Author
                    Mark Iredell, Kyle Gerheiser, Eric Engle
                    +
                    Date
                    July 2021
                    + +

                    Definition in file budget_interp_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/budget__interp__mod_8F90.js b/ver-5.0.0/budget__interp__mod_8F90.js new file mode 100644 index 00000000..44bc00ff --- /dev/null +++ b/ver-5.0.0/budget__interp__mod_8F90.js @@ -0,0 +1,6 @@ +var budget__interp__mod_8F90 = +[ + [ "interpolate_budget", "interfacebudget__interp__mod_1_1interpolate__budget.html", "interfacebudget__interp__mod_1_1interpolate__budget" ], + [ "interpolate_budget_scalar", "budget__interp__mod_8F90.html#a09bd6535b0c2e1022cfde39c39d14466", null ], + [ "interpolate_budget_vector", "budget__interp__mod_8F90.html#abc99486ee9c0091c1514af6114d4e803", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/budget__interp__mod_8F90_source.html b/ver-5.0.0/budget__interp__mod_8F90_source.html new file mode 100644 index 00000000..e65f6bc7 --- /dev/null +++ b/ver-5.0.0/budget__interp__mod_8F90_source.html @@ -0,0 +1,686 @@ + + + + + + + +NCEPLIBS-ip: budget_interp_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    budget_interp_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    + +
                    11  use gdswzd_mod
                    +
                    12  use polfix_mod
                    +
                    13  use ip_grids_mod
                    + + +
                    16  implicit none
                    +
                    17 
                    +
                    18  private
                    +
                    19  public :: interpolate_budget
                    +
                    20 
                    + +
                    22  module procedure interpolate_budget_scalar
                    +
                    23  module procedure interpolate_budget_vector
                    +
                    24  end interface interpolate_budget
                    +
                    25 
                    +
                    26  ! Smallest positive real value (use for equality comparisons)
                    +
                    27  REAL :: TINYREAL=tiny(1.0)
                    +
                    28 
                    +
                    29 contains
                    +
                    30 
                    +
                    94  SUBROUTINE interpolate_budget_scalar(IPOPT,grid_in,grid_out, &
                    +
                    95  MI,MO,KM,IBI,LI,GI, &
                    +
                    96  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    97  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    98  INTEGER, INTENT(IN ) :: IBI(KM), IPOPT(20)
                    +
                    99  INTEGER, INTENT(IN ) :: KM, MI, MO
                    +
                    100  INTEGER, INTENT( OUT) :: IBO(KM), IRET, NO
                    +
                    101  !
                    +
                    102  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    103  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    104  !
                    +
                    105  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    106  REAL, INTENT(INOUT) :: RLAT(MO), RLON(MO)
                    +
                    107  REAL, INTENT( OUT) :: GO(MO,KM)
                    +
                    108  !
                    +
                    109  REAL, PARAMETER :: FILL=-9999.
                    +
                    110  !
                    +
                    111  INTEGER :: I1, J1, I2, J2, IB, JB
                    +
                    112  INTEGER :: IX, JX, IXS, JXS
                    +
                    113  INTEGER :: K, KXS, KXT
                    +
                    114  INTEGER :: LB, LSW, MP, MSPIRAL, MX
                    +
                    115  INTEGER :: N, NB, NB1, NB2, NB3, NB4, NV, NX
                    +
                    116  INTEGER :: N11(MO),N21(MO),N12(MO),N22(MO)
                    +
                    117  !
                    +
                    118  REAL :: GB, LAT(1), LON(1)
                    +
                    119  REAL :: PMP, RB2, RLOB(MO), RLAB(MO), WB
                    +
                    120  REAL :: W11(MO), W21(MO), W12(MO), W22(MO)
                    +
                    121  REAL :: WO(MO,KM), XF, YF, XI, YI, XX, YY
                    +
                    122  REAL :: XPTS(MO),YPTS(MO),XPTB(MO),YPTB(MO)
                    +
                    123  REAL :: XXX(1), YYY(1)
                    +
                    124 
                    +
                    125  logical :: to_station_points
                    +
                    126 
                    +
                    127  class(ip_grid), allocatable :: grid_out2
                    +
                    128 
                    +
                    129  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    130  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    131  ! DO SUBSECTION OF GRID IF KGDSO(1) IS SUBTRACTED FROM 255.
                    +
                    132  iret=0
                    +
                    133 
                    +
                    134  select type(grid_out)
                    +
                    135  type is(ip_station_points_grid)
                    +
                    136  to_station_points = .true.
                    +
                    137  allocate(grid_out2, source = grid_out)
                    +
                    138  CALL gdswzd(grid_out2, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    139  IF(no.EQ.0) iret=3
                    +
                    140  CALL gdswzd(grid_in,-1,no,fill,xpts,ypts,rlon,rlat,nv)
                    +
                    141  IF(nv.EQ.0) iret=2
                    +
                    142  class default
                    +
                    143  to_station_points = .false.
                    +
                    144  allocate(grid_out2, source = grid_out)
                    +
                    145  CALL gdswzd(grid_out2, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    146  IF(no.EQ.0) iret=3
                    +
                    147  end select
                    +
                    148 
                    +
                    149  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    150  ! SET PARAMETERS
                    +
                    151  IF(ipopt(1).GT.16) iret=32
                    +
                    152  mspiral=max(ipopt(20),1)
                    +
                    153  nb1=ipopt(1)
                    +
                    154  IF(nb1.EQ.-1) nb1=2
                    +
                    155  IF(iret.EQ.0.AND.nb1.LT.0) iret=32
                    +
                    156  lsw=1
                    +
                    157  IF(ipopt(2).EQ.-2) lsw=2
                    +
                    158  IF(ipopt(1).EQ.-1.OR.ipopt(2).EQ.-1) lsw=0
                    +
                    159  IF(iret.EQ.0.AND.lsw.EQ.1.AND.nb1.GT.15) iret=32
                    +
                    160  mp=ipopt(3+ipopt(1))
                    +
                    161  IF(mp.EQ.-1.OR.mp.EQ.0) mp=50
                    +
                    162  IF(mp.LT.0.OR.mp.GT.100) iret=32
                    +
                    163  pmp=mp*0.01
                    +
                    164  IF(iret.EQ.0) THEN
                    +
                    165  nb2=2*nb1+1
                    +
                    166  rb2=1./nb2
                    +
                    167  nb3=nb2*nb2
                    +
                    168  nb4=nb3
                    +
                    169  IF(lsw.EQ.2) THEN
                    +
                    170  rb2=1./(nb1+1)
                    +
                    171  nb4=(nb1+1)**4
                    +
                    172  ELSEIF(lsw.EQ.1) THEN
                    +
                    173  nb4=ipopt(2)
                    +
                    174  DO ib=1,nb1
                    +
                    175  nb4=nb4+8*ib*ipopt(2+ib)
                    +
                    176  ENDDO
                    +
                    177  ENDIF
                    +
                    178  ELSE
                    +
                    179  nb3=0
                    +
                    180  nb4=1
                    +
                    181  ENDIF
                    +
                    182  DO k=1,km
                    +
                    183  DO n=1,no
                    +
                    184  go(n,k)=0.
                    +
                    185  wo(n,k)=0.
                    +
                    186  ENDDO
                    +
                    187  ENDDO
                    +
                    188  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    189  ! LOOP OVER SAMPLE POINTS IN OUTPUT GRID BOX
                    +
                    190  DO nb=1,nb3
                    +
                    191  ! LOCATE INPUT POINTS AND COMPUTE THEIR WEIGHTS
                    +
                    192  jb=(nb-1)/nb2-nb1
                    +
                    193  ib=nb-(jb+nb1)*nb2-nb1-1
                    +
                    194  lb=max(abs(ib),abs(jb))
                    +
                    195  wb=1
                    +
                    196  IF(lsw.EQ.2) THEN
                    +
                    197  wb=(nb1+1-abs(ib))*(nb1+1-abs(jb))
                    +
                    198  ELSEIF(lsw.EQ.1) THEN
                    +
                    199  wb=ipopt(2+lb)
                    +
                    200  ENDIF
                    +
                    201  IF(abs(wb).GT.tinyreal) THEN
                    +
                    202  !$OMP PARALLEL DO PRIVATE(N) SCHEDULE(STATIC)
                    +
                    203  DO n=1,no
                    +
                    204  xptb(n)=xpts(n)+ib*rb2
                    +
                    205  yptb(n)=ypts(n)+jb*rb2
                    +
                    206  ENDDO
                    +
                    207  !$OMP END PARALLEL DO
                    +
                    208  if(to_station_points)then
                    +
                    209  CALL gdswzd(grid_in, 1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    210  CALL gdswzd(grid_in,-1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    211  else
                    +
                    212  CALL gdswzd(grid_out2, 1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    213  CALL gdswzd(grid_in,-1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    214  endif
                    +
                    215  IF(iret.EQ.0.AND.nv.EQ.0.AND.lb.EQ.0) iret=2
                    +
                    216  !$OMP PARALLEL DO PRIVATE(N,XI,YI,I1,I2,J1,J2,XF,YF) SCHEDULE(STATIC)
                    +
                    217  DO n=1,no
                    +
                    218  xi=xptb(n)
                    +
                    219  yi=yptb(n)
                    +
                    220  IF(abs(xi-fill).GT.tinyreal.AND.abs(yi-fill).GT.tinyreal) THEN
                    +
                    221  i1=int(xi)
                    +
                    222  i2=i1+1
                    +
                    223  j1=int(yi)
                    +
                    224  j2=j1+1
                    +
                    225  xf=xi-i1
                    +
                    226  yf=yi-j1
                    +
                    227  n11(n)=grid_in%field_pos(i1, j1)
                    +
                    228  n21(n)=grid_in%field_pos(i2, j1)
                    +
                    229  n12(n)=grid_in%field_pos(i1, j2)
                    +
                    230  n22(n)=grid_in%field_pos(i2, j2)
                    +
                    231  IF(min(n11(n),n21(n),n12(n),n22(n)).GT.0) THEN
                    +
                    232  w11(n)=(1-xf)*(1-yf)
                    +
                    233  w21(n)=xf*(1-yf)
                    +
                    234  w12(n)=(1-xf)*yf
                    +
                    235  w22(n)=xf*yf
                    +
                    236  ELSE
                    +
                    237  n11(n)=0
                    +
                    238  n21(n)=0
                    +
                    239  n12(n)=0
                    +
                    240  n22(n)=0
                    +
                    241  ENDIF
                    +
                    242  ELSE
                    +
                    243  n11(n)=0
                    +
                    244  n21(n)=0
                    +
                    245  n12(n)=0
                    +
                    246  n22(n)=0
                    +
                    247  ENDIF
                    +
                    248  ENDDO
                    +
                    249  !$OMP END PARALLEL DO
                    +
                    250  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    251  ! INTERPOLATE WITH OR WITHOUT BITMAPS
                    +
                    252  !$OMP PARALLEL DO PRIVATE(K,N,GB) SCHEDULE(STATIC)
                    +
                    253  DO k=1,km
                    +
                    254  DO n=1,no
                    +
                    255  IF(n11(n).GT.0) THEN
                    +
                    256  IF(ibi(k).EQ.0) THEN
                    +
                    257  gb=w11(n)*gi(n11(n),k)+w21(n)*gi(n21(n),k) &
                    +
                    258  +w12(n)*gi(n12(n),k)+w22(n)*gi(n22(n),k)
                    +
                    259  go(n,k)=go(n,k)+wb*gb
                    +
                    260  wo(n,k)=wo(n,k)+wb
                    +
                    261  ELSE
                    +
                    262  IF(li(n11(n),k)) THEN
                    +
                    263  go(n,k)=go(n,k)+wb*w11(n)*gi(n11(n),k)
                    +
                    264  wo(n,k)=wo(n,k)+wb*w11(n)
                    +
                    265  ENDIF
                    +
                    266  IF(li(n21(n),k)) THEN
                    +
                    267  go(n,k)=go(n,k)+wb*w21(n)*gi(n21(n),k)
                    +
                    268  wo(n,k)=wo(n,k)+wb*w21(n)
                    +
                    269  ENDIF
                    +
                    270  IF(li(n12(n),k)) THEN
                    +
                    271  go(n,k)=go(n,k)+wb*w12(n)*gi(n12(n),k)
                    +
                    272  wo(n,k)=wo(n,k)+wb*w12(n)
                    +
                    273  ENDIF
                    +
                    274  IF(li(n22(n),k)) THEN
                    +
                    275  go(n,k)=go(n,k)+wb*w22(n)*gi(n22(n),k)
                    +
                    276  wo(n,k)=wo(n,k)+wb*w22(n)
                    +
                    277  ENDIF
                    +
                    278  ENDIF
                    +
                    279  ENDIF
                    +
                    280  ENDDO
                    +
                    281  ENDDO
                    +
                    282  !$OMP END PARALLEL DO
                    +
                    283  ENDIF
                    +
                    284  ENDDO ! sub-grid points
                    +
                    285  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    286  ! COMPUTE OUTPUT BITMAPS AND FIELDS
                    +
                    287  ! KM is often 1 .. do not do OMP PARALLEL DO here
                    +
                    288  km_loop : DO k=1,km
                    +
                    289  ibo(k)=ibi(k)
                    +
                    290  !$OMP PARALLEL DO PRIVATE(N,LAT,LON,XXX,YYY,NV,XX,YY,IXS,JXS,MX,KXS,KXT,IX,JX,NX) SCHEDULE(STATIC)
                    +
                    291  n_loop : DO n=1,no
                    +
                    292  lo(n,k)=wo(n,k).GE.pmp*nb4
                    +
                    293  IF(lo(n,k)) THEN
                    +
                    294  go(n,k)=go(n,k)/wo(n,k)
                    +
                    295  ELSEIF (mspiral.GT.1) THEN
                    +
                    296  lat(1)=rlat(n)
                    +
                    297  lon(1)=rlon(n)
                    +
                    298  CALL gdswzd(grid_in,-1,1,fill,xxx,yyy,lon,lat,nv)
                    +
                    299  xx=xxx(1)
                    +
                    300  yy=yyy(1)
                    +
                    301  IF(nv.EQ.1)THEN
                    +
                    302  i1=nint(xx)
                    +
                    303  j1=nint(yy)
                    +
                    304  ixs=int(sign(1.,xx-i1))
                    +
                    305  jxs=int(sign(1.,yy-j1))
                    +
                    306  spiral_loop : DO mx=2,mspiral**2
                    +
                    307  kxs=int(sqrt(4*mx-2.5))
                    +
                    308  kxt=mx-(kxs**2/4+1)
                    +
                    309  SELECT CASE(mod(kxs,4))
                    +
                    310  CASE(1)
                    +
                    311  ix=i1-ixs*(kxs/4-kxt)
                    +
                    312  jx=j1-jxs*kxs/4
                    +
                    313  CASE(2)
                    +
                    314  ix=i1+ixs*(1+kxs/4)
                    +
                    315  jx=j1-jxs*(kxs/4-kxt)
                    +
                    316  CASE(3)
                    +
                    317  ix=i1+ixs*(1+kxs/4-kxt)
                    +
                    318  jx=j1+jxs*(1+kxs/4)
                    +
                    319  CASE DEFAULT
                    +
                    320  ix=i1-ixs*kxs/4
                    +
                    321  jx=j1+jxs*(kxs/4-kxt)
                    +
                    322  END SELECT
                    +
                    323  nx=grid_in%field_pos(ix, jx)
                    +
                    324  IF(nx.GT.0.)THEN
                    +
                    325  IF(li(nx,k).OR.ibi(k).EQ.0) THEN
                    +
                    326  go(n,k)=gi(nx,k)
                    +
                    327  lo(n,k)=.true.
                    +
                    328  cycle n_loop
                    +
                    329  ENDIF
                    +
                    330  ENDIF
                    +
                    331  ENDDO spiral_loop
                    +
                    332  ibo(k)=1
                    +
                    333  go(n,k)=0.
                    +
                    334  ELSE
                    +
                    335  ibo(k)=1
                    +
                    336  go(n,k)=0.
                    +
                    337  ENDIF
                    +
                    338  ELSE ! no spiral search option
                    +
                    339  ibo(k)=1
                    +
                    340  go(n,k)=0.
                    +
                    341  ENDIF
                    +
                    342  ENDDO n_loop
                    +
                    343  !$OMP END PARALLEL DO
                    +
                    344  ENDDO km_loop
                    +
                    345 
                    +
                    346  select type(grid_out2)
                    +
                    347  type is(ip_equid_cylind_grid)
                    +
                    348  CALL polfixs(no,mo,km,rlat,ibo,lo,go)
                    +
                    349  end select
                    +
                    350  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    351  END SUBROUTINE interpolate_budget_scalar
                    +
                    352 
                    +
                    423  SUBROUTINE interpolate_budget_vector(IPOPT,grid_in,grid_out, &
                    +
                    424  MI,MO,KM,IBI,LI,UI,VI, &
                    +
                    425  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    426  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    427  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    +
                    428  INTEGER, INTENT(IN ) :: KM, MI, MO
                    +
                    429  INTEGER, INTENT( OUT) :: IRET, NO, IBO(KM)
                    +
                    430  !
                    +
                    431  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    432  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    433  !
                    +
                    434  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    435  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    436  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    437  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    +
                    438  !
                    +
                    439  REAL, PARAMETER :: FILL=-9999.
                    +
                    440  !
                    +
                    441  INTEGER :: I1,I2,J1,J2,IB,JB,LSW,MP
                    +
                    442  INTEGER :: K,LB,N,NB,NB1,NB2,NB3,NB4,NV
                    +
                    443  INTEGER :: N11(MO),N21(MO),N12(MO),N22(MO)
                    +
                    444  !
                    +
                    445  LOGICAL :: SAME_GRID
                    +
                    446  !
                    +
                    447  REAL :: CM11,SM11,CM12,SM12
                    +
                    448  REAL :: CM21,SM21,CM22,SM22
                    +
                    449  REAL :: PMP,RB2
                    +
                    450  REAL :: C11(MO),C21(MO),C12(MO),C22(MO)
                    +
                    451  REAL :: S11(MO),S21(MO),S12(MO),S22(MO)
                    +
                    452  REAL :: W11(MO),W21(MO),W12(MO),W22(MO)
                    +
                    453  REAL :: UB,VB,WB,UROT,VROT
                    +
                    454  REAL :: U11,V11,U21,V21,U12,V12,U22,V22
                    +
                    455  REAL :: WI1,WJ1,WI2,WJ2
                    +
                    456  REAL :: WO(MO,KM),XI,YI
                    +
                    457  REAL :: XPTS(MO),YPTS(MO)
                    +
                    458  REAL :: XPTB(MO),YPTB(MO),RLOB(MO),RLAB(MO)
                    +
                    459 
                    +
                    460  logical :: to_station_points
                    +
                    461 
                    +
                    462  class(ip_grid), allocatable :: grid_out2
                    +
                    463 
                    +
                    464  ! Save coeffecients between calls and only compute if grids have changed
                    +
                    465  INTEGER, SAVE :: MIX=-1
                    +
                    466  REAL, ALLOCATABLE, SAVE :: CROI(:),SROI(:)
                    +
                    467  REAL, ALLOCATABLE, SAVE :: XPTI(:),YPTI(:),RLOI(:),RLAI(:)
                    +
                    468 
                    +
                    469  class(ip_grid), allocatable, save :: prev_grid_in
                    +
                    470 
                    +
                    471  iret=0
                    +
                    472 
                    +
                    473  ! Negative grid number means interpolate to subgrid
                    +
                    474  ! The type of the subgrid is calculated by 255 +
                    +
                    475  select type(grid_out)
                    +
                    476  type is(ip_station_points_grid)
                    +
                    477  to_station_points = .true.
                    +
                    478  allocate(grid_out2, source = grid_out)
                    +
                    479  CALL gdswzd(grid_out2, 0,mo,fill,xpts,ypts,rlon,rlat,no,crot,srot)
                    +
                    480  IF(no.EQ.0) iret=3
                    +
                    481  CALL gdswzd(grid_in,-1,no,fill,xpts,ypts,rlon,rlat,nv,crot,srot)
                    +
                    482  IF(nv.EQ.0) iret=2
                    +
                    483  class default
                    +
                    484  to_station_points = .false.
                    +
                    485  allocate(grid_out2, source = grid_out)
                    +
                    486  CALL gdswzd(grid_out2, 0,mo,fill,xpts,ypts,rlon,rlat,no,crot,srot)
                    +
                    487  end select
                    +
                    488 
                    +
                    489  if (.not. allocated(prev_grid_in)) then
                    +
                    490  allocate(prev_grid_in, source = grid_in)
                    +
                    491 
                    +
                    492  same_grid = .false.
                    +
                    493  else
                    +
                    494  same_grid = grid_in == prev_grid_in
                    +
                    495 
                    +
                    496  if (.not. same_grid) then
                    +
                    497  deallocate(prev_grid_in)
                    +
                    498  allocate(prev_grid_in, source = grid_in)
                    +
                    499  end if
                    +
                    500  end if
                    +
                    501 
                    +
                    502  IF(.NOT.same_grid) THEN
                    +
                    503  IF(mix.NE.mi) THEN
                    +
                    504  IF(mix.GE.0) DEALLOCATE(xpti,ypti,rloi,rlai,croi,sroi)
                    +
                    505  ALLOCATE(xpti(mi),ypti(mi),rloi(mi),rlai(mi),croi(mi),sroi(mi))
                    +
                    506  mix=mi
                    +
                    507  ENDIF
                    +
                    508  CALL gdswzd(grid_in, 0,mi,fill,xpti,ypti,rloi,rlai,nv,croi,sroi)
                    +
                    509  ENDIF
                    +
                    510 
                    +
                    511  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    512  ! SET PARAMETERS
                    +
                    513  nb1=ipopt(1)
                    +
                    514  IF(nb1.EQ.-1) nb1=2
                    +
                    515  IF(iret.EQ.0.AND.nb1.LT.0) iret=32
                    +
                    516  lsw=1
                    +
                    517  IF(ipopt(2).EQ.-2) lsw=2
                    +
                    518  IF(ipopt(1).EQ.-1.OR.ipopt(2).EQ.-1) lsw=0
                    +
                    519  IF(iret.EQ.0.AND.lsw.EQ.1.AND.nb1.GT.15) iret=32
                    +
                    520  mp=ipopt(3+ipopt(1))
                    +
                    521  IF(mp.EQ.-1.OR.mp.EQ.0) mp=50
                    +
                    522  IF(mp.LT.0.OR.mp.GT.100) iret=32
                    +
                    523  pmp=mp*0.01
                    +
                    524  IF(iret.EQ.0) THEN
                    +
                    525  nb2=2*nb1+1
                    +
                    526  rb2=1./nb2
                    +
                    527  nb3=nb2*nb2
                    +
                    528  nb4=nb3
                    +
                    529  IF(lsw.EQ.2) THEN
                    +
                    530  rb2=1./(nb1+1)
                    +
                    531  nb4=(nb1+1)**4
                    +
                    532  ELSEIF(lsw.EQ.1) THEN
                    +
                    533  nb4=ipopt(2)
                    +
                    534  DO ib=1,nb1
                    +
                    535  nb4=nb4+8*ib*ipopt(2+ib)
                    +
                    536  ENDDO
                    +
                    537  ENDIF
                    +
                    538  ELSE
                    +
                    539  nb3=0
                    +
                    540  nb4=1
                    +
                    541  ENDIF
                    +
                    542  DO k=1,km
                    +
                    543  DO n=1,no
                    +
                    544  uo(n,k)=0
                    +
                    545  vo(n,k)=0
                    +
                    546  wo(n,k)=0.
                    +
                    547  ENDDO
                    +
                    548  ENDDO
                    +
                    549  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    550  ! LOOP OVER SAMPLE POINTS IN OUTPUT GRID BOX
                    +
                    551  DO nb=1,nb3
                    +
                    552  ! LOCATE INPUT POINTS AND COMPUTE THEIR WEIGHTS AND ROTATIONS
                    +
                    553  jb=(nb-1)/nb2-nb1
                    +
                    554  ib=nb-(jb+nb1)*nb2-nb1-1
                    +
                    555  lb=max(abs(ib),abs(jb))
                    +
                    556  wb=1
                    +
                    557  IF(ipopt(2).EQ.-2) THEN
                    +
                    558  wb=(nb1+1-abs(ib))*(nb1+1-abs(jb))
                    +
                    559  ELSEIF(ipopt(2).NE.-1) THEN
                    +
                    560  wb=ipopt(2+lb)
                    +
                    561  ENDIF
                    +
                    562  IF(abs(wb).GT.tinyreal) THEN
                    +
                    563  !$OMP PARALLEL DO PRIVATE(N) SCHEDULE(STATIC)
                    +
                    564  DO n=1,no
                    +
                    565  xptb(n)=xpts(n)+ib*rb2
                    +
                    566  yptb(n)=ypts(n)+jb*rb2
                    +
                    567  ENDDO
                    +
                    568  !$OMP END PARALLEL DO
                    +
                    569  if(to_station_points)then
                    +
                    570  CALL gdswzd(grid_in, 1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    571  CALL gdswzd(grid_in,-1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    572  else
                    +
                    573  CALL gdswzd(grid_out2, 1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    574  CALL gdswzd(grid_in,-1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    575  endif
                    +
                    576  IF(iret.EQ.0.AND.nv.EQ.0.AND.lb.EQ.0) iret=2
                    +
                    577  !$OMP PARALLEL DO PRIVATE(N,XI,YI,I1,I2,WI1,WI2,J1,J2,WJ1,WJ2,CM11,CM21,CM12,CM22,SM11,SM21,SM12,SM22) &
                    +
                    578  !$OMP SCHEDULE(STATIC)
                    +
                    579  DO n=1,no
                    +
                    580  xi=xptb(n)
                    +
                    581  yi=yptb(n)
                    +
                    582  IF(abs(xi-fill).GT.tinyreal.AND.abs(yi-fill).GT.tinyreal) THEN
                    +
                    583  i1=int(xi)
                    +
                    584  i2=i1+1
                    +
                    585  wi2=xi-i1
                    +
                    586  wi1=1-wi2
                    +
                    587  j1=int(yi)
                    +
                    588  j2=j1+1
                    +
                    589  wj2=yi-j1
                    +
                    590  wj1=1-wj2
                    +
                    591  n11(n) = grid_in%field_pos(i1,j1)
                    +
                    592  n21(n) = grid_in%field_pos(i2, j1)
                    +
                    593  n12(n) = grid_in%field_pos(i1, j2)
                    +
                    594  n22(n) = grid_in%field_pos(i2, j2)
                    +
                    595  IF(min(n11(n),n21(n),n12(n),n22(n)).GT.0) THEN
                    +
                    596  w11(n)=wi1*wj1
                    +
                    597  w21(n)=wi2*wj1
                    +
                    598  w12(n)=wi1*wj2
                    +
                    599  w22(n)=wi2*wj2
                    +
                    600  CALL movect(rlai(n11(n)),rloi(n11(n)),rlat(n),rlon(n),cm11,sm11)
                    +
                    601  CALL movect(rlai(n21(n)),rloi(n21(n)),rlat(n),rlon(n),cm21,sm21)
                    +
                    602  CALL movect(rlai(n12(n)),rloi(n12(n)),rlat(n),rlon(n),cm12,sm12)
                    +
                    603  CALL movect(rlai(n22(n)),rloi(n22(n)),rlat(n),rlon(n),cm22,sm22)
                    +
                    604  c11(n)=cm11*croi(n11(n))+sm11*sroi(n11(n))
                    +
                    605  s11(n)=sm11*croi(n11(n))-cm11*sroi(n11(n))
                    +
                    606  c21(n)=cm21*croi(n21(n))+sm21*sroi(n21(n))
                    +
                    607  s21(n)=sm21*croi(n21(n))-cm21*sroi(n21(n))
                    +
                    608  c12(n)=cm12*croi(n12(n))+sm12*sroi(n12(n))
                    +
                    609  s12(n)=sm12*croi(n12(n))-cm12*sroi(n12(n))
                    +
                    610  c22(n)=cm22*croi(n22(n))+sm22*sroi(n22(n))
                    +
                    611  s22(n)=sm22*croi(n22(n))-cm22*sroi(n22(n))
                    +
                    612  ELSE
                    +
                    613  n11(n)=0
                    +
                    614  n21(n)=0
                    +
                    615  n12(n)=0
                    +
                    616  n22(n)=0
                    +
                    617  ENDIF
                    +
                    618  ELSE
                    +
                    619  n11(n)=0
                    +
                    620  n21(n)=0
                    +
                    621  n12(n)=0
                    +
                    622  n22(n)=0
                    +
                    623  ENDIF
                    +
                    624  ENDDO
                    +
                    625  !$OMP END PARALLEL DO
                    +
                    626  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    627  ! INTERPOLATE WITH OR WITHOUT BITMAPS
                    +
                    628  ! KM IS OFTEN 1 .. DO NO PUT OMP PARALLEL DO HERE
                    +
                    629  DO k=1,km
                    +
                    630  !$OMP PARALLEL DO PRIVATE(N,U11,U12,U21,U22,UB,V11,V12,V21,V22,VB) SCHEDULE(STATIC)
                    +
                    631  DO n=1,no
                    +
                    632  IF(n11(n).GT.0) THEN
                    +
                    633  IF(ibi(k).EQ.0) THEN
                    +
                    634  u11=c11(n)*ui(n11(n),k)-s11(n)*vi(n11(n),k)
                    +
                    635  v11=s11(n)*ui(n11(n),k)+c11(n)*vi(n11(n),k)
                    +
                    636  u21=c21(n)*ui(n21(n),k)-s21(n)*vi(n21(n),k)
                    +
                    637  v21=s21(n)*ui(n21(n),k)+c21(n)*vi(n21(n),k)
                    +
                    638  u12=c12(n)*ui(n12(n),k)-s12(n)*vi(n12(n),k)
                    +
                    639  v12=s12(n)*ui(n12(n),k)+c12(n)*vi(n12(n),k)
                    +
                    640  u22=c22(n)*ui(n22(n),k)-s22(n)*vi(n22(n),k)
                    +
                    641  v22=s22(n)*ui(n22(n),k)+c22(n)*vi(n22(n),k)
                    +
                    642  ub=w11(n)*u11+w21(n)*u21+w12(n)*u12+w22(n)*u22
                    +
                    643  vb=w11(n)*v11+w21(n)*v21+w12(n)*v12+w22(n)*v22
                    +
                    644  uo(n,k)=uo(n,k)+wb*ub
                    +
                    645  vo(n,k)=vo(n,k)+wb*vb
                    +
                    646  wo(n,k)=wo(n,k)+wb
                    +
                    647  ELSE
                    +
                    648  IF(li(n11(n),k)) THEN
                    +
                    649  u11=c11(n)*ui(n11(n),k)-s11(n)*vi(n11(n),k)
                    +
                    650  v11=s11(n)*ui(n11(n),k)+c11(n)*vi(n11(n),k)
                    +
                    651  uo(n,k)=uo(n,k)+wb*w11(n)*u11
                    +
                    652  vo(n,k)=vo(n,k)+wb*w11(n)*v11
                    +
                    653  wo(n,k)=wo(n,k)+wb*w11(n)
                    +
                    654  ENDIF
                    +
                    655  IF(li(n21(n),k)) THEN
                    +
                    656  u21=c21(n)*ui(n21(n),k)-s21(n)*vi(n21(n),k)
                    +
                    657  v21=s21(n)*ui(n21(n),k)+c21(n)*vi(n21(n),k)
                    +
                    658  uo(n,k)=uo(n,k)+wb*w21(n)*u21
                    +
                    659  vo(n,k)=vo(n,k)+wb*w21(n)*v21
                    +
                    660  wo(n,k)=wo(n,k)+wb*w21(n)
                    +
                    661  ENDIF
                    +
                    662  IF(li(n12(n),k)) THEN
                    +
                    663  u12=c12(n)*ui(n12(n),k)-s12(n)*vi(n12(n),k)
                    +
                    664  v12=s12(n)*ui(n12(n),k)+c12(n)*vi(n12(n),k)
                    +
                    665  uo(n,k)=uo(n,k)+wb*w12(n)*u12
                    +
                    666  vo(n,k)=vo(n,k)+wb*w12(n)*v12
                    +
                    667  wo(n,k)=wo(n,k)+wb*w12(n)
                    +
                    668  ENDIF
                    +
                    669  IF(li(n22(n),k)) THEN
                    +
                    670  u22=c22(n)*ui(n22(n),k)-s22(n)*vi(n22(n),k)
                    +
                    671  v22=s22(n)*ui(n22(n),k)+c22(n)*vi(n22(n),k)
                    +
                    672  uo(n,k)=uo(n,k)+wb*w22(n)*u22
                    +
                    673  vo(n,k)=vo(n,k)+wb*w22(n)*v22
                    +
                    674  wo(n,k)=wo(n,k)+wb*w22(n)
                    +
                    675  ENDIF
                    +
                    676  ENDIF
                    +
                    677  ENDIF
                    +
                    678  ENDDO
                    +
                    679  !$OMP END PARALLEL DO
                    +
                    680  ENDDO
                    +
                    681  ENDIF
                    +
                    682  ENDDO
                    +
                    683  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    684  ! COMPUTE OUTPUT BITMAPS AND FIELDS
                    +
                    685  ! KM is often 1, do not put OMP PARALLEL here
                    +
                    686  DO k=1,km
                    +
                    687  ibo(k)=ibi(k)
                    +
                    688  !$OMP PARALLEL DO PRIVATE(N,UROT,VROT) SCHEDULE(STATIC)
                    +
                    689  DO n=1,no
                    +
                    690  lo(n,k)=wo(n,k).GE.pmp*nb4
                    +
                    691  IF(lo(n,k)) THEN
                    +
                    692  uo(n,k)=uo(n,k)/wo(n,k)
                    +
                    693  vo(n,k)=vo(n,k)/wo(n,k)
                    +
                    694  urot=crot(n)*uo(n,k)-srot(n)*vo(n,k)
                    +
                    695  vrot=srot(n)*uo(n,k)+crot(n)*vo(n,k)
                    +
                    696  uo(n,k)=urot
                    +
                    697  vo(n,k)=vrot
                    +
                    698  ELSE
                    +
                    699  ibo(k)=1
                    +
                    700  uo(n,k)=0.
                    +
                    701  vo(n,k)=0.
                    +
                    702  ENDIF
                    +
                    703  ENDDO
                    +
                    704  !$OMP END PARALLEL DO
                    +
                    705  ENDDO
                    +
                    706 
                    +
                    707  select type(grid_out2)
                    +
                    708  type is(ip_equid_cylind_grid)
                    +
                    709  CALL polfixv(no,mo,km,rlat,rlon,ibo,lo,uo,vo)
                    +
                    710  end select
                    +
                    711  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    712  END SUBROUTINE interpolate_budget_vector
                    +
                    713 
                    +
                    714 end module budget_interp_mod
                    + + +
                    subroutine movect(FLAT, FLON, TLAT, TLON, CROT, SROT)
                    This subprogram provides the rotation parameters to move a vector along a great circle from one posit...
                    Definition: movect.F90:26
                    +
                    Budget interpolation routines for scalars and vectors.
                    +
                    subroutine interpolate_budget_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Performs budget interpolation from any grid to any grid (or to random station points) for scalar fiel...
                    +
                    subroutine interpolate_budget_vector(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    This subprogram performs budget interpolation from any grid to any grid (or to random station points)...
                    +
                    Driver module for gdswzd routines.
                    Definition: gdswzd_mod.F90:25
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Routines for creating an ip_grid given a Grib descriptor.
                    +
                    Re-export the individual grids.
                    Definition: ip_grids_mod.F90:7
                    +
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:7
                    +
                    subroutine, public polfixs(NM, NX, KM, RLAT, IB, LO, GO)
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:30
                    +
                    subroutine, public polfixv(NM, NX, KM, RLAT, RLON, IB, LO, UO, VO)
                    Make multiple pole vector values consistent,.
                    Definition: polfix_mod.F90:125
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/classes.html b/ver-5.0.0/classes.html new file mode 100644 index 00000000..393d4108 --- /dev/null +++ b/ver-5.0.0/classes.html @@ -0,0 +1,113 @@ + + + + + + + +NCEPLIBS-ip: Data Types + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + + + + + + diff --git a/ver-5.0.0/closed.png b/ver-5.0.0/closed.png new file mode 100644 index 00000000..98cc2c90 Binary files /dev/null and b/ver-5.0.0/closed.png differ diff --git a/ver-5.0.0/dir_49e56c817e5e54854c35e136979f97ca.html b/ver-5.0.0/dir_49e56c817e5e54854c35e136979f97ca.html new file mode 100644 index 00000000..e0675537 --- /dev/null +++ b/ver-5.0.0/dir_49e56c817e5e54854c35e136979f97ca.html @@ -0,0 +1,99 @@ + + + + + + + +NCEPLIBS-ip: docs Directory Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    docs Directory Reference
                    +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/ver-5.0.0/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 00000000..9a85d633 --- /dev/null +++ b/ver-5.0.0/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,373 @@ + + + + + + + +NCEPLIBS-ip: src Directory Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    src Directory Reference
                    +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Files

                    file  bicubic_interp_mod.F90 [code]
                     Bicubic interpolation routines for scalars and vectors.
                     
                    file  bilinear_interp_mod.F90 [code]
                     Bilinear interpolation routines for scalars and vectors.
                     
                    file  budget_interp_mod.F90 [code]
                     Budget interpolation routines for scalars and vectors.
                     
                    file  earth_radius_mod.F90 [code]
                     Determine earth radius and shape.
                     
                    file  fftpack.F [code]
                     A concatination of the (FFTPACK)[https://netlib.org/fftpack/] library code.
                     
                    file  gdswzd_c.F90 [code]
                     C wrapper for routine gdswzd().
                     
                    file  gdswzd_mod.F90 [code]
                     Driver module for gdswzd routines.
                     
                    file  ip_constants_mod.F90 [code]
                     Constants for use in NCEPLIBS-ip.
                     
                    file  ip_equid_cylind_grid_mod.F90 [code]
                     Equidistant cylindrical grib decoder and grid coordinate transformations.
                     
                    file  ip_gaussian_grid_mod.F90 [code]
                     Gaussian grid coordinate transformations.
                     
                    file  ip_grid_descriptor_mod.F90 [code]
                     Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                     
                    file  ip_grid_factory_mod.F90 [code]
                     Routines for creating an ip_grid given a Grib descriptor.
                     
                    file  ip_grid_mod.F90 [code]
                     Abstract ip_grid type.
                     
                    file  ip_grids_mod.F90 [code]
                     Re-export the individual grids.
                     
                    file  ip_interpolators_mod.F90 [code]
                     Top-level module to export interpolation routines and constants.
                     
                    file  ip_lambert_conf_grid_mod.F90 [code]
                     GDS wizard for lambert conformal conical.
                     
                    file  ip_mercator_grid_mod.F90 [code]
                     GDS wizard for mercator cylindrical.
                     
                    file  ip_mod.F90 [code]
                     Top-level module for the ip library.
                     
                    file  ip_polar_stereo_grid_mod.F90 [code]
                     GDS wizard for polar stereographic azimuthal.
                     
                    file  ip_rot_equid_cylind_egrid_mod.F90 [code]
                     Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E.
                     
                    file  ip_rot_equid_cylind_grid_mod.F90 [code]
                     Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D.
                     
                    file  ip_station_points_grid_mod.F90 [code]
                     Interpolate gridded data to a series of station points.
                     
                    file  iplib_4.h [code]
                     C interface to gdswzd() and gdswzd_grib1() functions for '4' library build.
                     
                    file  iplib_8.h [code]
                     C interface to gdswzd() and gdswzd_grib1() functions for '8' library build.
                     
                    file  iplib_d.h [code]
                     C interface to gdswzd() and gdswzd_grib1() functions for 'd' library build.
                     
                    file  ipolates.F90 [code]
                     Top-level driver for scalar interpolation routine ipolates().
                     
                    file  ipolatev.F90 [code]
                     Top-level driver for vector interpolation routine ipolates.
                     
                    file  ipxetas.F90 [code]
                     Expand or contract eta grids using linear interpolation.
                     
                    file  ipxwafs.F90 [code]
                     Expand or contract wafs grids.
                     
                    file  ipxwafs2.F90 [code]
                     Expand or contract wafs grids using linear interpolation and account for bitmapped data.
                     
                    file  ipxwafs3.F90 [code]
                     Expand or contract wafs grids using neighbor interpolation and accout for bitmapped data.
                     
                    file  lapack_gen.F [code]
                     Two Numerical Recipes routines for matrix inversion From Numerical Recipes.
                     
                    file  movect.F90 [code]
                     Move a vector along a great circle.
                     
                    file  ncpus.F [code]
                     Set number of cpus.
                     
                    file  neighbor_budget_interp_mod.F90 [code]
                     Interpolate scalar and vector fields with neighbor budget interpolation.
                     
                    file  neighbor_interp_mod.F90 [code]
                     Interpolate scalar and vector fields with neighbor interpolation.
                     
                    file  polfix_mod.F90 [code]
                     Make multiple pole scalar values consistent.
                     
                    file  spanaly.f [code]
                     Analyze spectral from Fourier.
                     
                    file  spdz2uv.f [code]
                     Compute winds from divergence and vorticity.
                     
                    file  spectral_interp_mod.F90 [code]
                     Interpolate spectral.
                     
                    file  speps.f [code]
                     Compute utility spectral fields.
                     
                    file  spfft.f [code]
                     Perform multiple fast fourier transforms.
                     
                    file  spfft1.f [code]
                     Perform multiple fast Fourier transforms.
                     
                    file  spffte.f [code]
                     Perform multiple fast Fourier transforms.
                     
                    file  spfftpt.f [code]
                     Compute fourier transform to gridpoints.
                     
                    file  spgradq.f [code]
                     Compute gradient in spectral space.
                     
                    file  spgradx.f [code]
                     Compute x-gradient in Fourier space.
                     
                    file  spgrady.f [code]
                     Compute y-gradient in spectral space.
                     
                    file  splaplac.f [code]
                     Compute laplacian in spectral space.
                     
                    file  splat.F [code]
                     Computes cosines of colatitude and Gaussian weights for sets of latitudes.
                     
                    file  splegend.f [code]
                     Compute Legendre polynomials.
                     
                    file  sppad.f [code]
                     Pad or truncate a spectral field.
                     
                    file  spsynth.f [code]
                     Synthesize Fourier coefficients from spectral coefficients.
                     
                    file  sptez.f [code]
                     Perform a simple scalar spherical transform.
                     
                    file  sptezd.f [code]
                     Perform a simple gradient spherical transform.
                     
                    file  sptezm.f [code]
                     Perform simple scalar spherical transforms.
                     
                    file  sptezmd.f [code]
                     Perform simple gradient spherical transforms.
                     
                    file  sptezmv.f [code]
                     Perform simple vector spherical transforms.
                     
                    file  sptezv.f [code]
                     Perform a simple vector spherical transform.
                     
                    file  sptgpm.f [code]
                     Transform spectral scalar to Mercator.
                     
                    file  sptgpmd.f [code]
                     Transform spectral to Mercator gradients.
                     
                    file  sptgpmv.f [code]
                     Transform spectral vector to Mercator.
                     
                    file  sptgps.f [code]
                     Transform spectral scalar to polar stereo.
                     
                    file  sptgpsd.f [code]
                     Transform spectral to polar stereographic gradients.
                     
                    file  sptgpsv.f [code]
                     Transform spectral vector to polar stereo.
                     
                    file  sptgpt.f [code]
                     Transform spectral scalar to station points.
                     
                    file  sptgptd.f [code]
                     Transform spectral to station point gradients.
                     
                    file  sptgptsd.f [code]
                     Transform spectral scalar to station points.
                     
                    file  sptgptv.f [code]
                     Transform spectral vector to station points.
                     
                    file  sptgptvd.f [code]
                     Transform spectral vector to station points.
                     
                    file  sptran.f [code]
                     Perform a scalar spherical transform.
                     
                    file  sptrand.f [code]
                     Perform a gradient spherical transform.
                     
                    file  sptranf.f [code]
                     Perform a scalar spherical transform.
                     
                    file  sptranf0.f [code]
                     Sptranf spectral initialization.
                     
                    file  sptranf1.f [code]
                     Sptranf spectral transform.
                     
                    file  sptranfv.f [code]
                     Perform a vector spherical transform.
                     
                    file  sptranv.f [code]
                     Perform a vector spherical transform.
                     
                    file  sptrun.f [code]
                     Truncate gridded scalar fields.
                     
                    file  sptrund.f [code]
                     Spectrally truncate to gradients.
                     
                    file  sptrung.f [code]
                     Spectrally interpolate scalars to stations.
                     
                    file  sptrungv.f [code]
                     Spectrally interpolate vectors to stations.
                     
                    file  sptrunl.f [code]
                     Spectrally truncate to laplacian.
                     
                    file  sptrunm.f [code]
                     Spectrally interpolate scalars to Mercator.
                     
                    file  sptrunmv.f [code]
                     Spectrally interpolate vectors to Mercator.
                     
                    file  sptruns.f [code]
                     Spectrally interpolate scalars to polar stereo.
                     
                    file  sptrunsv.f [code]
                     Spectrally interpolate vectors to polar stereo.
                     
                    file  sptrunv.f [code]
                     Spectrally truncate gridded vector fields.
                     
                    file  spuv2dz.f [code]
                     Compute divergence and vorticity from winds.
                     
                    file  spvar.f [code]
                     Compute variance by total wavenumber.
                     
                    file  spwget.f [code]
                     Get wave-space constants.
                     
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/doc.png b/ver-5.0.0/doc.png new file mode 100644 index 00000000..17edabff Binary files /dev/null and b/ver-5.0.0/doc.png differ diff --git a/ver-5.0.0/doxygen.css b/ver-5.0.0/doxygen.css new file mode 100644 index 00000000..ffbff022 --- /dev/null +++ b/ver-5.0.0/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/ver-5.0.0/doxygen.svg b/ver-5.0.0/doxygen.svg new file mode 100644 index 00000000..d42dad52 --- /dev/null +++ b/ver-5.0.0/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ver-5.0.0/dynsections.js b/ver-5.0.0/dynsections.js new file mode 100644 index 00000000..88f2c27e --- /dev/null +++ b/ver-5.0.0/dynsections.js @@ -0,0 +1,128 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +NCEPLIBS-ip: earth_radius_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    earth_radius_mod.F90 File Reference
                    +
                    +
                    + +

                    Determine earth radius and shape. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Modules

                    module  earth_radius_mod
                     Determine earth radius and shape.
                     
                    + + + + +

                    +Functions/Subroutines

                    subroutine, public earth_radius_mod::earth_radius (IGDTMPL, IGDTLEN, RADIUS, ECCEN_SQUARED)
                     Determine earth radius and shape. More...
                     
                    +

                    Detailed Description

                    +

                    Determine earth radius and shape.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    2021-07-21
                    + +

                    Definition in file earth_radius_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/earth__radius__mod_8F90.js b/ver-5.0.0/earth__radius__mod_8F90.js new file mode 100644 index 00000000..bc2c8f77 --- /dev/null +++ b/ver-5.0.0/earth__radius__mod_8F90.js @@ -0,0 +1,4 @@ +var earth__radius__mod_8F90 = +[ + [ "earth_radius", "earth__radius__mod_8F90.html#a810f60db1a1faff0d6f59937a8207a54", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/earth__radius__mod_8F90_source.html b/ver-5.0.0/earth__radius__mod_8F90_source.html new file mode 100644 index 00000000..a98dfc76 --- /dev/null +++ b/ver-5.0.0/earth__radius__mod_8F90_source.html @@ -0,0 +1,168 @@ + + + + + + + +NCEPLIBS-ip: earth_radius_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    earth_radius_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + +
                    8  implicit none
                    +
                    9 
                    +
                    10  private
                    +
                    11  public :: earth_radius
                    +
                    12 
                    +
                    13 contains
                    +
                    14 
                    +
                    40  SUBROUTINE earth_radius(IGDTMPL, IGDTLEN, RADIUS, ECCEN_SQUARED)
                    +
                    41  IMPLICIT NONE
                    +
                    42 
                    +
                    43  INTEGER, INTENT(IN ) :: igdtlen
                    +
                    44  INTEGER, INTENT(IN ) :: igdtmpl(igdtlen)
                    +
                    45 
                    +
                    46  REAL, INTENT( OUT) :: eccen_squared
                    +
                    47  REAL, INTENT( OUT) :: radius
                    +
                    48 
                    +
                    49  REAL :: flat
                    +
                    50  REAL :: major_axis, minor_axis
                    +
                    51 
                    +
                    52  SELECT CASE (igdtmpl(1))
                    +
                    53  CASE (0)
                    +
                    54  radius = 6367470.0
                    +
                    55  eccen_squared = 0.0
                    +
                    56  CASE (1) ! USER SPECIFIED SPHERICAL
                    +
                    57  radius = float(igdtmpl(3))/float(10**igdtmpl(2))
                    +
                    58  eccen_squared = 0.0
                    +
                    59  CASE (2) ! IAU 1965
                    +
                    60  radius = 6378160.0 ! SEMI MAJOR AXIS
                    +
                    61  flat = 1.0/297.0 ! FLATTENING
                    +
                    62  eccen_squared = (2.0*flat) - (flat**2)
                    +
                    63  CASE (3) ! USER SPECIFIED ELLIPTICAL (KM)
                    +
                    64  major_axis = float(igdtmpl(5))/float(10**igdtmpl(4))
                    +
                    65  major_axis = major_axis * 1000.0
                    +
                    66  minor_axis = float(igdtmpl(7))/float(10**igdtmpl(6))
                    +
                    67  minor_axis = minor_axis * 1000.0
                    +
                    68  eccen_squared = 1.0 - (minor_axis**2 / major_axis**2)
                    +
                    69  radius = major_axis
                    +
                    70  CASE (4) ! IAG-GRS80 MODEL
                    +
                    71  radius = 6378137.0 ! SEMI MAJOR AXIS
                    +
                    72  flat = 1.0/298.2572 ! FLATTENING
                    +
                    73  eccen_squared = (2.0*flat) - (flat**2)
                    +
                    74  CASE (5) ! WGS84 DATUM
                    +
                    75  radius = 6378137.0 ! SEMI MAJOR AXIS
                    +
                    76  eccen_squared = 0.00669437999013
                    +
                    77  CASE (6)
                    +
                    78  radius = 6371229.0
                    +
                    79  eccen_squared = 0.0
                    +
                    80  CASE (7) ! USER SPECIFIED ELLIPTICAL (M)
                    +
                    81  major_axis = float(igdtmpl(5))/float(10**igdtmpl(4))
                    +
                    82  minor_axis = float(igdtmpl(7))/float(10**igdtmpl(6))
                    +
                    83  eccen_squared = 1.0 - (minor_axis**2 / major_axis**2)
                    +
                    84  radius = major_axis
                    +
                    85  CASE (8)
                    +
                    86  radius = 6371200.0
                    +
                    87  eccen_squared = 0.0
                    +
                    88  CASE DEFAULT
                    +
                    89  radius = -9999.
                    +
                    90  eccen_squared = -9999.
                    +
                    91  END SELECT
                    +
                    92  !
                    +
                    93  RETURN
                    +
                    94  !
                    +
                    95  END SUBROUTINE earth_radius
                    +
                    96 end module earth_radius_mod
                    +
                    Determine earth radius and shape.
                    +
                    subroutine, public earth_radius(IGDTMPL, IGDTLEN, RADIUS, ECCEN_SQUARED)
                    Determine earth radius and shape.
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/fftpack_8F.html b/ver-5.0.0/fftpack_8F.html new file mode 100644 index 00000000..b07498cc --- /dev/null +++ b/ver-5.0.0/fftpack_8F.html @@ -0,0 +1,2006 @@ + + + + + + + +NCEPLIBS-ip: fftpack.F File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    fftpack.F File Reference
                    +
                    +
                    + +

                    A concatination of the (FFTPACK)[https://netlib.org/fftpack/] library code. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine csfft (isign, n, scale, x, y, table, work, isys)
                     csfft More...
                     
                    subroutine dcrft (init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                     dcrft More...
                     
                    subroutine drcft (init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                     drcft More...
                     
                    subroutine radb2 (IDO, L1, CC, CH, WA1)
                     RADB2. More...
                     
                    subroutine radb3 (IDO, L1, CC, CH, WA1, WA2)
                     RADB3
                    + More...
                     
                    subroutine radb4 (IDO, L1, CC, CH, WA1, WA2, WA3)
                     RADB4. More...
                     
                    subroutine radb5 (IDO, L1, CC, CH, WA1, WA2, WA3, WA4)
                     RADB5. More...
                     
                    subroutine radbg (IDO, IP, L1, IDL1, CC, C1, C2, CH, CH2, WA)
                     RADBG. More...
                     
                    subroutine radf2 (IDO, L1, CC, CH, WA1)
                     RADBG. More...
                     
                    subroutine radf3 (IDO, L1, CC, CH, WA1, WA2)
                     RADF3. More...
                     
                    subroutine radf4 (IDO, L1, CC, CH, WA1, WA2, WA3)
                     RADF4. More...
                     
                    subroutine radf5 (IDO, L1, CC, CH, WA1, WA2, WA3, WA4)
                     RADF5. More...
                     
                    subroutine radfg (IDO, IP, L1, IDL1, CC, C1, C2, CH, CH2, WA)
                     RADFG. More...
                     
                    subroutine rfftb (N, R, WSAVE)
                     RFFTB. More...
                     
                    subroutine rfftb1 (N, C, CH, WA, IFAC)
                     RFFTB1. More...
                     
                    subroutine rfftf (N, R, WSAVE)
                     RFFTF. More...
                     
                    subroutine rfftf1 (N, C, CH, WA, IFAC)
                     RFFTF1. More...
                     
                    subroutine rffti (N, WSAVE)
                     RFFTI. More...
                     
                    subroutine rffti1 (N, WA, IFAC)
                     RFFTI1. More...
                     
                    subroutine scfft (isign, n, scale, x, y, table, work, isys)
                     scfft More...
                     
                    subroutine scrft (init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                     scrft More...
                     
                    subroutine srcft (init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                     srcft More...
                     
                    +

                    Detailed Description

                    +

                    A concatination of the (FFTPACK)[https://netlib.org/fftpack/] library code.

                    +

                    FFTPACK is a package of Fortran subprograms for the fast Fourier transform of periodic and other symmetric sequences. It includes complex, real, sine, cosine, and quarter-wave transforms.

                    +

                    Reference:

                      +
                    • P.N. Swarztrauber, Vectorizing the FFTs, in Parallel Computations (G. Rodrigue, ed.), Academic Press, 1982, pp. 51–83.

                      +
                      Author
                      Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                      +
                    • +
                    + +

                    Definition in file fftpack.F.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ csfft()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine csfft (integer isign,
                    integer n,
                    real scale,
                    real, dimension(*) x,
                    real, dimension(*) y,
                    real, dimension(*) table,
                    real, dimension(*) work,
                    integer isys 
                    )
                    +
                    + +

                    csfft

                    +
                    Parameters
                    + + + + + + + + + +
                    isign
                    n
                    scale
                    x
                    y
                    table
                    work
                    isys
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 116 of file fftpack.F.

                    + +

                    References rfftb(), and rffti().

                    + +
                    +
                    + +

                    ◆ dcrft()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine dcrft (integer init,
                    real, dimension(2*ldx,*) x,
                    integer ldx,
                    real, dimension(ldy,*) y,
                    integer ldy,
                    integer n,
                    integer m,
                    integer isign,
                    real scale,
                    real, dimension(44002) table,
                    integer n1,
                    real wrk,
                    integer n2,
                    real z,
                    integer nz 
                    )
                    +
                    + +

                    dcrft

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + +
                    init
                    x
                    ldx
                    y
                    ldy
                    n
                    m
                    isign
                    scale
                    table
                    n1
                    wrk
                    n2
                    z
                    nz
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 32 of file fftpack.F.

                    + +

                    References rfftb(), and rffti().

                    + +

                    Referenced by spffte().

                    + +
                    +
                    + +

                    ◆ drcft()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine drcft (integer init,
                    real, dimension(ldx,*) x,
                    integer ldx,
                    real, dimension(2*ldy,*) y,
                    integer ldy,
                    integer n,
                    integer m,
                    integer isign,
                    real scale,
                    real, dimension(44002) table,
                    integer n1,
                    real wrk,
                    integer n2,
                    real z,
                    integer nz 
                    )
                    +
                    + +

                    drcft

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + +
                    init
                    x
                    ldx
                    y
                    ldy
                    n
                    m
                    isign
                    scale
                    table
                    n1
                    wrk
                    n2
                    z
                    nz
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 158 of file fftpack.F.

                    + +

                    References rfftf(), and rffti().

                    + +

                    Referenced by spffte().

                    + +
                    +
                    + +

                    ◆ radb2()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine radb2 ( IDO,
                     L1,
                    dimension(ido,2,l1) CC,
                    dimension(ido,l1,2) CH,
                    dimension(1) WA1 
                    )
                    +
                    + +

                    RADB2.

                    +
                    Parameters
                    + + + + + + +
                    IDO
                    L1
                    CC
                    CH
                    WA1
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 530 of file fftpack.F.

                    + +

                    Referenced by rfftb1().

                    + +
                    +
                    + +

                    ◆ radb3()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine radb3 ( IDO,
                     L1,
                    dimension(ido,3,l1) CC,
                    dimension(ido,l1,3) CH,
                    dimension(1) WA1,
                    dimension(1) WA2 
                    )
                    +
                    + +

                    RADB3
                    +

                    +
                    Parameters
                    + + + + + + + +
                    IDO
                    L1
                    CC
                    CH
                    WA1
                    WA2
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 569 of file fftpack.F.

                    + +

                    Referenced by rfftb1().

                    + +
                    +
                    + +

                    ◆ radb4()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine radb4 ( IDO,
                     L1,
                    dimension(ido,4,l1) CC,
                    dimension(ido,l1,4) CH,
                    dimension(1) WA1,
                    dimension(1) WA2,
                    dimension(1) WA3 
                    )
                    +
                    + +

                    RADB4.

                    +
                    Parameters
                    + + + + + + + + +
                    IDO
                    L1
                    CC
                    CH
                    WA1
                    WA2
                    WA3
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 619 of file fftpack.F.

                    + +

                    Referenced by rfftb1().

                    + +
                    +
                    + +

                    ◆ radb5()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine radb5 ( IDO,
                     L1,
                    dimension(ido,5,l1) CC,
                    dimension(ido,l1,5) CH,
                    dimension(1) WA1,
                    dimension(1) WA2,
                    dimension(1) WA3,
                    dimension(1) WA4 
                    )
                    +
                    + +

                    RADB5.

                    +
                    Parameters
                    + + + + + + + + + +
                    IDO
                    L1
                    CC
                    CH
                    WA1
                    WA2
                    WA3
                    WA4
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 690 of file fftpack.F.

                    + +

                    Referenced by rfftb1().

                    + +
                    +
                    + +

                    ◆ radbg()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine radbg ( IDO,
                     IP,
                     L1,
                     IDL1,
                    dimension(ido,ip,l1) CC,
                    dimension(ido,l1,ip) C1,
                    dimension(idl1,ip) C2,
                    dimension(ido,l1,ip) CH,
                    dimension(idl1,ip) CH2,
                    dimension(1) WA 
                    )
                    +
                    + +

                    RADBG.

                    +
                    Parameters
                    + + + + + + + + + + + +
                    IDO
                    IP
                    L1
                    IDL1
                    CC
                    C1
                    C2
                    CH
                    CH2
                    WA
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 768 of file fftpack.F.

                    + +

                    Referenced by rfftb1().

                    + +
                    +
                    + +

                    ◆ radf2()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine radf2 ( IDO,
                     L1,
                    dimension(ido,l1,2) CC,
                    dimension(ido,2,l1) CH,
                    dimension(1) WA1 
                    )
                    +
                    + +

                    RADBG.

                    +
                    Parameters
                    + + + + + + +
                    IDO
                    L1
                    CC
                    CH
                    WA1
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 946 of file fftpack.F.

                    + +

                    Referenced by rfftf1().

                    + +
                    +
                    + +

                    ◆ radf3()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine radf3 ( IDO,
                     L1,
                    dimension(ido,l1,3) CC,
                    dimension(ido,3,l1) CH,
                    dimension(1) WA1,
                    dimension(1) WA2 
                    )
                    +
                    + +

                    RADF3.

                    +
                    Parameters
                    + + + + + + + +
                    IDO
                    L1
                    CC
                    CH
                    WA1
                    WA2
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 984 of file fftpack.F.

                    + +

                    Referenced by rfftf1().

                    + +
                    +
                    + +

                    ◆ radf4()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine radf4 ( IDO,
                     L1,
                    dimension(ido,l1,4) CC,
                    dimension(ido,4,l1) CH,
                    dimension(1) WA1,
                    dimension(1) WA2,
                    dimension(1) WA3 
                    )
                    +
                    + +

                    RADF4.

                    +
                    Parameters
                    + + + + + + + + +
                    IDO
                    L1
                    CC
                    CH
                    WA1
                    WA2
                    WA3
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 1031 of file fftpack.F.

                    + +

                    Referenced by rfftf1().

                    + +
                    +
                    + +

                    ◆ radf5()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine radf5 ( IDO,
                     L1,
                    dimension(ido,l1,5) CC,
                    dimension(ido,5,l1) CH,
                    dimension(1) WA1,
                    dimension(1) WA2,
                    dimension(1) WA3,
                    dimension(1) WA4 
                    )
                    +
                    + +

                    RADF5.

                    +
                    Parameters
                    + + + + + + + + + +
                    IDO
                    L1
                    CC
                    CH
                    WA1
                    WA2
                    WA3
                    WA4
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 1098 of file fftpack.F.

                    + +

                    Referenced by rfftf1().

                    + +
                    +
                    + +

                    ◆ radfg()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine radfg ( IDO,
                     IP,
                     L1,
                     IDL1,
                    dimension(ido,ip,l1) CC,
                    dimension(ido,l1,ip) C1,
                    dimension(idl1,ip) C2,
                    dimension(ido,l1,ip) CH,
                    dimension(idl1,ip) CH2,
                    dimension(1) WA 
                    )
                    +
                    + +

                    RADFG.

                    +
                    Parameters
                    + + + + + + + + + + + +
                    IDO
                    IP
                    L1
                    IDL1
                    CC
                    C1
                    C2
                    CH
                    CH2
                    WA
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 1172 of file fftpack.F.

                    + +

                    Referenced by rfftf1().

                    + +
                    +
                    + +

                    ◆ rfftb()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine rfftb ( N,
                    dimension(1) R,
                    dimension(1) WSAVE 
                    )
                    +
                    + +

                    RFFTB.

                    +
                    Parameters
                    + + + + +
                    N
                    R
                    WSAVE
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 296 of file fftpack.F.

                    + +

                    References rfftb1().

                    + +

                    Referenced by csfft(), dcrft(), and scrft().

                    + +
                    +
                    + +

                    ◆ rfftb1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine rfftb1 ( N,
                    dimension(1) C,
                    dimension(1) CH,
                    dimension(1) WA,
                    dimension(*) IFAC 
                    )
                    +
                    + +

                    RFFTB1.

                    +
                    Parameters
                    + + + + + + +
                    N
                    C
                    CH
                    WA
                    IFAC
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 325 of file fftpack.F.

                    + +

                    References radb2(), radb3(), radb4(), radb5(), and radbg().

                    + +

                    Referenced by rfftb().

                    + +
                    +
                    + +

                    ◆ rfftf()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine rfftf ( N,
                    dimension(1) R,
                    dimension(1) WSAVE 
                    )
                    +
                    + +

                    RFFTF.

                    +
                    Parameters
                    + + + + +
                    N
                    R
                    WSAVE
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 282 of file fftpack.F.

                    + +

                    References rfftf1().

                    + +

                    Referenced by drcft(), scfft(), and srcft().

                    + +
                    +
                    + +

                    ◆ rfftf1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine rfftf1 ( N,
                    dimension(1) C,
                    dimension(1) CH,
                    dimension(1) WA,
                    dimension(*) IFAC 
                    )
                    +
                    + +

                    RFFTF1.

                    +
                    Parameters
                    + + + + + + +
                    N
                    C
                    CH
                    WA
                    IFAC
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 394 of file fftpack.F.

                    + +

                    References radf2(), radf3(), radf4(), radf5(), and radfg().

                    + +

                    Referenced by rfftf().

                    + +
                    +
                    + +

                    ◆ rffti()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine rffti ( N,
                    dimension(1) WSAVE 
                    )
                    +
                    + +

                    RFFTI.

                    +
                    Parameters
                    + + + +
                    N
                    WSAVE
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 309 of file fftpack.F.

                    + +

                    References rffti1().

                    + +

                    Referenced by csfft(), dcrft(), drcft(), scfft(), scrft(), and srcft().

                    + +
                    +
                    + +

                    ◆ rffti1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine rffti1 ( N,
                    dimension(1) WA,
                    dimension(*) IFAC 
                    )
                    +
                    + +

                    RFFTI1.

                    +
                    Parameters
                    + + + + +
                    N
                    WA
                    IFAC
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 461 of file fftpack.F.

                    + +

                    Referenced by rffti().

                    + +
                    +
                    + +

                    ◆ scfft()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine scfft (integer isign,
                    integer n,
                    real scale,
                    real, dimension(*) x,
                    real, dimension(*) y,
                    real, dimension(*) table,
                    real, dimension(*) work,
                    integer isys 
                    )
                    +
                    + +

                    scfft

                    +
                    Parameters
                    + + + + + + + + + +
                    isign
                    n
                    scale
                    x
                    y
                    table
                    work
                    isys
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 249 of file fftpack.F.

                    + +

                    References rfftf(), and rffti().

                    + +
                    +
                    + +

                    ◆ scrft()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine scrft (integer init,
                    real, dimension(2*ldx,*) x,
                    integer ldx,
                    real, dimension(ldy,*) y,
                    integer ldy,
                    integer n,
                    integer m,
                    integer isign,
                    real scale,
                    real, dimension(44002) table,
                    integer n1,
                    real wrk,
                    integer n2,
                    real z,
                    integer nz 
                    )
                    +
                    + +

                    scrft

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + +
                    init
                    x
                    ldx
                    y
                    ldy
                    n
                    m
                    isign
                    scale
                    table
                    n1
                    wrk
                    n2
                    z
                    nz
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 78 of file fftpack.F.

                    + +

                    References rfftb(), and rffti().

                    + +

                    Referenced by spfft(), spfft1(), and spffte().

                    + +
                    +
                    + +

                    ◆ srcft()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine srcft (integer init,
                    real, dimension(ldx,*) x,
                    integer ldx,
                    real, dimension(2*ldy,*) y,
                    integer ldy,
                    integer n,
                    integer m,
                    integer isign,
                    real scale,
                    real, dimension(44002) table,
                    integer n1,
                    real wrk,
                    integer n2,
                    real z,
                    integer nz 
                    )
                    +
                    + +

                    srcft

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + +
                    init
                    x
                    ldx
                    y
                    ldy
                    n
                    m
                    isign
                    scale
                    table
                    n1
                    wrk
                    n2
                    z
                    nz
                    +
                    +
                    +
                    Author
                    Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    + +

                    Definition at line 207 of file fftpack.F.

                    + +

                    References rfftf(), and rffti().

                    + +

                    Referenced by spfft(), spfft1(), and spffte().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/fftpack_8F.js b/ver-5.0.0/fftpack_8F.js new file mode 100644 index 00000000..98c5a031 --- /dev/null +++ b/ver-5.0.0/fftpack_8F.js @@ -0,0 +1,25 @@ +var fftpack_8F = +[ + [ "csfft", "fftpack_8F.html#ad261879c88a7f040e43f1549e65f36e5", null ], + [ "dcrft", "fftpack_8F.html#a713ef445886ad8dc8b16692c6075d225", null ], + [ "drcft", "fftpack_8F.html#a55b05419c0d3bb0595b34c8cacf93be8", null ], + [ "radb2", "fftpack_8F.html#ae63abe3a02989ed4fbd60b50bc0c6dda", null ], + [ "radb3", "fftpack_8F.html#a6129001ac4cdf5d5a345edc2822d8014", null ], + [ "radb4", "fftpack_8F.html#a3b5aab129020968eaf92f2e6ca0785ef", null ], + [ "radb5", "fftpack_8F.html#a2b6492f922cbee03af5b89d52356abf1", null ], + [ "radbg", "fftpack_8F.html#af5a2521b66fece6cc768206c1df0d20b", null ], + [ "radf2", "fftpack_8F.html#a70e2420dd5bee9e41eb6c15bbad5eef6", null ], + [ "radf3", "fftpack_8F.html#a51374398f8edd5701987ce483c739592", null ], + [ "radf4", "fftpack_8F.html#ae9910ca606fd0cdb03b5b3b98533f486", null ], + [ "radf5", "fftpack_8F.html#a6d852c36924b038f77a24b8e22205add", null ], + [ "radfg", "fftpack_8F.html#ad5dbca6bb6ee7c0a86a1e140627de1b2", null ], + [ "rfftb", "fftpack_8F.html#a79ba25d1f342858b0faa3c3e3585ec88", null ], + [ "rfftb1", "fftpack_8F.html#afa735c298a72dd1c13ab1c45e737c066", null ], + [ "rfftf", "fftpack_8F.html#afbb5dc9c70ebe24759d5ffec1d3e42e2", null ], + [ "rfftf1", "fftpack_8F.html#acdf9efa42dc73f90af444ee0da649a09", null ], + [ "rffti", "fftpack_8F.html#a50f1237ff5990436609962c0eae406db", null ], + [ "rffti1", "fftpack_8F.html#ae3569ef7a371390f6bf38417865ef71b", null ], + [ "scfft", "fftpack_8F.html#a369071ea2d380c9d91ba36d1bf375e33", null ], + [ "scrft", "fftpack_8F.html#ac69cbd64be972c20a4424f5327fb4b36", null ], + [ "srcft", "fftpack_8F.html#acf248c4f27a9fa81cffdfded50eee742", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/fftpack_8F_source.html b/ver-5.0.0/fftpack_8F_source.html new file mode 100644 index 00000000..15984ee2 --- /dev/null +++ b/ver-5.0.0/fftpack_8F_source.html @@ -0,0 +1,1458 @@ + + + + + + + +NCEPLIBS-ip: fftpack.F Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    fftpack.F
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief A concatination of the (FFTPACK)[https://netlib.org/fftpack/] library code.
                    +
                    3 C>
                    +
                    4 C> FFTPACK is a package of Fortran subprograms for the fast Fourier
                    +
                    5 C> transform of periodic and other symmetric sequences. It includes
                    +
                    6 C> complex, real, sine, cosine, and quarter-wave transforms.
                    +
                    7 C>
                    +
                    8 C>Reference:
                    +
                    9 C>- P.N. Swarztrauber, Vectorizing the FFTs, in Parallel Computations
                    +
                    10 C>(G. Rodrigue, ed.), Academic Press, 1982, pp. 51--83.
                    +
                    11 C>
                    +
                    12 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    13 
                    +
                    14 C> dcrft
                    +
                    15 C>
                    +
                    16 C> @param init
                    +
                    17 C> @param x
                    +
                    18 C> @param ldx
                    +
                    19 C> @param y
                    +
                    20 C> @param ldy
                    +
                    21 C> @param n
                    +
                    22 C> @param m
                    +
                    23 C> @param isign
                    +
                    24 C> @param scale
                    +
                    25 C> @param table
                    +
                    26 C> @param n1
                    +
                    27 C> @param wrk
                    +
                    28 C> @param n2
                    +
                    29 C> @param z
                    +
                    30 C> @param nz
                    +
                    31 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    32  SUBROUTINE dcrft(init,x,ldx,y,ldy,n,m,isign,scale,
                    +
                    33  & table,n1,wrk,n2,z,nz)
                    +
                    34 
                    +
                    35  implicit none
                    +
                    36  integer init,ldx,ldy,n,m,isign,n1,n2,nz,i,j
                    +
                    37  real x(2*ldx,*),y(ldy,*),scale,table(44002),wrk,z
                    +
                    38 
                    +
                    39  IF (init.ne.0) THEN
                    +
                    40  CALL rffti(n,table)
                    +
                    41  ELSE
                    +
                    42 !OCL NOVREC
                    +
                    43  DO j=1,m
                    +
                    44  y(1,j)=x(1,j)
                    +
                    45  DO i=2,n
                    +
                    46  y(i,j)=x(i+1,j)
                    +
                    47  ENDDO
                    +
                    48  CALL rfftb(n,y(1,j),table)
                    +
                    49  DO i=1,n
                    +
                    50  y(i,j)=scale*y(i,j)
                    +
                    51  ENDDO
                    +
                    52  ENDDO
                    +
                    53  ENDIF
                    +
                    54 
                    +
                    55  RETURN
                    +
                    56  END
                    +
                    57 
                    +
                    58 C> scrft
                    +
                    59 C>
                    +
                    60 C> @param init
                    +
                    61 C> @param x
                    +
                    62 C> @param ldx
                    +
                    63 C> @param y
                    +
                    64 C> @param ldy
                    +
                    65 C> @param n
                    +
                    66 C> @param m
                    +
                    67 C> @param isign
                    +
                    68 C> @param scale
                    +
                    69 C> @param table
                    +
                    70 C> @param n1
                    +
                    71 C> @param wrk
                    +
                    72 C> @param n2
                    +
                    73 C> @param z
                    +
                    74 C> @param nz
                    +
                    75 C>
                    +
                    76 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    77 
                    +
                    78  SUBROUTINE scrft(init,x,ldx,y,ldy,n,m,isign,scale,
                    +
                    79  & table,n1,wrk,n2,z,nz)
                    +
                    80 
                    +
                    81  implicit none
                    +
                    82  integer init,ldx,ldy,n,m,isign,n1,n2,nz,i,j
                    +
                    83  real x(2*ldx,*),y(ldy,*),scale,table(44002),wrk,z
                    +
                    84 
                    +
                    85  IF (init.ne.0) THEN
                    +
                    86  CALL rffti(n,table)
                    +
                    87  ELSE
                    +
                    88 !OCL NOVREC
                    +
                    89  DO j=1,m
                    +
                    90  y(1,j)=x(1,j)
                    +
                    91  DO i=2,n
                    +
                    92  y(i,j)=x(i+1,j)
                    +
                    93  ENDDO
                    +
                    94  CALL rfftb(n,y(1,j),table)
                    +
                    95  DO i=1,n
                    +
                    96  y(i,j)=scale*y(i,j)
                    +
                    97  ENDDO
                    +
                    98  ENDDO
                    +
                    99  ENDIF
                    +
                    100 
                    +
                    101  RETURN
                    +
                    102  END
                    +
                    103 
                    +
                    104 C> csfft
                    +
                    105 C>
                    +
                    106 C> @param isign
                    +
                    107 C> @param n
                    +
                    108 C> @param scale
                    +
                    109 C> @param x
                    +
                    110 C> @param y
                    +
                    111 C> @param table
                    +
                    112 C> @param work
                    +
                    113 C> @param isys
                    +
                    114 C>
                    +
                    115 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    116  SUBROUTINE csfft(isign,n,scale,x,y,table,work,isys)
                    +
                    117 
                    +
                    118  implicit none
                    +
                    119  integer isign,n,isys,i
                    +
                    120  real scale,x(*),y(*),table(*),work(*)
                    +
                    121 
                    +
                    122  IF (isign.eq.0) THEN
                    +
                    123  CALL rffti(n,table)
                    +
                    124  ENDIF
                    +
                    125  IF (isign.eq.1) THEN
                    +
                    126  y(1)=x(1)
                    +
                    127  DO i=2,n
                    +
                    128  y(i)=x(i+1)
                    +
                    129  ENDDO
                    +
                    130  CALL rfftb(n,y,table)
                    +
                    131  DO i=1,n
                    +
                    132  y(i)=scale*y(i)
                    +
                    133  ENDDO
                    +
                    134  ENDIF
                    +
                    135 
                    +
                    136  RETURN
                    +
                    137  END
                    +
                    138 
                    +
                    139 C> drcft
                    +
                    140 C>
                    +
                    141 C> @param init
                    +
                    142 C> @param x
                    +
                    143 C> @param ldx
                    +
                    144 C> @param y
                    +
                    145 C> @param ldy
                    +
                    146 C> @param n
                    +
                    147 C> @param m
                    +
                    148 C> @param isign
                    +
                    149 C> @param scale
                    +
                    150 C> @param table
                    +
                    151 C> @param n1
                    +
                    152 C> @param wrk
                    +
                    153 C> @param n2
                    +
                    154 C> @param z
                    +
                    155 C> @param nz
                    +
                    156 C>
                    +
                    157 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    158  SUBROUTINE drcft(init,x,ldx,y,ldy,n,m,isign,scale,
                    +
                    159  & table,n1,wrk,n2,z,nz)
                    +
                    160 
                    +
                    161  implicit none
                    +
                    162  integer init,ldx,ldy,n,m,isign,n1,n2,nz,i,j
                    +
                    163  real x(ldx,*),y(2*ldy,*),scale,table(44002),wrk,z
                    +
                    164 
                    +
                    165  IF (init.ne.0) THEN
                    +
                    166  CALL rffti(n,table)
                    +
                    167  ELSE
                    +
                    168  DO j=1,m
                    +
                    169  DO i=1,n
                    +
                    170  y(i,j)=x(i,j)
                    +
                    171  ENDDO
                    +
                    172  CALL rfftf(n,y(1,j),table)
                    +
                    173  DO i=1,n
                    +
                    174  y(i,j)=scale*y(i,j)
                    +
                    175  ENDDO
                    +
                    176  DO i=n,2,-1
                    +
                    177  y(i+1,j)=y(i,j)
                    +
                    178  ENDDO
                    +
                    179  y(2,j)=0.
                    +
                    180 C 01/17/2013 vvvvvvvvvvvvv E.Mirvis added ver 2.0.1 by S.Moorthi request. No +|- demo.
                    +
                    181  y(n+2,j) = 0.
                    +
                    182  ENDDO
                    +
                    183  ENDIF
                    +
                    184 
                    +
                    185  RETURN
                    +
                    186  END
                    +
                    187 
                    +
                    188 C> srcft
                    +
                    189 C>
                    +
                    190 C> @param init
                    +
                    191 C> @param x
                    +
                    192 C> @param ldx
                    +
                    193 C> @param y
                    +
                    194 C> @param ldy
                    +
                    195 C> @param n
                    +
                    196 C> @param m
                    +
                    197 C> @param isign
                    +
                    198 C> @param scale
                    +
                    199 C> @param table
                    +
                    200 C> @param n1
                    +
                    201 C> @param wrk
                    +
                    202 C> @param n2
                    +
                    203 C> @param z
                    +
                    204 C> @param nz
                    +
                    205 C>
                    +
                    206 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    207  SUBROUTINE srcft(init,x,ldx,y,ldy,n,m,isign,scale,
                    +
                    208  & table,n1,wrk,n2,z,nz)
                    +
                    209 
                    +
                    210  implicit none
                    +
                    211  integer init,ldx,ldy,n,m,isign,n1,n2,nz,i,j
                    +
                    212  real x(ldx,*),y(2*ldy,*),scale,table(44002),wrk,z
                    +
                    213 
                    +
                    214  IF (init.ne.0) THEN
                    +
                    215  CALL rffti(n,table)
                    +
                    216  ELSE
                    +
                    217  DO j=1,m
                    +
                    218  DO i=1,n
                    +
                    219  y(i,j)=x(i,j)
                    +
                    220  ENDDO
                    +
                    221  CALL rfftf(n,y(1,j),table)
                    +
                    222  DO i=1,n
                    +
                    223  y(i,j)=scale*y(i,j)
                    +
                    224  ENDDO
                    +
                    225  DO i=n,2,-1
                    +
                    226  y(i+1,j)=y(i,j)
                    +
                    227  ENDDO
                    +
                    228  y(2,j)=0.
                    +
                    229  y(n+2,j) = 0.
                    +
                    230 C 01/17/2013 ^^^^^^^^^^E.Mirvis added ver 2.0.1 by S.Moorthi request. No +|- demo.
                    +
                    231  ENDDO
                    +
                    232  ENDIF
                    +
                    233 
                    +
                    234  RETURN
                    +
                    235  END
                    +
                    236 
                    +
                    237 C> scfft
                    +
                    238 C>
                    +
                    239 C> @param isign
                    +
                    240 C> @param n
                    +
                    241 C> @param scale
                    +
                    242 C> @param x
                    +
                    243 C> @param y
                    +
                    244 C> @param table
                    +
                    245 C> @param work
                    +
                    246 C> @param isys
                    +
                    247 C>
                    +
                    248 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    249  SUBROUTINE scfft(isign,n,scale,x,y,table,work,isys)
                    +
                    250 
                    +
                    251  implicit none
                    +
                    252  integer isign,n,isys,i
                    +
                    253  real scale,x(*),y(*),table(*),work(*)
                    +
                    254 
                    +
                    255  IF (isign.eq.0) THEN
                    +
                    256  CALL rffti(n,table)
                    +
                    257  ENDIF
                    +
                    258  IF (isign.eq.-1) THEN
                    +
                    259  DO i=1,n
                    +
                    260  y(i)=x(i)
                    +
                    261  ENDDO
                    +
                    262  CALL rfftf(n,y,table)
                    +
                    263  DO i=1,n
                    +
                    264  y(i)=scale*y(i)
                    +
                    265  ENDDO
                    +
                    266  DO i=n,2,-1
                    +
                    267  y(i+1)=y(i)
                    +
                    268  ENDDO
                    +
                    269  y(2)=0.
                    +
                    270  ENDIF
                    +
                    271 
                    +
                    272  RETURN
                    +
                    273  END
                    +
                    274 
                    +
                    275 C> RFFTF
                    +
                    276 C>
                    +
                    277 C> @param N
                    +
                    278 C> @param R
                    +
                    279 C> @param WSAVE
                    +
                    280 C>
                    +
                    281 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    282  SUBROUTINE rfftf (N,R,WSAVE)
                    +
                    283  dimension r(1) ,wsave(1)
                    +
                    284  IF (n .EQ. 1) RETURN
                    +
                    285  CALL rfftf1 (n,r,wsave,wsave(n+1),wsave(2*n+1))
                    +
                    286  RETURN
                    +
                    287  END
                    +
                    288 
                    +
                    289 C> RFFTB
                    +
                    290 C>
                    +
                    291 C> @param N
                    +
                    292 C> @param R
                    +
                    293 C> @param WSAVE
                    +
                    294 C>
                    +
                    295 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    296  SUBROUTINE rfftb (N,R,WSAVE)
                    +
                    297  dimension r(1) ,wsave(1)
                    +
                    298  IF (n .EQ. 1) RETURN
                    +
                    299  CALL rfftb1 (n,r,wsave,wsave(n+1),wsave(2*n+1))
                    +
                    300  RETURN
                    +
                    301  END
                    +
                    302 
                    +
                    303 C> RFFTI
                    +
                    304 C>
                    +
                    305 C> @param N
                    +
                    306 C> @param WSAVE
                    +
                    307 C>
                    +
                    308 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    309  SUBROUTINE rffti (N,WSAVE)
                    +
                    310  dimension wsave(1)
                    +
                    311  IF (n .EQ. 1) RETURN
                    +
                    312  CALL rffti1 (n,wsave(n+1),wsave(2*n+1))
                    +
                    313  RETURN
                    +
                    314  END
                    +
                    315 
                    +
                    316 C> RFFTB1
                    +
                    317 C>
                    +
                    318 C> @param N
                    +
                    319 C> @param C
                    +
                    320 C> @param CH
                    +
                    321 C> @param WA
                    +
                    322 C> @param IFAC
                    +
                    323 C>
                    +
                    324 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    325  SUBROUTINE rfftb1 (N,C,CH,WA,IFAC)
                    +
                    326  dimension ch(1) ,c(1) ,wa(1) ,ifac(*)
                    +
                    327  nf = ifac(2)
                    +
                    328  na = 0
                    +
                    329  l1 = 1
                    +
                    330  iw = 1
                    +
                    331  DO 116 k1=1,nf
                    +
                    332  ip = ifac(k1+2)
                    +
                    333  l2 = ip*l1
                    +
                    334  ido = n/l2
                    +
                    335  idl1 = ido*l1
                    +
                    336  IF (ip .NE. 4) GO TO 103
                    +
                    337  ix2 = iw+ido
                    +
                    338  ix3 = ix2+ido
                    +
                    339  IF (na .NE. 0) GO TO 101
                    +
                    340  CALL radb4 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3))
                    +
                    341  GO TO 102
                    +
                    342  101 CALL radb4 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3))
                    +
                    343  102 na = 1-na
                    +
                    344  GO TO 115
                    +
                    345  103 IF (ip .NE. 2) GO TO 106
                    +
                    346  IF (na .NE. 0) GO TO 104
                    +
                    347  CALL radb2 (ido,l1,c,ch,wa(iw))
                    +
                    348  GO TO 105
                    +
                    349  104 CALL radb2 (ido,l1,ch,c,wa(iw))
                    +
                    350  105 na = 1-na
                    +
                    351  GO TO 115
                    +
                    352  106 IF (ip .NE. 3) GO TO 109
                    +
                    353  ix2 = iw+ido
                    +
                    354  IF (na .NE. 0) GO TO 107
                    +
                    355  CALL radb3 (ido,l1,c,ch,wa(iw),wa(ix2))
                    +
                    356  GO TO 108
                    +
                    357  107 CALL radb3 (ido,l1,ch,c,wa(iw),wa(ix2))
                    +
                    358  108 na = 1-na
                    +
                    359  GO TO 115
                    +
                    360  109 IF (ip .NE. 5) GO TO 112
                    +
                    361  ix2 = iw+ido
                    +
                    362  ix3 = ix2+ido
                    +
                    363  ix4 = ix3+ido
                    +
                    364  IF (na .NE. 0) GO TO 110
                    +
                    365  CALL radb5 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3),wa(ix4))
                    +
                    366  GO TO 111
                    +
                    367  110 CALL radb5 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3),wa(ix4))
                    +
                    368  111 na = 1-na
                    +
                    369  GO TO 115
                    +
                    370  112 IF (na .NE. 0) GO TO 113
                    +
                    371  CALL radbg (ido,ip,l1,idl1,c,c,c,ch,ch,wa(iw))
                    +
                    372  GO TO 114
                    +
                    373  113 CALL radbg (ido,ip,l1,idl1,ch,ch,ch,c,c,wa(iw))
                    +
                    374  114 IF (ido .EQ. 1) na = 1-na
                    +
                    375  115 l1 = l2
                    +
                    376  iw = iw+(ip-1)*ido
                    +
                    377  116 CONTINUE
                    +
                    378  IF (na .EQ. 0) RETURN
                    +
                    379  DO 117 i=1,n
                    +
                    380  c(i) = ch(i)
                    +
                    381  117 CONTINUE
                    +
                    382  RETURN
                    +
                    383  END
                    +
                    384 
                    +
                    385 C> RFFTF1
                    +
                    386 C>
                    +
                    387 C> @param N
                    +
                    388 C> @param C
                    +
                    389 C> @param CH
                    +
                    390 C> @param WA
                    +
                    391 C> @param IFAC
                    +
                    392 C>
                    +
                    393 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    394  SUBROUTINE rfftf1 (N,C,CH,WA,IFAC)
                    +
                    395  dimension ch(1) ,c(1) ,wa(1) ,ifac(*)
                    +
                    396  nf = ifac(2)
                    +
                    397  na = 1
                    +
                    398  l2 = n
                    +
                    399  iw = n
                    +
                    400  DO 111 k1=1,nf
                    +
                    401  kh = nf-k1
                    +
                    402  ip = ifac(kh+3)
                    +
                    403  l1 = l2/ip
                    +
                    404  ido = n/l2
                    +
                    405  idl1 = ido*l1
                    +
                    406  iw = iw-(ip-1)*ido
                    +
                    407  na = 1-na
                    +
                    408  IF (ip .NE. 4) GO TO 102
                    +
                    409  ix2 = iw+ido
                    +
                    410  ix3 = ix2+ido
                    +
                    411  IF (na .NE. 0) GO TO 101
                    +
                    412  CALL radf4 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3))
                    +
                    413  GO TO 110
                    +
                    414  101 CALL radf4 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3))
                    +
                    415  GO TO 110
                    +
                    416  102 IF (ip .NE. 2) GO TO 104
                    +
                    417  IF (na .NE. 0) GO TO 103
                    +
                    418  CALL radf2 (ido,l1,c,ch,wa(iw))
                    +
                    419  GO TO 110
                    +
                    420  103 CALL radf2 (ido,l1,ch,c,wa(iw))
                    +
                    421  GO TO 110
                    +
                    422  104 IF (ip .NE. 3) GO TO 106
                    +
                    423  ix2 = iw+ido
                    +
                    424  IF (na .NE. 0) GO TO 105
                    +
                    425  CALL radf3 (ido,l1,c,ch,wa(iw),wa(ix2))
                    +
                    426  GO TO 110
                    +
                    427  105 CALL radf3 (ido,l1,ch,c,wa(iw),wa(ix2))
                    +
                    428  GO TO 110
                    +
                    429  106 IF (ip .NE. 5) GO TO 108
                    +
                    430  ix2 = iw+ido
                    +
                    431  ix3 = ix2+ido
                    +
                    432  ix4 = ix3+ido
                    +
                    433  IF (na .NE. 0) GO TO 107
                    +
                    434  CALL radf5 (ido,l1,c,ch,wa(iw),wa(ix2),wa(ix3),wa(ix4))
                    +
                    435  GO TO 110
                    +
                    436  107 CALL radf5 (ido,l1,ch,c,wa(iw),wa(ix2),wa(ix3),wa(ix4))
                    +
                    437  GO TO 110
                    +
                    438  108 IF (ido .EQ. 1) na = 1-na
                    +
                    439  IF (na .NE. 0) GO TO 109
                    +
                    440  CALL radfg (ido,ip,l1,idl1,c,c,c,ch,ch,wa(iw))
                    +
                    441  na = 1
                    +
                    442  GO TO 110
                    +
                    443  109 CALL radfg (ido,ip,l1,idl1,ch,ch,ch,c,c,wa(iw))
                    +
                    444  na = 0
                    +
                    445  110 l2 = l1
                    +
                    446  111 CONTINUE
                    +
                    447  IF (na .EQ. 1) RETURN
                    +
                    448  DO 112 i=1,n
                    +
                    449  c(i) = ch(i)
                    +
                    450  112 CONTINUE
                    +
                    451  RETURN
                    +
                    452  END
                    +
                    453 
                    +
                    454 C> RFFTI1
                    +
                    455 C>
                    +
                    456 C> @param N
                    +
                    457 C> @param WA
                    +
                    458 C> @param IFAC
                    +
                    459 C>
                    +
                    460 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    461  SUBROUTINE rffti1 (N,WA,IFAC)
                    +
                    462  dimension wa(1) ,ifac(*) ,ntryh(4)
                    +
                    463  DATA ntryh(1),ntryh(2),ntryh(3),ntryh(4)/4,2,3,5/
                    +
                    464  nl = n
                    +
                    465  nf = 0
                    +
                    466  j = 0
                    +
                    467  101 j = j+1
                    +
                    468  IF (j-4) 102,102,103
                    +
                    469  102 ntry = ntryh(j)
                    +
                    470  GO TO 104
                    +
                    471  103 ntry = ntry+2
                    +
                    472  104 nq = nl/ntry
                    +
                    473  nr = nl-ntry*nq
                    +
                    474  IF (nr) 101,105,101
                    +
                    475  105 nf = nf+1
                    +
                    476  ifac(nf+2) = ntry
                    +
                    477  nl = nq
                    +
                    478  IF (ntry .NE. 2) GO TO 107
                    +
                    479  IF (nf .EQ. 1) GO TO 107
                    +
                    480  DO 106 i=2,nf
                    +
                    481  ib = nf-i+2
                    +
                    482  ifac(ib+2) = ifac(ib+1)
                    +
                    483  106 CONTINUE
                    +
                    484  ifac(3) = 2
                    +
                    485  107 IF (nl .NE. 1) GO TO 104
                    +
                    486  ifac(1) = n
                    +
                    487  ifac(2) = nf
                    +
                    488  tpi = 6.28318530717959
                    +
                    489  argh = tpi/float(n)
                    +
                    490  is = 0
                    +
                    491  nfm1 = nf-1
                    +
                    492  l1 = 1
                    +
                    493  IF (nfm1 .EQ. 0) RETURN
                    +
                    494 !OCL NOVREC
                    +
                    495  DO 110 k1=1,nfm1
                    +
                    496  ip = ifac(k1+2)
                    +
                    497  ld = 0
                    +
                    498  l2 = l1*ip
                    +
                    499  ido = n/l2
                    +
                    500  ipm = ip-1
                    +
                    501  DO 109 j=1,ipm
                    +
                    502  ld = ld+l1
                    +
                    503  i = is
                    +
                    504  argld = float(ld)*argh
                    +
                    505  fi = 0
                    +
                    506 !OCL SCALAR
                    +
                    507  DO 108 ii=3,ido,2
                    +
                    508  i = i+2
                    +
                    509  fi = fi+1
                    +
                    510  arg = fi*argld
                    +
                    511  wa(i-1) = cos(arg)
                    +
                    512  wa(i) = sin(arg)
                    +
                    513  108 CONTINUE
                    +
                    514  is = is+ido
                    +
                    515  109 CONTINUE
                    +
                    516  l1 = l2
                    +
                    517  110 CONTINUE
                    +
                    518  RETURN
                    +
                    519  END
                    +
                    520 
                    +
                    521 C> RADB2
                    +
                    522 C>
                    +
                    523 C> @param IDO
                    +
                    524 C> @param L1
                    +
                    525 C> @param CC
                    +
                    526 C> @param CH
                    +
                    527 C> @param WA1
                    +
                    528 C>
                    +
                    529 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    530  SUBROUTINE radb2 (IDO,L1,CC,CH,WA1)
                    +
                    531  dimension cc(ido,2,l1) ,ch(ido,l1,2) ,
                    +
                    532  1 wa1(1)
                    +
                    533  DO 101 k=1,l1
                    +
                    534  ch(1,k,1) = cc(1,1,k)+cc(ido,2,k)
                    +
                    535  ch(1,k,2) = cc(1,1,k)-cc(ido,2,k)
                    +
                    536  101 CONTINUE
                    +
                    537  IF (ido-2) 107,105,102
                    +
                    538  102 idp2 = ido+2
                    +
                    539 !OCL NOVREC
                    +
                    540  DO 104 k=1,l1
                    +
                    541  DO 103 i=3,ido,2
                    +
                    542  ic = idp2-i
                    +
                    543  ch(i-1,k,1) = cc(i-1,1,k)+cc(ic-1,2,k)
                    +
                    544  tr2 = cc(i-1,1,k)-cc(ic-1,2,k)
                    +
                    545  ch(i,k,1) = cc(i,1,k)-cc(ic,2,k)
                    +
                    546  ti2 = cc(i,1,k)+cc(ic,2,k)
                    +
                    547  ch(i-1,k,2) = wa1(i-2)*tr2-wa1(i-1)*ti2
                    +
                    548  ch(i,k,2) = wa1(i-2)*ti2+wa1(i-1)*tr2
                    +
                    549  103 CONTINUE
                    +
                    550  104 CONTINUE
                    +
                    551  IF (mod(ido,2) .EQ. 1) RETURN
                    +
                    552  105 DO 106 k=1,l1
                    +
                    553  ch(ido,k,1) = cc(ido,1,k)+cc(ido,1,k)
                    +
                    554  ch(ido,k,2) = -(cc(1,2,k)+cc(1,2,k))
                    +
                    555  106 CONTINUE
                    +
                    556  107 RETURN
                    +
                    557  END
                    +
                    558 
                    +
                    559 C> RADB3
                    +
                    560 C>
                    +
                    561 C> @param IDO
                    +
                    562 C> @param L1
                    +
                    563 C> @param CC
                    +
                    564 C> @param CH
                    +
                    565 C> @param WA1
                    +
                    566 C> @param WA2
                    +
                    567 C>
                    +
                    568 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    569  SUBROUTINE radb3 (IDO,L1,CC,CH,WA1,WA2)
                    +
                    570  dimension cc(ido,3,l1) ,ch(ido,l1,3) ,
                    +
                    571  1 wa1(1) ,wa2(1)
                    +
                    572  DATA taur,taui /-.5,.866025403784439/
                    +
                    573  DO 101 k=1,l1
                    +
                    574  tr2 = cc(ido,2,k)+cc(ido,2,k)
                    +
                    575  cr2 = cc(1,1,k)+taur*tr2
                    +
                    576  ch(1,k,1) = cc(1,1,k)+tr2
                    +
                    577  ci3 = taui*(cc(1,3,k)+cc(1,3,k))
                    +
                    578  ch(1,k,2) = cr2-ci3
                    +
                    579  ch(1,k,3) = cr2+ci3
                    +
                    580  101 CONTINUE
                    +
                    581  IF (ido .EQ. 1) RETURN
                    +
                    582  idp2 = ido+2
                    +
                    583 !OCL NOVREC
                    +
                    584  DO 103 k=1,l1
                    +
                    585  DO 102 i=3,ido,2
                    +
                    586  ic = idp2-i
                    +
                    587  tr2 = cc(i-1,3,k)+cc(ic-1,2,k)
                    +
                    588  cr2 = cc(i-1,1,k)+taur*tr2
                    +
                    589  ch(i-1,k,1) = cc(i-1,1,k)+tr2
                    +
                    590  ti2 = cc(i,3,k)-cc(ic,2,k)
                    +
                    591  ci2 = cc(i,1,k)+taur*ti2
                    +
                    592  ch(i,k,1) = cc(i,1,k)+ti2
                    +
                    593  cr3 = taui*(cc(i-1,3,k)-cc(ic-1,2,k))
                    +
                    594  ci3 = taui*(cc(i,3,k)+cc(ic,2,k))
                    +
                    595  dr2 = cr2-ci3
                    +
                    596  dr3 = cr2+ci3
                    +
                    597  di2 = ci2+cr3
                    +
                    598  di3 = ci2-cr3
                    +
                    599  ch(i-1,k,2) = wa1(i-2)*dr2-wa1(i-1)*di2
                    +
                    600  ch(i,k,2) = wa1(i-2)*di2+wa1(i-1)*dr2
                    +
                    601  ch(i-1,k,3) = wa2(i-2)*dr3-wa2(i-1)*di3
                    +
                    602  ch(i,k,3) = wa2(i-2)*di3+wa2(i-1)*dr3
                    +
                    603  102 CONTINUE
                    +
                    604  103 CONTINUE
                    +
                    605  RETURN
                    +
                    606  END
                    +
                    607 
                    +
                    608 C> RADB4
                    +
                    609 C>
                    +
                    610 C> @param IDO
                    +
                    611 C> @param L1
                    +
                    612 C> @param CC
                    +
                    613 C> @param CH
                    +
                    614 C> @param WA1
                    +
                    615 C> @param WA2
                    +
                    616 C> @param WA3
                    +
                    617 C>
                    +
                    618 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    619  SUBROUTINE radb4 (IDO,L1,CC,CH,WA1,WA2,WA3)
                    +
                    620  dimension cc(ido,4,l1) ,ch(ido,l1,4) ,
                    +
                    621  1 wa1(1) ,wa2(1) ,wa3(1)
                    +
                    622  DATA sqrt2 /1.414213562373095/
                    +
                    623  DO 101 k=1,l1
                    +
                    624  tr1 = cc(1,1,k)-cc(ido,4,k)
                    +
                    625  tr2 = cc(1,1,k)+cc(ido,4,k)
                    +
                    626  tr3 = cc(ido,2,k)+cc(ido,2,k)
                    +
                    627  tr4 = cc(1,3,k)+cc(1,3,k)
                    +
                    628  ch(1,k,1) = tr2+tr3
                    +
                    629  ch(1,k,2) = tr1-tr4
                    +
                    630  ch(1,k,3) = tr2-tr3
                    +
                    631  ch(1,k,4) = tr1+tr4
                    +
                    632  101 CONTINUE
                    +
                    633  IF (ido-2) 107,105,102
                    +
                    634  102 idp2 = ido+2
                    +
                    635 !OCL NOVREC
                    +
                    636  DO 104 k=1,l1
                    +
                    637  DO 103 i=3,ido,2
                    +
                    638  ic = idp2-i
                    +
                    639  ti1 = cc(i,1,k)+cc(ic,4,k)
                    +
                    640  ti2 = cc(i,1,k)-cc(ic,4,k)
                    +
                    641  ti3 = cc(i,3,k)-cc(ic,2,k)
                    +
                    642  tr4 = cc(i,3,k)+cc(ic,2,k)
                    +
                    643  tr1 = cc(i-1,1,k)-cc(ic-1,4,k)
                    +
                    644  tr2 = cc(i-1,1,k)+cc(ic-1,4,k)
                    +
                    645  ti4 = cc(i-1,3,k)-cc(ic-1,2,k)
                    +
                    646  tr3 = cc(i-1,3,k)+cc(ic-1,2,k)
                    +
                    647  ch(i-1,k,1) = tr2+tr3
                    +
                    648  cr3 = tr2-tr3
                    +
                    649  ch(i,k,1) = ti2+ti3
                    +
                    650  ci3 = ti2-ti3
                    +
                    651  cr2 = tr1-tr4
                    +
                    652  cr4 = tr1+tr4
                    +
                    653  ci2 = ti1+ti4
                    +
                    654  ci4 = ti1-ti4
                    +
                    655  ch(i-1,k,2) = wa1(i-2)*cr2-wa1(i-1)*ci2
                    +
                    656  ch(i,k,2) = wa1(i-2)*ci2+wa1(i-1)*cr2
                    +
                    657  ch(i-1,k,3) = wa2(i-2)*cr3-wa2(i-1)*ci3
                    +
                    658  ch(i,k,3) = wa2(i-2)*ci3+wa2(i-1)*cr3
                    +
                    659  ch(i-1,k,4) = wa3(i-2)*cr4-wa3(i-1)*ci4
                    +
                    660  ch(i,k,4) = wa3(i-2)*ci4+wa3(i-1)*cr4
                    +
                    661  103 CONTINUE
                    +
                    662  104 CONTINUE
                    +
                    663  IF (mod(ido,2) .EQ. 1) RETURN
                    +
                    664  105 CONTINUE
                    +
                    665  DO 106 k=1,l1
                    +
                    666  ti1 = cc(1,2,k)+cc(1,4,k)
                    +
                    667  ti2 = cc(1,4,k)-cc(1,2,k)
                    +
                    668  tr1 = cc(ido,1,k)-cc(ido,3,k)
                    +
                    669  tr2 = cc(ido,1,k)+cc(ido,3,k)
                    +
                    670  ch(ido,k,1) = tr2+tr2
                    +
                    671  ch(ido,k,2) = sqrt2*(tr1-ti1)
                    +
                    672  ch(ido,k,3) = ti2+ti2
                    +
                    673  ch(ido,k,4) = -sqrt2*(tr1+ti1)
                    +
                    674  106 CONTINUE
                    +
                    675  107 RETURN
                    +
                    676  END
                    +
                    677 
                    +
                    678 C> RADB5
                    +
                    679 C>
                    +
                    680 C> @param IDO
                    +
                    681 C> @param L1
                    +
                    682 C> @param CC
                    +
                    683 C> @param CH
                    +
                    684 C> @param WA1
                    +
                    685 C> @param WA2
                    +
                    686 C> @param WA3
                    +
                    687 C> @param WA4
                    +
                    688 C>
                    +
                    689 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    690  SUBROUTINE radb5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
                    +
                    691  dimension cc(ido,5,l1) ,ch(ido,l1,5) ,
                    +
                    692  1 wa1(1) ,wa2(1) ,wa3(1) ,wa4(1)
                    +
                    693  DATA tr11,ti11,tr12,ti12 /.309016994374947,.951056516295154,
                    +
                    694  1-.809016994374947,.587785252292473/
                    +
                    695  DO 101 k=1,l1
                    +
                    696  ti5 = cc(1,3,k)+cc(1,3,k)
                    +
                    697  ti4 = cc(1,5,k)+cc(1,5,k)
                    +
                    698  tr2 = cc(ido,2,k)+cc(ido,2,k)
                    +
                    699  tr3 = cc(ido,4,k)+cc(ido,4,k)
                    +
                    700  ch(1,k,1) = cc(1,1,k)+tr2+tr3
                    +
                    701  cr2 = cc(1,1,k)+tr11*tr2+tr12*tr3
                    +
                    702  cr3 = cc(1,1,k)+tr12*tr2+tr11*tr3
                    +
                    703  ci5 = ti11*ti5+ti12*ti4
                    +
                    704  ci4 = ti12*ti5-ti11*ti4
                    +
                    705  ch(1,k,2) = cr2-ci5
                    +
                    706  ch(1,k,3) = cr3-ci4
                    +
                    707  ch(1,k,4) = cr3+ci4
                    +
                    708  ch(1,k,5) = cr2+ci5
                    +
                    709  101 CONTINUE
                    +
                    710  IF (ido .EQ. 1) RETURN
                    +
                    711  idp2 = ido+2
                    +
                    712  DO 103 k=1,l1
                    +
                    713  DO 102 i=3,ido,2
                    +
                    714  ic = idp2-i
                    +
                    715  ti5 = cc(i,3,k)+cc(ic,2,k)
                    +
                    716  ti2 = cc(i,3,k)-cc(ic,2,k)
                    +
                    717  ti4 = cc(i,5,k)+cc(ic,4,k)
                    +
                    718  ti3 = cc(i,5,k)-cc(ic,4,k)
                    +
                    719  tr5 = cc(i-1,3,k)-cc(ic-1,2,k)
                    +
                    720  tr2 = cc(i-1,3,k)+cc(ic-1,2,k)
                    +
                    721  tr4 = cc(i-1,5,k)-cc(ic-1,4,k)
                    +
                    722  tr3 = cc(i-1,5,k)+cc(ic-1,4,k)
                    +
                    723  ch(i-1,k,1) = cc(i-1,1,k)+tr2+tr3
                    +
                    724  ch(i,k,1) = cc(i,1,k)+ti2+ti3
                    +
                    725  cr2 = cc(i-1,1,k)+tr11*tr2+tr12*tr3
                    +
                    726  ci2 = cc(i,1,k)+tr11*ti2+tr12*ti3
                    +
                    727  cr3 = cc(i-1,1,k)+tr12*tr2+tr11*tr3
                    +
                    728  ci3 = cc(i,1,k)+tr12*ti2+tr11*ti3
                    +
                    729  cr5 = ti11*tr5+ti12*tr4
                    +
                    730  ci5 = ti11*ti5+ti12*ti4
                    +
                    731  cr4 = ti12*tr5-ti11*tr4
                    +
                    732  ci4 = ti12*ti5-ti11*ti4
                    +
                    733  dr3 = cr3-ci4
                    +
                    734  dr4 = cr3+ci4
                    +
                    735  di3 = ci3+cr4
                    +
                    736  di4 = ci3-cr4
                    +
                    737  dr5 = cr2+ci5
                    +
                    738  dr2 = cr2-ci5
                    +
                    739  di5 = ci2-cr5
                    +
                    740  di2 = ci2+cr5
                    +
                    741  ch(i-1,k,2) = wa1(i-2)*dr2-wa1(i-1)*di2
                    +
                    742  ch(i,k,2) = wa1(i-2)*di2+wa1(i-1)*dr2
                    +
                    743  ch(i-1,k,3) = wa2(i-2)*dr3-wa2(i-1)*di3
                    +
                    744  ch(i,k,3) = wa2(i-2)*di3+wa2(i-1)*dr3
                    +
                    745  ch(i-1,k,4) = wa3(i-2)*dr4-wa3(i-1)*di4
                    +
                    746  ch(i,k,4) = wa3(i-2)*di4+wa3(i-1)*dr4
                    +
                    747  ch(i-1,k,5) = wa4(i-2)*dr5-wa4(i-1)*di5
                    +
                    748  ch(i,k,5) = wa4(i-2)*di5+wa4(i-1)*dr5
                    +
                    749  102 CONTINUE
                    +
                    750  103 CONTINUE
                    +
                    751  RETURN
                    +
                    752  END
                    +
                    753 
                    +
                    754 C> RADBG
                    +
                    755 C>
                    +
                    756 C> @param IDO
                    +
                    757 C> @param IP
                    +
                    758 C> @param L1
                    +
                    759 C> @param IDL1
                    +
                    760 C> @param CC
                    +
                    761 C> @param C1
                    +
                    762 C> @param C2
                    +
                    763 C> @param CH
                    +
                    764 C> @param CH2
                    +
                    765 C> @param WA
                    +
                    766 C>
                    +
                    767 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    768  SUBROUTINE radbg (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
                    +
                    769  dimension ch(ido,l1,ip) ,cc(ido,ip,l1) ,
                    +
                    770  1 c1(ido,l1,ip) ,c2(idl1,ip),
                    +
                    771  2 ch2(idl1,ip) ,wa(1)
                    +
                    772  DATA tpi/6.28318530717959/
                    +
                    773  arg = tpi/float(ip)
                    +
                    774  dcp = cos(arg)
                    +
                    775  dsp = sin(arg)
                    +
                    776  idp2 = ido+2
                    +
                    777  nbd = (ido-1)/2
                    +
                    778  ipp2 = ip+2
                    +
                    779  ipph = (ip+1)/2
                    +
                    780  IF (ido .LT. l1) GO TO 103
                    +
                    781  DO 102 k=1,l1
                    +
                    782  DO 101 i=1,ido
                    +
                    783  ch(i,k,1) = cc(i,1,k)
                    +
                    784  101 CONTINUE
                    +
                    785  102 CONTINUE
                    +
                    786  GO TO 106
                    +
                    787  103 DO 105 i=1,ido
                    +
                    788  DO 104 k=1,l1
                    +
                    789  ch(i,k,1) = cc(i,1,k)
                    +
                    790  104 CONTINUE
                    +
                    791  105 CONTINUE
                    +
                    792 !OCL NOVREC
                    +
                    793  106 DO 108 j=2,ipph
                    +
                    794  jc = ipp2-j
                    +
                    795  j2 = j+j
                    +
                    796  DO 107 k=1,l1
                    +
                    797  ch(1,k,j) = cc(ido,j2-2,k)+cc(ido,j2-2,k)
                    +
                    798  ch(1,k,jc) = cc(1,j2-1,k)+cc(1,j2-1,k)
                    +
                    799  107 CONTINUE
                    +
                    800  108 CONTINUE
                    +
                    801  IF (ido .EQ. 1) GO TO 116
                    +
                    802  IF (nbd .LT. l1) GO TO 112
                    +
                    803 !OCL NOVREC
                    +
                    804  DO 111 j=2,ipph
                    +
                    805  jc = ipp2-j
                    +
                    806  DO 110 k=1,l1
                    +
                    807  DO 109 i=3,ido,2
                    +
                    808  ic = idp2-i
                    +
                    809  ch(i-1,k,j) = cc(i-1,2*j-1,k)+cc(ic-1,2*j-2,k)
                    +
                    810  ch(i-1,k,jc) = cc(i-1,2*j-1,k)-cc(ic-1,2*j-2,k)
                    +
                    811  ch(i,k,j) = cc(i,2*j-1,k)-cc(ic,2*j-2,k)
                    +
                    812  ch(i,k,jc) = cc(i,2*j-1,k)+cc(ic,2*j-2,k)
                    +
                    813  109 CONTINUE
                    +
                    814  110 CONTINUE
                    +
                    815  111 CONTINUE
                    +
                    816  GO TO 116
                    +
                    817  112 DO 115 j=2,ipph
                    +
                    818  jc = ipp2-j
                    +
                    819  DO 114 i=3,ido,2
                    +
                    820  ic = idp2-i
                    +
                    821  DO 113 k=1,l1
                    +
                    822  ch(i-1,k,j) = cc(i-1,2*j-1,k)+cc(ic-1,2*j-2,k)
                    +
                    823  ch(i-1,k,jc) = cc(i-1,2*j-1,k)-cc(ic-1,2*j-2,k)
                    +
                    824  ch(i,k,j) = cc(i,2*j-1,k)-cc(ic,2*j-2,k)
                    +
                    825  ch(i,k,jc) = cc(i,2*j-1,k)+cc(ic,2*j-2,k)
                    +
                    826  113 CONTINUE
                    +
                    827  114 CONTINUE
                    +
                    828  115 CONTINUE
                    +
                    829  116 ar1 = 1.
                    +
                    830  ai1 = 0.
                    +
                    831 !OCL NOVREC
                    +
                    832  DO 120 l=2,ipph
                    +
                    833  lc = ipp2-l
                    +
                    834  ar1h = dcp*ar1-dsp*ai1
                    +
                    835  ai1 = dcp*ai1+dsp*ar1
                    +
                    836  ar1 = ar1h
                    +
                    837  DO 117 ik=1,idl1
                    +
                    838  c2(ik,l) = ch2(ik,1)+ar1*ch2(ik,2)
                    +
                    839  c2(ik,lc) = ai1*ch2(ik,ip)
                    +
                    840  117 CONTINUE
                    +
                    841  dc2 = ar1
                    +
                    842  ds2 = ai1
                    +
                    843  ar2 = ar1
                    +
                    844  ai2 = ai1
                    +
                    845 !OCL NOVREC
                    +
                    846  DO 119 j=3,ipph
                    +
                    847  jc = ipp2-j
                    +
                    848  ar2h = dc2*ar2-ds2*ai2
                    +
                    849  ai2 = dc2*ai2+ds2*ar2
                    +
                    850  ar2 = ar2h
                    +
                    851  DO 118 ik=1,idl1
                    +
                    852  c2(ik,l) = c2(ik,l)+ar2*ch2(ik,j)
                    +
                    853  c2(ik,lc) = c2(ik,lc)+ai2*ch2(ik,jc)
                    +
                    854  118 CONTINUE
                    +
                    855  119 CONTINUE
                    +
                    856  120 CONTINUE
                    +
                    857 !OCL NOVREC
                    +
                    858  DO 122 j=2,ipph
                    +
                    859  DO 121 ik=1,idl1
                    +
                    860  ch2(ik,1) = ch2(ik,1)+ch2(ik,j)
                    +
                    861  121 CONTINUE
                    +
                    862  122 CONTINUE
                    +
                    863 !OCL NOVREC
                    +
                    864  DO 124 j=2,ipph
                    +
                    865  jc = ipp2-j
                    +
                    866  DO 123 k=1,l1
                    +
                    867  ch(1,k,j) = c1(1,k,j)-c1(1,k,jc)
                    +
                    868  ch(1,k,jc) = c1(1,k,j)+c1(1,k,jc)
                    +
                    869  123 CONTINUE
                    +
                    870  124 CONTINUE
                    +
                    871  IF (ido .EQ. 1) GO TO 132
                    +
                    872  IF (nbd .LT. l1) GO TO 128
                    +
                    873 !OCL NOVREC
                    +
                    874  DO 127 j=2,ipph
                    +
                    875  jc = ipp2-j
                    +
                    876  DO 126 k=1,l1
                    +
                    877  DO 125 i=3,ido,2
                    +
                    878  ch(i-1,k,j) = c1(i-1,k,j)-c1(i,k,jc)
                    +
                    879  ch(i-1,k,jc) = c1(i-1,k,j)+c1(i,k,jc)
                    +
                    880  ch(i,k,j) = c1(i,k,j)+c1(i-1,k,jc)
                    +
                    881  ch(i,k,jc) = c1(i,k,j)-c1(i-1,k,jc)
                    +
                    882  125 CONTINUE
                    +
                    883  126 CONTINUE
                    +
                    884  127 CONTINUE
                    +
                    885  GO TO 132
                    +
                    886  128 DO 131 j=2,ipph
                    +
                    887  jc = ipp2-j
                    +
                    888  DO 130 i=3,ido,2
                    +
                    889  DO 129 k=1,l1
                    +
                    890  ch(i-1,k,j) = c1(i-1,k,j)-c1(i,k,jc)
                    +
                    891  ch(i-1,k,jc) = c1(i-1,k,j)+c1(i,k,jc)
                    +
                    892  ch(i,k,j) = c1(i,k,j)+c1(i-1,k,jc)
                    +
                    893  ch(i,k,jc) = c1(i,k,j)-c1(i-1,k,jc)
                    +
                    894  129 CONTINUE
                    +
                    895  130 CONTINUE
                    +
                    896  131 CONTINUE
                    +
                    897  132 CONTINUE
                    +
                    898  IF (ido .EQ. 1) RETURN
                    +
                    899  DO 133 ik=1,idl1
                    +
                    900  c2(ik,1) = ch2(ik,1)
                    +
                    901  133 CONTINUE
                    +
                    902  DO 135 j=2,ip
                    +
                    903  DO 134 k=1,l1
                    +
                    904  c1(1,k,j) = ch(1,k,j)
                    +
                    905  134 CONTINUE
                    +
                    906  135 CONTINUE
                    +
                    907  IF (nbd .GT. l1) GO TO 139
                    +
                    908  is = -ido
                    +
                    909  DO 138 j=2,ip
                    +
                    910  is = is+ido
                    +
                    911  idij = is
                    +
                    912  DO 137 i=3,ido,2
                    +
                    913  idij = idij+2
                    +
                    914  DO 136 k=1,l1
                    +
                    915  c1(i-1,k,j) = wa(idij-1)*ch(i-1,k,j)-wa(idij)*ch(i,k,j)
                    +
                    916  c1(i,k,j) = wa(idij-1)*ch(i,k,j)+wa(idij)*ch(i-1,k,j)
                    +
                    917  136 CONTINUE
                    +
                    918  137 CONTINUE
                    +
                    919  138 CONTINUE
                    +
                    920  GO TO 143
                    +
                    921  139 is = -ido
                    +
                    922 !OCL NOVREC
                    +
                    923  DO 142 j=2,ip
                    +
                    924  is = is+ido
                    +
                    925  DO 141 k=1,l1
                    +
                    926  idij = is
                    +
                    927  DO 140 i=3,ido,2
                    +
                    928  idij = idij+2
                    +
                    929  c1(i-1,k,j) = wa(idij-1)*ch(i-1,k,j)-wa(idij)*ch(i,k,j)
                    +
                    930  c1(i,k,j) = wa(idij-1)*ch(i,k,j)+wa(idij)*ch(i-1,k,j)
                    +
                    931  140 CONTINUE
                    +
                    932  141 CONTINUE
                    +
                    933  142 CONTINUE
                    +
                    934  143 RETURN
                    +
                    935  END
                    +
                    936 
                    +
                    937 C> RADBG
                    +
                    938 C>
                    +
                    939 C> @param IDO
                    +
                    940 C> @param L1
                    +
                    941 C> @param CC
                    +
                    942 C> @param CH
                    +
                    943 C> @param WA1
                    +
                    944 C>
                    +
                    945 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    946  SUBROUTINE radf2 (IDO,L1,CC,CH,WA1)
                    +
                    947  dimension ch(ido,2,l1) ,cc(ido,l1,2) ,
                    +
                    948  1 wa1(1)
                    +
                    949  DO 101 k=1,l1
                    +
                    950  ch(1,1,k) = cc(1,k,1)+cc(1,k,2)
                    +
                    951  ch(ido,2,k) = cc(1,k,1)-cc(1,k,2)
                    +
                    952  101 CONTINUE
                    +
                    953  IF (ido-2) 107,105,102
                    +
                    954  102 idp2 = ido+2
                    +
                    955  DO 104 k=1,l1
                    +
                    956  DO 103 i=3,ido,2
                    +
                    957  ic = idp2-i
                    +
                    958  tr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
                    +
                    959  ti2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
                    +
                    960  ch(i,1,k) = cc(i,k,1)+ti2
                    +
                    961  ch(ic,2,k) = ti2-cc(i,k,1)
                    +
                    962  ch(i-1,1,k) = cc(i-1,k,1)+tr2
                    +
                    963  ch(ic-1,2,k) = cc(i-1,k,1)-tr2
                    +
                    964  103 CONTINUE
                    +
                    965  104 CONTINUE
                    +
                    966  IF (mod(ido,2) .EQ. 1) RETURN
                    +
                    967  105 DO 106 k=1,l1
                    +
                    968  ch(1,2,k) = -cc(ido,k,2)
                    +
                    969  ch(ido,1,k) = cc(ido,k,1)
                    +
                    970  106 CONTINUE
                    +
                    971  107 RETURN
                    +
                    972  END
                    +
                    973 
                    +
                    974 C> RADF3
                    +
                    975 C>
                    +
                    976 C> @param IDO
                    +
                    977 C> @param L1
                    +
                    978 C> @param CC
                    +
                    979 C> @param CH
                    +
                    980 C> @param WA1
                    +
                    981 C> @param WA2
                    +
                    982 C>
                    +
                    983 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    984  SUBROUTINE radf3 (IDO,L1,CC,CH,WA1,WA2)
                    +
                    985  dimension ch(ido,3,l1) ,cc(ido,l1,3) ,
                    +
                    986  1 wa1(1) ,wa2(1)
                    +
                    987  DATA taur,taui /-.5,.866025403784439/
                    +
                    988  DO 101 k=1,l1
                    +
                    989  cr2 = cc(1,k,2)+cc(1,k,3)
                    +
                    990  ch(1,1,k) = cc(1,k,1)+cr2
                    +
                    991  ch(1,3,k) = taui*(cc(1,k,3)-cc(1,k,2))
                    +
                    992  ch(ido,2,k) = cc(1,k,1)+taur*cr2
                    +
                    993  101 CONTINUE
                    +
                    994  IF (ido .EQ. 1) RETURN
                    +
                    995  idp2 = ido+2
                    +
                    996  DO 103 k=1,l1
                    +
                    997  DO 102 i=3,ido,2
                    +
                    998  ic = idp2-i
                    +
                    999  dr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
                    +
                    1000  di2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
                    +
                    1001  dr3 = wa2(i-2)*cc(i-1,k,3)+wa2(i-1)*cc(i,k,3)
                    +
                    1002  di3 = wa2(i-2)*cc(i,k,3)-wa2(i-1)*cc(i-1,k,3)
                    +
                    1003  cr2 = dr2+dr3
                    +
                    1004  ci2 = di2+di3
                    +
                    1005  ch(i-1,1,k) = cc(i-1,k,1)+cr2
                    +
                    1006  ch(i,1,k) = cc(i,k,1)+ci2
                    +
                    1007  tr2 = cc(i-1,k,1)+taur*cr2
                    +
                    1008  ti2 = cc(i,k,1)+taur*ci2
                    +
                    1009  tr3 = taui*(di2-di3)
                    +
                    1010  ti3 = taui*(dr3-dr2)
                    +
                    1011  ch(i-1,3,k) = tr2+tr3
                    +
                    1012  ch(ic-1,2,k) = tr2-tr3
                    +
                    1013  ch(i,3,k) = ti2+ti3
                    +
                    1014  ch(ic,2,k) = ti3-ti2
                    +
                    1015  102 CONTINUE
                    +
                    1016  103 CONTINUE
                    +
                    1017  RETURN
                    +
                    1018  END
                    +
                    1019 
                    +
                    1020 C> RADF4
                    +
                    1021 C>
                    +
                    1022 C> @param IDO
                    +
                    1023 C> @param L1
                    +
                    1024 C> @param CC
                    +
                    1025 C> @param CH
                    +
                    1026 C> @param WA1
                    +
                    1027 C> @param WA2
                    +
                    1028 C> @param WA3
                    +
                    1029 C>
                    +
                    1030 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    1031  SUBROUTINE radf4 (IDO,L1,CC,CH,WA1,WA2,WA3)
                    +
                    1032  dimension cc(ido,l1,4) ,ch(ido,4,l1) ,
                    +
                    1033  1 wa1(1) ,wa2(1) ,wa3(1)
                    +
                    1034  DATA hsqt2 /.7071067811865475/
                    +
                    1035  DO 101 k=1,l1
                    +
                    1036  tr1 = cc(1,k,2)+cc(1,k,4)
                    +
                    1037  tr2 = cc(1,k,1)+cc(1,k,3)
                    +
                    1038  ch(1,1,k) = tr1+tr2
                    +
                    1039  ch(ido,4,k) = tr2-tr1
                    +
                    1040  ch(ido,2,k) = cc(1,k,1)-cc(1,k,3)
                    +
                    1041  ch(1,3,k) = cc(1,k,4)-cc(1,k,2)
                    +
                    1042  101 CONTINUE
                    +
                    1043  IF (ido-2) 107,105,102
                    +
                    1044  102 idp2 = ido+2
                    +
                    1045 !OCL NOVREC
                    +
                    1046  DO 104 k=1,l1
                    +
                    1047  DO 103 i=3,ido,2
                    +
                    1048  ic = idp2-i
                    +
                    1049  cr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
                    +
                    1050  ci2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
                    +
                    1051  cr3 = wa2(i-2)*cc(i-1,k,3)+wa2(i-1)*cc(i,k,3)
                    +
                    1052  ci3 = wa2(i-2)*cc(i,k,3)-wa2(i-1)*cc(i-1,k,3)
                    +
                    1053  cr4 = wa3(i-2)*cc(i-1,k,4)+wa3(i-1)*cc(i,k,4)
                    +
                    1054  ci4 = wa3(i-2)*cc(i,k,4)-wa3(i-1)*cc(i-1,k,4)
                    +
                    1055  tr1 = cr2+cr4
                    +
                    1056  tr4 = cr4-cr2
                    +
                    1057  ti1 = ci2+ci4
                    +
                    1058  ti4 = ci2-ci4
                    +
                    1059  ti2 = cc(i,k,1)+ci3
                    +
                    1060  ti3 = cc(i,k,1)-ci3
                    +
                    1061  tr2 = cc(i-1,k,1)+cr3
                    +
                    1062  tr3 = cc(i-1,k,1)-cr3
                    +
                    1063  ch(i-1,1,k) = tr1+tr2
                    +
                    1064  ch(ic-1,4,k) = tr2-tr1
                    +
                    1065  ch(i,1,k) = ti1+ti2
                    +
                    1066  ch(ic,4,k) = ti1-ti2
                    +
                    1067  ch(i-1,3,k) = ti4+tr3
                    +
                    1068  ch(ic-1,2,k) = tr3-ti4
                    +
                    1069  ch(i,3,k) = tr4+ti3
                    +
                    1070  ch(ic,2,k) = tr4-ti3
                    +
                    1071  103 CONTINUE
                    +
                    1072  104 CONTINUE
                    +
                    1073  IF (mod(ido,2) .EQ. 1) RETURN
                    +
                    1074  105 CONTINUE
                    +
                    1075  DO 106 k=1,l1
                    +
                    1076  ti1 = -hsqt2*(cc(ido,k,2)+cc(ido,k,4))
                    +
                    1077  tr1 = hsqt2*(cc(ido,k,2)-cc(ido,k,4))
                    +
                    1078  ch(ido,1,k) = tr1+cc(ido,k,1)
                    +
                    1079  ch(ido,3,k) = cc(ido,k,1)-tr1
                    +
                    1080  ch(1,2,k) = ti1-cc(ido,k,3)
                    +
                    1081  ch(1,4,k) = ti1+cc(ido,k,3)
                    +
                    1082  106 CONTINUE
                    +
                    1083  107 RETURN
                    +
                    1084  END
                    +
                    1085 
                    +
                    1086 C> RADF5
                    +
                    1087 C>
                    +
                    1088 C> @param IDO
                    +
                    1089 C> @param L1
                    +
                    1090 C> @param CC
                    +
                    1091 C> @param CH
                    +
                    1092 C> @param WA1
                    +
                    1093 C> @param WA2
                    +
                    1094 C> @param WA3
                    +
                    1095 C> @param WA4
                    +
                    1096 C>
                    +
                    1097 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    1098  SUBROUTINE radf5 (IDO,L1,CC,CH,WA1,WA2,WA3,WA4)
                    +
                    1099  dimension cc(ido,l1,5) ,ch(ido,5,l1) ,
                    +
                    1100  1 wa1(1) ,wa2(1) ,wa3(1) ,wa4(1)
                    +
                    1101  DATA tr11,ti11,tr12,ti12 /.309016994374947,.951056516295154,
                    +
                    1102  1-.809016994374947,.587785252292473/
                    +
                    1103  DO 101 k=1,l1
                    +
                    1104  cr2 = cc(1,k,5)+cc(1,k,2)
                    +
                    1105  ci5 = cc(1,k,5)-cc(1,k,2)
                    +
                    1106  cr3 = cc(1,k,4)+cc(1,k,3)
                    +
                    1107  ci4 = cc(1,k,4)-cc(1,k,3)
                    +
                    1108  ch(1,1,k) = cc(1,k,1)+cr2+cr3
                    +
                    1109  ch(ido,2,k) = cc(1,k,1)+tr11*cr2+tr12*cr3
                    +
                    1110  ch(1,3,k) = ti11*ci5+ti12*ci4
                    +
                    1111  ch(ido,4,k) = cc(1,k,1)+tr12*cr2+tr11*cr3
                    +
                    1112  ch(1,5,k) = ti12*ci5-ti11*ci4
                    +
                    1113  101 CONTINUE
                    +
                    1114  IF (ido .EQ. 1) RETURN
                    +
                    1115  idp2 = ido+2
                    +
                    1116  DO 103 k=1,l1
                    +
                    1117  DO 102 i=3,ido,2
                    +
                    1118  ic = idp2-i
                    +
                    1119  dr2 = wa1(i-2)*cc(i-1,k,2)+wa1(i-1)*cc(i,k,2)
                    +
                    1120  di2 = wa1(i-2)*cc(i,k,2)-wa1(i-1)*cc(i-1,k,2)
                    +
                    1121  dr3 = wa2(i-2)*cc(i-1,k,3)+wa2(i-1)*cc(i,k,3)
                    +
                    1122  di3 = wa2(i-2)*cc(i,k,3)-wa2(i-1)*cc(i-1,k,3)
                    +
                    1123  dr4 = wa3(i-2)*cc(i-1,k,4)+wa3(i-1)*cc(i,k,4)
                    +
                    1124  di4 = wa3(i-2)*cc(i,k,4)-wa3(i-1)*cc(i-1,k,4)
                    +
                    1125  dr5 = wa4(i-2)*cc(i-1,k,5)+wa4(i-1)*cc(i,k,5)
                    +
                    1126  di5 = wa4(i-2)*cc(i,k,5)-wa4(i-1)*cc(i-1,k,5)
                    +
                    1127  cr2 = dr2+dr5
                    +
                    1128  ci5 = dr5-dr2
                    +
                    1129  cr5 = di2-di5
                    +
                    1130  ci2 = di2+di5
                    +
                    1131  cr3 = dr3+dr4
                    +
                    1132  ci4 = dr4-dr3
                    +
                    1133  cr4 = di3-di4
                    +
                    1134  ci3 = di3+di4
                    +
                    1135  ch(i-1,1,k) = cc(i-1,k,1)+cr2+cr3
                    +
                    1136  ch(i,1,k) = cc(i,k,1)+ci2+ci3
                    +
                    1137  tr2 = cc(i-1,k,1)+tr11*cr2+tr12*cr3
                    +
                    1138  ti2 = cc(i,k,1)+tr11*ci2+tr12*ci3
                    +
                    1139  tr3 = cc(i-1,k,1)+tr12*cr2+tr11*cr3
                    +
                    1140  ti3 = cc(i,k,1)+tr12*ci2+tr11*ci3
                    +
                    1141  tr5 = ti11*cr5+ti12*cr4
                    +
                    1142  ti5 = ti11*ci5+ti12*ci4
                    +
                    1143  tr4 = ti12*cr5-ti11*cr4
                    +
                    1144  ti4 = ti12*ci5-ti11*ci4
                    +
                    1145  ch(i-1,3,k) = tr2+tr5
                    +
                    1146  ch(ic-1,2,k) = tr2-tr5
                    +
                    1147  ch(i,3,k) = ti2+ti5
                    +
                    1148  ch(ic,2,k) = ti5-ti2
                    +
                    1149  ch(i-1,5,k) = tr3+tr4
                    +
                    1150  ch(ic-1,4,k) = tr3-tr4
                    +
                    1151  ch(i,5,k) = ti3+ti4
                    +
                    1152  ch(ic,4,k) = ti4-ti3
                    +
                    1153  102 CONTINUE
                    +
                    1154  103 CONTINUE
                    +
                    1155  RETURN
                    +
                    1156  END
                    +
                    1157 
                    +
                    1158 C> RADFG
                    +
                    1159 C>
                    +
                    1160 C> @param IDO
                    +
                    1161 C> @param IP
                    +
                    1162 C> @param L1
                    +
                    1163 C> @param IDL1
                    +
                    1164 C> @param CC
                    +
                    1165 C> @param C1
                    +
                    1166 C> @param C2
                    +
                    1167 C> @param CH
                    +
                    1168 C> @param CH2
                    +
                    1169 C> @param WA
                    +
                    1170 C>
                    +
                    1171 C> @author Paul N. Swarztrauber, National Center for Atmospheric Research, Boulder, CO
                    +
                    1172  SUBROUTINE radfg (IDO,IP,L1,IDL1,CC,C1,C2,CH,CH2,WA)
                    +
                    1173  dimension ch(ido,l1,ip) ,cc(ido,ip,l1) ,
                    +
                    1174  1 c1(ido,l1,ip) ,c2(idl1,ip),
                    +
                    1175  2 ch2(idl1,ip) ,wa(1)
                    +
                    1176  DATA tpi/6.28318530717959/
                    +
                    1177  arg = tpi/float(ip)
                    +
                    1178  dcp = cos(arg)
                    +
                    1179  dsp = sin(arg)
                    +
                    1180  ipph = (ip+1)/2
                    +
                    1181  ipp2 = ip+2
                    +
                    1182  idp2 = ido+2
                    +
                    1183  nbd = (ido-1)/2
                    +
                    1184  IF (ido .EQ. 1) GO TO 119
                    +
                    1185  DO 101 ik=1,idl1
                    +
                    1186  ch2(ik,1) = c2(ik,1)
                    +
                    1187  101 CONTINUE
                    +
                    1188  DO 103 j=2,ip
                    +
                    1189  DO 102 k=1,l1
                    +
                    1190  ch(1,k,j) = c1(1,k,j)
                    +
                    1191  102 CONTINUE
                    +
                    1192  103 CONTINUE
                    +
                    1193  IF (nbd .GT. l1) GO TO 107
                    +
                    1194  is = -ido
                    +
                    1195  DO 106 j=2,ip
                    +
                    1196  is = is+ido
                    +
                    1197  idij = is
                    +
                    1198  DO 105 i=3,ido,2
                    +
                    1199  idij = idij+2
                    +
                    1200  DO 104 k=1,l1
                    +
                    1201  ch(i-1,k,j) = wa(idij-1)*c1(i-1,k,j)+wa(idij)*c1(i,k,j)
                    +
                    1202  ch(i,k,j) = wa(idij-1)*c1(i,k,j)-wa(idij)*c1(i-1,k,j)
                    +
                    1203  104 CONTINUE
                    +
                    1204  105 CONTINUE
                    +
                    1205  106 CONTINUE
                    +
                    1206  GO TO 111
                    +
                    1207  107 is = -ido
                    +
                    1208  DO 110 j=2,ip
                    +
                    1209  is = is+ido
                    +
                    1210  DO 109 k=1,l1
                    +
                    1211  idij = is
                    +
                    1212  DO 108 i=3,ido,2
                    +
                    1213  idij = idij+2
                    +
                    1214  ch(i-1,k,j) = wa(idij-1)*c1(i-1,k,j)+wa(idij)*c1(i,k,j)
                    +
                    1215  ch(i,k,j) = wa(idij-1)*c1(i,k,j)-wa(idij)*c1(i-1,k,j)
                    +
                    1216  108 CONTINUE
                    +
                    1217  109 CONTINUE
                    +
                    1218  110 CONTINUE
                    +
                    1219  111 IF (nbd .LT. l1) GO TO 115
                    +
                    1220  DO 114 j=2,ipph
                    +
                    1221  jc = ipp2-j
                    +
                    1222  DO 113 k=1,l1
                    +
                    1223  DO 112 i=3,ido,2
                    +
                    1224  c1(i-1,k,j) = ch(i-1,k,j)+ch(i-1,k,jc)
                    +
                    1225  c1(i-1,k,jc) = ch(i,k,j)-ch(i,k,jc)
                    +
                    1226  c1(i,k,j) = ch(i,k,j)+ch(i,k,jc)
                    +
                    1227  c1(i,k,jc) = ch(i-1,k,jc)-ch(i-1,k,j)
                    +
                    1228  112 CONTINUE
                    +
                    1229  113 CONTINUE
                    +
                    1230  114 CONTINUE
                    +
                    1231  GO TO 121
                    +
                    1232  115 DO 118 j=2,ipph
                    +
                    1233  jc = ipp2-j
                    +
                    1234  DO 117 i=3,ido,2
                    +
                    1235  DO 116 k=1,l1
                    +
                    1236  c1(i-1,k,j) = ch(i-1,k,j)+ch(i-1,k,jc)
                    +
                    1237  c1(i-1,k,jc) = ch(i,k,j)-ch(i,k,jc)
                    +
                    1238  c1(i,k,j) = ch(i,k,j)+ch(i,k,jc)
                    +
                    1239  c1(i,k,jc) = ch(i-1,k,jc)-ch(i-1,k,j)
                    +
                    1240  116 CONTINUE
                    +
                    1241  117 CONTINUE
                    +
                    1242  118 CONTINUE
                    +
                    1243  GO TO 121
                    +
                    1244  119 DO 120 ik=1,idl1
                    +
                    1245  c2(ik,1) = ch2(ik,1)
                    +
                    1246  120 CONTINUE
                    +
                    1247  121 DO 123 j=2,ipph
                    +
                    1248  jc = ipp2-j
                    +
                    1249  DO 122 k=1,l1
                    +
                    1250  c1(1,k,j) = ch(1,k,j)+ch(1,k,jc)
                    +
                    1251  c1(1,k,jc) = ch(1,k,jc)-ch(1,k,j)
                    +
                    1252  122 CONTINUE
                    +
                    1253  123 CONTINUE
                    +
                    1254 C
                    +
                    1255  ar1 = 1.
                    +
                    1256  ai1 = 0.
                    +
                    1257  DO 127 l=2,ipph
                    +
                    1258  lc = ipp2-l
                    +
                    1259  ar1h = dcp*ar1-dsp*ai1
                    +
                    1260  ai1 = dcp*ai1+dsp*ar1
                    +
                    1261  ar1 = ar1h
                    +
                    1262  DO 124 ik=1,idl1
                    +
                    1263  ch2(ik,l) = c2(ik,1)+ar1*c2(ik,2)
                    +
                    1264  ch2(ik,lc) = ai1*c2(ik,ip)
                    +
                    1265  124 CONTINUE
                    +
                    1266  dc2 = ar1
                    +
                    1267  ds2 = ai1
                    +
                    1268  ar2 = ar1
                    +
                    1269  ai2 = ai1
                    +
                    1270  DO 126 j=3,ipph
                    +
                    1271  jc = ipp2-j
                    +
                    1272  ar2h = dc2*ar2-ds2*ai2
                    +
                    1273  ai2 = dc2*ai2+ds2*ar2
                    +
                    1274  ar2 = ar2h
                    +
                    1275  DO 125 ik=1,idl1
                    +
                    1276  ch2(ik,l) = ch2(ik,l)+ar2*c2(ik,j)
                    +
                    1277  ch2(ik,lc) = ch2(ik,lc)+ai2*c2(ik,jc)
                    +
                    1278  125 CONTINUE
                    +
                    1279  126 CONTINUE
                    +
                    1280  127 CONTINUE
                    +
                    1281  DO 129 j=2,ipph
                    +
                    1282  DO 128 ik=1,idl1
                    +
                    1283  ch2(ik,1) = ch2(ik,1)+c2(ik,j)
                    +
                    1284  128 CONTINUE
                    +
                    1285  129 CONTINUE
                    +
                    1286 C
                    +
                    1287  IF (ido .LT. l1) GO TO 132
                    +
                    1288  DO 131 k=1,l1
                    +
                    1289  DO 130 i=1,ido
                    +
                    1290  cc(i,1,k) = ch(i,k,1)
                    +
                    1291  130 CONTINUE
                    +
                    1292  131 CONTINUE
                    +
                    1293  GO TO 135
                    +
                    1294  132 DO 134 i=1,ido
                    +
                    1295  DO 133 k=1,l1
                    +
                    1296  cc(i,1,k) = ch(i,k,1)
                    +
                    1297  133 CONTINUE
                    +
                    1298  134 CONTINUE
                    +
                    1299  135 DO 137 j=2,ipph
                    +
                    1300  jc = ipp2-j
                    +
                    1301  j2 = j+j
                    +
                    1302  DO 136 k=1,l1
                    +
                    1303  cc(ido,j2-2,k) = ch(1,k,j)
                    +
                    1304  cc(1,j2-1,k) = ch(1,k,jc)
                    +
                    1305  136 CONTINUE
                    +
                    1306  137 CONTINUE
                    +
                    1307  IF (ido .EQ. 1) RETURN
                    +
                    1308  IF (nbd .LT. l1) GO TO 141
                    +
                    1309  DO 140 j=2,ipph
                    +
                    1310  jc = ipp2-j
                    +
                    1311  j2 = j+j
                    +
                    1312  DO 139 k=1,l1
                    +
                    1313  DO 138 i=3,ido,2
                    +
                    1314  ic = idp2-i
                    +
                    1315  cc(i-1,j2-1,k) = ch(i-1,k,j)+ch(i-1,k,jc)
                    +
                    1316  cc(ic-1,j2-2,k) = ch(i-1,k,j)-ch(i-1,k,jc)
                    +
                    1317  cc(i,j2-1,k) = ch(i,k,j)+ch(i,k,jc)
                    +
                    1318  cc(ic,j2-2,k) = ch(i,k,jc)-ch(i,k,j)
                    +
                    1319  138 CONTINUE
                    +
                    1320  139 CONTINUE
                    +
                    1321  140 CONTINUE
                    +
                    1322  RETURN
                    +
                    1323  141 DO 144 j=2,ipph
                    +
                    1324  jc = ipp2-j
                    +
                    1325  j2 = j+j
                    +
                    1326  DO 143 i=3,ido,2
                    +
                    1327  ic = idp2-i
                    +
                    1328  DO 142 k=1,l1
                    +
                    1329  cc(i-1,j2-1,k) = ch(i-1,k,j)+ch(i-1,k,jc)
                    +
                    1330  cc(ic-1,j2-2,k) = ch(i-1,k,j)-ch(i-1,k,jc)
                    +
                    1331  cc(i,j2-1,k) = ch(i,k,j)+ch(i,k,jc)
                    +
                    1332  cc(ic,j2-2,k) = ch(i,k,jc)-ch(i,k,j)
                    +
                    1333  142 CONTINUE
                    +
                    1334  143 CONTINUE
                    +
                    1335  144 CONTINUE
                    +
                    1336  RETURN
                    +
                    1337  END
                    +
                    subroutine radb5(IDO, L1, CC, CH, WA1, WA2, WA3, WA4)
                    RADB5.
                    Definition: fftpack.F:691
                    +
                    subroutine scfft(isign, n, scale, x, y, table, work, isys)
                    scfft
                    Definition: fftpack.F:250
                    +
                    subroutine radb4(IDO, L1, CC, CH, WA1, WA2, WA3)
                    RADB4.
                    Definition: fftpack.F:620
                    +
                    subroutine rffti(N, WSAVE)
                    RFFTI.
                    Definition: fftpack.F:310
                    +
                    subroutine radf3(IDO, L1, CC, CH, WA1, WA2)
                    RADF3.
                    Definition: fftpack.F:985
                    +
                    subroutine drcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    drcft
                    Definition: fftpack.F:160
                    +
                    subroutine radb3(IDO, L1, CC, CH, WA1, WA2)
                    RADB3
                    Definition: fftpack.F:570
                    +
                    subroutine radf5(IDO, L1, CC, CH, WA1, WA2, WA3, WA4)
                    RADF5.
                    Definition: fftpack.F:1099
                    +
                    subroutine radf2(IDO, L1, CC, CH, WA1)
                    RADBG.
                    Definition: fftpack.F:947
                    +
                    subroutine dcrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    dcrft
                    Definition: fftpack.F:34
                    +
                    subroutine rfftb(N, R, WSAVE)
                    RFFTB.
                    Definition: fftpack.F:297
                    +
                    subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    scrft
                    Definition: fftpack.F:80
                    +
                    subroutine rfftf1(N, C, CH, WA, IFAC)
                    RFFTF1.
                    Definition: fftpack.F:395
                    +
                    subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    srcft
                    Definition: fftpack.F:209
                    +
                    subroutine csfft(isign, n, scale, x, y, table, work, isys)
                    csfft
                    Definition: fftpack.F:117
                    +
                    subroutine radfg(IDO, IP, L1, IDL1, CC, C1, C2, CH, CH2, WA)
                    RADFG.
                    Definition: fftpack.F:1173
                    +
                    subroutine rffti1(N, WA, IFAC)
                    RFFTI1.
                    Definition: fftpack.F:462
                    +
                    subroutine radb2(IDO, L1, CC, CH, WA1)
                    RADB2.
                    Definition: fftpack.F:531
                    +
                    subroutine radf4(IDO, L1, CC, CH, WA1, WA2, WA3)
                    RADF4.
                    Definition: fftpack.F:1032
                    +
                    subroutine radbg(IDO, IP, L1, IDL1, CC, C1, C2, CH, CH2, WA)
                    RADBG.
                    Definition: fftpack.F:769
                    +
                    subroutine rfftb1(N, C, CH, WA, IFAC)
                    RFFTB1.
                    Definition: fftpack.F:326
                    +
                    subroutine rfftf(N, R, WSAVE)
                    RFFTF.
                    Definition: fftpack.F:283
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/files.html b/ver-5.0.0/files.html new file mode 100644 index 00000000..c93829c9 --- /dev/null +++ b/ver-5.0.0/files.html @@ -0,0 +1,192 @@ + + + + + + + +NCEPLIBS-ip: File List + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    File List
                    +
                    +
                    +
                    Here is a list of all documented files with brief descriptions:
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                     bicubic_interp_mod.F90Bicubic interpolation routines for scalars and vectors
                     bilinear_interp_mod.F90Bilinear interpolation routines for scalars and vectors
                     budget_interp_mod.F90Budget interpolation routines for scalars and vectors
                     earth_radius_mod.F90Determine earth radius and shape
                     fftpack.FA concatination of the (FFTPACK)[https://netlib.org/fftpack/] library code
                     gdswzd_c.F90C wrapper for routine gdswzd()
                     gdswzd_mod.F90Driver module for gdswzd routines
                     ip_constants_mod.F90Constants for use in NCEPLIBS-ip
                     ip_equid_cylind_grid_mod.F90Equidistant cylindrical grib decoder and grid coordinate transformations
                     ip_gaussian_grid_mod.F90Gaussian grid coordinate transformations
                     ip_grid_descriptor_mod.F90Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions
                     ip_grid_factory_mod.F90Routines for creating an ip_grid given a Grib descriptor
                     ip_grid_mod.F90Abstract ip_grid type
                     ip_grids_mod.F90Re-export the individual grids
                     ip_interpolators_mod.F90Top-level module to export interpolation routines and constants
                     ip_lambert_conf_grid_mod.F90GDS wizard for lambert conformal conical
                     ip_mercator_grid_mod.F90GDS wizard for mercator cylindrical
                     ip_mod.F90Top-level module for the ip library
                     ip_polar_stereo_grid_mod.F90GDS wizard for polar stereographic azimuthal
                     ip_rot_equid_cylind_egrid_mod.F90Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E
                     ip_rot_equid_cylind_grid_mod.F90Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D
                     ip_station_points_grid_mod.F90Interpolate gridded data to a series of station points
                     iplib_4.hC interface to gdswzd() and gdswzd_grib1() functions for '4' library build
                     iplib_8.hC interface to gdswzd() and gdswzd_grib1() functions for '8' library build
                     iplib_d.hC interface to gdswzd() and gdswzd_grib1() functions for 'd' library build
                     ipolates.F90Top-level driver for scalar interpolation routine ipolates()
                     ipolatev.F90Top-level driver for vector interpolation routine ipolates
                     ipxetas.F90Expand or contract eta grids using linear interpolation
                     ipxwafs.F90Expand or contract wafs grids
                     ipxwafs2.F90Expand or contract wafs grids using linear interpolation and account for bitmapped data
                     ipxwafs3.F90Expand or contract wafs grids using neighbor interpolation and accout for bitmapped data
                     lapack_gen.FTwo Numerical Recipes routines for matrix inversion From Numerical Recipes
                     movect.F90Move a vector along a great circle
                     ncpus.FSet number of cpus
                     neighbor_budget_interp_mod.F90Interpolate scalar and vector fields with neighbor budget interpolation
                     neighbor_interp_mod.F90Interpolate scalar and vector fields with neighbor interpolation
                     polfix_mod.F90Make multiple pole scalar values consistent
                     spanaly.fAnalyze spectral from Fourier
                     spdz2uv.fCompute winds from divergence and vorticity
                     spectral_interp_mod.F90Interpolate spectral
                     speps.fCompute utility spectral fields
                     spfft.fPerform multiple fast fourier transforms
                     spfft1.fPerform multiple fast Fourier transforms
                     spffte.fPerform multiple fast Fourier transforms
                     spfftpt.fCompute fourier transform to gridpoints
                     spgradq.fCompute gradient in spectral space
                     spgradx.fCompute x-gradient in Fourier space
                     spgrady.fCompute y-gradient in spectral space
                     splaplac.fCompute laplacian in spectral space
                     splat.FComputes cosines of colatitude and Gaussian weights for sets of latitudes
                     splegend.fCompute Legendre polynomials
                     sppad.fPad or truncate a spectral field
                     spsynth.fSynthesize Fourier coefficients from spectral coefficients
                     sptez.fPerform a simple scalar spherical transform
                     sptezd.fPerform a simple gradient spherical transform
                     sptezm.fPerform simple scalar spherical transforms
                     sptezmd.fPerform simple gradient spherical transforms
                     sptezmv.fPerform simple vector spherical transforms
                     sptezv.fPerform a simple vector spherical transform
                     sptgpm.fTransform spectral scalar to Mercator
                     sptgpmd.fTransform spectral to Mercator gradients
                     sptgpmv.fTransform spectral vector to Mercator
                     sptgps.fTransform spectral scalar to polar stereo
                     sptgpsd.fTransform spectral to polar stereographic gradients
                     sptgpsv.fTransform spectral vector to polar stereo
                     sptgpt.fTransform spectral scalar to station points
                     sptgptd.fTransform spectral to station point gradients
                     sptgptsd.fTransform spectral scalar to station points
                     sptgptv.fTransform spectral vector to station points
                     sptgptvd.fTransform spectral vector to station points
                     sptran.fPerform a scalar spherical transform
                     sptrand.fPerform a gradient spherical transform
                     sptranf.fPerform a scalar spherical transform
                     sptranf0.fSptranf spectral initialization
                     sptranf1.fSptranf spectral transform
                     sptranfv.fPerform a vector spherical transform
                     sptranv.fPerform a vector spherical transform
                     sptrun.fTruncate gridded scalar fields
                     sptrund.fSpectrally truncate to gradients
                     sptrung.fSpectrally interpolate scalars to stations
                     sptrungv.fSpectrally interpolate vectors to stations
                     sptrunl.fSpectrally truncate to laplacian
                     sptrunm.fSpectrally interpolate scalars to Mercator
                     sptrunmv.fSpectrally interpolate vectors to Mercator
                     sptruns.fSpectrally interpolate scalars to polar stereo
                     sptrunsv.fSpectrally interpolate vectors to polar stereo
                     sptrunv.fSpectrally truncate gridded vector fields
                     spuv2dz.fCompute divergence and vorticity from winds
                     spvar.fCompute variance by total wavenumber
                     spwget.fGet wave-space constants
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/files_dup.js b/ver-5.0.0/files_dup.js new file mode 100644 index 00000000..3ecf3254 --- /dev/null +++ b/ver-5.0.0/files_dup.js @@ -0,0 +1,93 @@ +var files_dup = +[ + [ "bicubic_interp_mod.F90", "bicubic__interp__mod_8F90.html", "bicubic__interp__mod_8F90" ], + [ "bilinear_interp_mod.F90", "bilinear__interp__mod_8F90.html", "bilinear__interp__mod_8F90" ], + [ "budget_interp_mod.F90", "budget__interp__mod_8F90.html", "budget__interp__mod_8F90" ], + [ "earth_radius_mod.F90", "earth__radius__mod_8F90.html", "earth__radius__mod_8F90" ], + [ "fftpack.F", "fftpack_8F.html", "fftpack_8F" ], + [ "gdswzd_c.F90", "gdswzd__c_8F90.html", "gdswzd__c_8F90" ], + [ "gdswzd_mod.F90", "gdswzd__mod_8F90.html", "gdswzd__mod_8F90" ], + [ "ip_constants_mod.F90", "ip__constants__mod_8F90.html", "ip__constants__mod_8F90" ], + [ "ip_equid_cylind_grid_mod.F90", "ip__equid__cylind__grid__mod_8F90.html", "ip__equid__cylind__grid__mod_8F90" ], + [ "ip_gaussian_grid_mod.F90", "ip__gaussian__grid__mod_8F90.html", "ip__gaussian__grid__mod_8F90" ], + [ "ip_grid_descriptor_mod.F90", "ip__grid__descriptor__mod_8F90.html", "ip__grid__descriptor__mod_8F90" ], + [ "ip_grid_factory_mod.F90", "ip__grid__factory__mod_8F90.html", "ip__grid__factory__mod_8F90" ], + [ "ip_grid_mod.F90", "ip__grid__mod_8F90.html", "ip__grid__mod_8F90" ], + [ "ip_grids_mod.F90", "ip__grids__mod_8F90.html", null ], + [ "ip_interpolators_mod.F90", "ip__interpolators__mod_8F90.html", "ip__interpolators__mod_8F90" ], + [ "ip_lambert_conf_grid_mod.F90", "ip__lambert__conf__grid__mod_8F90.html", "ip__lambert__conf__grid__mod_8F90" ], + [ "ip_mercator_grid_mod.F90", "ip__mercator__grid__mod_8F90.html", "ip__mercator__grid__mod_8F90" ], + [ "ip_mod.F90", "ip__mod_8F90.html", null ], + [ "ip_polar_stereo_grid_mod.F90", "ip__polar__stereo__grid__mod_8F90.html", "ip__polar__stereo__grid__mod_8F90" ], + [ "ip_rot_equid_cylind_egrid_mod.F90", "ip__rot__equid__cylind__egrid__mod_8F90.html", "ip__rot__equid__cylind__egrid__mod_8F90" ], + [ "ip_rot_equid_cylind_grid_mod.F90", "ip__rot__equid__cylind__grid__mod_8F90.html", "ip__rot__equid__cylind__grid__mod_8F90" ], + [ "ip_station_points_grid_mod.F90", "ip__station__points__grid__mod_8F90.html", "ip__station__points__grid__mod_8F90" ], + [ "iplib_4.h", "iplib__4_8h.html", "iplib__4_8h" ], + [ "iplib_8.h", "iplib__8_8h.html", "iplib__8_8h" ], + [ "iplib_d.h", "iplib__d_8h.html", "iplib__d_8h" ], + [ "ipolates.F90", "ipolates_8F90.html", "ipolates_8F90" ], + [ "ipolatev.F90", "ipolatev_8F90.html", "ipolatev_8F90" ], + [ "ipxetas.F90", "ipxetas_8F90.html", "ipxetas_8F90" ], + [ "ipxwafs.F90", "ipxwafs_8F90.html", "ipxwafs_8F90" ], + [ "ipxwafs2.F90", "ipxwafs2_8F90.html", "ipxwafs2_8F90" ], + [ "ipxwafs3.F90", "ipxwafs3_8F90.html", "ipxwafs3_8F90" ], + [ "lapack_gen.F", "lapack__gen_8F.html", "lapack__gen_8F" ], + [ "movect.F90", "movect_8F90.html", "movect_8F90" ], + [ "ncpus.F", "ncpus_8F.html", "ncpus_8F" ], + [ "neighbor_budget_interp_mod.F90", "neighbor__budget__interp__mod_8F90.html", "neighbor__budget__interp__mod_8F90" ], + [ "neighbor_interp_mod.F90", "neighbor__interp__mod_8F90.html", "neighbor__interp__mod_8F90" ], + [ "polfix_mod.F90", "polfix__mod_8F90.html", "polfix__mod_8F90" ], + [ "spanaly.f", "spanaly_8f.html", "spanaly_8f" ], + [ "spdz2uv.f", "spdz2uv_8f.html", "spdz2uv_8f" ], + [ "spectral_interp_mod.F90", "spectral__interp__mod_8F90.html", "spectral__interp__mod_8F90" ], + [ "speps.f", "speps_8f.html", "speps_8f" ], + [ "spfft.f", "spfft_8f.html", "spfft_8f" ], + [ "spfft1.f", "spfft1_8f.html", "spfft1_8f" ], + [ "spffte.f", "spffte_8f.html", "spffte_8f" ], + [ "spfftpt.f", "spfftpt_8f.html", "spfftpt_8f" ], + [ "spgradq.f", "spgradq_8f.html", "spgradq_8f" ], + [ "spgradx.f", "spgradx_8f.html", "spgradx_8f" ], + [ "spgrady.f", "spgrady_8f.html", "spgrady_8f" ], + [ "splaplac.f", "splaplac_8f.html", "splaplac_8f" ], + [ "splat.F", "splat_8F.html", "splat_8F" ], + [ "splegend.f", "splegend_8f.html", "splegend_8f" ], + [ "sppad.f", "sppad_8f.html", "sppad_8f" ], + [ "spsynth.f", "spsynth_8f.html", "spsynth_8f" ], + [ "sptez.f", "sptez_8f.html", "sptez_8f" ], + [ "sptezd.f", "sptezd_8f.html", "sptezd_8f" ], + [ "sptezm.f", "sptezm_8f.html", "sptezm_8f" ], + [ "sptezmd.f", "sptezmd_8f.html", "sptezmd_8f" ], + [ "sptezmv.f", "sptezmv_8f.html", "sptezmv_8f" ], + [ "sptezv.f", "sptezv_8f.html", "sptezv_8f" ], + [ "sptgpm.f", "sptgpm_8f.html", "sptgpm_8f" ], + [ "sptgpmd.f", "sptgpmd_8f.html", "sptgpmd_8f" ], + [ "sptgpmv.f", "sptgpmv_8f.html", "sptgpmv_8f" ], + [ "sptgps.f", "sptgps_8f.html", "sptgps_8f" ], + [ "sptgpsd.f", "sptgpsd_8f.html", "sptgpsd_8f" ], + [ "sptgpsv.f", "sptgpsv_8f.html", "sptgpsv_8f" ], + [ "sptgpt.f", "sptgpt_8f.html", "sptgpt_8f" ], + [ "sptgptd.f", "sptgptd_8f.html", "sptgptd_8f" ], + [ "sptgptsd.f", "sptgptsd_8f.html", "sptgptsd_8f" ], + [ "sptgptv.f", "sptgptv_8f.html", "sptgptv_8f" ], + [ "sptgptvd.f", "sptgptvd_8f.html", "sptgptvd_8f" ], + [ "sptran.f", "sptran_8f.html", "sptran_8f" ], + [ "sptrand.f", "sptrand_8f.html", "sptrand_8f" ], + [ "sptranf.f", "sptranf_8f.html", "sptranf_8f" ], + [ "sptranf0.f", "sptranf0_8f.html", "sptranf0_8f" ], + [ "sptranf1.f", "sptranf1_8f.html", "sptranf1_8f" ], + [ "sptranfv.f", "sptranfv_8f.html", "sptranfv_8f" ], + [ "sptranv.f", "sptranv_8f.html", "sptranv_8f" ], + [ "sptrun.f", "sptrun_8f.html", "sptrun_8f" ], + [ "sptrund.f", "sptrund_8f.html", "sptrund_8f" ], + [ "sptrung.f", "sptrung_8f.html", "sptrung_8f" ], + [ "sptrungv.f", "sptrungv_8f.html", "sptrungv_8f" ], + [ "sptrunl.f", "sptrunl_8f.html", "sptrunl_8f" ], + [ "sptrunm.f", "sptrunm_8f.html", "sptrunm_8f" ], + [ "sptrunmv.f", "sptrunmv_8f.html", "sptrunmv_8f" ], + [ "sptruns.f", "sptruns_8f.html", "sptruns_8f" ], + [ "sptrunsv.f", "sptrunsv_8f.html", "sptrunsv_8f" ], + [ "sptrunv.f", "sptrunv_8f.html", "sptrunv_8f" ], + [ "spuv2dz.f", "spuv2dz_8f.html", "spuv2dz_8f" ], + [ "spvar.f", "spvar_8f.html", "spvar_8f" ], + [ "spwget.f", "spwget_8f.html", "spwget_8f" ] +]; \ No newline at end of file diff --git a/ver-5.0.0/folderclosed.png b/ver-5.0.0/folderclosed.png new file mode 100644 index 00000000..bb8ab35e Binary files /dev/null and b/ver-5.0.0/folderclosed.png differ diff --git a/ver-5.0.0/folderopen.png b/ver-5.0.0/folderopen.png new file mode 100644 index 00000000..d6c7f676 Binary files /dev/null and b/ver-5.0.0/folderopen.png differ diff --git a/ver-5.0.0/functions.html b/ver-5.0.0/functions.html new file mode 100644 index 00000000..46362750 --- /dev/null +++ b/ver-5.0.0/functions.html @@ -0,0 +1,476 @@ + + + + + + + +NCEPLIBS-ip: Data Fields + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    Here is a list of all documented data types members with links to the data structure documentation for each member
                    + +

                    - c -

                    + + +

                    - d -

                    + + +

                    - e -

                    + + +

                    - f -

                    + + +

                    - g -

                    + + +

                    - h -

                    + + +

                    - i -

                    + + +

                    - j -

                    + + +

                    - k -

                    + + +

                    - n -

                    + + +

                    - o -

                    + + +

                    - p -

                    + + +

                    - r -

                    + + +

                    - s -

                    + + +

                    - w -

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/functions_func.html b/ver-5.0.0/functions_func.html new file mode 100644 index 00000000..408725d1 --- /dev/null +++ b/ver-5.0.0/functions_func.html @@ -0,0 +1,268 @@ + + + + + + + +NCEPLIBS-ip: Data Fields - Functions/Subroutines + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +  + +

                    - f -

                    + + +

                    - g -

                    + + +

                    - i -

                    + + +

                    - p -

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/functions_vars.html b/ver-5.0.0/functions_vars.html new file mode 100644 index 00000000..cbe3b5d5 --- /dev/null +++ b/ver-5.0.0/functions_vars.html @@ -0,0 +1,310 @@ + + + + + + + +NCEPLIBS-ip: Data Fields - Variables + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +  + +

                    - c -

                    + + +

                    - d -

                    + + +

                    - e -

                    + + +

                    - g -

                    + + +

                    - h -

                    + + +

                    - i -

                    + + +

                    - j -

                    + + +

                    - k -

                    + + +

                    - n -

                    + + +

                    - o -

                    + + +

                    - r -

                    + + +

                    - s -

                    + + +

                    - w -

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/gdswzd__c_8F90.html b/ver-5.0.0/gdswzd__c_8F90.html new file mode 100644 index 00000000..b3acb1fe --- /dev/null +++ b/ver-5.0.0/gdswzd__c_8F90.html @@ -0,0 +1,129 @@ + + + + + + + +NCEPLIBS-ip: gdswzd_c.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    gdswzd_c.F90 File Reference
                    +
                    +
                    + +

                    C wrapper for routine gdswzd(). +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Modules

                    module  gdswzd_c_mod
                     Module that contains C wrapper for routine gdswzd().
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine gdswzd_c_mod::gdswzd_c (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     C wrapper for routine gdswzd(). More...
                     
                    subroutine gdswzd_c_mod::gdswzd_c_grib1 (KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     C wrapper for routine gdswzd. More...
                     
                    +

                    Detailed Description

                    +

                    C wrapper for routine gdswzd().

                    +
                    Author
                    JOVIC
                    +
                    Date
                    2016-04-10
                    + +

                    Definition in file gdswzd_c.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/gdswzd__c_8F90.js b/ver-5.0.0/gdswzd__c_8F90.js new file mode 100644 index 00000000..db0f3b21 --- /dev/null +++ b/ver-5.0.0/gdswzd__c_8F90.js @@ -0,0 +1,5 @@ +var gdswzd__c_8F90 = +[ + [ "gdswzd_c", "gdswzd__c_8F90.html#ae3026381f7f41561507c97c9125d24e4", null ], + [ "gdswzd_c_grib1", "gdswzd__c_8F90.html#a06861f1403edf106bb3b399c39981504", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/gdswzd__c_8F90_source.html b/ver-5.0.0/gdswzd__c_8F90_source.html new file mode 100644 index 00000000..5d1be1c2 --- /dev/null +++ b/ver-5.0.0/gdswzd__c_8F90_source.html @@ -0,0 +1,189 @@ + + + + + + + +NCEPLIBS-ip: gdswzd_c.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    gdswzd_c.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + +
                    8  use gdswzd_mod
                    +
                    9  implicit none
                    +
                    10 
                    +
                    11 contains
                    +
                    12 
                    +
                    173  SUBROUTINE gdswzd_c(IGDTNUM,IGDTMPL,IGDTLEN,IOPT,NPTS,FILL, &
                    +
                    174  XPTS,YPTS,RLON,RLAT,NRET,CROT,SROT, &
                    +
                    175  XLON,XLAT,YLON,YLAT,AREA) bind(C, NAME='gdswzd')
                    +
                    176  use, INTRINSIC :: iso_c_binding
                    +
                    177 
                    +
                    178  USE gdswzd_mod
                    +
                    179 
                    +
                    180  IMPLICIT NONE
                    +
                    181 
                    +
                    182 #if (LSIZE==8)
                    +
                    183  INTEGER(KIND=C_LONG), INTENT(IN) :: IGDTMPL(IGDTLEN)
                    +
                    184  INTEGER(KIND=C_LONG), VALUE, INTENT(IN) :: IGDTNUM, IGDTLEN
                    +
                    185  INTEGER(KIND=C_LONG), VALUE, INTENT(IN) :: IOPT, NPTS
                    +
                    186  INTEGER(KIND=C_LONG), INTENT(OUT) :: NRET
                    +
                    187 #else
                    +
                    188  INTEGER(KIND=C_INT), INTENT(IN) :: IGDTMPL(IGDTLEN)
                    +
                    189  INTEGER(KIND=C_INT), VALUE, INTENT(IN) :: IGDTNUM, IGDTLEN
                    +
                    190  INTEGER(KIND=C_INT), VALUE, INTENT(IN) :: IOPT, NPTS
                    +
                    191  INTEGER(KIND=C_INT), INTENT(OUT) :: NRET
                    +
                    192 #endif
                    +
                    193 
                    +
                    194 #if (LSIZE==4)
                    +
                    195  REAL(KIND=c_float), VALUE, INTENT(IN) :: fill
                    +
                    196  REAL(KIND=c_float), INTENT(INOUT) :: xpts(npts),ypts(npts),rlon(npts),rlat(npts)
                    +
                    197  REAL(KIND=c_float), INTENT(OUT) :: crot(npts),srot(npts),xlon(npts),xlat(npts)
                    +
                    198  REAL(KIND=c_float), INTENT(OUT) :: ylon(npts),ylat(npts),area(npts)
                    +
                    199 #else
                    +
                    200  REAL(KIND=c_double), VALUE, INTENT(IN) :: fill
                    +
                    201  REAL(KIND=c_double), INTENT(INOUT) :: xpts(npts),ypts(npts),rlon(npts),rlat(npts)
                    +
                    202  REAL(KIND=c_double), INTENT(OUT) :: crot(npts),srot(npts),xlon(npts),xlat(npts)
                    +
                    203  REAL(KIND=c_double), INTENT(OUT) :: ylon(npts),ylat(npts),area(npts)
                    +
                    204 #endif
                    +
                    205 
                    +
                    206  CALL gdswzd(igdtnum,igdtmpl,igdtlen,iopt,npts,fill, &
                    +
                    207  xpts,ypts,rlon,rlat,nret, &
                    +
                    208  crot,srot,xlon,xlat,ylon,ylat,area)
                    +
                    209 
                    +
                    210  END SUBROUTINE gdswzd_c
                    +
                    211 
                    +
                    259  SUBROUTINE gdswzd_c_grib1(KGDS,IOPT,NPTS,FILL,XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    260  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA) bind(C, NAME='gdswzd_grib1')
                    +
                    261  use, INTRINSIC :: iso_c_binding
                    +
                    262 
                    +
                    263  USE gdswzd_mod
                    +
                    264 
                    +
                    265  IMPLICIT NONE
                    +
                    266 
                    +
                    267 #if (LSIZE==8)
                    +
                    268  INTEGER(KIND=C_LONG), INTENT(IN) :: KGDS(200)
                    +
                    269  INTEGER(KIND=C_LONG), VALUE, INTENT(IN) :: IOPT
                    +
                    270  INTEGER(KIND=C_LONG), VALUE, INTENT(IN) :: NPTS
                    +
                    271  INTEGER(KIND=C_LONG), INTENT(OUT) :: NRET
                    +
                    272 #else
                    +
                    273  INTEGER(KIND=C_INT), INTENT(IN) :: KGDS(200)
                    +
                    274  INTEGER(KIND=C_INT), VALUE, INTENT(IN) :: IOPT
                    +
                    275  INTEGER(KIND=C_INT), VALUE, INTENT(IN) :: NPTS
                    +
                    276  INTEGER(KIND=C_INT), INTENT(OUT) :: NRET
                    +
                    277 #endif
                    +
                    278 
                    +
                    279 #if (LSIZE==4)
                    +
                    280  REAL(KIND=c_float), VALUE, INTENT(IN) :: fill
                    +
                    281  REAL(KIND=c_float), INTENT(INOUT) :: xpts(npts),ypts(npts),rlon(npts),rlat(npts)
                    +
                    282  REAL(KIND=c_float), INTENT(OUT) :: crot(npts),srot(npts),xlon(npts),xlat(npts)
                    +
                    283  REAL(KIND=c_float), INTENT(OUT) :: ylon(npts),ylat(npts),area(npts)
                    +
                    284 #else
                    +
                    285  REAL(KIND=c_double), VALUE, INTENT(IN) :: fill
                    +
                    286  REAL(KIND=c_double), INTENT(INOUT) :: xpts(npts),ypts(npts),rlon(npts),rlat(npts)
                    +
                    287  REAL(KIND=c_double), INTENT(OUT) :: crot(npts),srot(npts),xlon(npts),xlat(npts)
                    +
                    288  REAL(KIND=c_double), INTENT(OUT) :: ylon(npts),ylat(npts),area(npts)
                    +
                    289 #endif
                    +
                    290 
                    +
                    291  CALL gdswzd(kgds,iopt,npts,fill,xpts,ypts,rlon,rlat,nret, &
                    +
                    292  crot,srot,xlon,xlat,ylon,ylat,area)
                    +
                    293 
                    +
                    294  END SUBROUTINE gdswzd_c_grib1
                    +
                    295 
                    +
                    296 end module gdswzd_c_mod
                    + +
                    Module that contains C wrapper for routine gdswzd().
                    Definition: gdswzd_c.F90:7
                    +
                    subroutine gdswzd_c_grib1(KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    C wrapper for routine gdswzd.
                    Definition: gdswzd_c.F90:261
                    +
                    subroutine gdswzd_c(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    C wrapper for routine gdswzd().
                    Definition: gdswzd_c.F90:176
                    +
                    Driver module for gdswzd routines.
                    Definition: gdswzd_mod.F90:25
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/gdswzd__mod_8F90.html b/ver-5.0.0/gdswzd__mod_8F90.html new file mode 100644 index 00000000..166f019e --- /dev/null +++ b/ver-5.0.0/gdswzd__mod_8F90.html @@ -0,0 +1,147 @@ + + + + + + + +NCEPLIBS-ip: gdswzd_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    gdswzd_mod.F90 File Reference
                    +
                    +
                    + +

                    Driver module for gdswzd routines. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    interface  gdswzd_mod::gdswzd
                     
                    + + + + +

                    +Modules

                    module  gdswzd_mod
                     Driver module for gdswzd routines.
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine gdswzd_mod::gdswzd_1d_array (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib 2 grid definition template and returns one of the following: More...
                     
                    subroutine gdswzd_mod::gdswzd_2d_array (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib 2 grid definition template and returns one of the following (for 2d-arrays): More...
                     
                    subroutine, public gdswzd_mod::gdswzd_2d_array_grib1 (KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib grid description section and returns one of the following (for 2-d arrays): More...
                     
                    subroutine, public gdswzd_mod::gdswzd_grib1 (KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib grid description section and returns one of the following (for 1-d arrays): More...
                     
                    subroutine gdswzd_mod::gdswzd_grid (grid, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Returns one of the following for a grid object: More...
                     
                    subroutine gdswzd_mod::gdswzd_scalar (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib 2 grid definition template and returns one of the following (for scalars): More...
                     
                    +

                    Detailed Description

                    +

                    Driver module for gdswzd routines.

                    +
                    Date
                    Jan 2015
                    +
                    Author
                    George Gayno, Kyle Gerheiser
                    + +

                    Definition in file gdswzd_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/gdswzd__mod_8F90.js b/ver-5.0.0/gdswzd__mod_8F90.js new file mode 100644 index 00000000..3b950779 --- /dev/null +++ b/ver-5.0.0/gdswzd__mod_8F90.js @@ -0,0 +1,10 @@ +var gdswzd__mod_8F90 = +[ + [ "gdswzd", "interfacegdswzd__mod_1_1gdswzd.html", "interfacegdswzd__mod_1_1gdswzd" ], + [ "gdswzd_1d_array", "gdswzd__mod_8F90.html#ac304e2b046eccc701e24827c81107e76", null ], + [ "gdswzd_2d_array", "gdswzd__mod_8F90.html#acdf970e498e9317522fbdfb690b86e25", null ], + [ "gdswzd_2d_array_grib1", "gdswzd__mod_8F90.html#aa032a55281b18e208630a730679958f4", null ], + [ "gdswzd_grib1", "gdswzd__mod_8F90.html#a133e040fac8dd56e607b8e3fb6a58c37", null ], + [ "gdswzd_grid", "gdswzd__mod_8F90.html#a584d2bddbc6d857b80cfac5e3b288d45", null ], + [ "gdswzd_scalar", "gdswzd__mod_8F90.html#aba3235c5bc5797e72b9a6a8a587b8861", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/gdswzd__mod_8F90_source.html b/ver-5.0.0/gdswzd__mod_8F90_source.html new file mode 100644 index 00000000..ec343a77 --- /dev/null +++ b/ver-5.0.0/gdswzd__mod_8F90_source.html @@ -0,0 +1,450 @@ + + + + + + + +NCEPLIBS-ip: gdswzd_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    gdswzd_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    6 
                    +
                    25 MODULE gdswzd_mod
                    + +
                    27  use ip_grids_mod
                    +
                    28  use ip_grid_mod
                    + +
                    30 
                    +
                    31  IMPLICIT NONE
                    +
                    32 
                    +
                    33  PRIVATE
                    +
                    34 
                    + +
                    36 
                    +
                    37  INTERFACE gdswzd
                    +
                    38  MODULE PROCEDURE gdswzd_1d_array
                    +
                    39  MODULE PROCEDURE gdswzd_2d_array
                    +
                    40  MODULE PROCEDURE gdswzd_scalar
                    +
                    41  module procedure gdswzd_grib1
                    +
                    42  module procedure gdswzd_2d_array_grib1
                    +
                    43  module procedure gdswzd_grid
                    +
                    44  END INTERFACE gdswzd
                    +
                    45 
                    +
                    46 CONTAINS
                    +
                    47 
                    +
                    105  subroutine gdswzd_grid(grid,IOPT,NPTS,FILL, &
                    +
                    106  XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    107  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    108 
                    +
                    109  class(ip_grid), intent(in) :: grid
                    +
                    110  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    111  INTEGER, INTENT( OUT) :: NRET
                    +
                    112  !
                    +
                    113  REAL, INTENT(IN ) :: FILL
                    +
                    114  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    115  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    116  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    117  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    118  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    119 
                    +
                    120  INTEGER :: IS1, IM, JM, NM, KSCAN, NSCAN, N
                    +
                    121  INTEGER :: IOPF, NN, I, J
                    +
                    122 
                    +
                    123  ! COMPUTE GRID COORDINATES FOR ALL GRID POINTS
                    +
                    124  IF(iopt.EQ.0) THEN
                    +
                    125  iopf=1
                    +
                    126 
                    +
                    127  if(grid%descriptor%grid_num.eq.-1)then
                    +
                    128  nm = npts
                    +
                    129  else
                    +
                    130  im = grid%im
                    +
                    131  jm = grid%jm
                    +
                    132  nm = im * jm
                    +
                    133  endif
                    +
                    134  nscan = grid%nscan
                    +
                    135  kscan = grid%kscan
                    +
                    136 
                    +
                    137  if (nm > npts) then
                    +
                    138  rlat=fill
                    +
                    139  rlon=fill
                    +
                    140  xpts=fill
                    +
                    141  ypts=fill
                    +
                    142  return
                    +
                    143  end if
                    +
                    144 
                    +
                    145  select type(grid)
                    +
                    146  type is(ip_rot_equid_cylind_egrid)
                    +
                    147  if(kscan == 0) then
                    +
                    148  is1 = (jm + 1) / 2
                    +
                    149  else
                    +
                    150  is1 = jm / 2
                    +
                    151  end if
                    +
                    152 
                    +
                    153  DO n=1,nm
                    +
                    154  IF(nscan.EQ.0) THEN
                    +
                    155  j=(n-1)/im+1
                    +
                    156  i=(n-im*(j-1))*2-mod(j+kscan,2)
                    +
                    157  ELSE
                    +
                    158  nn=(n*2)-1+kscan
                    +
                    159  i = (nn-1)/jm + 1
                    +
                    160  j = mod(nn-1,jm) + 1
                    +
                    161  IF (mod(jm,2)==0.AND.mod(i,2)==0.AND.kscan==0) j = j + 1
                    +
                    162  IF (mod(jm,2)==0.AND.mod(i,2)==0.AND.kscan==1) j = j - 1
                    +
                    163  ENDIF
                    +
                    164  xpts(n)=is1+(i-(j-kscan))/2
                    +
                    165  ypts(n)=(i+(j-kscan))/2
                    +
                    166  ENDDO
                    +
                    167  type is(ip_station_points_grid)
                    +
                    168  DO n=1,nm
                    +
                    169  xpts(n)=fill
                    +
                    170  ypts(n)=fill
                    +
                    171  ENDDO
                    +
                    172  class default
                    +
                    173  DO n=1,nm
                    +
                    174  IF(nscan.EQ.0) THEN
                    +
                    175  j=(n-1)/im+1
                    +
                    176  i=n-im*(j-1)
                    +
                    177  ELSE
                    +
                    178  i=(n-1)/jm+1
                    +
                    179  j=n-jm*(i-1)
                    +
                    180  ENDIF
                    +
                    181  xpts(n)=i
                    +
                    182  ypts(n)=j
                    +
                    183  ENDDO
                    +
                    184  end select
                    +
                    185 
                    +
                    186  DO n=nm+1,npts
                    +
                    187  xpts(n)=fill
                    +
                    188  ypts(n)=fill
                    +
                    189  ENDDO
                    +
                    190 
                    +
                    191  ELSE ! IOPT /= 0
                    +
                    192  iopf=iopt
                    +
                    193  ENDIF ! IOPT CHECK
                    +
                    194 
                    +
                    195  call grid%gdswzd(iopf,npts,fill, &
                    +
                    196  xpts,ypts,rlon,rlat,nret, &
                    +
                    197  crot,srot,xlon,xlat,ylon,ylat,area)
                    +
                    198 
                    +
                    199  end subroutine gdswzd_grid
                    +
                    200 
                    +
                    201 
                    +
                    278  SUBROUTINE gdswzd_scalar(IGDTNUM,IGDTMPL,IGDTLEN,IOPT,NPTS,FILL, &
                    +
                    279  XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    280  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    281 
                    +
                    282  IMPLICIT NONE
                    +
                    283  !
                    +
                    284  INTEGER, INTENT(IN ) :: IGDTNUM, IGDTLEN
                    +
                    285  INTEGER, INTENT(IN ) :: IGDTMPL(IGDTLEN)
                    +
                    286  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    287  INTEGER, INTENT( OUT) :: NRET
                    +
                    288  !
                    +
                    289  REAL, INTENT(IN ) :: FILL
                    +
                    290  REAL, INTENT(INOUT) :: RLON, RLAT
                    +
                    291  REAL, INTENT(INOUT) :: XPTS, YPTS
                    +
                    292  REAL, OPTIONAL, INTENT( OUT) :: CROT, SROT
                    +
                    293  REAL, OPTIONAL, INTENT( OUT) :: XLON, XLAT
                    +
                    294  REAL, OPTIONAL, INTENT( OUT) :: YLON, YLAT, AREA
                    +
                    295 
                    +
                    296  REAL :: RLONA(1),RLATA(1)
                    +
                    297  REAL :: XPTSA(1),YPTSA(1)
                    +
                    298  REAL :: CROTA(1),SROTA(1)
                    +
                    299  REAL :: XLONA(1),XLATA(1)
                    +
                    300  REAL :: YLONA(1),YLATA(1),AREAA(1)
                    +
                    301 
                    +
                    302  rlona(1) = rlon
                    +
                    303  rlata(1) = rlat
                    +
                    304  xptsa(1) = xpts
                    +
                    305  yptsa(1) = ypts
                    +
                    306 
                    +
                    307  nret = 0
                    +
                    308 
                    +
                    309  ! CALL WITHOUT EXTRA FIELDS.
                    +
                    310 
                    +
                    311  IF (.NOT. PRESENT(crot) .AND. &
                    +
                    312  .NOT. PRESENT(srot) .AND. &
                    +
                    313  .NOT. PRESENT(xlon) .AND. &
                    +
                    314  .NOT. PRESENT(xlat) .AND. &
                    +
                    315  .NOT. PRESENT(ylon) .AND. &
                    +
                    316  .NOT. PRESENT(ylat) .AND. &
                    +
                    317  .NOT. PRESENT(area) ) THEN
                    +
                    318 
                    +
                    319  CALL gdswzd_1d_array(igdtnum,igdtmpl,igdtlen,iopt,npts,fill, &
                    +
                    320  xptsa,yptsa,rlona,rlata,nret)
                    +
                    321 
                    +
                    322  rlon = rlona(1)
                    +
                    323  rlat = rlata(1)
                    +
                    324  xpts = xptsa(1)
                    +
                    325  ypts = yptsa(1)
                    +
                    326 
                    +
                    327  ENDIF
                    +
                    328 
                    +
                    329  ! MIMIC CALL TO OLD 'GDSWIZ' ROUTINES.
                    +
                    330 
                    +
                    331  IF (PRESENT(crot) .AND. &
                    +
                    332  PRESENT(srot) .AND. &
                    +
                    333  .NOT. PRESENT(xlon) .AND. &
                    +
                    334  .NOT. PRESENT(xlat) .AND. &
                    +
                    335  .NOT. PRESENT(ylon) .AND. &
                    +
                    336  .NOT. PRESENT(ylat) .AND. &
                    +
                    337  .NOT. PRESENT(area) ) THEN
                    +
                    338 
                    +
                    339  CALL gdswzd_1d_array(igdtnum,igdtmpl,igdtlen,iopt,npts,fill, &
                    +
                    340  xptsa,yptsa,rlona,rlata,nret,crota,srota)
                    +
                    341 
                    +
                    342  rlon = rlona(1)
                    +
                    343  rlat = rlata(1)
                    +
                    344  xpts = xptsa(1)
                    +
                    345  ypts = yptsa(1)
                    +
                    346  crot = crota(1)
                    +
                    347  srot = srota(1)
                    +
                    348 
                    +
                    349  ENDIF
                    +
                    350 
                    +
                    351  ! MIMIC CALL TO OLD 'GDSWZD' ROUTINES.
                    +
                    352 
                    +
                    353  IF (PRESENT(crot) .AND. &
                    +
                    354  PRESENT(srot) .AND. &
                    +
                    355  PRESENT(xlon) .AND. &
                    +
                    356  PRESENT(xlat) .AND. &
                    +
                    357  PRESENT(ylon) .AND. &
                    +
                    358  PRESENT(ylat) .AND. &
                    +
                    359  PRESENT(area) ) THEN
                    +
                    360 
                    +
                    361  CALL gdswzd_1d_array(igdtnum,igdtmpl,igdtlen,iopt,npts,fill, &
                    +
                    362  xptsa,yptsa,rlona,rlata,nret, &
                    +
                    363  crota,srota,xlona,xlata,ylona,ylata,areaa)
                    +
                    364 
                    +
                    365  rlon = rlona(1)
                    +
                    366  rlat = rlata(1)
                    +
                    367  xpts = xptsa(1)
                    +
                    368  ypts = yptsa(1)
                    +
                    369  crot = crota(1)
                    +
                    370  srot = srota(1)
                    +
                    371  xlon = xlona(1)
                    +
                    372  xlat = xlata(1)
                    +
                    373  ylon = ylona(1)
                    +
                    374  ylat = ylata(1)
                    +
                    375  area = areaa(1)
                    +
                    376 
                    +
                    377  ENDIF
                    +
                    378 
                    +
                    379  RETURN
                    +
                    380 
                    +
                    381  END SUBROUTINE gdswzd_scalar
                    +
                    382 
                    +
                    459  SUBROUTINE gdswzd_2d_array(IGDTNUM,IGDTMPL,IGDTLEN,IOPT,NPTS,FILL, &
                    +
                    460  XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    461  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    462 
                    +
                    463  IMPLICIT NONE
                    +
                    464  !
                    +
                    465  INTEGER, INTENT(IN ) :: IGDTNUM, IGDTLEN
                    +
                    466  INTEGER, INTENT(IN ) :: IGDTMPL(IGDTLEN)
                    +
                    467  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    468  INTEGER, INTENT( OUT) :: NRET
                    +
                    469  !
                    +
                    470  REAL, INTENT(IN ) :: FILL
                    +
                    471  REAL, INTENT(INOUT) :: RLON(:,:),RLAT(:,:)
                    +
                    472  REAL, INTENT(INOUT) :: XPTS(:,:),YPTS(:,:)
                    +
                    473  REAL, OPTIONAL, INTENT( OUT) :: CROT(:,:),SROT(:,:)
                    +
                    474  REAL, OPTIONAL, INTENT( OUT) :: XLON(:,:),XLAT(:,:)
                    +
                    475  REAL, OPTIONAL, INTENT( OUT) :: YLON(:,:),YLAT(:,:),AREA(:,:)
                    +
                    476 
                    +
                    477  CALL gdswzd_1d_array(igdtnum,igdtmpl,igdtlen,iopt,npts,fill, &
                    +
                    478  xpts,ypts,rlon,rlat,nret, &
                    +
                    479  crot,srot,xlon,xlat,ylon,ylat,area)
                    +
                    480 
                    +
                    481  END SUBROUTINE gdswzd_2d_array
                    +
                    482 
                    +
                    665  SUBROUTINE gdswzd_1d_array(IGDTNUM,IGDTMPL,IGDTLEN,IOPT,NPTS,FILL, &
                    +
                    666  XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    667  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    668  INTEGER, INTENT(IN ) :: IGDTNUM, IGDTLEN
                    +
                    669  INTEGER, INTENT(IN ) :: IGDTMPL(IGDTLEN)
                    +
                    670  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    671  INTEGER, INTENT( OUT) :: NRET
                    +
                    672  !
                    +
                    673  REAL, INTENT(IN ) :: FILL
                    +
                    674  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    675  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    676  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    677  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    678  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    679 
                    +
                    680  type(grib2_descriptor) :: desc
                    +
                    681  class(ip_grid), allocatable :: grid
                    +
                    682 
                    +
                    683  desc = init_descriptor(igdtnum, igdtlen, igdtmpl)
                    +
                    684  call init_grid(grid, desc)
                    +
                    685 
                    +
                    686  call gdswzd_grid(grid,iopt,npts,fill, &
                    +
                    687  xpts,ypts,rlon,rlat,nret, &
                    +
                    688  crot,srot,xlon,xlat,ylon,ylat,area)
                    +
                    689 
                    +
                    690  END SUBROUTINE gdswzd_1d_array
                    +
                    691 
                    +
                    758  SUBROUTINE gdswzd_grib1(KGDS,IOPT,NPTS,FILL,XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    759  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    760  INTEGER, INTENT(IN ) :: IOPT, KGDS(200), NPTS
                    +
                    761  INTEGER, INTENT( OUT) :: NRET
                    +
                    762  !
                    +
                    763  REAL, INTENT(IN ) :: FILL
                    +
                    764  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    765  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    766  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    767  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    768  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    769 
                    +
                    770 
                    +
                    771  type(grib1_descriptor) :: desc
                    +
                    772  class(ip_grid), allocatable :: grid
                    +
                    773 
                    +
                    774  desc = init_descriptor(kgds)
                    +
                    775  call init_grid(grid, desc)
                    +
                    776 
                    +
                    777  call gdswzd_grid(grid,iopt,npts,fill, &
                    +
                    778  xpts,ypts,rlon,rlat,nret, &
                    +
                    779  crot,srot,xlon,xlat,ylon,ylat,area)
                    +
                    780 
                    +
                    781  END SUBROUTINE gdswzd_grib1
                    +
                    782 
                    +
                    783 
                    +
                    850  SUBROUTINE gdswzd_2d_array_grib1(KGDS,IOPT,NPTS,FILL,XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    851  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    852 
                    +
                    853  !$$$
                    +
                    854  INTEGER, INTENT(IN ) :: IOPT, KGDS(200), NPTS
                    +
                    855  INTEGER, INTENT( OUT) :: NRET
                    +
                    856  !
                    +
                    857  REAL, INTENT(IN ) :: FILL
                    +
                    858  REAL, INTENT(INOUT) :: RLON(:,:),RLAT(:,:)
                    +
                    859  REAL, INTENT(INOUT) :: XPTS(:,:),YPTS(:,:)
                    +
                    860  REAL, OPTIONAL, INTENT( OUT) :: CROT(:,:),SROT(:,:)
                    +
                    861  REAL, OPTIONAL, INTENT( OUT) :: XLON(:,:),XLAT(:,:)
                    +
                    862  REAL, OPTIONAL, INTENT( OUT) :: YLON(:,:),YLAT(:,:),AREA(:,:)
                    +
                    863 
                    +
                    864 
                    +
                    865  type(grib1_descriptor) :: desc
                    +
                    866  class(ip_grid), allocatable :: grid
                    +
                    867 
                    +
                    868  desc = init_descriptor(kgds)
                    +
                    869  call init_grid(grid, desc)
                    +
                    870 
                    +
                    871  call gdswzd_grid(grid,iopt,npts,fill, &
                    +
                    872  xpts,ypts,rlon,rlat,nret, &
                    +
                    873  crot,srot,xlon,xlat,ylon,ylat,area)
                    +
                    874 
                    +
                    875  END SUBROUTINE gdswzd_2d_array_grib1
                    +
                    876 
                    +
                    877 
                    +
                    878 
                    +
                    879 END MODULE gdswzd_mod
                    + + + +
                    Driver module for gdswzd routines.
                    Definition: gdswzd_mod.F90:25
                    +
                    subroutine, public gdswzd_grib1(KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    Decodes the grib grid description section and returns one of the following (for 1-d arrays):
                    Definition: gdswzd_mod.F90:760
                    +
                    subroutine gdswzd_grid(grid, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    Returns one of the following for a grid object:
                    Definition: gdswzd_mod.F90:108
                    +
                    subroutine, public gdswzd_2d_array_grib1(KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    Decodes the grib grid description section and returns one of the following (for 2-d arrays):
                    Definition: gdswzd_mod.F90:852
                    +
                    subroutine gdswzd_scalar(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    Decodes the grib 2 grid definition template and returns one of the following (for scalars):
                    Definition: gdswzd_mod.F90:281
                    +
                    subroutine gdswzd_1d_array(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    Decodes the grib 2 grid definition template and returns one of the following:
                    Definition: gdswzd_mod.F90:668
                    +
                    subroutine gdswzd_2d_array(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    Decodes the grib 2 grid definition template and returns one of the following (for 2d-arrays):
                    Definition: gdswzd_mod.F90:462
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Routines for creating an ip_grid given a Grib descriptor.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    Re-export the individual grids.
                    Definition: ip_grids_mod.F90:7
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Grib-2 descriptor containing a grib2 GDT represented by an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/globals.html b/ver-5.0.0/globals.html new file mode 100644 index 00000000..62313475 --- /dev/null +++ b/ver-5.0.0/globals.html @@ -0,0 +1,386 @@ + + + + + + + +NCEPLIBS-ip: Globals + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                    + +

                    - c -

                    + + +

                    - d -

                    + + +

                    - g -

                    + + +

                    - i -

                    + + +

                    - l -

                    + + +

                    - m -

                    + + +

                    - n -

                    + + +

                    - r -

                    + + +

                    - s -

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/globals_func.html b/ver-5.0.0/globals_func.html new file mode 100644 index 00000000..5bfb31f5 --- /dev/null +++ b/ver-5.0.0/globals_func.html @@ -0,0 +1,386 @@ + + + + + + + +NCEPLIBS-ip: Globals + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +  + +

                    - c -

                    + + +

                    - d -

                    + + +

                    - g -

                    + + +

                    - i -

                    + + +

                    - l -

                    + + +

                    - m -

                    + + +

                    - n -

                    + + +

                    - r -

                    + + +

                    - s -

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/hierarchy.html b/ver-5.0.0/hierarchy.html new file mode 100644 index 00000000..e16dae62 --- /dev/null +++ b/ver-5.0.0/hierarchy.html @@ -0,0 +1,132 @@ + + + + + + + +NCEPLIBS-ip: Class Hierarchy + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    Class Hierarchy
                    +
                    +
                    +
                    This inheritance list is sorted roughly, but not completely, alphabetically:
                    +
                    [detail level 12]
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                     Cgdswzd_mod::gdswzd
                     Cip_grid_mod::gdswzd_interface
                     Cip_grid_descriptor_mod::init_descriptor
                     Cip_grid_mod::init_grib1_interface
                     Cip_grid_mod::init_grib2_interface
                     Cip_grid_factory_mod::init_grid
                     Cbicubic_interp_mod::interpolate_bicubic
                     Cbilinear_interp_mod::interpolate_bilinear
                     Cbudget_interp_mod::interpolate_budget
                     Cneighbor_interp_mod::interpolate_neighbor
                     Cneighbor_budget_interp_mod::interpolate_neighbor_budget
                     Cspectral_interp_mod::interpolate_spectral
                     Cip_grid_mod::ip_gridAbstract grid that holds fields and methods common to all grids
                     Cip_equid_cylind_grid_mod::ip_equid_cylind_grid
                     Cip_gaussian_grid_mod::ip_gaussian_grid
                     Cip_lambert_conf_grid_mod::ip_lambert_conf_grid
                     Cip_mercator_grid_mod::ip_mercator_grid
                     Cip_polar_stereo_grid_mod::ip_polar_stereo_grid
                     Cip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid
                     Cip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid
                     Cip_station_points_grid_mod::ip_station_points_grid
                     Cip_grid_descriptor_mod::ip_grid_descriptorAbstract descriptor object which represents a grib1 or grib2 descriptor
                     Cip_grid_descriptor_mod::grib1_descriptorDescriptor representing a grib1 grib descriptor section (GDS) with an integer array
                     Cip_grid_descriptor_mod::grib2_descriptorGrib-2 descriptor containing a grib2 GDT represented by an integer array
                     Cipolates_mod::ipolates
                     Cipolatev_mod::ipolatev
                     Cip_grid_descriptor_mod::operator(==)
                     Cip_grid_mod::operator(==)Check equality
                     Cspectral_interp_mod::polates4
                     Cspectral_interp_mod::polatev4
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/hierarchy.js b/ver-5.0.0/hierarchy.js new file mode 100644 index 00000000..c1f43a9e --- /dev/null +++ b/ver-5.0.0/hierarchy.js @@ -0,0 +1,35 @@ +var hierarchy = +[ + [ "gdswzd_mod::gdswzd", "interfacegdswzd__mod_1_1gdswzd.html", null ], + [ "ip_grid_mod::gdswzd_interface", "interfaceip__grid__mod_1_1gdswzd__interface.html", null ], + [ "ip_grid_descriptor_mod::init_descriptor", "interfaceip__grid__descriptor__mod_1_1init__descriptor.html", null ], + [ "ip_grid_mod::init_grib1_interface", "interfaceip__grid__mod_1_1init__grib1__interface.html", null ], + [ "ip_grid_mod::init_grib2_interface", "interfaceip__grid__mod_1_1init__grib2__interface.html", null ], + [ "ip_grid_factory_mod::init_grid", "interfaceip__grid__factory__mod_1_1init__grid.html", null ], + [ "bicubic_interp_mod::interpolate_bicubic", "interfacebicubic__interp__mod_1_1interpolate__bicubic.html", null ], + [ "bilinear_interp_mod::interpolate_bilinear", "interfacebilinear__interp__mod_1_1interpolate__bilinear.html", null ], + [ "budget_interp_mod::interpolate_budget", "interfacebudget__interp__mod_1_1interpolate__budget.html", null ], + [ "neighbor_interp_mod::interpolate_neighbor", "interfaceneighbor__interp__mod_1_1interpolate__neighbor.html", null ], + [ "neighbor_budget_interp_mod::interpolate_neighbor_budget", "interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html", null ], + [ "spectral_interp_mod::interpolate_spectral", "interfacespectral__interp__mod_1_1interpolate__spectral.html", null ], + [ "ip_grid_mod::ip_grid", "structip__grid__mod_1_1ip__grid.html", [ + [ "ip_equid_cylind_grid_mod::ip_equid_cylind_grid", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html", null ], + [ "ip_gaussian_grid_mod::ip_gaussian_grid", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html", null ], + [ "ip_lambert_conf_grid_mod::ip_lambert_conf_grid", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html", null ], + [ "ip_mercator_grid_mod::ip_mercator_grid", "structip__mercator__grid__mod_1_1ip__mercator__grid.html", null ], + [ "ip_polar_stereo_grid_mod::ip_polar_stereo_grid", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html", null ], + [ "ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html", null ], + [ "ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html", null ], + [ "ip_station_points_grid_mod::ip_station_points_grid", "structip__station__points__grid__mod_1_1ip__station__points__grid.html", null ] + ] ], + [ "ip_grid_descriptor_mod::ip_grid_descriptor", "structip__grid__descriptor__mod_1_1ip__grid__descriptor.html", [ + [ "ip_grid_descriptor_mod::grib1_descriptor", "structip__grid__descriptor__mod_1_1grib1__descriptor.html", null ], + [ "ip_grid_descriptor_mod::grib2_descriptor", "structip__grid__descriptor__mod_1_1grib2__descriptor.html", null ] + ] ], + [ "ipolates_mod::ipolates", "interfaceipolates__mod_1_1ipolates.html", null ], + [ "ipolatev_mod::ipolatev", "interfaceipolatev__mod_1_1ipolatev.html", null ], + [ "ip_grid_descriptor_mod::operator(==)", "interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html", null ], + [ "ip_grid_mod::operator(==)", "interfaceip__grid__mod_1_1operator_07_0a_0a_08.html", null ], + [ "spectral_interp_mod::polates4", "interfacespectral__interp__mod_1_1polates4.html", null ], + [ "spectral_interp_mod::polatev4", "interfacespectral__interp__mod_1_1polatev4.html", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/index.html b/ver-5.0.0/index.html new file mode 100644 index 00000000..67294f67 --- /dev/null +++ b/ver-5.0.0/index.html @@ -0,0 +1,1075 @@ + + + + + + + +NCEPLIBS-ip: Introduction + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    Introduction
                    +
                    +
                    + +Previous versions:

                    4.4.0, 4.3.0, 4.2.0, 4.1.0, 4.0.0 + +

                    The NCEP general interpolation library (NCEPLIBS-ip) contains Fortran 90 subprograms to be used for interpolating between nearly all grids used at NCEP. The library is particularly efficient when interpolating many fields at one time. It also contains functionality for interpolating, transforming, and otherwise manipulating spectral data (these functions were formerly contained in the NCEPLIBS-sp library).

                    +

                    NCEPLIBS-ip supports compilation with the GNU Compiler Collection (gfortran), Intel Classic (ifort), and Intel OneAPI (ifx) compilers. In the case of Intel OneAPI (IntelLLVM), it is recommended to use at least version 2023.2.1 to avoid any number of compiler issues.

                    +
                    Note
                    Some routines may behave poorly or unpredictably when using 4-byte reals (libip_4). For instance, there is an ATAN2 function used for polar stereo grids where for certain regions of certain grids, floating point differences between 4-byte output values (~1e-7) can be amplified into sizable differences in output field values. Some applications may therefore benefit from the use of 8-byte reals (libip_d or libip_8).
                    +

                    +Interpolation

                    +

                    +Interpolation Methods

                    +

                    There are currently six interpolation methods available in the library:

                      +
                    • bilinear
                    • +
                    • bicubic
                    • +
                    • neighbor
                    • +
                    • budget
                    • +
                    • spectral
                    • +
                    • neighbor-budget
                    • +
                    +

                    Some of the methods have interpolation sub-options. A few methods have restrictions on the type of input or output grids.

                    +

                    Several methods can perform interpolation on fields with bitmaps (i.e. some points on the input grid may be undefined). In this case, the bitmap is interpolated to the output grid. Only valid input points are used to interpolate to valid output points. An output bitmap will also be created to locate invalid data where the output grid extends outside the domain of the input grid.

                    +

                    The driver routines for interpolating scalars and vectors may be found in ipolates_mod. The interpolation method is chosen via the first argument of these routines (variable IP). Sub-options are set via the IPOPT array.

                    +

                    +Bilinear Interpolation Method

                    +

                    Bilinear interpolation is chosen by setting IP=0.

                    +

                    This method has two sub-options:

                    +
                      +
                    1. The percent of valid input data required to make output data (the default is 50%).
                    2. +
                    3. If valid input data is not found near an a spiral search may be performed. The spiral search is only an option for scalar data.
                    4. +
                    +

                    The bilinear method has no restrictions and can interpolate with bitmaps.

                    +

                    +Bicubic Interpolation Method

                    +

                    Bicubic interpolation is chosen by setting IP=1.

                    +

                    This method has two sub-options:

                    +
                      +
                    1. A monotonic constraint option for straight bicubic or for constraining the output value to be within the range of the four surrounding input values.
                    2. +
                    3. The percent of valid input data required to make output data, which defaults to 50%.
                    4. +
                    +

                    The bicubic method cannot interpolate data with bitmaps.

                    +

                    +Neighbor Interpolation Method

                    +

                    Neighbor interpolation is chosen by setting IP=2.

                    +

                    Neighbor interpolation means that the output value is set to the nearest input value. It would be appropriate for interpolating integer fields such as vegetation index.

                    +

                    This method has one sub-option: If valid input data is not found near an an output point, a spiral search is optionally performed.

                    +

                    The neighbor method has no restrictions and can interpolate with bitmaps.

                    +

                    +Budget Interpolation Method

                    +

                    Budget interpolation is chosen by setting IP=3.

                    +

                    Budget interpolation means a low-order interpolation method that quasi-conserves area averages. It would be appropriate for interpolating budget fields such as precipitation.

                    +

                    This method assumes that the field really represents box averages where each box extends halfway to its neighboring grid point in each direction. The method actually averages bilinearly interpolated values in a square array of points distributed within each output grid box.

                    +

                    There are several sub-options:

                    +
                      +
                    1. The number of points in the radius of the square array may be set. The default is 2, meaning that 25 sample points will be averaged for each output value.
                    2. +
                    3. The respective averaging weights for the radius points are adjustable. The default is for all weights equal to 1, giving an unweighted average.
                    4. +
                    5. Optionally, one may assume the boxes stretch nearly all the way to each of the neighboring grid points and the weights are the adjoint of the bilinear interpolation weights.
                    6. +
                    7. The percent of valid input data required to make output data is adjustable. The default is 50%.
                    8. +
                    9. In cases where there is no or insufficient valid input data, a spiral search may be invoked to search for the nearest valid data. search square (scalar interpolation only).
                    10. +
                    +

                    This method can interpolate data with bitmaps.

                    +

                    +Spectral Interpolation Method

                    +

                    The spectral interpolation scheme is chosen by setting IP=4.

                    +

                    This method has two sub-options:

                    +
                      +
                    1. set the spectral shape (triangular or rhomboidal)
                    2. +
                    3. set the spectral truncation.
                    4. +
                    +

                    The input grid must be a global cylindrical grid (either Gaussian or equidistant). This method cannot interpolate data with bitmaps.

                    +

                    Unless the output grid is a global cylindrical grid, a polar stereographic grid centered at the pole, or a Mercator grid, this method can be quite expensive.

                    +

                    +Neighbor-Budget Interpolation Method

                    +

                    Neighbor-budget interpolation is chosen by setting IP=6.

                    +

                    This method computes weighted averages of neighbor points arranged in a square box centered around each output grid point and stretching nearly halfway to each of the neighboring grid points. The main difference with the budget interpolation (IP=3) is neighbor vs bilinear interpolation of the square box of points.

                    +

                    There are the following sub-options:

                    +
                      +
                    1. The number of points in the radius of the square array may be set. The default is 2, meaning that 25 sample points will be averaged for each output value.
                    2. +
                    3. The respective averaging weights for the radius points are adjustable. The default is for all weights equal to 1, giving an unweighted average.
                    4. +
                    5. The percent of valid input data required to make output data is adjustable. The default is 50%.
                    6. +
                    +

                    +Vectors and Scalars

                    +

                    The library can handle two-dimensional vector fields as well as scalar fields. The input and output vectors are rotated if necessary so that they are either resolved relative to their defined grid in the direction of increasing x and y coordinates or resolved relative to eastward and northward directions on the earth. The rotation is determined by the grid definitions.

                    +

                    Vectors are generally interpolated (by all methods except spectral interpolation) by moving the relevant input vectors along a great circle to the output point, keeping their orientations with respect to the great circle constant, before independently interpolating the respective components. This ensures that vector interpolation will be consistent over the whole globe including the poles.

                    +

                    +Grids

                    +

                    The input and output grids are defined by their respective GRIB2 grid definition template and template number as decoced by the NCEP G2 library. There are six map projections recognized by the library:

                    + + + + + + + + + + + + + + + +
                    Grid Template Number Map projection
                    00 Equidistant cyclindrical
                    01 Rotated equidistant cylindrical
                    10 Mercator cyclindrical
                    20 Polar stereographic azimuthal
                    30 Lambert conformal conical
                    40 Gaussian equidistant cyclindrical
                    +

                    If the output grid definition template number is negative, then the output data may be just a set of station points. In this case, the user must pass the number of points to be output along with their latitudes and longitudes.

                    +

                    For vector interpolation, the vector rotations parameters must also be passed. On the other hand, for non-negative output data representation types, the number of output grid points and their latitudes and longitudes (and the vector rotation parameters for vector interpolation) are all returned by the interpolation subprograms.

                    +

                    If an output equidistant cylindrical grid contains multiple pole points, then the pole points are forced to be self-consistent. That is, scalar fields are obliged to be constant at the pole and vector components are obliged to exhibit a wavenumber one variation at the pole.

                    +

                    Generally, only regular grids can be interpolated in this library. However, the thinned WAFS grids may be expanded to a regular grid (or vice versa) using subprograms ipxwafs(), ipxwafs2(), or ipxwafs3(). Eta data (with Arakawa "E" staggering) on the "H" or "V" grid may be expanded to a filled regular grid (or vice versa) using subprogram ipxetas().

                    +

                    +Return Codes

                    +

                    The return code issued by an interpolation subprogram determines whether it ran successfully or how it failed. Check nonzero return codes against the docblock of the respective subprogram.

                    +

                    +Entry point list: interpolation

                    +

                    Scalar and vecotr field interpolation subprograms can be found in the relevant module documentation:

                    + + + + + + + + + + + + + + + + + + + + + + + +
                    Name Function
                    ipolates_mod Iredell's polate
                    bilinear_interp_mod bilinear interpolation
                    bicubic_interp_mod bicubic interpolation
                    neighbor_interp_mod neighbor interpolation
                    budget_interp_mod budget interpolation
                    spectral_interp_mod spectral interpolation
                    neighbor_budget_interp_mod neighbor-budget interpolation
                    polfixs() make multiple pole scalar values consistent
                    movect() move a vector along a great circle
                    polfixv() make multiple pole vector values consistent
                    +

                    Grid description section decoders:

                    + + + + + + + + + + + + + + + + + + + + + + + +
                    Name Function
                    gdswzd() grid description section (GDS) wizard
                    gdswzd_c() C wrapper for calling gdswzd
                    gdswzd_equid_cylind() GDS wizard for equidistant cyclindrical
                    gdswzd_mercator() GDS wizard for mercator cyclindrical
                    gdswzd_lambert_conf() GDS wizard for lambert conformal conical
                    gdswzd_gaussian() GDS wizard for gaussian cyclindrical
                    gdswzd_polar_stereo() GDS wizard for polar stereographic
                    gdswzd_rot_equid_cylind_egrid() GDS wizard for rotated equidistant cyclindrical "e" stagger.
                    gdswzd_rot_equid_cylind() GDS wizard for rotated equidistant cyclindrical non "e" stagger.
                    field_pos() return field position for a given grid point
                    +

                    Transform subprograms for special irregular grids:

                    + + + + + + + + + +
                    Name Function
                    ipxwafs() expand or contract wafs grids
                    ipxwafs2() expand or contract wafs grids
                    ipxwafs3() expand or contract wafs grids
                    +

                    +Spectral Transformation & Processing

                    +

                    The library's spectral processing subroutines can handle both scalar and two-dimensional vector fields. Each vector field will be represented in spectral space appropriately by its respective spherical divergence and curl (vorticity), thus avoiding the pole problems associated with representing components separately.

                    +

                    Some of the functions performed by the library are spectral interpolations between two grids, spectral truncations in place on a grid, and basic spectral transforms between grid and wave space. Only global Gaussian or global equidistant cylindrical grids are allowed for transforming into wave space. There are no such restricitions on grids for transforming from wave space. However, there are special fast entry points for transforming wave space to polar stereographic and Mercator grids as well as the aforementioned cylindrical grids.

                    +

                    The indexing of the cylindrical transform grids is totally general. The grids may run north to south or south to north; they may run east to west or west to east; they may start at any longitude as long as the prime meridian is on the grid; they may be dimensioned in any order (e.g. (i,j,k), (k,j,i), (i,k,nfield,j), etc.). Furthermore, the transform may be performed on only some of the latitudes at one time as long as both hemisphere counterparts are transformed at the same time (as in the global spectral model). The grid indexing will default to the customary global indexing, i.e. north to south, east to west, prime meridian as first longitude, and (i,j,k) order.

                    +

                    The wave space may be either triangular or rhomboidal in shape. Its internal indexing is strictly "IBM order", i.e. zonal wavenumber is the slower index with the real and imaginary components always paired together. The imaginary components of all the zonally symmetric modes should always be zero, as should the global mean of any divergence and vorticity fields. The stride between the start of successive wave fields is general, defaulting to the computed length of each field.

                    +

                    +Entry Point List: Spectral Interpolation & Transformation

                    +

                    Spectral interpolations or truncations between grid and grid

                    + + + + + + + + + + + + + + + + + + + +
                    Name Function
                    sptrun() Spectrally truncate gridded scalar fields
                    sptrunv() Spectrally truncate gridded vector fields
                    sptrung() Spectrally interpolate scalars to stations
                    sptrungv() Spectrally interpolate vectors to stations
                    sptruns() Spectrally interpolate scalars to polar stereo
                    sptrunsv() Spectrally interpolate vectors to polar stereo
                    sptrunm() Spectrally interpolate scalars to Mercator
                    sptrunmv() Spectrally interpolate vectors to Mercator
                    +

                    Spectral transforms between wave and grid

                    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    Name Function
                    sptran() Perform a scalar spherical transform
                    sptranv() Perform a vector spherical transform
                    sptrand() Perform a gradient spherical transform
                    sptgpt() Transform spectral scalar to station points
                    sptgptv() Transform spectral vector to station points
                    sptgptd() Transform spectral to station point gradients
                    sptgps() Transform spectral scalar to polar stereo
                    sptgpsv() Transform spectral vector to polar stereo
                    sptgpsd() Transform spectral to polar stereo gradients
                    sptgpm() Transform spectral scalar to Mercator
                    sptgpmv() Transform spectral vector to Mercator
                    sptgpmd() Transform spectral to Mercator gradients
                    +

                    Spectral transform utilities

                    + + + + + + + + + + + + + + + + + + + + + + + +
                    Name Function
                    spwget() Get wave-space constants
                    splat() Compute latitude functions
                    speps() Compute utility spectral fields
                    splegend() Compute Legendre polynomials
                    spanaly() Analyze spectral from Fourier
                    spsynth() Synthesize Fourier from spectral
                    spdz2uv() Compute winds from divergence and vorticity
                    spuv2dz() Compute divergence and vorticity from winds
                    spgradq() Compute gradient in spectral space
                    splaplac() Compute Laplacian in spectral space
                    +

                    +Examples: Interpolation Routines

                    +

                    Example 1. Read a grib 2 file of scalar data on a global regular 1-deg lat/lon grid and call ipolates to interpolate it to NCEP standard grid 218, a lambert conformal grid. Uses the NCEP G2 library to degrib the data.

                    +
                    program example_1
                    +
                    +
                    use ip_mod
                    +
                    use grib_mod ! ncep grib 2 library
                    +
                    +
                    implicit none
                    +
                    +
                    character(len=100) :: input_file
                    +
                    +
                    integer :: iunit, iret, lugi
                    +
                    integer :: mi, mo, no
                    +
                    integer, allocatable :: ibi(:), ibo(:)
                    +
                    integer :: ip, ipopt(20)
                    +
                    integer :: j, jdisc, jpdtn, jgdtn, k, km
                    +
                    integer :: jids(200), jgdt(200), jpdt(200)
                    +
                    integer :: idim_input, jdim_input
                    +
                    integer :: idim_output, jdim_output
                    +
                    +
                    logical :: unpack
                    +
                    logical*1, allocatable :: input_bitmap(:,:), output_bitmap(:,:)
                    +
                    +
                    real, allocatable :: input_data(:,:)
                    +
                    real, allocatable :: output_rlat(:), output_rlon(:)
                    +
                    real, allocatable :: output_data(:,:)
                    +
                    +
                    type(gribfield) :: gfld_input
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! the output grid specs. this is ncep grid 218, a lambert conformal
                    +
                    ! grid. the grid definition information is stored in section 3
                    +
                    ! of a grib 2 message.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    integer, parameter :: igdtnum218 = 30 ! grid definition template number.
                    +
                    ! "30" is lambert conformal.
                    +
                    integer, parameter :: igdtlen218 = 22 ! number of array elements needed
                    +
                    ! for a lambert conf. grid definition
                    +
                    ! template.
                    +
                    integer :: igdtmpl218(igdtlen218) ! the grid definition template.
                    +
                    ! the entries are:
                    +
                    ! 1 -shape of earth, oct 15
                    +
                    ! 2 -scale factor, spherical earth, oct 16
                    +
                    ! 3 -scaled value, spherical earth, octs 17-20
                    +
                    ! 4 -scale factor, major axis of
                    +
                    ! elliptical earth, oct 21
                    +
                    ! 5 -scaled value of major axis of
                    +
                    ! elliptical earth, octs 22-25
                    +
                    ! 6 -scale factor, minor axis of
                    +
                    ! elliptical earth, oct 26
                    +
                    ! 7 -scaled value of minor axis of
                    +
                    ! elliptical earth, octs 27-30
                    +
                    ! 8 -number points along x-axis, octs 31-34
                    +
                    ! 9 -number points along y-axis, octs 35-38
                    +
                    ! 10-latitude of first point, octs 39-42
                    +
                    ! 11-longitude of first point, octs 43-46
                    +
                    ! 12-resolution and component flags, oct 47
                    +
                    ! 13-latitude where grid lengths specified,
                    +
                    ! octs 48-51
                    +
                    ! 14-longitude parallel to y-axis, octs 52-55
                    +
                    ! 15-x-direction grid length, octs 56-59
                    +
                    ! 16-y-direction grid length, octs 60-63
                    +
                    ! 17-projection center flag, oct 64
                    +
                    ! 18-scanning mode, oct 65
                    +
                    ! 19-first tangent latitude from pole, octs 66-69
                    +
                    ! 20-second tangent latitude from pole, octs 70-73
                    +
                    ! 21-latitude of south pole, octs 74-77
                    +
                    ! 22-longitude of south pole, octs 78-81
                    +
                    +
                    integer, parameter :: missing=b'11111111111111111111111111111111'
                    +
                    data igdtmpl218 / 6, 255, missing, 255, missing, 255, missing, 614, 428, &
                    +
                    12190000, 226541000, 56, 25000000, 265000000, &
                    +
                    12191000, 12191000, 0, 64, 25000000, 25000000, -90000000, 0/
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! open the grib 2 file containing data to be interpolated. for this
                    +
                    ! example, there are two data records.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    iunit=9
                    +
                    input_file="${path}/input.data.grib2"
                    +
                    call baopenr (iunit, input_file, iret)
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! prep for call to g2 library to degrib data. the data are on a regular
                    +
                    ! lat/lon grid with i/j dimension of 360/181.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    idim_input = 360 ! the i/j dimensions of input grid
                    +
                    jdim_input = 181
                    +
                    mi = idim_input * jdim_input ! total number of pts, input grid
                    +
                    +
                    jdisc = -1 ! search for any discipline
                    +
                    jpdtn = -1 ! search for any product definition template number
                    +
                    jgdtn = 0 ! search for grid definition template number 0 - regular lat/lon grid
                    +
                    jids = -9999 ! array of values in identification section, set to wildcard
                    +
                    jgdt = -9999 ! array of values in grid definition template 3.m
                    +
                    jgdt(8) = idim_input ! search for grid with i/j of 360/181
                    +
                    jgdt(9) = jdim_input
                    +
                    jpdt = -9999 ! array of values in product definition template 4.n
                    +
                    unpack = .true. ! unpack data
                    +
                    lugi = 0 ! no index file
                    +
                    +
                    nullify(gfld_input%idsect)
                    +
                    nullify(gfld_input%local)
                    +
                    nullify(gfld_input%list_opt)
                    +
                    nullify(gfld_input%igdtmpl) ! holds the grid definition template information
                    +
                    nullify(gfld_input%ipdtmpl)
                    +
                    nullify(gfld_input%coord_list)
                    +
                    nullify(gfld_input%idrtmpl)
                    +
                    nullify(gfld_input%bmap) ! holds the bitmap
                    +
                    nullify(gfld_input%fld) ! holds the data
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! degrib the data. non-zero "iret" indicates a problem during degrib.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    km = 2 ! number of records to interpolate
                    +
                    +
                    allocate(ibi(km))
                    +
                    allocate(input_bitmap(mi,km))
                    +
                    allocate(input_data(mi,km))
                    +
                    +
                    do j = 0, (km-1) ! number of records to skip
                    +
                    +
                    call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
                    +
                    unpack, k, gfld_input, iret)
                    +
                    +
                    if (iret /= 0) stop
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! does input data have a bitmap?
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    if (gfld_input%ibmap==0) then ! input data has bitmap
                    +
                    ibi(k) = 1 ! tell ipolates to use bitmap
                    +
                    input_bitmap(:,k) = gfld_input%bmap
                    +
                    else ! no bitmap, data everywhere
                    +
                    ibi(k) = 0 ! tell ipolates there is no bitmap
                    +
                    input_bitmap(:,k) = .true.
                    +
                    endif
                    +
                    +
                    input_data(:,k) = gfld_input%fld ! the input data field
                    +
                    +
                    enddo
                    +
                    +
                    call baclose (iunit, iret)
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! setup arguments for ipolates (scalar interpolation) call.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    ip = 0 ! bilinear interpolation
                    +
                    ipopt = 0 ! options for bilinear:
                    +
                    ipopt(1) = 75 ! set minimum mask to 75%
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! the i/j dimensions of the output grid.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    idim_output = igdtmpl218(8)
                    +
                    jdim_output = igdtmpl218(9)
                    +
                    mo = idim_output * jdim_output ! total number of output pts
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! will hold the latitude, longitude, data and bitmap on the output grid,
                    +
                    ! which are computed in ipolates.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    allocate (ibo(km)) ! bitmap flags on output grid
                    +
                    allocate (output_rlat(mo))
                    +
                    allocate (output_rlon(mo))
                    +
                    allocate (output_data(mo,km))
                    +
                    allocate (output_bitmap(mo,km))
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! call ipolates to interpolate scalar data. non-zero "iret" indicates
                    +
                    ! a problem.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    call ipolates(ip, ipopt, gfld_input%igdtnum, gfld_input%igdtmpl, &
                    +
                    gfld_input%igdtlen, igdtnum218, igdtmpl218, igdtlen218, &
                    +
                    mi, mo, km, ibi, input_bitmap, input_data, no, output_rlat, &
                    +
                    output_rlon, ibo, output_bitmap, output_data, iret)
                    +
                    +
                    if (iret /= 0) stop
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! write interpolated data to file. if ipolates computed a bitmap (ibo==1)
                    +
                    ! for the output grid, one may mask out this data with a flag value.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    open (10, file="./output.bin", access='direct', recl=idim_output*jdim_output*4)
                    +
                    +
                    do k = 1, km
                    +
                    if(ibo(k)==1) where (.not. output_bitmap(:,k)) output_data(:,k) = -999.
                    +
                    write(10, rec=k) output_data(:,k)
                    +
                    enddo
                    +
                    write(10, rec=km+1) output_rlat
                    +
                    write(10, rec=km+2) output_rlon
                    +
                    +
                    close(10)
                    +
                    +
                    end program example_1
                    +
                    Top-level module for the ip library which re-exports public routines such as ipolates,...
                    Definition: ip_mod.F90:6
                    +

                    Example 2. Read a grib 2 file of u/v wind data on a global regular 1-deg lat/lon grid and call ipolatev to interpolate it to four random station points. Uses the NCEP G2 library to degrib the data.

                    +
                    program example_2
                    +
                    +
                    use grib_mod ! ncep grib 2 library
                    +
                    +
                    implicit none
                    +
                    +
                    character(len=100) :: input_file
                    +
                    +
                    integer :: iunit, iret, lugi
                    +
                    integer :: mi, mo, no
                    +
                    integer :: ibi, ibo
                    +
                    integer :: ip, ipopt(20)
                    +
                    integer :: j, jdisc, jpdtn, jgdtn, k, km
                    +
                    integer :: jids(200), jgdt(200), jpdt(200)
                    +
                    integer :: idim_input, jdim_input
                    +
                    +
                    logical :: unpack
                    +
                    logical*1, allocatable :: input_bitmap(:), output_bitmap(:)
                    +
                    +
                    real, allocatable :: input_u_data(:), input_v_data(:)
                    +
                    real, allocatable :: output_rlat(:), output_rlon(:)
                    +
                    real, allocatable :: output_crot(:), output_srot(:)
                    +
                    real, allocatable :: output_u_data(:), output_v_data(:)
                    +
                    +
                    type(gribfield) :: gfld_input
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! the output "grid" is a series of random station points. in this case,
                    +
                    ! set the grid definition template number of a negative number.
                    +
                    ! the grid definition template array information is not used, so set
                    +
                    ! to a flag value.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    integer, parameter :: igdtnumo = -1
                    +
                    integer, parameter :: igdtleno = 1
                    +
                    integer :: igdtmplo(igdtleno)
                    +
                    +
                    data igdtmplo / -9999 /
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! open the grib 2 file containing data to be interpolated. for this
                    +
                    ! example, there is one record of u-wind and v-wind.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    iunit=9
                    +
                    input_file="./reg_tests/copygb2/data/uv_wind.grb2"
                    +
                    call baopenr (iunit, input_file, iret)
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! prep for call to g2 library to degrib data. the data are on a regular
                    +
                    ! lat/lon grid with i/j dimension of 360/181.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    idim_input = 360 ! the i/j dimensions of input grid
                    +
                    jdim_input = 181
                    +
                    mi = idim_input * jdim_input ! total number of pts, input grid
                    +
                    +
                    jdisc = -1 ! search for any discipline
                    +
                    jpdtn = -1 ! search for any product definition template number
                    +
                    jgdtn = 0 ! search for grid definition template number 0 - regular lat/lon grid
                    +
                    jids = -9999 ! array of values in identification section, set to wildcard
                    +
                    jgdt = -9999 ! array of values in grid definition template 3.m
                    +
                    jgdt(8) = idim_input ! search for grid with i/j of 360/181
                    +
                    jgdt(9) = jdim_input
                    +
                    jpdt = -9999 ! array of values in product definition template 4.n
                    +
                    unpack = .true. ! unpack data
                    +
                    lugi = 0 ! no index file
                    +
                    +
                    nullify(gfld_input%idsect)
                    +
                    nullify(gfld_input%local)
                    +
                    nullify(gfld_input%list_opt)
                    +
                    nullify(gfld_input%igdtmpl) ! holds the grid definition template information
                    +
                    nullify(gfld_input%ipdtmpl)
                    +
                    nullify(gfld_input%coord_list)
                    +
                    nullify(gfld_input%idrtmpl)
                    +
                    nullify(gfld_input%bmap) ! holds the bitmap
                    +
                    nullify(gfld_input%fld) ! holds the data
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! degrib the data. non-zero "iret" indicates a problem during degrib.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    allocate(input_bitmap(mi))
                    +
                    allocate(input_u_data(mi))
                    +
                    allocate(input_v_data(mi))
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! read u-wind record.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    j = 0
                    +
                    call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
                    +
                    unpack, k, gfld_input, iret)
                    +
                    +
                    if (iret /= 0) stop
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! does input data have a bitmap?
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    if (gfld_input%ibmap==0) then ! input data has bitmap
                    +
                    ibi = 1 ! tell ipolates to use bitmap
                    +
                    input_bitmap = gfld_input%bmap
                    +
                    else ! no bitmap, data everywhere
                    +
                    ibi = 0 ! tell ipolates there is no bitmap
                    +
                    input_bitmap = .true.
                    +
                    endif
                    +
                    +
                    input_u_data = gfld_input%fld ! the input u-wind data
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! read v-wind record.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    j = 1
                    +
                    call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
                    +
                    unpack, k, gfld_input, iret)
                    +
                    +
                    if (iret /= 0) stop
                    +
                    +
                    input_v_data = gfld_input%fld ! the input v-wind data
                    +
                    +
                    call baclose (iunit, iret)
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! setup arguments for ipolatev (vector interpolation) call.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    km = 1 ! number of records to interpolate
                    +
                    ip = 0 ! bilinear interpolation
                    +
                    ipopt = 0 ! options for bilinear:
                    +
                    ipopt(1) = 75 ! set minimum mask to 75%
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! interpolate to four random station points.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    mo = 4
                    +
                    no = mo
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! when interpolating to random station points, need to pass to ipolatev
                    +
                    ! their latitude, longitude and the sines and cosines of the vector
                    +
                    ! rotation angles. the vector rotation is defined:
                    +
                    !
                    +
                    ! ugrid=crot*uearth-sort*vearth
                    +
                    ! vgrid=srot*uearth+cort*vearth
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    allocate (output_rlat(mo))
                    +
                    allocate (output_rlon(mo))
                    +
                    allocate (output_srot(mo))
                    +
                    allocate (output_crot(mo))
                    +
                    allocate (output_u_data(mo))
                    +
                    allocate (output_v_data(mo))
                    +
                    allocate (output_bitmap(mo))
                    +
                    +
                    output_rlat(1) = 45.0
                    +
                    output_rlon(1) = -100.0
                    +
                    output_rlat(2) = 35.0
                    +
                    output_rlon(2) = -100.0
                    +
                    output_rlat(3) = 40.0
                    +
                    output_rlon(3) = -90.0
                    +
                    output_rlat(4) = 35.0
                    +
                    output_rlon(4) = -120.0
                    +
                    +
                    output_srot = 0.0 ! no turning of wind
                    +
                    output_crot = 1.0
                    +
                    +
                    !---------------------------------------------------------------------------
                    +
                    ! call ipolatev to interpolate vector data. non-zero "iret" indicates
                    +
                    ! a problem.
                    +
                    !---------------------------------------------------------------------------
                    +
                    +
                    call ipolatev(ip, ipopt, gfld_input%igdtnum, gfld_input%igdtmpl, &
                    +
                    gfld_input%igdtlen, igdtnumo, igdtmplo, igdtleno, &
                    +
                    mi, mo, km, ibi, input_bitmap, input_u_data, input_v_data, &
                    +
                    no, output_rlat, output_rlon, output_crot, output_srot, &
                    +
                    ibo, output_bitmap, output_u_data, output_v_data, iret)
                    +
                    +
                    if (iret /= 0) stop
                    +
                    +
                    do k = 1, mo
                    +
                    print*,'station point ',k,' latitude ',output_rlat(k),' longitude ', &
                    +
                    output_rlon(k), ' u-wind ', output_u_data(k), ' v-wind ', output_v_data(k)
                    +
                    enddo
                    +
                    +
                    end program example_2
                    +

                    +Examples: Spectral Processing & Transformation

                    +

                    Example 1. Interpolate heights and winds from a latlon grid to two antipodal polar stereographic grids. Subprograms GETGB and PUTGB from w3lib are referenced.

                    +
                    c unit number 11 is the input latlon grib file
                    +
                    c unit number 31 is the input latlon grib index file
                    +
                    c unit number 51 is the output northern polar stereographic grib file
                    +
                    c unit number 52 is the output southern polar stereographic grib file
                    +
                    c nominal spectral truncation is r40
                    +
                    c maximum input gridsize is 360x181
                    +
                    c maximum number of levels wanted is 12
                    +
                    parameter(lug=11,lui=31,lun=51,lus=52)
                    +
                    parameter(iromb=1,maxwv=40,jf=360*181,kx=12)
                    +
                    integer kp5(kx),kp6(kx),kp7(kx)
                    +
                    integer kpo(kx)
                    +
                    data kpo/1000,850,700,500,400,300,250,200,150,100,70,50/
                    +
                    c height
                    +
                    km=12
                    +
                    kp5=7
                    +
                    kp6=100
                    +
                    kp7=kpo
                    +
                    call gs65(lug,lui,lun,lus,jf,km,kp5,kp6,kp7,iromb,maxwv)
                    +
                    c winds
                    +
                    km=12
                    +
                    kp5=33
                    +
                    kp6=100
                    +
                    kp7=kpo
                    +
                    call gv65(lug,lui,lun,lus,jf,km,kp5,kp6,kp7,iromb,maxwv)
                    +
                    c
                    +
                    stop
                    +
                    end
                    +
                    c
                    +
                    subroutine gs65(lug,lui,lun,lus,jf,km,kp5,kp6,kp7,iromb,maxwv)
                    +
                    c interpolates a scalar field using spectral transforms.
                    +
                    integer kp5(km),kp6(km),kp7(km)
                    +
                    c output grids are 65x65 (381 km true at latitide 60).
                    +
                    c nh grid oriented at 280E; sh grid oriented at 100E.
                    +
                    parameter(nph=32,nps=2*nph+1,npq=nps*nps)
                    +
                    parameter(true=60.,xmesh=381.e3,orient=280.)
                    +
                    parameter(rerth=6.3712e6)
                    +
                    parameter(pi=3.14159265358979,dpr=180./pi)
                    +
                    real gn(npq,km),gs(npq,km)
                    +
                    integer jpds(25),jgds(22),kpds(25,km),kgds(22,km)
                    +
                    logical lb(jf)
                    +
                    real f(jf,km)
                    +
                    c
                    +
                    g2=((1.+sin(abs(true)/dpr))*rerth/xmesh)**2
                    +
                    r2=2*nph**2
                    +
                    rlatn1=dpr*asin((g2-r2)/(g2+r2))
                    +
                    rlonn1=mod(orient+315,360.)
                    +
                    rlats1=-rlatn1
                    +
                    rlons1=mod(rlonn1+270,360.)
                    +
                    jpds=-1
                    +
                    do k=1,km
                    +
                    jpds(5)=kp5(k)
                    +
                    jpds(6)=kp6(k)
                    +
                    jpds(7)=kp7(k)
                    +
                    j=0
                    +
                    call getgb(lug,lui,jf,j,jpds,jgds,kf,j,kpds(1,k),kgds(1,k),
                    +
                    & lb,f(1,k),iret)
                    +
                    if(iret.ne.0) call exit(1)
                    +
                    if(mod(kpds(4,k)/64,2).eq.1) call exit(2)
                    +
                    enddo
                    +
                    idrt=kgds(1,1)
                    +
                    imax=kgds(2,1)
                    +
                    jmax=kgds(3,1)
                    +
                    c
                    +
                    call sptruns(iromb,maxwv,idrt,imax,jmax,km,nps,
                    +
                    & 0,0,0,jf,0,0,0,0,true,xmesh,orient,f,gn,gs)
                    +
                    c
                    +
                    do k=1,km
                    +
                    kpds(3,k)=27
                    +
                    kgds(1,k)=5
                    +
                    kgds(2,k)=nps
                    +
                    kgds(3,k)=nps
                    +
                    kgds(4,k)=nint(rlatn1*1.e3)
                    +
                    kgds(5,k)=nint(rlonn1*1.e3)
                    +
                    kgds(6,k)=8
                    +
                    kgds(7,k)=nint(orient*1.e3)
                    +
                    kgds(8,k)=nint(xmesh)
                    +
                    kgds(9,k)=nint(xmesh)
                    +
                    kgds(10,k)=0
                    +
                    kgds(11,k)=64
                    +
                    call putgb(lun,npq,kpds(1,k),kgds(1,k),lb,gn(1,k),iret)
                    +
                    enddo
                    +
                    do k=1,km
                    +
                    kpds(3,k)=28
                    +
                    kgds(1,k)=5
                    +
                    kgds(2,k)=nps
                    +
                    kgds(3,k)=nps
                    +
                    kgds(4,k)=nint(rlats1*1.e3)
                    +
                    kgds(5,k)=nint(rlons1*1.e3)
                    +
                    kgds(6,k)=8
                    +
                    kgds(7,k)=nint(mod(orient+180,360.)*1.e3)
                    +
                    kgds(8,k)=nint(xmesh)
                    +
                    kgds(9,k)=nint(xmesh)
                    +
                    kgds(10,k)=128
                    +
                    kgds(11,k)=64
                    +
                    call putgb(lus,npq,kpds(1,k),kgds(1,k),lb,gs(1,k),iret)
                    +
                    enddo
                    +
                    c
                    +
                    end
                    +
                    c
                    +
                    subroutine gv65(lug,lui,lun,lus,jf,km,kp5,kp6,kp7,iromb,maxwv)
                    +
                    c interpolates a vector field using spectral transforms.
                    +
                    integer kp5(km),kp6(km),kp7(km)
                    +
                    c output grids are 65x65 (381 km true at latitide 60).
                    +
                    c nh grid oriented at 280E; sh grid oriented at 100E.
                    +
                    c winds are rotated to be relative to grid coordinates.
                    +
                    parameter(nph=32,nps=2*nph+1,npq=nps*nps)
                    +
                    parameter(true=60.,xmesh=381.e3,orient=280.)
                    +
                    parameter(rerth=6.3712e6)
                    +
                    parameter(pi=3.14159265358979,dpr=180./pi)
                    +
                    real un(npq,km),vn(npq,km),us(npq,km),vs(npq,km)
                    +
                    integer jpds(25),jgds(22),kpds(25,km),kgds(22,km)
                    +
                    logical lb(jf)
                    +
                    real u(jf,km),v(jf,km)
                    +
                    c
                    +
                    g2=((1.+sin(abs(true)/dpr))*rerth/xmesh)**2
                    +
                    r2=2*nph**2
                    +
                    rlatn1=dpr*asin((g2-r2)/(g2+r2))
                    +
                    rlonn1=mod(orient+315,360.)
                    +
                    rlats1=-rlatn1
                    +
                    rlons1=mod(rlonn1+270,360.)
                    +
                    jpds=-1
                    +
                    do k=1,km
                    +
                    jpds(5)=kp5(k)
                    +
                    jpds(6)=kp6(k)
                    +
                    jpds(7)=kp7(k)
                    +
                    j=0
                    +
                    call getgb(lug,lui,jf,j,jpds,jgds,kf,j,kpds(1,k),kgds(1,k),
                    +
                    & lb,u(1,k),iret)
                    +
                    if(iret.ne.0) call exit(1)
                    +
                    if(mod(kpds(4,k)/64,2).eq.1) call exit(2)
                    +
                    jpds=kpds(:,k)
                    +
                    jgds=kgds(:,k)
                    +
                    jpds(5)=jpds(5)+1
                    +
                    j=0
                    +
                    call getgb(lug,lui,jf,j,jpds,jgds,kf,j,kpds(1,k),kgds(1,k),
                    +
                    & lb,v(1,k),iret)
                    +
                    if(iret.ne.0) call exit(1)
                    +
                    if(mod(kpds(4,k)/64,2).eq.1) call exit(2)
                    +
                    enddo
                    +
                    idrt=kgds(1,1)
                    +
                    imax=kgds(2,1)
                    +
                    jmax=kgds(3,1)
                    +
                    c
                    +
                    call sptrunsv(iromb,maxwv,idrt,imax,jmax,km,nps,
                    +
                    & 0,0,0,jf,0,0,0,0,true,xmesh,orient,u,v,
                    +
                    & .true.,un,vn,us,vs,.false.,dum,dum,dum,dum,
                    +
                    & .false.,dum,dum,dum,dum)
                    +
                    c
                    +
                    do k=1,km
                    +
                    kpds(3,k)=27
                    +
                    kgds(1,k)=5
                    +
                    kgds(2,k)=nps
                    +
                    kgds(3,k)=nps
                    +
                    kgds(4,k)=nint(rlatn1*1.e3)
                    +
                    kgds(5,k)=nint(rlonn1*1.e3)
                    +
                    kgds(6,k)=8
                    +
                    kgds(7,k)=nint(orient*1.e3)
                    +
                    kgds(8,k)=nint(xmesh)
                    +
                    kgds(9,k)=nint(xmesh)
                    +
                    kgds(10,k)=0
                    +
                    kgds(11,k)=64
                    +
                    kpds(5,k)=kp5(k)
                    +
                    call putgb(lun,npq,kpds(1,k),kgds(1,k),lb,un(1,k),iret)
                    +
                    enddo
                    +
                    do k=1,km
                    +
                    kpds(3,k)=27
                    +
                    kgds(1,k)=5
                    +
                    kgds(2,k)=nps
                    +
                    kgds(3,k)=nps
                    +
                    kgds(4,k)=nint(rlatn1*1.e3)
                    +
                    kgds(5,k)=nint(rlonn1*1.e3)
                    +
                    kgds(6,k)=8
                    +
                    kgds(7,k)=nint(orient*1.e3)
                    +
                    kgds(8,k)=nint(xmesh)
                    +
                    kgds(9,k)=nint(xmesh)
                    +
                    kgds(10,k)=0
                    +
                    kgds(11,k)=64
                    +
                    kpds(5,k)=kp5(k)+1
                    +
                    call putgb(lun,npq,kpds(1,k),kgds(1,k),lb,vn(1,k),iret)
                    +
                    enddo
                    +
                    do k=1,km
                    +
                    kpds(3,k)=28
                    +
                    kgds(1,k)=5
                    +
                    kgds(2,k)=nps
                    +
                    kgds(3,k)=nps
                    +
                    kgds(4,k)=nint(rlats1*1.e3)
                    +
                    kgds(5,k)=nint(rlons1*1.e3)
                    +
                    kgds(6,k)=8
                    +
                    kgds(7,k)=nint(mod(orient+180,360.)*1.e3)
                    +
                    kgds(8,k)=nint(xmesh)
                    +
                    kgds(9,k)=nint(xmesh)
                    +
                    kgds(10,k)=128
                    +
                    kgds(11,k)=64
                    +
                    kpds(5,k)=kp5(k)
                    +
                    call putgb(lus,npq,kpds(1,k),kgds(1,k),lb,us(1,k),iret)
                    +
                    enddo
                    +
                    do k=1,km
                    +
                    kpds(3,k)=28
                    +
                    kgds(1,k)=5
                    +
                    kgds(2,k)=nps
                    +
                    kgds(3,k)=nps
                    +
                    kgds(4,k)=nint(rlats1*1.e3)
                    +
                    kgds(5,k)=nint(rlons1*1.e3)
                    +
                    kgds(6,k)=8
                    +
                    kgds(7,k)=nint(mod(orient+180,360.)*1.e3)
                    +
                    kgds(8,k)=nint(xmesh)
                    +
                    kgds(9,k)=nint(xmesh)
                    +
                    kgds(10,k)=128
                    +
                    kgds(11,k)=64
                    +
                    kpds(5,k)=kp5(k)+1
                    +
                    call putgb(lus,npq,kpds(1,k),kgds(1,k),lb,vs(1,k),iret)
                    +
                    enddo
                    +
                    c
                    +
                    end
                    +
                    subroutine sptruns(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NPS, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, TRUE, XMESH, ORIENT, GRIDI, GN, GS)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptruns.f:75
                    +
                    subroutine sptrunsv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NPS, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, TRUE, XMESH, ORIENT, GRIDUI, GRIDVI, LUV, UN, VN, US, VS, LDZ, DN, ZN, DS, ZS, LPS, PN, SN, PS, SS)
                    This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields...
                    Definition: sptrunsv.f:94
                    +

                    Example 2. Spectrally truncate winds in place on a latlon grid.

                    +
                    c unit number 11 is the input latlon grib file
                    +
                    c unit number 31 is the input latlon grib index file
                    +
                    c unit number 51 is the output latlon grib file
                    +
                    c nominal spectral truncation is r40
                    +
                    c maximum input gridsize is 360x181
                    +
                    c maximum number of levels wanted is 12
                    +
                    parameter(lug=11,lui=31,luo=51)
                    +
                    parameter(iromb=1,maxwv=40,jf=360*181,kx=12)
                    +
                    integer kp5(kx),kp6(kx),kp7(kx)
                    +
                    integer kpo(kx)
                    +
                    data kpo/1000,850,700,500,400,300,250,200,150,100,70,50/
                    +
                    c winds
                    +
                    km=12
                    +
                    kp5=33
                    +
                    kp6=100
                    +
                    kp7=kpo
                    +
                    call gvr40(lug,lui,luo,jf,km,kp5,kp6,kp7,iromb,maxwv)
                    +
                    c
                    +
                    stop
                    +
                    end
                    +
                    c
                    +
                    subroutine gvr40(lug,lui,luo,jf,km,kp5,kp6,kp7,iromb,maxwv)
                    +
                    c interpolates a vector field using spectral transforms.
                    +
                    integer kp5(km),kp6(km),kp7(km)
                    +
                    integer jpds(25),jgds(22),kpds(25,km),kgds(22,km)
                    +
                    logical lb(jf)
                    +
                    real u(jf,km),v(jf,km)
                    +
                    c
                    +
                    jpds=-1
                    +
                    do k=1,km
                    +
                    jpds(5)=kp5(k)
                    +
                    jpds(6)=kp6(k)
                    +
                    jpds(7)=kp7(k)
                    +
                    j=0
                    +
                    call getgb(lug,lui,jf,j,jpds,jgds,kf,j,kpds(1,k),kgds(1,k),
                    +
                    & lb,u(1,k),iret)
                    +
                    if(iret.ne.0) call exit(1)
                    +
                    if(mod(kpds(4,k)/64,2).eq.1) call exit(2)
                    +
                    jpds=kpds(:,k)
                    +
                    jgds=kgds(:,k)
                    +
                    jpds(5)=jpds(5)+1
                    +
                    j=0
                    +
                    call getgb(lug,lui,jf,j,jpds,jgds,kf,j,kpds(1,k),kgds(1,k),
                    +
                    & lb,v(1,k),iret)
                    +
                    if(iret.ne.0) call exit(1)
                    +
                    if(mod(kpds(4,k)/64,2).eq.1) call exit(2)
                    +
                    enddo
                    +
                    idrt=kgds(1,1)
                    +
                    imax=kgds(2,1)
                    +
                    jmax=kgds(3,1)
                    +
                    c
                    +
                    call sptrunv(iromb,maxwv,idrt,imax,jmax,idrt,imax,jmax,km,
                    +
                    & 0,0,0,jf,0,0,jf,0,u,v,.true.,u,v,
                    +
                    & .false.,dum,dum,.false.,dum,dum)
                    +
                    c
                    +
                    do k=1,km
                    +
                    kpds(5,k)=kp5(k)
                    +
                    call putgb(luo,kf,kpds(1,k),kgds(1,k),lb,u(1,k),iret)
                    +
                    enddo
                    +
                    do k=1,km
                    +
                    kpds(5,k)=kp5(k)+1
                    +
                    call putgb(luo,kf,kpds(1,k),kgds(1,k),lb,v(1,k),iret)
                    +
                    enddo
                    +
                    c
                    +
                    end
                    +
                    subroutine sptrunv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRIDUI, GRIDVI, LUV, GRIDUO, GRIDVO, LDZ, GRIDDO, GRIDZO, LPS, GRIDPO, GRIDSO)
                    This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields...
                    Definition: sptrunv.f:96
                    +

                    Example 3. Compute latlon temperatures from spectral temperatures and compute latlon winds from spectral divergence and vorticity.

                    +
                    c unit number 11 is the input sigma file
                    +
                    c unit number 51 is the output latlon file
                    +
                    c nominal spectral truncation is t62
                    +
                    c output gridsize is 144x73
                    +
                    c number of levels is 28
                    +
                    parameter(iromb=0,maxwv=62)
                    +
                    parameter(idrt=0,im=144,jm=73)
                    +
                    parameter(levs=28)
                    +
                    parameter(mx=(maxwv+1)*((iromb+1)*maxwv+2)/2)
                    +
                    real t(mx,levs),d(mx,levs),z(mx,levs)
                    +
                    real tg(im,jm,km),ug(im,jm,km),vg(im,jm,km)
                    +
                    c temperature
                    +
                    do k=1,4
                    +
                    read(11)
                    +
                    enddo
                    +
                    do k=1,levs
                    +
                    read(11) (t(m,k),m=1,mx)
                    +
                    enddo
                    +
                    call sptran(iromb,maxwv,idrt,im,jm,levs,0,0,0,0,0,0,0,0,1,
                    +
                    & t,tg(1,1,1),tg(1,jm,1),1)
                    +
                    call sptran(
                    +
                    do k=1,levs
                    +
                    write(51) ((tg(i,j,k),i=1,im),j=1,jm)
                    +
                    enddo
                    +
                    c winds
                    +
                    do k=1,levs
                    +
                    read(11) (d(m,k),m=1,mx)
                    +
                    read(11) (z(m,k),m=1,mx)
                    +
                    enddo
                    +
                    call sptranv(iromb,maxwv,idrt,im,jm,levs,0,0,0,0,0,0,0,0,1,
                    +
                    & d,z,ug(1,1,1),ug(1,jm,1),vg(1,1,1),vg(1,jm,1),1)
                    +
                    do k=1,levs
                    +
                    write(51) ((ug(i,j,k),i=1,im),j=1,jm)
                    +
                    write(51) ((vg(i,j,k),i=1,im),j=1,jm)
                    +
                    enddo
                    +
                    end
                    +
                    subroutine sptran(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptran.f:88
                    +
                    subroutine sptranv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranv.f:91
                    +
                    + + + + + + diff --git a/ver-5.0.0/interfacebicubic__interp__mod_1_1interpolate__bicubic.html b/ver-5.0.0/interfacebicubic__interp__mod_1_1interpolate__bicubic.html new file mode 100644 index 00000000..287c1113 --- /dev/null +++ b/ver-5.0.0/interfacebicubic__interp__mod_1_1interpolate__bicubic.html @@ -0,0 +1,473 @@ + + + + + + + +NCEPLIBS-ip: bicubic_interp_mod::interpolate_bicubic Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    bicubic_interp_mod::interpolate_bicubic Interface Reference
                    +
                    +
                    + + + + + + + + +

                    +Private Member Functions

                    subroutine interpolate_bicubic_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     This subprogram performs bicubic interpolation from any grid to any grid for scalar fields. More...
                     
                    subroutine interpolate_bicubic_vector (ipopt, grid_in, grid_out, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram performs bicubic interpolation from any grid to any grid for vector fields. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 17 of file bicubic_interp_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ interpolate_bicubic_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(inout) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram performs bicubic interpolation from any grid to any grid for scalar fields.

                    +

                    Bitmaps are now allowed even when invalid points are within the bicubic template provided the minimum weight is reached.

                    +

                    Options allow choices between straight bicubic (ipopt(1)=0) and constrained bicubic (ipopt(1)=1) where the value is confined within the range of the surrounding 16 points.

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(2)) which defaults to 50 (if ipopt(2)=-1).

                    +

                    Bilinear used within one grid length of boundaries. Only horizontal interpolation is performed.

                    +

                    The code recognizes the following projections, where for the input and output grids, respectively: as an added bonus the number of output grid points and their latitudes and longitudes are also returned. On the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input. output bitmaps will only be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]ipoptInterpolation options.
                      +
                    • ipopt(1)=0 For straight bicubic;
                    • +
                    • ipopt(1)=1 For constrained bicubic where value is confined within the range of the surrounding 4 points.
                    • +
                    • ipopt(2) Is minimum percentage for mask (defaults to 50 if ipopt(2)=-1)
                    • +
                    +
                    [in]grid_inInput grid.
                    [in]grid_outOutput grid.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [out]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if some ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [in,out]noNumber of output points (only if igdtnumo<0).
                    [in,out]rlatOutput latitudes in degrees (if igdtnumo<0).
                    [in,out]rlonOutput longitudes in degrees (if igdtnumo<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 successful interpolation,
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    + +

                    Definition at line 80 of file bicubic_interp_mod.F90.

                    + +

                    References polfix_mod::polfixs().

                    + +
                    +
                    + +

                    ◆ interpolate_bicubic_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_vector (integer, dimension(20), intent(in) ipopt,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) mi,
                    integer, intent(in) mo,
                    integer, intent(in) km,
                    integer, dimension(km), intent(in) ibi,
                    logical*1, dimension(mi,km), intent(in) li,
                    real, dimension(mi,km), intent(in) ui,
                    real, dimension(mi,km), intent(in) vi,
                    integer, intent(inout) no,
                    real, dimension(mo), intent(inout) rlat,
                    real, dimension(mo), intent(inout) rlon,
                    real, dimension(mo), intent(inout) crot,
                    real, dimension(mo), intent(inout) srot,
                    integer, dimension(km), intent(out) ibo,
                    logical*1, dimension(mo,km), intent(out) lo,
                    real, dimension(mo,km), intent(out) uo,
                    real, dimension(mo,km), intent(out) vo,
                    integer, intent(out) iret 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram performs bicubic interpolation from any grid to any grid for vector fields.

                    +

                    Bitmaps are now allowed even when invalid points are within the bicubic template provided the minimum weight is reached.

                    +

                    Options allow choices between straight bicubic (ipopt(1)=0) and constrained bicubic (ipopt(1)=1) where the value is confined within the range of the surrounding 16 points.

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(2)) which defaults to 50 (if ipopt(2)=-1).

                    +

                    Bilinear used within one grid length of boundaries. Only horizontal interpolation is performed.

                    +

                    The code recognizes the following projections, where for the input and output grids, respectively: as an added bonus the number of output grid points and their latitudes and longitudes are also returned. On the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input.

                    +

                    Output bitmaps will only be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipoptinteger (20) interpolation options
                      +
                    • ipopt(1)=0 for straight bicubic;
                    • +
                    • ipopt(1)=1 for constrained bicubic where value is confined within the range of the surrounding 4 points.
                    • +
                    • ipopt(2) is minimum percentage for mask (defaults to 50 if ipopt(2)=-1)
                    • +
                    +
                    [in]grid_inInput grid.
                    [in]grid_outOutput grid.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [out]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if some ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [in,out]noNumber of output points (only if igdtnumo<0).
                    [in,out]rlatOutput latitudes in degrees (if igdtnumo<0).
                    [in,out]rlonOutput longitudes in degrees (if igdtnumo<0).
                    [in,out]crotVector rotation cosines (if igdtnumo<0) ugrid=crot*uearth-srot*vearth.
                    [in,out]srotVector rotation sines (if igdtnumo<0) vgrid=srot*uearth+crot*vearth).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    + +

                    Definition at line 338 of file bicubic_interp_mod.F90.

                    + +

                    References movect(), and polfix_mod::polfixv().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfacebicubic__interp__mod_1_1interpolate__bicubic.js b/ver-5.0.0/interfacebicubic__interp__mod_1_1interpolate__bicubic.js new file mode 100644 index 00000000..22f72d65 --- /dev/null +++ b/ver-5.0.0/interfacebicubic__interp__mod_1_1interpolate__bicubic.js @@ -0,0 +1,5 @@ +var interfacebicubic__interp__mod_1_1interpolate__bicubic = +[ + [ "interpolate_bicubic_scalar", "interfacebicubic__interp__mod_1_1interpolate__bicubic.html#acbfecc99184cf9ae71b2c9f79c7d4077", null ], + [ "interpolate_bicubic_vector", "interfacebicubic__interp__mod_1_1interpolate__bicubic.html#aac45c15e1c9d76158d72e62ccaca915b", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfacebilinear__interp__mod_1_1interpolate__bilinear.html b/ver-5.0.0/interfacebilinear__interp__mod_1_1interpolate__bilinear.html new file mode 100644 index 00000000..fee2d108 --- /dev/null +++ b/ver-5.0.0/interfacebilinear__interp__mod_1_1interpolate__bilinear.html @@ -0,0 +1,463 @@ + + + + + + + +NCEPLIBS-ip: bilinear_interp_mod::interpolate_bilinear Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    bilinear_interp_mod::interpolate_bilinear Interface Reference
                    +
                    +
                    + + + + + + + + +

                    +Private Member Functions

                    subroutine interpolate_bilinear_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     This subprogram performs bilinear interpolation from any grid to any grid for scalar fields. More...
                     
                    subroutine interpolate_bilinear_vector (ipopt, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     This subprogram performs bilinear interpolation from any grid to any grid for vector fields. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 19 of file bilinear_interp_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ interpolate_bilinear_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(inout) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram performs bilinear interpolation from any grid to any grid for scalar fields.

                    +

                    Options allow varying the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(1)) which defaults to 50 (if ipopt(1)=-1). only horizontal interpolation is performed. if no input data is found near the output point, a spiral search may be invoked by setting ipopt(2)> 0. no searching is done if output point is outside the input grid. as an added bonus the number of output grid points and their latitudes and longitudes are also returned. on the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input. input bitmaps will be interpolated to output bitmaps. output bitmaps will also be created when the output grid extends outside of the domain of the input grid.

                    +

                    The output field is set to 0 where the output bitmap is off.

                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]ipoptinterpolation options
                      +
                    • ipopt(1) is minimum percentage for mask (defaults to 50 if ipopt(1)=-1)
                    • +
                    • ipopt(2) is width of square to examine in spiral search (defaults to no search if ipopt(2)=-1)
                    • +
                    +
                    [in]grid_ininput grid
                    [in]grid_outoutput grid
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [out]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibiinput bitmap flags
                    [in]liinput bitmaps (if some ibi(k)=1)
                    [in]giinput fields to interpolate
                    [in,out]nonumber of output points (only if igdtnumo<0)
                    [in,out]rlatoutput latitudes in degrees (if igdtnumo<0)
                    [in,out]rlonoutput longitudes in degrees (if igdtnumo<0)
                    [out]ibooutput bitmap flags
                    [out]looutput bitmaps (always output)
                    [out]gooutput fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    + +

                    Definition at line 72 of file bilinear_interp_mod.F90.

                    + +

                    References polfix_mod::polfixs().

                    + +
                    +
                    + +

                    ◆ interpolate_bilinear_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_vector (integer, dimension(20), intent(in) ipopt,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(inout) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(inout) CROT,
                    real, dimension(mo), intent(inout) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram performs bilinear interpolation from any grid to any grid for vector fields.

                    +

                    Options allow varying the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(1)) which defaults to 50 (if ipopt(1)=-1).

                    +

                    Only horizontal interpolation is performed. the input and output vectors are rotated so that they are either resolved relative to the defined grid in the direction of increasing x and y coordinates or resolved relative to easterly and northerly directions, as designated by their respective grid description sections.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned along with their vector rotation parameters. on the other hand, the data may be interpolated to a set of station points if igdtnumo < 0, in which case the number of points and their latitudes and longitudes must be input along with their vector rotation parameters. input bitmaps will be interpolated to output bitmaps. output bitmaps will also be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipoptinterpolation options
                      +
                    • ipopt(1) is minimum percentage for mask (defaults to 50 if ipopt(1)=-1)
                    • +
                    +
                    [in]grid_inInput grid
                    [in]grid_outOutput grid
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [out]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibiinput bitmap flags
                    [in]liinput bitmaps (if some ibi(k)=1)
                    [in]uiinput u-component fields to interpolate
                    [in]viinput v-component fields to interpolate
                    [in,out]nonumber of output points (only if igdtnumo<0)
                    [in,out]rlatoutput latitudes in degrees (if igdtnumo<0)
                    [in,out]rlonoutput longitudes in degrees (if igdtnumo<0)
                    [in,out]crotvector rotation cosines (if igdtnumo<0) ugrid=crot*uearth-srot*vearth;
                    [in,out]srotvector rotation sines (if igdtnumo<0) vgrid=srot*uearth+crot*vearth)
                    [out]ibooutput bitmap flags
                    [out]looutput bitmaps (always output)
                    [out]uooutput u-component fields interpolated
                    [out]vooutput v-component fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    + +

                    Definition at line 329 of file bilinear_interp_mod.F90.

                    + +

                    References movect(), and polfix_mod::polfixv().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfacebilinear__interp__mod_1_1interpolate__bilinear.js b/ver-5.0.0/interfacebilinear__interp__mod_1_1interpolate__bilinear.js new file mode 100644 index 00000000..0aa40a0e --- /dev/null +++ b/ver-5.0.0/interfacebilinear__interp__mod_1_1interpolate__bilinear.js @@ -0,0 +1,5 @@ +var interfacebilinear__interp__mod_1_1interpolate__bilinear = +[ + [ "interpolate_bilinear_scalar", "interfacebilinear__interp__mod_1_1interpolate__bilinear.html#a3493cf5bc04aa4551ffd4c314ef09a65", null ], + [ "interpolate_bilinear_vector", "interfacebilinear__interp__mod_1_1interpolate__bilinear.html#ab4692c5250b37325f764b38c570892dd", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfacebudget__interp__mod_1_1interpolate__budget.html b/ver-5.0.0/interfacebudget__interp__mod_1_1interpolate__budget.html new file mode 100644 index 00000000..5d1a9f6c --- /dev/null +++ b/ver-5.0.0/interfacebudget__interp__mod_1_1interpolate__budget.html @@ -0,0 +1,473 @@ + + + + + + + +NCEPLIBS-ip: budget_interp_mod::interpolate_budget Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    budget_interp_mod::interpolate_budget Interface Reference
                    +
                    +
                    + + + + + + + + +

                    +Private Member Functions

                    subroutine interpolate_budget_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Performs budget interpolation from any grid to any grid (or to random station points) for scalar fields. More...
                     
                    subroutine interpolate_budget_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     This subprogram performs budget interpolation from any grid to any grid (or to random station points) for vector fields. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 21 of file budget_interp_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ interpolate_budget_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine budget_interp_mod::interpolate_budget::interpolate_budget_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Performs budget interpolation from any grid to any grid (or to random station points) for scalar fields.

                    +

                    The algorithm simply computes (weighted) averages of bilinearly interpolated points arranged in a square box centered around each output grid point and stretching nearly halfway to each of the neighboring grid points.

                    +

                    Options allow choices of number of points in each radius from the center point (ipopt(1)) which defaults to 2 (if ipopt(1)=-1) meaning that 25 points will be averaged; further options are the respective weights for the radius points starting at the center point (ipopt(2:2+ipopt(1)) which defaults to all 1 (if ipopt(1)=-1 or ipopt(2)=-1).

                    +

                    A special interpolation is done if ipopt(2)=-2. in this case, the boxes stretch nearly all the way to each of the neighboring grid points and the weights are the adjoint of the bilinear interpolation weights. This case gives quasi-second-order budget interpolation.

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(3+ipopt(1)) which defaults to 50 (if -1).

                    +

                    In cases where there is no or insufficient valid input data, the user may choose to search for the nearest valid data. this is invoked by setting ipopt(20) to the width of the search square. The default is 1 (no search). Squares are searched for valid data in a spiral pattern starting from the center. No searching is done where the output grid is outside the input grid.

                    +

                    Only horizontal interpolation is performed.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]ipoptInterpolation options
                      +
                    • ipopt(1) is number of radius points (defaults to 2 if ipopt(1)=-1).
                    • +
                    • ipopt(2:2+ipopt(1)) are respective weights (defaults to all 1 if ipopt(1)=-1 or ipopt(2)=-1).
                    • +
                    • ipopt(3+ipopt(1)) is minimum percentage for mask (defaults to 50 if ipopt(3+ipopt(1)=-1).
                    • +
                    +
                    [in]grid_inInput grid
                    [in]grid_outOutput grid
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [out]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if some ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [in,out]noNumber of output points (only if igdtnumo<0).
                    [in,out]rlatOutput latitudes in degrees (if igdtnumo<0).
                    [in,out]rlonOutput longitudes in degrees (if igdtnumo<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 32 Invalid budget method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Marke Iredell, George Gayno, Kyle Gerheiser, Eric Engle
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 94 of file budget_interp_mod.F90.

                    + +

                    References polfix_mod::polfixs().

                    + +
                    +
                    + +

                    ◆ interpolate_budget_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine budget_interp_mod::interpolate_budget::interpolate_budget_vector (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(out) CROT,
                    real, dimension(mo), intent(out) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram performs budget interpolation from any grid to any grid (or to random station points) for vector fields.

                    +

                    The algorithm simply computes (weighted) averages of bilinearly interpolated points arranged in a square box centered around each output grid point and stretching nearly halfway to each of the neighboring grid points.

                    +

                    Options allow choices of number of points in each radius from the center point (ipopt(1)) which defaults to 2 (if ipopt(1)=-1) meaning that 25 points will be averaged; further options are the respective weights for the radius points starting at the center point (ipopt(2:2+ipopt(1)) which defaults to all 1 (if ipopt(1)=-1 or ipopt(2)=-1).

                    +

                    A special interpolation is done if ipopt(2)=-2. in this case, the boxes stretch nearly all the way to each of the neighboring grid points and the weights are the adjoint of the bilinear interpolation weights. This case gives quasi-second-order budget interpolation.

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(3+ipopt(1)) which defaults to 50 (if -1).

                    +

                    In cases where there is no or insufficient valid input data, the user may choose to search for the nearest valid data. this is invoked by setting ipopt(20) to the width of the search square. The default is 1 (no search). Squares are searched for valid data in a spiral pattern starting from the center. No searching is done where the output grid is outside the input grid.

                    +

                    Only horizontal interpolation is performed.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipoptinterpolation options ipopt(1) Number of radius points (defaults to 2 if ipopt(1)=-1); ipopt(2:2+ipopt(1)) Respective weights (defaults to all 1 if ipopt(1)=-1 or ipopt(2)=-1). ipopt(3+ipopt(1)) Minimum percentage for mask (defaults to 50 if ipopt(3+ipopt(1)=-1)
                    [in]grid_inInput grid.
                    [in]grid_outOutput grid.
                    [in]miskip Number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [out]moskip Number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if some ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [in,out]noNumber of output points (only if igdtnumo<0)
                    [in,out]rlatOutput latitudes in degrees (if igdtnumo<0)
                    [in,out]rlonOutput longitudes in degrees (if igdtnumo<0)
                    [in,out]crotVector rotation cosines. If interpolating subgrid ugrid=crot * uearth - srot * vearth.
                    [in,out]srotVector rotation sines. If interpolating subgrid vgrid = srot * uearth + crot * vearth.
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 32 Invalid budget method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Marke Iredell, George Gayno, Kyle Gerheiser, Eric Engle
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 423 of file budget_interp_mod.F90.

                    + +

                    References movect(), and polfix_mod::polfixv().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfacebudget__interp__mod_1_1interpolate__budget.js b/ver-5.0.0/interfacebudget__interp__mod_1_1interpolate__budget.js new file mode 100644 index 00000000..6c0949c3 --- /dev/null +++ b/ver-5.0.0/interfacebudget__interp__mod_1_1interpolate__budget.js @@ -0,0 +1,5 @@ +var interfacebudget__interp__mod_1_1interpolate__budget = +[ + [ "interpolate_budget_scalar", "interfacebudget__interp__mod_1_1interpolate__budget.html#a4b96cbeedb86ef43b687f7ea55914ef0", null ], + [ "interpolate_budget_vector", "interfacebudget__interp__mod_1_1interpolate__budget.html#a573e89e56381d0f69e4022d791a087e6", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfacegdswzd__mod_1_1gdswzd.html b/ver-5.0.0/interfacegdswzd__mod_1_1gdswzd.html new file mode 100644 index 00000000..0227e2f5 --- /dev/null +++ b/ver-5.0.0/interfacegdswzd__mod_1_1gdswzd.html @@ -0,0 +1,1310 @@ + + + + + + + +NCEPLIBS-ip: gdswzd_mod::gdswzd Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    gdswzd_mod::gdswzd Interface Reference
                    +
                    +
                    + + + + + + + + + + + + + + + + + + + + +

                    +Private Member Functions

                    subroutine gdswzd_1d_array (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib 2 grid definition template and returns one of the following: More...
                     
                    subroutine gdswzd_2d_array (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib 2 grid definition template and returns one of the following (for 2d-arrays): More...
                     
                    subroutine gdswzd_2d_array_grib1 (KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib grid description section and returns one of the following (for 2-d arrays): More...
                     
                    subroutine gdswzd_grib1 (KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib grid description section and returns one of the following (for 1-d arrays): More...
                     
                    subroutine gdswzd_grid (grid, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Returns one of the following for a grid object: More...
                     
                    subroutine gdswzd_scalar (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib 2 grid definition template and returns one of the following (for scalars): More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 37 of file gdswzd_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ gdswzd_1d_array()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_mod::gdswzd::gdswzd_1d_array (integer, intent(in) IGDTNUM,
                    integer, dimension(igdtlen), intent(in) IGDTMPL,
                    integer, intent(in) IGDTLEN,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Decodes the grib 2 grid definition template and returns one of the following:

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    The current code recognizes the following projections, where "igdtnum" is the grid definition template number:

                      +
                    • igdtnum=00 Equidistant Cylindrical
                    • +
                    • igdtnum=01 Rotated Equidistant Cylindrical. "E" and non-"E" staggered
                    • +
                    • igdtnum=10 Mercator Cyclindrical
                    • +
                    • igdtnum=20 Polar Stereographic Azimuthal
                    • +
                    • igdtnum=30 Lambert Conformal Conical
                    • +
                    • igdtnum=40 Gaussian Equidistant Cyclindrical
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + +
                    [in]igdtnumGrid definition template number. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 - Equidistant Cylindrical
                    • +
                    • 01 - Rotated Equidistant Cylindrical. "E" and non-"E" staggered
                    • +
                    • 10 - Mercator Cyclindrical
                    • +
                    • 20 - Polar Stereographic Azimuthal
                    • +
                    • 30 - Lambert Conformal Conical
                    • +
                    • 40 - Gaussian Equidistant Cyclindrical
                    • +
                    +
                    [in]igdtmplGrid definition template array. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure
                    +
                    +
                    +

                    Section 3 Info:

                    +

                    All Map Projections:

                      +
                    • 1: Shape of earth, octet 15.
                    • +
                    • 2: Scale factor of spherical earth radius, octet 16.
                    • +
                    • 3: Scaled value of radius of spherical earth, octets 17-20.
                    • +
                    • 4: Scale factor of major axis of elliptical earth, octet 21.
                    • +
                    • 5: Scaled value of major axis of elliptical earth, octets 22-25.
                    • +
                    • 6: Scale factor of minor axis of elliptical earth, octet 26.
                    • +
                    • 7: Scaled value of minor axis of elliptical earth, octets 27-30.
                    • +
                    +

                    Equidistant Cyclindrical:

                      +
                    • 8: Number of points along a parallel, octs 31-34.
                    • +
                    • 9: Number of points along a meridian, octs 35-38.
                    • +
                    • 10: Basic angle of initial production domain, octets 39-42.
                    • +
                    • 11: Subdivisions of basic angle, octets 43-46.
                    • +
                    • 12: Latitude of first grid point, octets 47-50.
                    • +
                    • 13: Longitude of first grid point, octets 51-54.
                    • +
                    • 14: Resolution and component flags, octet 55.
                    • +
                    • 15: Latitude of last grid point, octets 56-59.
                    • +
                    • 16: Longitude of last grid point, octets 60-63.
                    • +
                    • 17: i-direction increment, octets 64-67.
                    • +
                    • 18: j-direction increment, octets 68-71.
                    • +
                    • 19: Scanning mode, octet 72.
                    • +
                    +

                    Mercator Cyclindrical:

                      +
                    • 8: Number of points along a parallel, octs 31-34.
                    • +
                    • 9: Number of points along a meridian, octs 35-38.
                    • +
                    • 10: Latitude of first point, octets 39-42.
                    • +
                    • 11: Longitude of first point, octets 43-46.
                    • +
                    • 12: Resolution and component flags, octet 47.
                    • +
                    • 13: Tangent latitude, octets 48-51.
                    • +
                    • 14: Latitude of last point, octets 52-55.
                    • +
                    • 15: Longitude of last point, octets 56-59.
                    • +
                    • 16: Scanning mode flags, octet 60.
                    • +
                    • 17: Orientation of grid, octets 61-64.
                    • +
                    • 18: Longitudinal grid length, octets 65-68.
                    • +
                    • 19: Latitudinal grid length, octets 69-72.
                    • +
                    +

                    Lambert Conformal Conical:

                      +
                    • 8: Number of points along x-axis, octs 31-34.
                    • +
                    • 9: Number of points along y-axis, octs 35-38.
                    • +
                    • 10: Latitude of first point, octets 39-42.
                    • +
                    • 11: Longitude of first point, octets 43-46.
                    • +
                    • 12: Resolution of component flag, octet 47.
                    • +
                    • 13: Latitude where grid lengths specified,octets 48-51.
                    • +
                    • 14: Longitude of meridian that is parallel to y-axis, octets 52-55.
                    • +
                    • 15: x-direction grid length, octets 56-59.
                    • +
                    • 16: y-direction grid length, octets 60-63.
                    • +
                    • 17: Projection center flag, octet 64.
                    • +
                    • 18: Scanning mode, octet 65.
                    • +
                    • 19: First tangent latitude from pole, octets 66-69.
                    • +
                    • 20: Second tangent latitude from pole, octets 70-73.
                    • +
                    • 21: Latitude of south pole of projection, octets 74-77.
                    • +
                    • 22: Longitude of south pole of projection, octets 78-81.
                    • +
                    +

                    Gaussian Cylindrical:

                      +
                    • 8: Number of points along a parallel, octs 31-34.
                    • +
                    • 9: Number of points along a meridian, octs 35-38.
                    • +
                    • 10: Basic angle of initial production domain, octets 39-42.
                    • +
                    • 11: Subdivisions of basic angle, octets 43-46.
                    • +
                    • 12: Latitude of first grid point, octets 47-50.
                    • +
                    • 13: Longitude of first grid point, octets 51-54.
                    • +
                    • 14: Resolution and component flags, octet 55.
                    • +
                    • 15: Latitude of last grid point, octets 56-59.
                    • +
                    • 16: Longitude of last grid point, octets 60-63.
                    • +
                    • 17: i-direction increment, octets 64-67.
                    • +
                    • 18: Number of parallels between pole and equator, octets 68-71.
                    • +
                    • 19: Scanning mode, octet 72.
                    • +
                    +

                    Polar Stereographic Azimuthal:

                      +
                    • 8: Number of points along x-axis, octets 31-34.
                    • +
                    • 9: Number of points along y-axis, octets 35-38.
                    • +
                    • 10: Latitude of first grid point, octets 39-42.
                    • +
                    • 11: Longitude of first grid point, octets 43-46.
                    • +
                    • 12: Resolution and component flags, octet 47.
                    • +
                    • 13: True latitude, octets 48-51.
                    • +
                    • 14: Orientation longitude, octets 52-55.
                    • +
                    • 15: x-direction grid length, octets 56-59.
                    • +
                    • 16: y-direction grid length, octets 60-63.
                    • +
                    • 17: Projection center flag, octet 64.
                    • +
                    • 18: Scanning mode flags, octet 65.
                    • +
                    +

                    Rotated Equidistant Cyclindrical:

                      +
                    • 8: Number of points along a parallel, octs 31-34.
                    • +
                    • 9: Number of points along a meridian, octs 35-38.
                    • +
                    • 10: Basic angle of initial production domain, octets 39-42.
                    • +
                    • 11: Subdivisions of basic angle, octets 43-46.
                    • +
                    • 12: Latitude of first grid point, octets 47-50.
                    • +
                    • 13: Longitude of first grid point, octets 51-54.
                    • +
                    • 14: Resolution and component flags, octet 55.
                    • +
                    • 15: Latitude of last grid point, octets 56-59.
                    • +
                    • 16: Longitude of last grid point, octets 60-63.
                    • +
                    • 17: i-direction increment, octets 64-67.
                    • +
                    • 18: j-direction increment, octets 68-71.
                    • +
                    • 19: Scanning mode, octet 72.
                    • +
                    • 20: Latitude of southern pole of projection, octets 73-76.
                    • +
                    • 21: Longitude of southern pole of projection, octets 77-80.
                    • +
                    • 22: Angle of rotation of projection, octs 81-84.
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]igdtlenNumber of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell
                    +
                    Date
                    Jan 2015
                    + +

                    Definition at line 665 of file gdswzd_mod.F90.

                    + +

                    References gdswzd_mod::gdswzd_grid().

                    + +
                    +
                    + +

                    ◆ gdswzd_2d_array()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_mod::gdswzd::gdswzd_2d_array (integer, intent(in) IGDTNUM,
                    integer, dimension(igdtlen), intent(in) IGDTMPL,
                    integer, intent(in) IGDTLEN,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(:,:), intent(inout) XPTS,
                    real, dimension(:,:), intent(inout) YPTS,
                    real, dimension(:,:), intent(inout) RLON,
                    real, dimension(:,:), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(:,:), intent(out), optional CROT,
                    real, dimension(:,:), intent(out), optional SROT,
                    real, dimension(:,:), intent(out), optional XLON,
                    real, dimension(:,:), intent(out), optional XLAT,
                    real, dimension(:,:), intent(out), optional YLON,
                    real, dimension(:,:), intent(out), optional YLAT,
                    real, dimension(:,:), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Decodes the grib 2 grid definition template and returns one of the following (for 2d-arrays):

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    The current code recognizes the following projections, where "igdtnum" is the grid definition template number:

                      +
                    • igdtnum=00 Equidistant Cylindrical
                    • +
                    • igdtnum=01 Rotated Equidistant Cylindrical. "E" and non-"E" staggered
                    • +
                    • igdtnum=10 Mercator Cyclindrical
                    • +
                    • igdtnum=20 Polar Stereographic Azimuthal
                    • +
                    • igdtnum=30 Lambert Conformal Conical
                    • +
                    • igdtnum=40 Gaussian Equidistant Cyclindrical
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + +
                    [in]igdtnumGrid definition template number.
                    [in]igdtmplGrid definition template array. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure. See igdtmpl definition in gdswzd_1d_array() for full details.
                    [in]igdtlenNumber of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell
                    +
                    Date
                    Jan 2015
                    + +

                    Definition at line 459 of file gdswzd_mod.F90.

                    + +

                    References gdswzd_mod::gdswzd_1d_array().

                    + +
                    +
                    + +

                    ◆ gdswzd_2d_array_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_mod::gdswzd::gdswzd_2d_array_grib1 (integer, dimension(200), intent(in) KGDS,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(:,:), intent(inout) XPTS,
                    real, dimension(:,:), intent(inout) YPTS,
                    real, dimension(:,:), intent(inout) RLON,
                    real, dimension(:,:), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(:,:), intent(out), optional CROT,
                    real, dimension(:,:), intent(out), optional SROT,
                    real, dimension(:,:), intent(out), optional XLON,
                    real, dimension(:,:), intent(out), optional XLAT,
                    real, dimension(:,:), intent(out), optional YLON,
                    real, dimension(:,:), intent(out), optional YLAT,
                    real, dimension(:,:), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Decodes the grib grid description section and returns one of the following (for 2-d arrays):

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +

                    The current code recognizes the following projections:

                      +
                    • kgds(1)=000 Equidistant Cylindrical
                    • +
                    • kgds(1)=001 Mercator Cylindrical
                    • +
                    • kgds(1)=003 lambert Conformal Conical
                    • +
                    • kgds(1)=004 Gaussian Cylindrical
                    • +
                    • kgds(1)=005 Polar Stereographic azimuthal
                    • +
                    • kgds(1)=203 E-staggered Rotated Equidistant Cylindrical
                    • +
                    • kgds(1)=205 B-staggered Rotated Equidistant Cylindrical
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]kgdsGDS parameters as decoded by w3fi63.
                    +
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell
                    +
                    Date
                    April 1996
                    + +

                    Definition at line 850 of file gdswzd_mod.F90.

                    + +

                    References gdswzd_mod::gdswzd_grid().

                    + +
                    +
                    + +

                    ◆ gdswzd_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_mod::gdswzd::gdswzd_grib1 (integer, dimension(200), intent(in) KGDS,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Decodes the grib grid description section and returns one of the following (for 1-d arrays):

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +

                    The current code recognizes the following projections:

                      +
                    • kgds(1)=000 Equidistant Cylindrical
                    • +
                    • kgds(1)=001 Mercator Cylindrical
                    • +
                    • kgds(1)=003 lambert Conformal Conical
                    • +
                    • kgds(1)=004 Gaussian Cylindrical
                    • +
                    • kgds(1)=005 Polar Stereographic azimuthal
                    • +
                    • kgds(1)=203 E-staggered Rotated Equidistant Cylindrical
                    • +
                    • kgds(1)=205 B-staggered Rotated Equidistant Cylindrical
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]kgdsGDS parameters as decoded by w3fi63.
                    +
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell
                    +
                    Date
                    April 1996
                    + +

                    Definition at line 758 of file gdswzd_mod.F90.

                    + +

                    References gdswzd_mod::gdswzd_grid().

                    + +
                    +
                    + +

                    ◆ gdswzd_grid()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_mod::gdswzd::gdswzd_grid (class(ip_grid), intent(in) grid,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Returns one of the following for a grid object:

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]gridGrid to call gdswzd on.
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 105 of file gdswzd_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_mod::gdswzd::gdswzd_scalar (integer, intent(in) IGDTNUM,
                    integer, dimension(igdtlen), intent(in) IGDTMPL,
                    integer, intent(in) IGDTLEN,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, intent(inout) XPTS,
                    real, intent(inout) YPTS,
                    real, intent(inout) RLON,
                    real, intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, intent(out), optional CROT,
                    real, intent(out), optional SROT,
                    real, intent(out), optional XLON,
                    real, intent(out), optional XLAT,
                    real, intent(out), optional YLON,
                    real, intent(out), optional YLAT,
                    real, intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Decodes the grib 2 grid definition template and returns one of the following (for scalars):

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    The current code recognizes the following projections, where "igdtnum" is the grid definition template number:

                      +
                    • igdtnum=00 Equidistant Cylindrical
                    • +
                    • igdtnum=01 Rotated Equidistant Cylindrical. "E" and non-"E" staggered
                    • +
                    • igdtnum=10 Mercator Cyclindrical
                    • +
                    • igdtnum=20 Polar Stereographic Azimuthal
                    • +
                    • igdtnum=30 Lambert Conformal Conical
                    • +
                    • igdtnum=40 Gaussian Equidistant Cyclindrical
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + +
                    [in]igdtnumGrid definition template number.
                    [in]igdtmplGrid definition template array. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure See igdtmpl definition in gdswzd_1d_array() for full details.
                    [in]igdtlenNumber of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell
                    +
                    Date
                    Jan 2015
                    + +

                    Definition at line 278 of file gdswzd_mod.F90.

                    + +

                    References gdswzd_mod::gdswzd_1d_array().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfacegdswzd__mod_1_1gdswzd.js b/ver-5.0.0/interfacegdswzd__mod_1_1gdswzd.js new file mode 100644 index 00000000..46bd3363 --- /dev/null +++ b/ver-5.0.0/interfacegdswzd__mod_1_1gdswzd.js @@ -0,0 +1,9 @@ +var interfacegdswzd__mod_1_1gdswzd = +[ + [ "gdswzd_1d_array", "interfacegdswzd__mod_1_1gdswzd.html#afaf35e3ce949dd2ce3d72dd3f06d4e3b", null ], + [ "gdswzd_2d_array", "interfacegdswzd__mod_1_1gdswzd.html#a8b60240eefdc297eacf90c348b529d31", null ], + [ "gdswzd_2d_array_grib1", "interfacegdswzd__mod_1_1gdswzd.html#a7c66a7ede2b644f7e366df9f70b9f0a5", null ], + [ "gdswzd_grib1", "interfacegdswzd__mod_1_1gdswzd.html#a65b95791813ffd5afbfba9d4cb67676a", null ], + [ "gdswzd_grid", "interfacegdswzd__mod_1_1gdswzd.html#abfe059339c6c9f05fd4eadb5d70aec16", null ], + [ "gdswzd_scalar", "interfacegdswzd__mod_1_1gdswzd.html#a1fc841ec08d39463b3f5f36eac0068cd", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1init__descriptor.html b/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1init__descriptor.html new file mode 100644 index 00000000..34c85250 --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1init__descriptor.html @@ -0,0 +1,214 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_descriptor_mod::init_descriptor Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_descriptor_mod::init_descriptor Interface Reference
                    +
                    +
                    + + + + + + + + +

                    +Private Member Functions

                    type(grib1_descriptor) function init_grib1_descriptor (gds)
                     Initialize grib-1 descriptor from integer grid definition section (GDS). More...
                     
                    type(grib2_descriptor) function init_grib2_descriptor (gdt_num, gdt_len, gdt_tmpl)
                     Initialize grib-2 descriptor from integer grid definition template (GDT). More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 60 of file ip_grid_descriptor_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ init_grib1_descriptor()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + +
                    type(grib1_descriptor) function ip_grid_descriptor_mod::init_descriptor::init_grib1_descriptor (integer, dimension(:), intent(in) gds)
                    +
                    +private
                    +
                    + +

                    Initialize grib-1 descriptor from integer grid definition section (GDS).

                    +
                    Parameters
                    + + +
                    [in]gdsGrib-1 grid definition section.
                    +
                    +
                    +
                    Returns
                    Initialized Grib-1 descriptor.
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 74 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2_descriptor()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    type(grib2_descriptor) function ip_grid_descriptor_mod::init_descriptor::init_grib2_descriptor (integer, intent(in) gdt_num,
                    integer, intent(in) gdt_len,
                    integer, dimension(:), intent(in) gdt_tmpl 
                    )
                    +
                    +private
                    +
                    + +

                    Initialize grib-2 descriptor from integer grid definition template (GDT).

                    +
                    Parameters
                    + + + + +
                    [in]gdt_numGrib-2 grid number.
                    [in]gdt_lenLenght of the grid definition template.
                    [in]gdt_tmplGrib-2 grid definition template.
                    +
                    +
                    +
                    Returns
                    Initialized Grib-2 descriptor.
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 93 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1init__descriptor.js b/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1init__descriptor.js new file mode 100644 index 00000000..ffaab030 --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1init__descriptor.js @@ -0,0 +1,5 @@ +var interfaceip__grid__descriptor__mod_1_1init__descriptor = +[ + [ "init_grib1_descriptor", "interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a3b5b267aa7a17a4615dcc0cb4e590f6e", null ], + [ "init_grib2_descriptor", "interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a6702c4bf3a3d914e5cd2fce8fba4f95c", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html b/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html new file mode 100644 index 00000000..cf61d76c --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html @@ -0,0 +1,167 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_descriptor_mod::operator(==) Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_descriptor_mod::operator(==) Interface Reference
                    +
                    +
                    + + + + + +

                    +Private Member Functions

                    logical function is_same_grid (grid1, grid2)
                     Test whether two grid descriptors are the same. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 56 of file ip_grid_descriptor_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ is_same_grid()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    logical function ip_grid_descriptor_mod::operator(==)::is_same_grid (class(ip_grid_descriptor), intent(in) grid1,
                    class(ip_grid_descriptor), intent(in) grid2 
                    )
                    +
                    +private
                    +
                    + +

                    Test whether two grid descriptors are the same.

                    +
                    Parameters
                    + + + +
                    [in]grid1An ip_grid_descriptor.
                    [in]grid2Another ip_grid_descriptor.
                    +
                    +
                    +
                    Returns
                    True if the grids are the same, false if they are not.
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 115 of file ip_grid_descriptor_mod.F90.

                    + +

                    References ip_grid_descriptor_mod::is_same_grid().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.js b/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.js new file mode 100644 index 00000000..faf96850 --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.js @@ -0,0 +1,4 @@ +var interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08 = +[ + [ "is_same_grid", "interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html#a34e94f8aada186a3d22112a1ab31b53c", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceip__grid__factory__mod_1_1init__grid.html b/ver-5.0.0/interfaceip__grid__factory__mod_1_1init__grid.html new file mode 100644 index 00000000..92908f6e --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__factory__mod_1_1init__grid.html @@ -0,0 +1,166 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_factory_mod::init_grid Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_factory_mod::init_grid Interface Reference
                    +
                    +
                    + + + + + +

                    +Private Member Functions

                    subroutine init_grid_generic (grid, grid_desc)
                     Initializes a polymorphic ip_grid object from an ip_grid_descriptor. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 20 of file ip_grid_factory_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ init_grid_generic()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_grid_factory_mod::init_grid::init_grid_generic (class(ip_grid), intent(out), allocatable grid,
                    class(ip_grid_descriptor), intent(in) grid_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a polymorphic ip_grid object from an ip_grid_descriptor.

                    +
                    Parameters
                    + + + +
                    [out]gridGrid to initialize
                    [in]grid_descGrid descriptor created from a grib1/grib2 template.
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 33 of file ip_grid_factory_mod.F90.

                    + +

                    References ip_grid_factory_mod::init_grid_grib1(), and ip_grid_factory_mod::init_grid_grib2().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceip__grid__factory__mod_1_1init__grid.js b/ver-5.0.0/interfaceip__grid__factory__mod_1_1init__grid.js new file mode 100644 index 00000000..da9790e1 --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__factory__mod_1_1init__grid.js @@ -0,0 +1,4 @@ +var interfaceip__grid__factory__mod_1_1init__grid = +[ + [ "init_grid_generic", "interfaceip__grid__factory__mod_1_1init__grid.html#a3fbbec3ddc7dfd918c2abc02e7a4cd72", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceip__grid__mod_1_1gdswzd__interface.html b/ver-5.0.0/interfaceip__grid__mod_1_1gdswzd__interface.html new file mode 100644 index 00000000..e7cf8dcc --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__mod_1_1gdswzd__interface.html @@ -0,0 +1,266 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_mod::gdswzd_interface Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_mod::gdswzd_interface Interface Reference
                    +
                    +
                    + + + + + +

                    +Private Member Functions

                    subroutine gdswzd_interface (self, iopt, npts, fill, xpts, ypts, rlon, rlat, nret, crot, srot, xlon, xlat, ylon, ylat, area)
                     Interface to gdswzd(). More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 119 of file ip_grid_mod.F90.

                    +

                    Constructor & Destructor Documentation

                    + +

                    ◆ gdswzd_interface()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    ip_grid_mod::gdswzd_interface::gdswzd_interface (class(ip_grid), intent(in) self,
                    integer, intent(in) iopt,
                    integer, intent(in) npts,
                    real, intent(in) fill,
                    real, dimension(npts), intent(inout) xpts,
                    real, dimension(npts), intent(inout) ypts,
                    real, dimension(npts), intent(inout) rlon,
                    real, dimension(npts), intent(inout) rlat,
                    integer, intent(out) nret,
                    real, dimension(npts), intent(out), optional crot,
                    real, dimension(npts), intent(out), optional srot,
                    real, dimension(npts), intent(out), optional xlon,
                    real, dimension(npts), intent(out), optional xlat,
                    real, dimension(npts), intent(out), optional ylon,
                    real, dimension(npts), intent(out), optional ylat,
                    real, dimension(npts), intent(out), optional area 
                    )
                    +
                    +private
                    +
                    + +

                    Interface to gdswzd().

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]selfip_grid_mod object.
                    [in]ioptoption flag
                      +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    [in]nptsmaximum number of coordinates
                    [in]fillfill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    [in,out]xpts(npts) grid x point coordinates if iopt>0
                    [in,out]ypts(npts) grid y point coordinates if iopt>0
                    [in,out]rlon(npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    [in,out]rlat(npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    [out]nretnumber of valid points computed
                    [out]crotoptional (npts) clockwise vector rotation cosines
                    [out]srotoptional (npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlonoptional (npts) dx/dlon in 1/degrees
                    [out]xlatoptional (npts) dx/dlat in 1/degrees
                    [out]ylonoptional (npts) dy/dlon in 1/degrees
                    [out]ylatoptional (npts) dy/dlat in 1/degrees
                    [out]areaoptional (npts) area weights in m**2 (proportional to the square of the map factor)
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 119 of file ip_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceip__grid__mod_1_1gdswzd__interface.js b/ver-5.0.0/interfaceip__grid__mod_1_1gdswzd__interface.js new file mode 100644 index 00000000..f9cb65f6 --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__mod_1_1gdswzd__interface.js @@ -0,0 +1,4 @@ +var interfaceip__grid__mod_1_1gdswzd__interface = +[ + [ "gdswzd_interface", "interfaceip__grid__mod_1_1gdswzd__interface.html#af34c5d9da54a36322bb1a141217c6369", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceip__grid__mod_1_1init__grib1__interface.html b/ver-5.0.0/interfaceip__grid__mod_1_1init__grib1__interface.html new file mode 100644 index 00000000..67ad960b --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__mod_1_1init__grib1__interface.html @@ -0,0 +1,164 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_mod::init_grib1_interface Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_mod::init_grib1_interface Interface Reference
                    +
                    +
                    + + + + + +

                    +Private Member Functions

                    subroutine init_grib1_interface (self, g1_desc)
                     Init GRIB1 interface. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 142 of file ip_grid_mod.F90.

                    +

                    Constructor & Destructor Documentation

                    + +

                    ◆ init_grib1_interface()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    ip_grid_mod::init_grib1_interface::init_grib1_interface (class(ip_grid), intent(inout) self,
                    type(grib1_descriptor), intent(in) g1_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Init GRIB1 interface.

                    +
                    Parameters
                    + + + +
                    [in,out]selfip_grid_mod object.
                    [in]g1_descGRIB1 descriptor.
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 142 of file ip_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceip__grid__mod_1_1init__grib1__interface.js b/ver-5.0.0/interfaceip__grid__mod_1_1init__grib1__interface.js new file mode 100644 index 00000000..4ed1637f --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__mod_1_1init__grib1__interface.js @@ -0,0 +1,4 @@ +var interfaceip__grid__mod_1_1init__grib1__interface = +[ + [ "init_grib1_interface", "interfaceip__grid__mod_1_1init__grib1__interface.html#a47e255b76f02fe58a1aebdadcc5894eb", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceip__grid__mod_1_1init__grib2__interface.html b/ver-5.0.0/interfaceip__grid__mod_1_1init__grib2__interface.html new file mode 100644 index 00000000..17f2d22e --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__mod_1_1init__grib2__interface.html @@ -0,0 +1,164 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_mod::init_grib2_interface Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_mod::init_grib2_interface Interface Reference
                    +
                    +
                    + + + + + +

                    +Private Member Functions

                    subroutine init_grib2_interface (self, g2_desc)
                     Init GRIB2 interface. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 156 of file ip_grid_mod.F90.

                    +

                    Constructor & Destructor Documentation

                    + +

                    ◆ init_grib2_interface()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    ip_grid_mod::init_grib2_interface::init_grib2_interface (class(ip_grid), intent(inout) self,
                    type(grib2_descriptor), intent(in) g2_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Init GRIB2 interface.

                    +
                    Parameters
                    + + + +
                    [in,out]selfip_grid_mod object.
                    [in]g2_descGRIB2 descriptor.
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 156 of file ip_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceip__grid__mod_1_1init__grib2__interface.js b/ver-5.0.0/interfaceip__grid__mod_1_1init__grib2__interface.js new file mode 100644 index 00000000..64ba9730 --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__mod_1_1init__grib2__interface.js @@ -0,0 +1,4 @@ +var interfaceip__grid__mod_1_1init__grib2__interface = +[ + [ "init_grib2_interface", "interfaceip__grid__mod_1_1init__grib2__interface.html#a25dcec4470effb9b20dfc7981c21ec6c", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceip__grid__mod_1_1operator_07_0a_0a_08.html b/ver-5.0.0/interfaceip__grid__mod_1_1operator_07_0a_0a_08.html new file mode 100644 index 00000000..9607ffd1 --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__mod_1_1operator_07_0a_0a_08.html @@ -0,0 +1,173 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_mod::operator(==) Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_mod::operator(==) Interface Reference
                    +
                    +
                    + +

                    Check equality. + More...

                    + + + + + +

                    +Private Member Functions

                    logical function is_same_grid (grid1, grid2)
                     Compares two grids. More...
                     
                    +

                    Detailed Description

                    +

                    Check equality.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 166 of file ip_grid_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ is_same_grid()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    logical function ip_grid_mod::operator(==)::is_same_grid (class(ip_grid), intent(in) grid1,
                    class(ip_grid), intent(in) grid2 
                    )
                    +
                    +private
                    +
                    + +

                    Compares two grids.

                    +
                    Parameters
                    + + + +
                    [in]grid1An ip_grid
                    [in]grid2Another ip_grid
                    +
                    +
                    +
                    Returns
                    True if the grids are the same, false if not.
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 182 of file ip_grid_mod.F90.

                    + +

                    References ip_grid_descriptor_mod::is_same_grid().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceip__grid__mod_1_1operator_07_0a_0a_08.js b/ver-5.0.0/interfaceip__grid__mod_1_1operator_07_0a_0a_08.js new file mode 100644 index 00000000..ef540651 --- /dev/null +++ b/ver-5.0.0/interfaceip__grid__mod_1_1operator_07_0a_0a_08.js @@ -0,0 +1,4 @@ +var interfaceip__grid__mod_1_1operator_07_0a_0a_08 = +[ + [ "is_same_grid", "interfaceip__grid__mod_1_1operator_07_0a_0a_08.html#a0303cd13db74e096af7f77200ef09c6b", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceipolates__mod_1_1ipolates.html b/ver-5.0.0/interfaceipolates__mod_1_1ipolates.html new file mode 100644 index 00000000..4650f457 --- /dev/null +++ b/ver-5.0.0/interfaceipolates__mod_1_1ipolates.html @@ -0,0 +1,1221 @@ + + + + + + + +NCEPLIBS-ip: ipolates_mod::ipolates Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ipolates_mod::ipolates Interface Reference
                    +
                    +
                    + + + + + + + + + + + + + + +

                    +Private Member Functions

                    subroutine ipolates_grib1 (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                     This subprogram interpolates scalar field from any grid to any grid given a grib1 Grid Descriptor Section. More...
                     
                    subroutine ipolates_grib1_single_field (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                     Special case of ipolates_grib1 when interpolating a single field. More...
                     
                    subroutine ipolates_grib2 (IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     This subprogram interpolates scalar field from any grid to any grid given a grib2 descriptor. More...
                     
                    subroutine ipolates_grib2_single_field (IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Special case of ipolates_grib2 when interpolating a single field. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 23 of file ipolates.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ ipolates_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipolates_mod::ipolates::ipolates_grib1 (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), dimension(200), intent(in) kgdsi,
                    integer(c_int), dimension(200), intent(in) kgdso,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), dimension(km), intent(in) ibi,
                    logical(c_bool), dimension(mi,km), intent(in) li,
                    real(c_double), dimension(mi,km), intent(in) gi,
                    integer(c_int), intent(inout) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    integer(c_int), dimension(km), intent(out) ibo,
                    logical(c_bool), dimension(mo,km), intent(out) lo,
                    real(c_double), dimension(mo,km), intent(out) go,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram interpolates scalar field from any grid to any grid given a grib1 Grid Descriptor Section.

                    +

                    Only horizontal interpolation is performed. The following interpolation methods are possible:

                      +
                    • (ip=0) bilinear
                    • +
                    • (ip=1) bicubic
                    • +
                    • (ip=2) neighbor
                    • +
                    • (ip=3) budget
                    • +
                    • (ip=4) spectral
                    • +
                    • (ip=6) neighbor-budget
                    • +
                    +

                    Some of these methods have interpolation options and/or restrictions on the input or output grids, both of which are documented more fully in their respective subprograms.

                    +

                    The grids are defined by their grid description sections (passed in integer form as decoded by subprogram w3fi63).

                    +

                    The current code recognizes the following projections:

                      +
                    • (kgds(1)=000) equidistant cylindrical
                    • +
                    • (kgds(1)=001) mercator cylindrical
                    • +
                    • (kgds(1)=003) lambert conformal conical
                    • +
                    • (kgds(1)=004) gaussian cylindrical
                    • +
                    • (kgds(1)=005) polar stereographic azimuthal
                    • +
                    • (kgds(1)=203) rotated equidistant cylindrical - e-stagger
                    • +
                    • (kgds(1)=205) rotated equidistant cylindrical - b-stagger
                    • +
                    +

                    Where kgds could be either input kgdsi or output kgdso.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned.

                    +

                    On the other hand, the output can be a set of station points if kgdso(1)<0, in which case the number of points and their latitudes and longitudes must be input. for the budget approach, a subsection of the grid may be output by subtracting kgdso(1) from 255 and passing in the latitudes and longitudes of the points. Input bitmaps will be interpolated to output bitmaps.

                    +

                    Output bitmaps will also be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    ipInterpolation method
                      +
                    • ip = BILINEAR_INTERP_ID = 0 for bilinear
                    • +
                    • ip = BICUBIC_INTERP_ID = 1 for bicubic
                    • +
                    • ip = NEIGHBOR_INTERP_ID = 2 for neighbor;
                    • +
                    • ip = BUDGET_INTERP_ID = 3 for budget;
                    • +
                    • ip = SPECTRAL_INTERP_ID = 4 for spectral;
                    • +
                    • ip = NEIGHBOR_BUDGET_INTERP_ID = 6 for neighbor-budget
                    • +
                    +
                    ipoptInterpolation options
                      +
                    • ip=0 (bilinear): (No options)
                    • +
                    • ip=1 Cbicubic): constraint option
                    • +
                    • ip=2 (neighbor): (No options)
                    • +
                    • ip=3 (budget): Number in radius, radius weights, search radius
                    • +
                    • ip=4 (spectral): Spectral shape, spectral truncation
                    • +
                    • ip=6 (neighbor-budget): Number in radius, radius weights ...)
                    • +
                    +
                    [in]kgdsiInput gds parameters as decoded by w3fi63.
                    [in]kgdsoOutput gds parameters.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell, Kyle Gerheiser
                    + +

                    Definition at line 293 of file ipolates.F90.

                    + +

                    References ipolates_mod::ipolates_grid().

                    + +
                    +
                    + +

                    ◆ ipolates_grib1_single_field()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipolates_mod::ipolates::ipolates_grib1_single_field (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), dimension(200), intent(in) kgdsi,
                    integer(c_int), dimension(200), intent(in) kgdso,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), intent(in) ibi,
                    logical(c_bool), dimension(mi), intent(in) li,
                    real(c_double), dimension(mi), intent(in) gi,
                    integer(c_int), intent(inout) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    integer(c_int), intent(out) ibo,
                    logical(c_bool), dimension(mo), intent(out) lo,
                    real(c_double), dimension(mo), intent(out) go,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    +private
                    +
                    + +

                    Special case of ipolates_grib1 when interpolating a single field.

                    +

                    Removes the km dimension of input arrays so scalars can be passed to ibi/ibo.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    ipInterpolation method
                      +
                    • ip = BILINEAR_INTERP_ID = 0 for bilinear
                    • +
                    • ip = BICUBIC_INTERP_ID = 1 for bicubic
                    • +
                    • ip = NEIGHBOR_INTERP_ID = 2 for neighbor;
                    • +
                    • ip = BUDGET_INTERP_ID = 3 for budget;
                    • +
                    • ip = SPECTRAL_INTERP_ID = 4 for spectral;
                    • +
                    • ip = NEIGHBOR_BUDGET_INTERP_ID = 6 for neighbor-budget
                    • +
                    +
                    ipoptInterpolation options
                      +
                    • ip=0 (bilinear): (No options)
                    • +
                    • ip=1 Cbicubic): constraint option
                    • +
                    • ip=2 (neighbor): (No options)
                    • +
                    • ip=3 (budget): Number in radius, radius weights, search radius
                    • +
                    • ip=4 (spectral): Spectral shape, spectral truncation
                    • +
                    • ip=6 (neighbor-budget): Number in radius, radius weights ...)
                    • +
                    +
                    [in]kgdsiInput gds parameters as decoded by w3fi63.
                    [in]kgdsoOutput gds parameters.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Date
                    Jan 2022
                    +
                    Author
                    Kyle Gerheiser
                    + +

                    Definition at line 158 of file ipolates.F90.

                    + +

                    References ipolates_mod::ipolates_grid().

                    + +
                    +
                    + +

                    ◆ ipolates_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipolates_mod::ipolates::ipolates_grib2 (integer(c_int), intent(in) IP,
                    integer(c_int), dimension(20), intent(in) IPOPT,
                    integer(c_int), intent(in) IGDTNUMI,
                    integer(c_int), dimension(igdtleni), intent(in) IGDTMPLI,
                    integer(c_int), intent(in) IGDTLENI,
                    integer(c_int), intent(in) IGDTNUMO,
                    integer(c_int), dimension(igdtleno), intent(in) IGDTMPLO,
                    integer(c_int), intent(in) IGDTLENO,
                    integer(c_int), intent(in) MI,
                    integer(c_int), intent(in) MO,
                    integer(c_int), intent(in) KM,
                    integer(c_int), dimension(km), intent(in) IBI,
                    logical(c_bool), dimension(mi,km), intent(in) LI,
                    real(c_double), dimension(mi,km), intent(in) GI,
                    integer(c_int), intent(out) NO,
                    real(c_double), dimension(mo), intent(inout) RLAT,
                    real(c_double), dimension(mo), intent(inout) RLON,
                    integer(c_int), dimension(km), intent(out) IBO,
                    logical(c_bool), dimension(mo,km), intent(out) LO,
                    real(c_double), dimension(mo,km), intent(out) GO,
                    integer(c_int), intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram interpolates scalar field from any grid to any grid given a grib2 descriptor.

                    +

                    Wrapper for ipolates_grid which converts a grib1 descriptor into an ip_grid_descriptor, which is used to create an ip_grid. Only horizontal interpolation is performed.

                    +

                    The following interpolation methods are possible:

                      +
                    • (ip=0) bilinear
                    • +
                    • (ip=1) bicubic
                    • +
                    • (ip=2) neighbor
                    • +
                    • (ip=3) budget
                    • +
                    • (ip=4) spectral
                    • +
                    • (ip=6) neighbor-budget
                    • +
                    +

                    Some of these methods have interpolation options and/or restrictions on the input or output grids, both of which are documented more fully in their respective subprograms.

                    +

                    Input and output grids are defined by their grib 2 grid definition template as decoded by the ncep g2 library. The current code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned.

                    +

                    On the other hand, data may be interpolated to a set of station points if "igdtnumo"<0 (or subtracted from 255 for the budget option), in which case the number of points and their latitudes and longitudes must be input.

                    +

                    Input bitmaps will be interpolated to output bitmaps. Output bitmaps will also be created when the output grid extends outside of the domain of the input grid.

                    +

                    The output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + +
                    [in]ipInterpolation method
                      +
                    • ip=0 for bilinear
                    • +
                    • ip=1 for bicubic
                    • +
                    • ip=2 for neighbor;
                    • +
                    • ip=3 for budget;
                    • +
                    • ip=4 for spectral;
                    • +
                    • ip=6 for neighbor-budget
                    • +
                    +
                    [in]ipoptInterpolation options
                      +
                    • ip=0: (No options)
                    • +
                    • ip=1: Constraint option
                    • +
                    • ip=2: (No options)
                    • +
                    • ip=3: Number in radius, radius weights, search radius
                    • +
                    • ip=4: Spectral shape, spectral truncation
                    • +
                    • ip=6: Number in radius, radius weights ...)
                    • +
                    +
                    [in]igdtnumiGrid definition template number for the input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 - EQUIDISTANT CYLINDRICAL
                    • +
                    • 01 - Rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 - MERCATOR CYCLINDRICAL
                    • +
                    • 20 - POLAR STEREOGRAPHIC AZIMUTHAL
                    • +
                    • 30 - LAMBERT CONFORMAL CONICAL
                    • +
                    • 40 - GAUSSIAN EQUIDISTANT CYCLINDRICAL
                    • +
                    +
                    [in]igdtmpliGrid definition template array input grid. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure
                    +
                    +
                    +

                    Section 3 Info:

                    +

                    All map projections:

                      +
                    • (1): SHAPE OF EARTH, OCTET 15
                    • +
                    • (2): SCALE FACTOR OF SPHERICAL EARTH RADIUS, OCTET 16
                    • +
                    • (3): SCALED VALUE OF RADIUS OF SPHERICAL EARTH, OCTETS 17-20
                    • +
                    • (4): SCALE FACTOR OF MAJOR AXIS OF ELLIPTICAL EARTH, OCTET 21
                    • +
                    • (5): SCALED VALUE OF MAJOR AXIS OF ELLIPTICAL EARTH, OCTETS 22-25
                    • +
                    • (6): SCALE FACTOR OF MINOR AXIS OF ELLIPTICAL EARTH, OCTET 26
                    • +
                    • (7): SCALED VALUE OF MINOR AXIS OF ELLIPTICAL EARTH, OCTETS 27-30
                    • +
                    +

                    Equidistant Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42.
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): J-DIRECTION INCREMENT, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    +

                    Mercator Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): LATITUDE OF FIRST POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION AND COMPONENT FLAGS, OCTET 47
                    • +
                    • (13): TANGENT LATITUDE, OCTETS 48-51
                    • +
                    • (14): LATITUDE OF LAST POINT, OCTETS 52-55
                    • +
                    • (15): LONGITUDE OF LAST POINT, OCTETS 56-59
                    • +
                    • (16): SCANNING MODE FLAGS, OCTET 60
                    • +
                    • (17): ORIENTATION OF GRID, OCTETS 61-64
                    • +
                    • (18): LONGITUDINAL GRID LENGTH, OCTETS 65-68
                    • +
                    • (19): LATITUDINAL GRID LENGTH, OCTETS 69-72
                    • +
                    +

                    Lambert Conformal Conical:

                      +
                    • (8): NUMBER OF POINTS ALONG X-AXIS, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG Y-AXIS, OCTS 35-38
                    • +
                    • (10): LATITUDE OF FIRST POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION OF COMPONENT FLAG, OCTET 47
                    • +
                    • (13): LATITUDE WHERE GRID LENGTHS SPECIFIED,OCTETS 48-51
                    • +
                    • (14): LONGITUDE OF MERIDIAN THAT IS PARALLEL TO Y-AXIS, OCTETS 52-55
                    • +
                    • (15): X-DIRECTION GRID LENGTH, OCTETS 56-59
                    • +
                    • (16): Y-DIRECTION GRID LENGTH, OCTETS 60-63
                    • +
                    • (17): PROJECTION CENTER FLAG, OCTET 64
                    • +
                    • (18): SCANNING MODE, OCTET 65
                    • +
                    • (19): FIRST TANGENT LATITUDE FROM POLE, OCTETS 66-69
                    • +
                    • (20): SECOND TANGENT LATITUDE FROM POLE, OCTETS 70-73
                    • +
                    • (21): LATITUDE OF SOUTH POLE OF PROJECTION, OCTETS 74-77
                    • +
                    • (22): LONGITUDE OF SOUTH POLE OF PROJECTION, OCTETS 78-81
                    • +
                    +

                    Gaussian Cylindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): NUMBER OF PARALLELS BETWEEN POLE AND EQUATOR, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    +

                    Polar Stereographic Azimuthal:

                      +
                    • (8): NUMBER OF POINTS ALONG X-AXIS, OCTETS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG Y-AXIS, OCTETS 35-38
                    • +
                    • (10): LATITUDE OF FIRST GRID POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST GRID POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION AND COMPONENT FLAGS, OCTET 47
                    • +
                    • (13): TRUE LATITUDE, OCTETS 48-51
                    • +
                    • (14): ORIENTATION LONGITUDE, OCTETS 52-55
                    • +
                    • (15): X-DIRECTION GRID LENGTH, OCTETS 56-59
                    • +
                    • (16): Y-DIRECTION GRID LENGTH, OCTETS 60-63
                    • +
                    • (17): PROJECTION CENTER FLAG, OCTET 64
                    • +
                    • (18): SCANNING MODE FLAGS, OCTET 65
                    • +
                    +

                    Rotated Equidistant Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): J-DIRECTION INCREMENT, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    • (20): LATITUDE OF SOUTHERN POLE OF PROJECTION, OCTETS 73-76
                    • +
                    • (21): LONGITUDE OF SOUTHERN POLE OF PROJECTION, OCTETS 77-80
                    • +
                    • (22): ANGLE OF ROTATION OF PROJECTION, OCTS 81-84
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    [in]igdtleniNumber of elements of the grid definition template array for the input grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumoGrid definition template number for the output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. See "igdtnumi" for specific template definitions. Note: igdtnumo<0 means interpolate to random station points.
                    [in]igdtmploGrid definition template array for the output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. See "igdtmpli" for definition of array elements.
                    [in]igdtlenoNumber of elements of the grid definition template array for the output grid. c Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Note
                    Examples demonstrating relative cpu costs. This example is interpolating 12 levels of temperatures from the 360 x 181 global grid (ncep grid 3) to the 93 x 68 hawaiian mercator grid (ncep grid 204).
                    +

                    The example times are for the c90. As a reference, the cp time for unpacking the global 12 temperature fields is 0.04 seconds.

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.03
                    BICUBIC 1 0 0.07
                    BICUBIC 1 1 0.07
                    NEIGHBOR 2 0.01
                    BUDGET 3 -1,-1 0.48
                    SPECTRAL 4 0,40 0.22
                    SPECTRAL 4 1,40 0.24
                    SPECTRAL 4 0,-1 0.42
                    N-BUDGET 6 -1,-1 0.15
                    +

                    The spectral interpolation is fast for the mercator grid. However, for some grids the spectral interpolation is slow.

                    +

                    The following example is interpolating 12 levels of temperatures from the 360 x 181 global grid (ncep grid 3) to the 93 x 65 conus lambert conformal grid (ncep grid 211).

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.03
                    BICUBIC 1 0 0.07
                    BICUBIC 1 1 0.07
                    NEIGHBOR 2 0.01
                    BUDGET 3 -1,-1 0.51
                    SPECTRAL 4 0,40 3.94
                    SPECTRAL 4 1,40 5.02
                    SPECTRAL 4 0,-1 11.36
                    N-BUDGET 6 -1,-1 0.18
                    +
                    Author
                    Mark Iredell, Kyle Gerheiser
                    + +

                    Definition at line 587 of file ipolates.F90.

                    + +

                    References ipolates_mod::ipolates_grid().

                    + +
                    +
                    + +

                    ◆ ipolates_grib2_single_field()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipolates_mod::ipolates::ipolates_grib2_single_field (integer(c_int), intent(in) IP,
                    integer(c_int), dimension(20), intent(in) IPOPT,
                    integer(c_int), intent(in) IGDTNUMI,
                    integer(c_int), dimension(igdtleni), intent(in) IGDTMPLI,
                    integer(c_int), intent(in) IGDTLENI,
                    integer(c_int), intent(in) IGDTNUMO,
                    integer(c_int), dimension(igdtleno), intent(in) IGDTMPLO,
                    integer(c_int), intent(in) IGDTLENO,
                    integer(c_int), intent(in) MI,
                    integer(c_int), intent(in) MO,
                    integer(c_int), intent(in) KM,
                    integer(c_int), intent(in) IBI,
                    logical(c_bool), dimension(mi), intent(in) LI,
                    real(c_double), dimension(mi), intent(in) GI,
                    integer(c_int), intent(out) NO,
                    real(c_double), dimension(mo), intent(inout) RLAT,
                    real(c_double), dimension(mo), intent(inout) RLON,
                    integer(c_int), intent(out) IBO,
                    logical(c_bool), dimension(mo), intent(out) LO,
                    real(c_double), dimension(mo), intent(out) GO,
                    integer(c_int), intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Special case of ipolates_grib2 when interpolating a single field.

                    +

                    Removes the km dimension of input arrays so scalars can be passed to ibi/ibo.

                    +
                    Parameters
                    + + + + + +
                    [in]ipInterpolation method
                      +
                    • ip=0 for bilinear
                    • +
                    • ip=1 for bicubic
                    • +
                    • ip=2 for neighbor;
                    • +
                    • ip=3 for budget;
                    • +
                    • ip=4 for spectral;
                    • +
                    • ip=6 for neighbor-budget
                    • +
                    +
                    [in]ipoptInterpolation options
                      +
                    • ip=0: (No options)
                    • +
                    • ip=1: Constraint option
                    • +
                    • ip=2: (No options)
                    • +
                    • ip=3: Number in radius, radius weights, search radius
                    • +
                    • ip=4: Spectral shape, spectral truncation
                    • +
                    • ip=6: Number in radius, radius weights ...)
                    • +
                    +
                    [in]igdtnumiGrid definition template number for the input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 - EQUIDISTANT CYLINDRICAL
                    • +
                    • 01 - Rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 - MERCATOR CYCLINDRICAL
                    • +
                    • 20 - POLAR STEREOGRAPHIC AZIMUTHAL
                    • +
                    • 30 - LAMBERT CONFORMAL CONICAL
                    • +
                    • 40 - GAUSSIAN EQUIDISTANT CYCLINDRICAL
                    • +
                    +
                    [in]igdtmpliGrid definition template array input grid. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure
                    +
                    +
                    +

                    Section 3 Info:

                    +

                    All map projections:

                      +
                    • (1): SHAPE OF EARTH, OCTET 15
                    • +
                    • (2): SCALE FACTOR OF SPHERICAL EARTH RADIUS, OCTET 16
                    • +
                    • (3): SCALED VALUE OF RADIUS OF SPHERICAL EARTH, OCTETS 17-20
                    • +
                    • (4): SCALE FACTOR OF MAJOR AXIS OF ELLIPTICAL EARTH, OCTET 21
                    • +
                    • (5): SCALED VALUE OF MAJOR AXIS OF ELLIPTICAL EARTH, OCTETS 22-25
                    • +
                    • (6): SCALE FACTOR OF MINOR AXIS OF ELLIPTICAL EARTH, OCTET 26
                    • +
                    • (7): SCALED VALUE OF MINOR AXIS OF ELLIPTICAL EARTH, OCTETS 27-30
                    • +
                    +

                    Equidistant Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42.
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): J-DIRECTION INCREMENT, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    +

                    Mercator Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): LATITUDE OF FIRST POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION AND COMPONENT FLAGS, OCTET 47
                    • +
                    • (13): TANGENT LATITUDE, OCTETS 48-51
                    • +
                    • (14): LATITUDE OF LAST POINT, OCTETS 52-55
                    • +
                    • (15): LONGITUDE OF LAST POINT, OCTETS 56-59
                    • +
                    • (16): SCANNING MODE FLAGS, OCTET 60
                    • +
                    • (17): ORIENTATION OF GRID, OCTETS 61-64
                    • +
                    • (18): LONGITUDINAL GRID LENGTH, OCTETS 65-68
                    • +
                    • (19): LATITUDINAL GRID LENGTH, OCTETS 69-72
                    • +
                    +

                    Lambert Conformal Conical:

                      +
                    • (8): NUMBER OF POINTS ALONG X-AXIS, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG Y-AXIS, OCTS 35-38
                    • +
                    • (10): LATITUDE OF FIRST POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION OF COMPONENT FLAG, OCTET 47
                    • +
                    • (13): LATITUDE WHERE GRID LENGTHS SPECIFIED,OCTETS 48-51
                    • +
                    • (14): LONGITUDE OF MERIDIAN THAT IS PARALLEL TO Y-AXIS, OCTETS 52-55
                    • +
                    • (15): X-DIRECTION GRID LENGTH, OCTETS 56-59
                    • +
                    • (16): Y-DIRECTION GRID LENGTH, OCTETS 60-63
                    • +
                    • (17): PROJECTION CENTER FLAG, OCTET 64
                    • +
                    • (18): SCANNING MODE, OCTET 65
                    • +
                    • (19): FIRST TANGENT LATITUDE FROM POLE, OCTETS 66-69
                    • +
                    • (20): SECOND TANGENT LATITUDE FROM POLE, OCTETS 70-73
                    • +
                    • (21): LATITUDE OF SOUTH POLE OF PROJECTION, OCTETS 74-77
                    • +
                    • (22): LONGITUDE OF SOUTH POLE OF PROJECTION, OCTETS 78-81
                    • +
                    +

                    Gaussian Cylindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): NUMBER OF PARALLELS BETWEEN POLE AND EQUATOR, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    +

                    Polar Stereographic Azimuthal:

                      +
                    • (8): NUMBER OF POINTS ALONG X-AXIS, OCTETS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG Y-AXIS, OCTETS 35-38
                    • +
                    • (10): LATITUDE OF FIRST GRID POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST GRID POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION AND COMPONENT FLAGS, OCTET 47
                    • +
                    • (13): TRUE LATITUDE, OCTETS 48-51
                    • +
                    • (14): ORIENTATION LONGITUDE, OCTETS 52-55
                    • +
                    • (15): X-DIRECTION GRID LENGTH, OCTETS 56-59
                    • +
                    • (16): Y-DIRECTION GRID LENGTH, OCTETS 60-63
                    • +
                    • (17): PROJECTION CENTER FLAG, OCTET 64
                    • +
                    • (18): SCANNING MODE FLAGS, OCTET 65
                    • +
                    +

                    Rotated Equidistant Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): J-DIRECTION INCREMENT, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    • (20): LATITUDE OF SOUTHERN POLE OF PROJECTION, OCTETS 73-76
                    • +
                    • (21): LONGITUDE OF SOUTHERN POLE OF PROJECTION, OCTETS 77-80
                    • +
                    • (22): ANGLE OF ROTATION OF PROJECTION, OCTS 81-84
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    [in]igdtleniNumber of elements of the grid definition template array for the input grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumoGrid definition template number for the output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. See "igdtnumi" for specific template definitions. Note: igdtnumo<0 means interpolate to random station points.
                    [in]igdtmploGrid definition template array for the output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. See "igdtmpli" for definition of array elements.
                    [in]igdtlenoNumber of elements of the grid definition template array for the output grid. c Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Eric Engle
                    +
                    Date
                    November 2022
                    + +

                    Definition at line 808 of file ipolates.F90.

                    + +

                    References ipolates_mod::ipolates_grid().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceipolates__mod_1_1ipolates.js b/ver-5.0.0/interfaceipolates__mod_1_1ipolates.js new file mode 100644 index 00000000..1b23bd7c --- /dev/null +++ b/ver-5.0.0/interfaceipolates__mod_1_1ipolates.js @@ -0,0 +1,7 @@ +var interfaceipolates__mod_1_1ipolates = +[ + [ "ipolates_grib1", "interfaceipolates__mod_1_1ipolates.html#a8ff62af694c759f29c332836ff66437b", null ], + [ "ipolates_grib1_single_field", "interfaceipolates__mod_1_1ipolates.html#afbc36431f96adfbbf552bc6137d0519d", null ], + [ "ipolates_grib2", "interfaceipolates__mod_1_1ipolates.html#a791ae0a257adcc3a789494489e28302b", null ], + [ "ipolates_grib2_single_field", "interfaceipolates__mod_1_1ipolates.html#a3a77b7de2dce406829a3b01689372240", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceipolatev__mod_1_1ipolatev.html b/ver-5.0.0/interfaceipolatev__mod_1_1ipolatev.html new file mode 100644 index 00000000..4c61d884 --- /dev/null +++ b/ver-5.0.0/interfaceipolatev__mod_1_1ipolatev.html @@ -0,0 +1,1277 @@ + + + + + + + +NCEPLIBS-ip: ipolatev_mod::ipolatev Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ipolatev_mod::ipolatev Interface Reference
                    +
                    +
                    + + + + + + + + + + + + + + +

                    +Private Member Functions

                    subroutine ipolatev_grib1 (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram interpolates vector field from any grid to any grid given a grib1 Grid Descriptor Section. More...
                     
                    subroutine ipolatev_grib1_single_field (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     Special case of ipolatev_grib1 when interpolating a single field. More...
                     
                    subroutine ipolatev_grib2 (ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor. More...
                     
                    subroutine ipolatev_grib2_single_field (ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 21 of file ipolatev.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ ipolatev_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipolatev_mod::ipolatev::ipolatev_grib1 (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), dimension(200), intent(inout) kgdsi,
                    integer(c_int), dimension(200), intent(inout) kgdso,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), dimension(km), intent(in) ibi,
                    logical(c_bool), dimension(mi,km), intent(in) li,
                    real(c_double), dimension(mi,km), intent(in) ui,
                    real(c_double), dimension(mi,km), intent(in) vi,
                    integer(c_int), intent(out) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    real(c_double), dimension(mo), intent(inout) crot,
                    real(c_double), dimension(mo), intent(inout) srot,
                    integer(c_int), dimension(km), intent(out) ibo,
                    logical(c_bool), dimension(mo,km), intent(out) lo,
                    real(c_double), dimension(mo,km), intent(out) uo,
                    real(c_double), dimension(mo,km), intent(out) vo,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram interpolates vector field from any grid to any grid given a grib1 Grid Descriptor Section.

                    +

                    Only horizontal interpolation is performed. The following interpolation methods are possible:

                      +
                    • (ip=0) bilinear
                    • +
                    • (ip=1) bicubic
                    • +
                    • (ip=2) neighbor
                    • +
                    • (ip=3) budget
                    • +
                    • (ip=4) spectral
                    • +
                    • (ip=6) neighbor-budget
                    • +
                    +

                    Some of these methods have interpolation options and/or restrictions on the input or output grids, both of which are documented more fully in their respective subprograms.

                    +

                    The grids are defined by their grid description sections (passed in integer form as decoded by subprogram w3fi63).

                    +

                    The current code recognizes the following projections:

                      +
                    • (kgds(1)=000) equidistant cylindrical
                    • +
                    • (kgds(1)=001) mercator cylindrical
                    • +
                    • (kgds(1)=003) lambert conformal conical
                    • +
                    • (kgds(1)=004) gaussian cylindrical
                    • +
                    • (kgds(1)=005) polar stereographic azimuthal
                    • +
                    • (kgds(1)=203) rotated equidistant cylindrical - e-stagger
                    • +
                    • (kgds(1)=205) rotated equidistant cylindrical - b-stagger
                    • +
                    +

                    Where kgds could be either input kgdsi or output kgdso.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned.

                    +

                    On the other hand, the output can be a set of station points if kgdso(1)<0, in which case the number of points and their latitudes and longitudes must be input. for the budget approach, a subsection of the grid may be output by subtracting kgdso(1) from 255 and passing in the latitudes and longitudes of the points. Input bitmaps will be interpolated to output bitmaps.

                    +

                    Output bitmaps will also be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + +
                    ipInterpolation method
                      +
                    • ip = BILINEAR_INTERP_ID = 0 for bilinear
                    • +
                    • ip = BICUBIC_INTERP_ID = 1 for bicubic
                    • +
                    • ip = NEIGHBOR_INTERP_ID = 2 for neighbor;
                    • +
                    • ip = BUDGET_INTERP_ID = 3 for budget;
                    • +
                    • ip = SPECTRAL_INTERP_ID = 4 for spectral;
                    • +
                    • ip = NEIGHBOR_BUDGET_INTERP_ID = 6 for neighbor-budget
                    • +
                    +
                    ipoptInterpolation options
                      +
                    • ip=0 (bilinear): (No options)
                    • +
                    • ip=1 Cbicubic): constraint option
                    • +
                    • ip=2 (neighbor): (No options)
                    • +
                    • ip=3 (budget): Number in radius, radius weights, search radius
                    • +
                    • ip=4 (spectral): Spectral shape, spectral truncation
                    • +
                    • ip=6 (neighbor-budget): Number in radius, radius weights ...)
                    • +
                    +
                    [in]kgdsiInput gds parameters as decoded by w3fi63.
                    [in]kgdsoOutput gds parameters.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [in,out]crotVector rotation cosines (if igdtnumo>=0).
                    [in,out]srotVector rotation sines (if igdtnumo>=0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Note
                    Examples demonstrating relative cpu costs. This example is interpolating 12 levels of winds from the 360 x 181 global grid (ncep grid 3) to the 93 x 68 hawaiian mercator grid (ncep grid 204).
                    +

                    The example times are for the c90. As a reference, the cp time for unpacking the global 12 temperature fields is 0.07 seconds.

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.05
                    BICUBIC 1 0 0.16
                    BICUBIC 1 1 0.17
                    NEIGHBOR 2 0.02
                    BUDGET 3 -1,-1 0.94
                    SPECTRAL 4 0,40 0.31
                    SPECTRAL 4 1,40 0.33
                    SPECTRAL 4 0,-1 0.59
                    N-BUDGET 6 -1,-1 0.31
                    +

                    The spectral interpolation is fast for the mercator grid. However, for some grids the spectral interpolation is slow.

                    +

                    The following example is interpolating 12 levels of temperatures from the 360 x 181 global grid (ncep grid 3) to the 93 x 65 conus lambert conformal grid (ncep grid 211).

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.05
                    BICUBIC 1 0 0.15
                    BICUBIC 1 1 0.16
                    NEIGHBOR 2 0.02
                    BUDGET 3 -1,-1 0.92
                    SPECTRAL 4 0,40 4.51
                    SPECTRAL 4 1,40 5.77
                    SPECTRAL 4 0,-1 12.60
                    N-BUDGET 6 -1,-1 0.33
                    +
                    Date
                    July 2021
                    +
                    Author
                    Kyle Gerheiser
                    + +

                    Definition at line 565 of file ipolatev.F90.

                    + +

                    References ipolatev_mod::ipolatev_grid().

                    + +
                    +
                    + +

                    ◆ ipolatev_grib1_single_field()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipolatev_mod::ipolatev::ipolatev_grib1_single_field (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), dimension(200), intent(inout) kgdsi,
                    integer(c_int), dimension(200), intent(inout) kgdso,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), intent(in) ibi,
                    logical(c_bool), dimension(mi), intent(in) li,
                    real(c_double), dimension(mi), intent(in) ui,
                    real(c_double), dimension(mi), intent(in) vi,
                    integer(c_int), intent(out) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    real(c_double), dimension(mo), intent(inout) crot,
                    real(c_double), dimension(mo), intent(inout) srot,
                    integer(c_int), intent(out) ibo,
                    logical(c_bool), dimension(mo), intent(out) lo,
                    real(c_double), dimension(mo), intent(out) uo,
                    real(c_double), dimension(mo), intent(out) vo,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    +private
                    +
                    + +

                    Special case of ipolatev_grib1 when interpolating a single field.

                    +

                    Removes the km dimension of input arrays so vectors can be passed to ibi/ibo.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + +
                    ipInterpolation method
                      +
                    • ip = BILINEAR_INTERP_ID = 0 for bilinear
                    • +
                    • ip = BICUBIC_INTERP_ID = 1 for bicubic
                    • +
                    • ip = NEIGHBOR_INTERP_ID = 2 for neighbor;
                    • +
                    • ip = BUDGET_INTERP_ID = 3 for budget;
                    • +
                    • ip = SPECTRAL_INTERP_ID = 4 for spectral;
                    • +
                    • ip = NEIGHBOR_BUDGET_INTERP_ID = 6 for neighbor-budget
                    • +
                    +
                    ipoptInterpolation options
                      +
                    • ip=0 (bilinear): (No options)
                    • +
                    • ip=1 Cbicubic): constraint option
                    • +
                    • ip=2 (neighbor): (No options)
                    • +
                    • ip=3 (budget): Number in radius, radius weights, search radius
                    • +
                    • ip=4 (spectral): Spectral shape, spectral truncation
                    • +
                    • ip=6 (neighbor-budget): Number in radius, radius weights ...)
                    • +
                    +
                    [in]kgdsiInput gds parameters as decoded by w3fi63.
                    [in]kgdsoOutput gds parameters.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [in,out]crotVector rotation cosines (if igdtnumo>=0).
                    [in,out]srotVector rotation sines (if igdtnumo>=0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Date
                    Jan 2022
                    +
                    Author
                    Kyle Gerheiser
                    + +

                    Definition at line 680 of file ipolatev.F90.

                    + +

                    References ipolatev_mod::ipolatev_grid().

                    + +
                    +
                    + +

                    ◆ ipolatev_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipolatev_mod::ipolatev::ipolatev_grib2 (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), intent(in) igdtnumi,
                    integer(c_int), dimension(igdtleni), intent(in) igdtmpli,
                    integer(c_int), intent(in) igdtleni,
                    integer(c_int), intent(in) igdtnumo,
                    integer(c_int), dimension(igdtleno), intent(in) igdtmplo,
                    integer(c_int), intent(in) igdtleno,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), dimension(km), intent(in) ibi,
                    logical(c_bool), dimension(mi,km), intent(in) li,
                    real(c_double), dimension(mi,km), intent(in) ui,
                    real(c_double), dimension(mi,km), intent(in) vi,
                    integer(c_int), intent(out) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    real(c_double), dimension(mo), intent(inout) crot,
                    real(c_double), dimension(mo), intent(inout) srot,
                    integer(c_int), dimension(km), intent(out) ibo,
                    logical(c_bool), dimension(mo,km), intent(out) lo,
                    real(c_double), dimension(mo,km), intent(out) uo,
                    real(c_double), dimension(mo,km), intent(out) vo,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor.

                    +

                    This is a wrapper for ipolates_grid which converts a grib1 descriptor into an ip_grid_descriptor, which is used to create an ip_grid. Only horizontal interpolation is performed.

                    +

                    The following interpolation methods are possible:

                      +
                    • (ip=0) bilinear
                    • +
                    • (ip=1) bicubic
                    • +
                    • (ip=2) neighbor
                    • +
                    • (ip=3) budget
                    • +
                    • (ip=4) spectral
                    • +
                    • (ip=6) neighbor-budget
                    • +
                    +

                    Some of these methods have interpolation options and/or restrictions on the input or output grids, both of which are documented more fully in their respective subprograms.

                    +

                    Input and output grids are defined by their grib 2 grid definition template as decoded by the ncep g2 library. The current code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned.

                    +

                    On the other hand, data may be interpolated to a set of station points if "igdtnumo"<0 (or subtracted from 255 for the budget option), in which case the number of points and their latitudes and longitudes must be input.

                    +

                    Input bitmaps will be interpolated to output bitmaps. Output bitmaps will also be created when the output grid extends outside of the domain of the input grid.

                    +

                    The output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + +
                    [in]ipInterpolation method
                      +
                    • ip=0 for bilinear
                    • +
                    • ip=1 for bicubic
                    • +
                    • ip=2 for neighbor;
                    • +
                    • ip=3 for budget;
                    • +
                    • ip=4 for spectral;
                    • +
                    • ip=6 for neighbor-budget
                    • +
                    +
                    [in]ipoptInterpolation options
                      +
                    • ip=0: (No options)
                    • +
                    • ip=1: Constraint option
                    • +
                    • ip=2: (No options)
                    • +
                    • ip=3: Number in radius, radius weights, search radius
                    • +
                    • ip=4: Spectral shape, spectral truncation
                    • +
                    • ip=6: Number in radius, radius weights ...)
                    • +
                    +
                    [in]igdtnumiGrid definition template number for the input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 - Equidistant Cylindrical
                    • +
                    • 01 - Rotated Equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 - Mercator Cyclindrical
                    • +
                    • 20 - Polar Stereographic azimuthal
                    • +
                    • 30 - Lambert Conformal Conical
                    • +
                    • 40 - Gaussian Equidistant Cyclindrical
                    • +
                    +
                    [in]igdtmpliGrid definition template array input grid. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure
                    +
                    +
                    +

                    Section 3 Info:

                    +

                    All map projections:

                      +
                    1. Shape of earth, octet 15.
                    2. +
                    3. Scale factor of spherical earth radius, octet 16.
                    4. +
                    5. Scaled value of radius of spherical earth, octets 17-20.
                    6. +
                    7. Scale factor of major axis of elliptical earth, octet 21.
                    8. +
                    9. Scaled value of major axis of elliptical earth, octets 22-25.
                    10. +
                    11. Scale factor of minor axis of elliptical earth, octet 26. 7: Scaled value of minor axis of elliptical earth, octets 27-30.
                    12. +
                    +

                    Equidistant Cyclindrical:

                      +
                    1. Number of points along a parallel, octs 31-34.
                    2. +
                    3. Number of points along a meridian, octs 35-38.
                    4. +
                    5. Basic angle of initial production domain, octets 39-42.
                    6. +
                    7. Subdivisions of basic angle, octets 43-46.
                    8. +
                    9. Latitude of first grid point, octets 47-50.
                    10. +
                    11. Longitude of first grid point, octets 51-54.
                    12. +
                    13. Resolution and component flags, octet 55.
                    14. +
                    15. Latitude of last grid point, octets 56-59.
                    16. +
                    17. Longitude of last grid point, octets 60-63.
                    18. +
                    19. i-direction increment, octets 64-67.
                    20. +
                    21. j-direction increment, octets 68-71.
                    22. +
                    23. Scanning mode, octet 72.
                    24. +
                    +

                    Mercator Cyclindrical:

                      +
                    1. Number of points along a parallel, octs 31-34.
                    2. +
                    3. Number of points along a meridian, octs 35-38.
                    4. +
                    5. Latitude of first point, octets 39-42.
                    6. +
                    7. Longitude of first point, octets 43-46.
                    8. +
                    9. Resolution and component flags, octet 47.
                    10. +
                    11. Tangent latitude, octets 48-51.
                    12. +
                    13. Latitude of last point, octets 52-55.
                    14. +
                    15. Longitude of last point, octets 56-59.
                    16. +
                    17. Scanning mode flags, octet 60.
                    18. +
                    19. Orientation of grid, octets 61-64.
                    20. +
                    21. Longitudinal grid length, octets 65-68.
                    22. +
                    23. Latitudinal grid length, octets 69-72.
                    24. +
                    +

                    Lambert Conformal Conical:

                      +
                    1. Number of points along x-axis, octs 31-34.
                    2. +
                    3. Number of points along y-axis, octs 35-38.
                    4. +
                    5. Latitude of first point, octets 39-42.
                    6. +
                    7. Longitude of first point, octets 43-46.
                    8. +
                    9. Resolution of component flag, octet 47.
                    10. +
                    11. Latitude where grid lengths specified,octets 48-51.
                    12. +
                    13. Longitude of meridian that is parallel to y-axis, octets 52-55.
                    14. +
                    15. x-direction grid length, octets 56-59.
                    16. +
                    17. y-direction grid length, octets 60-63.
                    18. +
                    19. Projection center flag, octet 64.
                    20. +
                    21. Scanning mode, octet 65.
                    22. +
                    23. First tangent latitude from pole, octets 66-69.
                    24. +
                    25. Second tangent latitude from pole, octets 70-73.
                    26. +
                    27. Latitude of south pole of projection, octets 74-77.
                    28. +
                    29. Longitude of south pole of projection, octets 78-81.
                    30. +
                    +

                    Gaussian Cylindrical:

                      +
                    1. Number of points along a parallel, octs 31-34.
                    2. +
                    3. Number of points along a meridian, octs 35-38.
                    4. +
                    5. Basic angle of initial production domain, octets 39-42.
                    6. +
                    7. Subdivisions of basic angle, octets 43-46.
                    8. +
                    9. Latitude of first grid point, octets 47-50.
                    10. +
                    11. Longitude of first grid point, octets 51-54.
                    12. +
                    13. Resolution and component flags, octet 55.
                    14. +
                    15. Latitude of last grid point, octets 56-59.
                    16. +
                    17. Longitude of last grid point, octets 60-63.
                    18. +
                    19. i-direction increment, octets 64-67.
                    20. +
                    21. Number of parallels between pole and equator, octets 68-71.
                    22. +
                    23. Scanning mode, octet 72.
                    24. +
                    +

                    Polar Stereographic Azimuthal:

                      +
                    1. Number of points along x-axis, octets 31-34.
                    2. +
                    3. Number of points along y-axis, octets 35-38.
                    4. +
                    5. Latitude of first grid point, octets 39-42.
                    6. +
                    7. Longitude of first grid point, octets 43-46.
                    8. +
                    9. Resolution and component flags, octet 47.
                    10. +
                    11. True latitude, octets 48-51.
                    12. +
                    13. Orientation longitude, octets 52-55.
                    14. +
                    15. x-direction grid length, octets 56-59.
                    16. +
                    17. y-direction grid length, octets 60-63.
                    18. +
                    19. Projection center flag, octet 64.
                    20. +
                    21. Scanning mode flags, octet 65.
                    22. +
                    +

                    Rotated Equidistant Cyclindrical:

                      +
                    1. Number of points along a parallel, octs 31-34.
                    2. +
                    3. Number of points along a meridian, octs 35-38.
                    4. +
                    5. Basic angle of initial production domain, octets 39-42.
                    6. +
                    7. Subdivisions of basic angle, octets 43-46.
                    8. +
                    9. Latitude of first grid point, octets 47-50.
                    10. +
                    11. Longitude of first grid point, octets 51-54.
                    12. +
                    13. Resolution and component flags, octet 55.
                    14. +
                    15. Latitude of last grid point, octets 56-59.
                    16. +
                    17. Longitude of last grid point, octets 60-63.
                    18. +
                    19. i-direction increment, octets 64-67.
                    20. +
                    21. j-direction increment, octets 68-71.
                    22. +
                    23. Scanning mode, octet 72.
                    24. +
                    25. Latitude of southern pole of projection, octets 73-76.
                    26. +
                    27. Longitude of southern pole of projection, octets 77-80.
                    28. +
                    29. Angle of rotation of projection, octs 81-84.
                    30. +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + +
                    [in]igdtleniNumber of elements of the grid definition template array for the input grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumoGrid definition template number for the output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. See "igdtnumi" for specific template definitions. Note: igdtnumo<0 means interpolate to random station points.
                    [in]igdtmploGrid definition template array for the output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. See "igdtmpli" for definition of array elements.
                    [in]igdtlenoNumber of elements of the grid definition template array for the output grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [in,out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [in,out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [in,out]crotVector rotation cosines (if igdtnumo>=0).
                    [in,out]srotVector rotation sines (if igdtnumo>=0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Note
                    Examples demonstrating relative cpu costs. This example is interpolating 12 levels of winds from the 360 x 181 global grid (ncep grid 3) to the 93 x 68 hawaiian mercator grid (ncep grid 204).
                    +

                    The example times are for the c90. As a reference, the cp time for unpacking the global 12 wind fields is 0.07 seconds.

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.05
                    BICUBIC 1 0 0.16
                    BICUBIC 1 1 0.17
                    NEIGHBOR 2 0.02
                    BUDGET 3 -1,-1 0.94
                    SPECTRAL 4 0,40 0.31
                    SPECTRAL 4 1,40 0.33
                    SPECTRAL 4 0,-1 0.59
                    N-BUDGET 6 -1,-1 0.31
                    +

                    The spectral interpolation is fast for the mercator grid. However, for some grids the spectral interpolation is slow.

                    +

                    The following example is interpolating 12 levels of winds from the 360 x 181 global grid (ncep grid 3) to the 93 x 65 conus lambert conformal grid (ncep grid 211).

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.05
                    BICUBIC 1 0 0.15
                    BICUBIC 1 1 0.16
                    NEIGHBOR 2 0.02
                    BUDGET 3 -1,-1 0.92
                    SPECTRAL 4 0,40 4.51
                    SPECTRAL 4 1,40 5.77
                    SPECTRAL 4 0,-1 12.60
                    N-BUDGET 6 -1,-1 0.33
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 382 of file ipolatev.F90.

                    + +

                    References ipolatev_mod::ipolatev_grid().

                    + +
                    +
                    + +

                    ◆ ipolatev_grib2_single_field()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipolatev_mod::ipolatev::ipolatev_grib2_single_field (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), intent(in) igdtnumi,
                    integer(c_int), dimension(igdtleni), intent(in) igdtmpli,
                    integer(c_int), intent(in) igdtleni,
                    integer(c_int), intent(in) igdtnumo,
                    integer(c_int), dimension(igdtleno), intent(in) igdtmplo,
                    integer(c_int), intent(in) igdtleno,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), intent(in) ibi,
                    logical(c_bool), dimension(mi), intent(in) li,
                    real(c_double), dimension(mi), intent(in) ui,
                    real(c_double), dimension(mi), intent(in) vi,
                    integer(c_int), intent(out) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    real(c_double), dimension(mo), intent(inout) crot,
                    real(c_double), dimension(mo), intent(inout) srot,
                    integer(c_int), intent(out) ibo,
                    logical(c_bool), dimension(mo), intent(out) lo,
                    real(c_double), dimension(mo), intent(out) uo,
                    real(c_double), dimension(mo), intent(out) vo,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipInterpolation method
                      +
                    • ip=0 for bilinear
                    • +
                    • ip=1 for bicubic
                    • +
                    • ip=2 for neighbor;
                    • +
                    • ip=3 for budget;
                    • +
                    • ip=4 for spectral;
                    • +
                    • ip=6 for neighbor-budget
                    • +
                    +
                    [in]ipoptInterpolation options
                      +
                    • ip=0: (No options)
                    • +
                    • ip=1: Constraint option
                    • +
                    • ip=2: (No options)
                    • +
                    • ip=3: Number in radius, radius weights, search radius
                    • +
                    • ip=4: Spectral shape, spectral truncation
                    • +
                    • ip=6: Number in radius, radius weights ...)
                    • +
                    +
                    [in]igdtnumiGrid definition template number for the input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 - Equidistant Cylindrical
                    • +
                    • 01 - Rotated Equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 - Mercator Cyclindrical
                    • +
                    • 20 - Polar Stereographic azimuthal
                    • +
                    • 30 - Lambert Conformal Conical
                    • +
                    • 40 - Gaussian Equidistant Cyclindrical
                    • +
                    +
                    [in]igdtmpliGrid definition template array input grid. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure
                    [in]igdtleniNumber of elements of the grid definition template array for the input grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumoGrid definition template number for the output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. See "igdtnumi" for specific template definitions. Note: igdtnumo<0 means interpolate to random station points.
                    [in]igdtmploGrid definition template array for the output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. See "igdtmpli" for definition of array elements.
                    [in]igdtlenoNumber of elements of the grid definition template array for the output grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [in,out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [in,out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [in,out]crotVector rotation cosines (if igdtnumo>=0).
                    [in,out]srotVector rotation sines (if igdtnumo>=0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Eric Engle
                    +
                    Date
                    November 2022
                    + +

                    Definition at line 832 of file ipolatev.F90.

                    + +

                    References ipolatev_mod::ipolatev_grid().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceipolatev__mod_1_1ipolatev.js b/ver-5.0.0/interfaceipolatev__mod_1_1ipolatev.js new file mode 100644 index 00000000..37dfd10b --- /dev/null +++ b/ver-5.0.0/interfaceipolatev__mod_1_1ipolatev.js @@ -0,0 +1,7 @@ +var interfaceipolatev__mod_1_1ipolatev = +[ + [ "ipolatev_grib1", "interfaceipolatev__mod_1_1ipolatev.html#ac721867d3d8e8adc11d56baba4702d53", null ], + [ "ipolatev_grib1_single_field", "interfaceipolatev__mod_1_1ipolatev.html#ad211b25631afd3fd7c04bbfba589a7c5", null ], + [ "ipolatev_grib2", "interfaceipolatev__mod_1_1ipolatev.html#ac1ec04e3119f285f0f3955f016926efe", null ], + [ "ipolatev_grib2_single_field", "interfaceipolatev__mod_1_1ipolatev.html#aa0af88a9ccef79a921680fe40ec30ccd", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html b/ver-5.0.0/interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html new file mode 100644 index 00000000..e220667b --- /dev/null +++ b/ver-5.0.0/interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html @@ -0,0 +1,529 @@ + + + + + + + +NCEPLIBS-ip: neighbor_budget_interp_mod::interpolate_neighbor_budget Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    neighbor_budget_interp_mod::interpolate_neighbor_budget Interface Reference
                    +
                    +
                    + + + + + + + + +

                    +Private Member Functions

                    subroutine interpolate_neighbor_budget_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (budget). More...
                     
                    subroutine interpolate_neighbor_budget_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (budget). More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 17 of file neighbor_budget_interp_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ interpolate_neighbor_budget_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(out) RLAT,
                    real, dimension(mo), intent(out) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate scalar fields (budget).

                    +

                    This subprogram performs budget interpolation from any grid to any grid for scalar fields.

                    +

                    The algorithm simply computes (weighted) averages of neighbor points arranged in a square box centered around each output grid point and stretching nearly halfway to each of the neighboring grid points.

                    +

                    Options allow choices of number of points in each radius from the center point (ipopt(1)) which defaults to 2 (if ipopt(1)=-1) meaning that 25 points will be averaged; further options are the respective weights for the radius points starting at the center point (ipopt(2:2+ipopt(1)) which defaults to all 1 (if ipopt(1)=-1 or ipopt(2)=-1).

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(3+ipopt(1)) which defaults to 50 (if -1).

                    +

                    Only horizontal interpolation is performed.

                    +

                    The code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned. Input bitmaps will be interpolated to output bitmaps. Output bitmaps will also be created when the output grid extends outside of the domain of the input grid. The output field is set to 0 where the output bitmap is off.

                    +

                    +Program History Log

                    + + + + + + + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell Initial
                    96-10-04 Iredell neighbor points not bilinear interpolation
                    1999-04-08 Iredell split ijkgds into two pieces
                    2001-06-18 Iredell include minimum mask percentage option
                    2015-01-27 Gayno replace calls to gdswiz with new merged version of gdswzd.
                    2015-07-13 Gayno replace grib 1 kgds arrays with grib 2 grid definition template arrays.
                    2023-05-04 Engle allow calls to GDSWZD for station points
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1) is number of radius points (defaults to 2 if ipopt(1)=-1); ipopt(2:2+ipopt(1)) are respective weights (defaults to all 1 if ipopt(1)=-1 or ipopt(2)=-1). ipopt(3+ipopt(1)) is minimum percentage for mask (defaults to 50 if ipopt(3+ipopt(1)=-1)
                    [in]grid_inThe input grid.
                    [in]grid_outThe output grid.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags
                    [in]li(mi,km) input bitmaps (if some ibi(k)=1)
                    [in]gi(mi,km) input fields to interpolate
                    [out]nonumber of output points
                    [out]rlat(mo) output latitudes in degrees
                    [out]rlon(mo) output longitudes in degrees
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]go(mo,km) output fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 31 invalid undefined output grid
                    • +
                    • 32 invalid budget method parameters
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 107 of file neighbor_budget_interp_mod.F90.

                    + +

                    References polfix_mod::polfixs().

                    + +
                    +
                    + +

                    ◆ interpolate_neighbor_budget_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_vector (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(out) CROT,
                    real, dimension(mo), intent(out) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate vector fields (budget).

                    +

                    This subprogram performs budget interpolation from any grid to any grid for vector fields.

                    +

                    The algorithm simply computes (weighted) averages of neighbor points arranged in a square box centered around each output grid point and stretching nearly halfway to each of the neighboring grid points.

                    +

                    Options allow choices of number of points in each radius from the center point (ipopt(1)) which defaults to 2 (if ipopt(1)=-1) meaning that 25 points will be averaged; further options are the respective weights for the radius points starting at the center point (ipopt(2:2+ipopt(1)) which defaults to all 1 (if ipopt(1)=-1 or ipopt(2)=-1).

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(3+ipopt(1)) which defaults to 50 (if -1).

                    +

                    Only horizontal interpolation is performed.

                    +

                    The input and output grids are defined by their grib 2 grid definition template as decoded by the ncep g2 library. the code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    The input and output vectors are rotated so that they are either resolved relative to the defined grid in the direction of increasing x and y coordinates or resolved relative to easterly and northerly directions, as designated by their respective grid description sections.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned along with their vector rotation parameters. Input bitmaps will be interpolated to output bitmaps.

                    +

                    Output bitmaps will also be created when the output grid extends outside of the domain of the input grid. The output field is set to 0 where the output bitmap is off.

                    +

                    +Program History Log

                    + + + + + + + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell Initial
                    1999-04-08 Iredell split ijkgds into two pieces
                    2001-06-18 Iredell include minimum mask percentage option
                    2002-01-17 Iredell save data from last call for optimization
                    2015-01-27 Gayno replace calls to gdswiz with new merged routine gdswzd.
                    2015-07-13 Gayno replace grib 1 kgds arrays with grib 2 grid definition template arrays.
                    2023-05-04 Engle allow calls to GDSWZD for station points
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1) is number of radius points (defaults to 2 if ipopt(1)=-1); ipopt(2:2+ipopt(1)) are respective weights (defaults to all 1 if ipopt(1)=-1 or ipopt(2)=-1). ipopt(3+ipopt(1)) is minimum percentage for mask (defaults to 50 if ipopt(3+ipopt(1)=-1)
                    [in]grid_inThe input grid.
                    [in]grid_outThe output grid.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags
                    [in]li(mi,km) input bitmaps (if some ibi(k)=1)
                    [in]ui(mi,km) input u-component fields to interpolate
                    [in]vi(mi,km) input v-component fields to interpolate
                    [out]nonumber of output points
                    [out]rlat(mo) output latitudes in degrees
                    [out]rlon(mo) output longitudes in degrees
                    [out]crot(mo) vector rotation cosines
                    [out]srot(mo) vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]uo(mo,km) output u-component fields interpolated
                    [out]vo(mo,km) output v-component fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 31 invalid undefined output grid
                    • +
                    • 32 invalid budget method parameters
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    +
                    + +

                    Definition at line 351 of file neighbor_budget_interp_mod.F90.

                    + +

                    References movect(), and polfix_mod::polfixv().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.js b/ver-5.0.0/interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.js new file mode 100644 index 00000000..6e10186a --- /dev/null +++ b/ver-5.0.0/interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.js @@ -0,0 +1,5 @@ +var interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget = +[ + [ "interpolate_neighbor_budget_scalar", "interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a96e4b145a4df6f4948b1d5ae2da6a71a", null ], + [ "interpolate_neighbor_budget_vector", "interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a573bd5ac43484aa6d051e58f37ff7c06", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfaceneighbor__interp__mod_1_1interpolate__neighbor.html b/ver-5.0.0/interfaceneighbor__interp__mod_1_1interpolate__neighbor.html new file mode 100644 index 00000000..bf165ee7 --- /dev/null +++ b/ver-5.0.0/interfaceneighbor__interp__mod_1_1interpolate__neighbor.html @@ -0,0 +1,486 @@ + + + + + + + +NCEPLIBS-ip: neighbor_interp_mod::interpolate_neighbor Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    neighbor_interp_mod::interpolate_neighbor Interface Reference
                    +
                    +
                    + + + + + + + + +

                    +Private Member Functions

                    subroutine interpolate_neighbor_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (neighbor). More...
                     
                    subroutine interpolate_neighbor_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (neighbor). More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 29 of file neighbor_interp_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ interpolate_neighbor_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(inout) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate scalar fields (neighbor).

                    +

                    This subprogram performs neighbor interpolation from any grid to any grid for scalar fields.

                    +

                    Options allow choosing the width of the grid square (ipopt(1)) to search for valid data, which defaults to 1 (if ipopt(1)=-1). Odd width squares are centered on the nearest input grid point; even width squares are centered on the nearest four input grid points. Squares are searched for valid data in a spiral pattern starting from the center. No searching is done where the output grid is outside the input grid. Only horizontal interpolation is performed.

                    +

                    The code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned. On the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input.

                    +

                    Input bitmaps will be interpolated to output bitmaps.

                    +

                    Output bitmaps will also be created when the output grid extends outside of the domain of the input grid. The output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1) is width of square to examine in spiral search (defaults to 1 if ipopt(1)=-1)
                    [in]grid_inThe input grid.
                    [in]grid_outThe output grid.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags
                    [in]li(mi,km) input bitmaps (if some ibi(k)=1)
                    [in]gi(mi,km) input fields to interpolate
                    [in,out]nonumber of output points (only if igdtnumo<0)
                    [in,out]rlat(no) output latitudes in degrees (if igdtnumo<0)
                    [in,out]rlon(no) output longitudes in degrees (if igdtnumo<0)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]go(mo,km) output fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    +
                    Author
                    Eric Engle
                    +
                    Date
                    23-05-04
                    + +

                    Definition at line 100 of file neighbor_interp_mod.F90.

                    + +

                    References polfix_mod::polfixs().

                    + +
                    +
                    + +

                    ◆ interpolate_neighbor_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_vector (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(inout) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(inout) CROT,
                    real, dimension(mo), intent(inout) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate vector fields (neighbor).

                    +

                    This subprogram performs neighbor interpolation from any grid to any grid for vector fields.

                    +

                    Options allow choosing the width of the grid square (ipopt(1)) to search for valid data, which defaults to 1 (IF IPOPT(1)=-1). Odd width squares are centered on the nearest input grid point; even width squares are centered on the nearest four input grid points.

                    +

                    Squares are searched for valid data in a spiral pattern starting from the center. no searching is done where the output grid is outside the input grid. Only horizontal interpolation is performed.

                    +

                    The input and output grids are defined by their grib 2 grid definition template as decoded by the ncep g2 library.

                    +

                    The code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    The input and output vectors are rotated so that they are either resolved relative to the defined grid in the direction of increasing x and y coordinates or resolved relative to easterly and northerly directions, as designated by their respective grid definition sections.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned along with their vector rotation parameters. On the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input along with their vector rotation parameters.

                    +

                    Input bitmaps will be interpolated to output bitmaps. output bitmaps will also be created when the output grid extends outside of the domain of the input grid. The output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1) is width of square to examine in spiral search (defaults to 1 if ipopt(1)=-1)
                    [in]grid_inThe input grid.
                    [in]grid_outThe output grid.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags
                    [in]li(mi,km) input bitmaps (if some ibi(k)=1)
                    [in]ui(mi,km) input u-component fields to interpolate
                    [in]vi(mi,km) input v-component fields to interpolate
                    [in,out]nonumber of output points (only if igdtnumo>=0)
                    [in,out]rlat(mo) output latitudes in degrees (if igdtnumo<0)
                    [in,out]rlon(mo) output longitudes in degrees (if igdtnumo<0)
                    [in,out]crot(mo) vector rotation cosines (if igdtnumo<0)
                    [in,out]srot(mo) vector rotation sines (if igdtnumo<0) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]uo(mo,km) output u-component fields interpolated
                    [out]vo(mo,km) output v-component fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    +
                    Author
                    Eric Engle
                    +
                    Date
                    23-05-04
                    + +

                    Definition at line 352 of file neighbor_interp_mod.F90.

                    + +

                    References movect(), and polfix_mod::polfixv().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfaceneighbor__interp__mod_1_1interpolate__neighbor.js b/ver-5.0.0/interfaceneighbor__interp__mod_1_1interpolate__neighbor.js new file mode 100644 index 00000000..8c728bf7 --- /dev/null +++ b/ver-5.0.0/interfaceneighbor__interp__mod_1_1interpolate__neighbor.js @@ -0,0 +1,5 @@ +var interfaceneighbor__interp__mod_1_1interpolate__neighbor = +[ + [ "interpolate_neighbor_scalar", "interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a04ebb54535e67ff95c1d3d64b9cf6246", null ], + [ "interpolate_neighbor_vector", "interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a4662245e2744fd14628b48f23bf4f0a7", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfacespectral__interp__mod_1_1interpolate__spectral.html b/ver-5.0.0/interfacespectral__interp__mod_1_1interpolate__spectral.html new file mode 100644 index 00000000..98c4e117 --- /dev/null +++ b/ver-5.0.0/interfacespectral__interp__mod_1_1interpolate__spectral.html @@ -0,0 +1,428 @@ + + + + + + + +NCEPLIBS-ip: spectral_interp_mod::interpolate_spectral Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spectral_interp_mod::interpolate_spectral Interface Reference
                    +
                    +
                    + + + + + + + + +

                    +Private Member Functions

                    subroutine interpolate_spectral_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate spectral scalar. More...
                     
                    subroutine interpolate_spectral_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate spectral vector. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 19 of file spectral_interp_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ interpolate_spectral_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::interpolate_spectral::interpolate_spectral_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate spectral scalar.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + +
                    [in]ipoptinterpolation options; ipopt(1)=0 for triangular; ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to a sensible truncation if ipopt(2)=-1).
                    [in]grid_ininput grid descriptor.
                    [in]grid_outoutput grid descriptor.
                    [in]MIskip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]MOskip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]KMnumber of fields to interpolate.
                    [in]IBIinput bitmap flags (Must be all 0. Routine does not do bitmapped interpolation.)
                    [in]GIinput fields to interpolate.
                    [out]NOnumber of output points.
                    [in,out]RLAToutput latitudes in degrees.
                    [in,out]RLONoutput longitudes in degrees.
                    [out]IBOoutput bitmap flags.
                    [out]LOoutput bitmaps.
                    [out]GOoutput fields interpolated.
                    [out]IRETreturn code. 0/non-0 - successful/not successful.
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 60 of file spectral_interp_mod.F90.

                    + +
                    +
                    + +

                    ◆ interpolate_spectral_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::interpolate_spectral::interpolate_spectral_vector (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(out) CROT,
                    real, dimension(mo), intent(out) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate spectral vector.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    ipoptinterpolation options; ipopt(1)=0 for triangular; ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to a sensible truncation if ipopt(2)=-1).
                    grid_ininput grid descriptor.
                    grid_outoutput grid descriptor.
                    MIskip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    MOskip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    KMnumber of fields to interpolate.
                    IBIinput bitmap flags (Must be all 0. Routine does not do bitmapped interpolation.)
                    UIinput u-component fields to interpolate.
                    VIinput v-component fields to interpolate.
                    NOnumber of output points.
                    RLAToutput latitudes in degrees.
                    RLONoutput longitudes in degrees.
                    CROTvector rotation cosines.
                    SROTvector rotation sines.
                    IBOoutput bitmap flags.
                    LOoutput bitmaps.
                    UOoutput u-component fields interpolated.
                    VOoutput v-component fields interpolated.
                    IRETreturn code. 0/non-0 - successful/not successful.
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 121 of file spectral_interp_mod.F90.

                    + +

                    References spectral_interp_mod::polatev4_grib1().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfacespectral__interp__mod_1_1interpolate__spectral.js b/ver-5.0.0/interfacespectral__interp__mod_1_1interpolate__spectral.js new file mode 100644 index 00000000..3730bfea --- /dev/null +++ b/ver-5.0.0/interfacespectral__interp__mod_1_1interpolate__spectral.js @@ -0,0 +1,5 @@ +var interfacespectral__interp__mod_1_1interpolate__spectral = +[ + [ "interpolate_spectral_scalar", "interfacespectral__interp__mod_1_1interpolate__spectral.html#a79f600a26ecf256a8a13cf4bdbaf2ab1", null ], + [ "interpolate_spectral_vector", "interfacespectral__interp__mod_1_1interpolate__spectral.html#a9e939bbb3f7b214fee26c1e77764e487", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfacespectral__interp__mod_1_1polates4.html b/ver-5.0.0/interfacespectral__interp__mod_1_1polates4.html new file mode 100644 index 00000000..5516cbd8 --- /dev/null +++ b/ver-5.0.0/interfacespectral__interp__mod_1_1polates4.html @@ -0,0 +1,504 @@ + + + + + + + +NCEPLIBS-ip: spectral_interp_mod::polates4 Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spectral_interp_mod::polates4 Interface Reference
                    +
                    +
                    + + + + + + + + +

                    +Private Member Functions

                    subroutine polates4_grib1 (IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (spectral). More...
                     
                    subroutine polates4_grib2 (IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (spectral). More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 24 of file spectral_interp_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ polates4_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::polates4::polates4_grib1 (integer, dimension(20), intent(in) IPOPT,
                    integer, dimension(200), intent(in) KGDSI,
                    integer, dimension(200), intent(in) KGDSO,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) GI,
                    integer NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate scalar fields (spectral).

                    +

                    This subprogram performs spectral interpolation from any grid to any grid for scalar fields. It requires that the input fields be uniformly global.

                    +

                    Options allow choices between triangular shape (ipopt(1)=0) and rhomboidal shape (ipopt(1)=1) which has no default; a second option is the truncation (ipopt(2)) which defaults to a sensible truncation for the input grid (if opt(2)=-1).

                    +
                    Note
                    If the output grid is not found in a special list, then the transform back to grid is not very fast. This special list contains global cylindrical grids, polar stereographic grids centered at the pole and mercator grids.
                    +

                    Only horizontal interpolation is performed. The grids are defined by their grid description sections (passed in integer form as decoded by subprogram w3fi63()).

                    +

                    The current code recognizes the following projections:

                      +
                    • kgds(1) = 000 equidistant cylindrical
                    • +
                    • kgds(1) = 001 mercator cylindrical
                    • +
                    • kgds(1) = 003 lambert conformal conical
                    • +
                    • kgds(1) = 004 gaussian cylindrical (spectral native)
                    • +
                    • kgds(1) = 005 polar stereographic azimuthal
                    • +
                    • kgds(1) = 203 rotated equidistant cylindrical (e-stagger)
                    • +
                    • kgds(1) = 205 rotated equidistant cylindrical (b-stagger)
                    • +
                    +

                    Where kgds could be either input kgdsi or output kgdso. As an added bonus the number of output grid points and their latitudes and longitudes are also returned. On the other hand, the output can be a set of station points if kgdso(1)<0, in which case the number of points and their latitudes and longitudes must be input. Output bitmaps will not be created.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell Initial
                    2001-06-18 Iredell improve detection of special fast transform
                    2015-01-27 Gayno replace calls to gdswiz() with new merged version of gdswzd().
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1)=0 for triangular, ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to sensible if ipopt(2)=-1).
                    [in]kgdsi(200) input gds parameters as decoded by w3fi63
                    [in]kgdso(200) output gds parameters (kgdso(1)<0 implies random station points)
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags (must be all 0)
                    [in]gi(mi,km) input fields to interpolate
                    [out]nonumber of output points (only if kgdso(1)<0)
                    [out]rlat(no) output latitudes in degrees (if kgdso(1)<0)
                    [out]rlon(no) output longitudes in degrees (if kgdso(1)<0)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]go(mo,km) output fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 41 invalid nonglobal input grid
                    • +
                    • 42 invalid spectral method parameters
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 559 of file spectral_interp_mod.F90.

                    + +

                    References sptrun(), sptrung(), sptrunm(), and sptruns().

                    + +
                    +
                    + +

                    ◆ polates4_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::polates4::polates4_grib2 (integer, dimension(20), intent(in) IPOPT,
                    integer, intent(in) IGDTNUMI,
                    integer, dimension(igdtleni), intent(in) IGDTMPLI,
                    integer, intent(in) IGDTLENI,
                    integer, intent(in) IGDTNUMO,
                    integer, dimension(igdtleno), intent(in) IGDTMPLO,
                    integer, intent(in) IGDTLENO,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate scalar fields (spectral).

                    +

                    This subprogram performs spectral interpolation from any grid to any grid for scalar fields. It requires that the input fields be uniformly global. Options allow choices between triangular shape (ipopt(1)=0) and rhomboidal shape (ipopt(1)=1) which has no default; a second option is the truncation (ipopt(2)) which defaults to a sensible truncation for the input grid (if opt(2)=-1).

                    +
                    Note
                    If the output grid is not found in a special list, then the transform back to grid is not very fast. This special list contains global cylindrical grids, polar stereographic grids centered at the pole and mercator grids.
                    +

                    Only horizontal interpolation is performed.

                    +

                    The code recognizes the following projections, where "igdtnumi/o" is the GRIB2 grid defintion template number for the input and onutput grids, respectively:

                      +
                    • igdtnumi/o = 00 equidistant cylindrical
                    • +
                    • igdtnumo = 01 rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • igdtnumo = 10 mercator cylindrical
                    • +
                    • igdtnumo = 20 polar stereographic azimuthal
                    • +
                    • igdtnumo = 30 lambert conformal conical
                    • +
                    • igdtnumi/o = 40 gaussian cylindrical
                    • +
                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned. On the other hand, the output can be a set of station points if igdtnumo < 0, in which case the number of points and their latitudes and longitudes must be input. Output bitmaps will not be created.

                    +

                    +Program History Log

                    + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell initial
                    2001-06-18 Iredell improve detection of special fast transform
                    2015-01-27 Gayno replace calls to gdswiz with new merged version of gdswzd.
                    2015-07-13 Gayno convert to grib 2. replace grib 1 kgds arrays with grib 2 grid definition template arrays.
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options; ipopt(1)=0 for triangular, ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to sensible if ipopt(2)=-1).
                    [in]igdtnumigrid definition template number - input grid. Corresponds to the gfldigdtnum component of the NCEPLIBS-g2 library gridmod data structure.
                      +
                    • 00 - equidistant cylindrical
                    • +
                    • 01 - rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 - mercator cyclindrical
                    • +
                    • 20 - polar stereographic azimuthal
                    • +
                    • 30 - lambert conformal conical
                    • +
                    • 40 - gaussian equidistant cyclindrical
                    • +
                    +
                    [in]igdtmpli(igdtleni) grid definition template array - input grid. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure: (section 3 info). See comments in routine ipolates() for complete definition.
                    [in]igdtleninumber of elements of the grid definition template array - input grid. corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumogrid definition template number - output grid. Corresponds to the gfldigdtnum component of the NCEPLIBS-g2 library gridmod data structure. igdtnumo<0 means interpolate to random station points. Otherwise, same definition as igdtnumi.
                    [in]igdtmplo(igdtleno) grid definition template array - output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure (section 3 info). See comments in routine ipolates() for complete definition.
                    [in]igdtlenonumber of elements of the grid definition template array - output grid. Corresponds to the gfldigdtlen component of the [NCEPLIBS-g2](https://github.com/NOAA-EMC/NCEPLIBS-g2) library gridmod data structure.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [out]kmnumber of fields to interpolate
                    [out]ibi(km) input bitmap flags (must be all 0)
                    [out]gi(mi,km) input fields to interpolate
                    [out]nonumber of output points (only if igdtnumo>=0)
                    [out]rlat(mo) output latitudes in degrees (if igdtnumo<0)
                    [out]rlon(mo) output longitudes in degrees (if igdtnumo<0)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]go(mo,km) output fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 41 invalid nonglobal input grid
                    • +
                    • 42 invalid spectral method parameters
                    • +
                    +
                    +
                    +
                    +

                    !

                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 254 of file spectral_interp_mod.F90.

                    + +

                    References earth_radius_mod::earth_radius(), sptrun(), sptrung(), sptrunm(), and sptruns().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfacespectral__interp__mod_1_1polates4.js b/ver-5.0.0/interfacespectral__interp__mod_1_1polates4.js new file mode 100644 index 00000000..ab313a31 --- /dev/null +++ b/ver-5.0.0/interfacespectral__interp__mod_1_1polates4.js @@ -0,0 +1,5 @@ +var interfacespectral__interp__mod_1_1polates4 = +[ + [ "polates4_grib1", "interfacespectral__interp__mod_1_1polates4.html#a0be1315db4dce899083176b47b6ea6a4", null ], + [ "polates4_grib2", "interfacespectral__interp__mod_1_1polates4.html#a3fdc75851f1f741e715a1c3e1e4d89c9", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/interfacespectral__interp__mod_1_1polatev4.html b/ver-5.0.0/interfacespectral__interp__mod_1_1polatev4.html new file mode 100644 index 00000000..37741758 --- /dev/null +++ b/ver-5.0.0/interfacespectral__interp__mod_1_1polatev4.html @@ -0,0 +1,562 @@ + + + + + + + +NCEPLIBS-ip: spectral_interp_mod::polatev4 Interface Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spectral_interp_mod::polatev4 Interface Reference
                    +
                    +
                    + + + + + + + + +

                    +Private Member Functions

                    subroutine polatev4_grib1 (IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (spectral). More...
                     
                    subroutine polatev4_grib2 (IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (spectral). More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 29 of file spectral_interp_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ polatev4_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::polatev4::polatev4_grib1 (integer, dimension(20), intent(in) IPOPT,
                    integer, dimension(200), intent(in) KGDSI,
                    integer, dimension(200), intent(in) KGDSO,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(out) CROT,
                    real, dimension(mo), intent(out) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate vector fields (spectral).

                    +

                    This subprogram performs spectral interpolation from any grid to any grid for vector fields. It requires that the input fields be uniformly global. Options allow choices between triangular shape (ipopt(1)=0) and rhomboidal shape (ipopt(1)=1) which has no default; a second option is the truncation (ipopt(2)) which defaults to a sensible truncation for the input grid (if opt(2)=-1).

                    +
                    Note
                    If the output grid is not found in a special list, then the transform back to grid is not very fast. This special list contains global cylindrical grids, polar stereographic grids centered at the pole and mercator grids.
                    +

                    Only horizontal interpolation is performed. The grids are defined by their grid description sections (passed in integer form as decoded by subprogram w3fi63).

                    +

                    The current code recognizes the following projections:

                      +
                    • (KGDS(1)=000) EQUIDISTANT CYLINDRICAL
                    • +
                    • (KGDS(1)=001) MERCATOR CYLINDRICAL
                    • +
                    • (KGDS(1)=003) LAMBERT CONFORMAL CONICAL
                    • +
                    • (KGDS(1)=004) GAUSSIAN CYLINDRICAL (SPECTRAL NATIVE)
                    • +
                    • (KGDS(1)=005) POLAR STEREOGRAPHIC AZIMUTHAL
                    • +
                    • (KGDS(1)=203) ROTATED EQUIDISTANT CYLINDRICAL (E-STAGGER)
                    • +
                    • (KGDS(1)=205) ROTATED EQUIDISTANT CYLINDRICAL (B-STAGGER)
                    • +
                    +

                    Where kgds could be either input kgdsi or output kgdso.

                    +

                    The input and output vectors are rotated so that they are either resolved relative to the defined grid in the direction of increasing x and y coordinates or resolved relative to easterly and northerly directions, as designated by their respective grid description sections. As an added bonus the number of output grid points and their latitudes and longitudes are also returned along with their vector rotation parameters. On the other hand, the output can be a set of station points if kgdso(1)<0, in which case the number of points and their latitudes and longitudes must be input along with their vector rotation parameters.

                    +

                    Output bitmaps will only be created when the output grid extends outside of the domain of the input grid. The output field is set to 0 where the output bitmap is off.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 iredell initial.
                    2001-06-18 iredell improve detection of special fast transform
                    2015-01-27 gayno replace calls to gdswiz() with new merged routine gdswzd().
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1)=0 for triangular, ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to sensible if ipopt(2)=-1).
                    [in]kgdsi(200) input gds parameters as decoded by w3fi63.
                    [in]kgdso(200) output gds parameters (kgdso(1)<0 implies random station points).
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags (must be all 0)
                    [in]ui(mi,km) input u-component fields to interpolate
                    [in]vi(mi,km) input v-component fields to interpolate
                    [out]nonumber of output points (only if kgdso(1)<0)
                    [out]rlat(no) output latitudes in degrees (if kgdso(1)<0)
                    [out]rlon(no) output longitudes in degrees (if kgdso(1)<0)
                    [out]crot(no) vector rotation cosines (if kgdso(1)<0)
                    [out]srot(no) vector rotation sines (if kgdso(1)<0) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]uo(mo,km) output u-component fields interpolated
                    [out]vo(mo,km) output v-component fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 41 invalid nonglobal input grid
                    • +
                    • 42 invalid spectral method parameters
                    • +
                    +
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 1221 of file spectral_interp_mod.F90.

                    + +

                    References sptrungv(), sptrunmv(), sptrunsv(), and sptrunv().

                    + +
                    +
                    + +

                    ◆ polatev4_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::polatev4::polatev4_grib2 (integer, dimension(20), intent(in) IPOPT,
                    integer, intent(in) IGDTNUMI,
                    integer, dimension(igdtleni), intent(in) IGDTMPLI,
                    integer, intent(in) IGDTLENI,
                    integer, intent(in) IGDTNUMO,
                    integer, dimension(igdtleno), intent(in) IGDTMPLO,
                    integer, intent(in) IGDTLENO,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(out) CROT,
                    real, dimension(mo), intent(out) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate vector fields (spectral).

                    +

                    This subprogram performs spectral interpolation from any grid to any grid for vector fields. It requires that the input fields be uniformly global. Options allow choices between triangular shape (ipopt(1)=0) and rhomboidal shape (ipopt(1)=1) which has no default; a second option is the truncation (ipopt(2)) which defaults to a sensible truncation for the input grid (if opt(2)=-1).

                    +
                    Note
                    If the output grid is not found in a special list, then the transform back to grid is not very fast. This special list contains global cylindrical grids, polar stereographic grids centered at the pole and mercator grids. Only horizontal interpolation is performed.
                    +

                    The input and output grids are defined by their grib 2 grid definition template as decoded by the ncep g2 library. The code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • igdtnumi/o=00 equidistant cylindrical
                    • +
                    • igdtnumo =01 rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • igdtnumo =10 mercator cylindrical
                    • +
                    • igdtnumo =20 polar stereographic azimuthal
                    • +
                    • igdtnumo =30 lambert conformal conical
                    • +
                    • igdtnumi/o=40 gaussian cylindrical
                    • +
                    +

                    The input and output vectors are rotated so that they are either resolved relative to the defined grid in the direction of increasing x and y coordinates or resolved relative to easterly and northerly directions, as designated by their respective grid description sections.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned along with their vector rotation parameters. On the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input along with their vector rotation parameters.

                    +

                    Output bitmaps will only be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +

                    +Program History Log

                    + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 iredell initial
                    2001-06-18 iredell improve detection of special fast transform
                    2015-01-27 gayno replace calls to gdswiz() with new merged routine gdswzd().
                    2015-07-13 gayno convert to grib 2. replace grib 1 kgds arrays with grib 2 grid definition template arrays.
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1)=0 for triangular, ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to sensible if ipopt(2)=-1).
                    [in]igdtnumigrid definition template number - input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 equidistant cylindrical
                    • +
                    • 01 rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 mercator cyclindrical
                    • +
                    • 20 polar stereographic azimuthal
                    • +
                    • 30 lambert conformal conical
                    • +
                    • 40 gaussian equidistant cyclindrical
                    • +
                    +
                    [in]igdtmpli(igdtleni) grid definition template array - input grid. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure (section 3 info). see comments in routine ipolatev for complete definition.
                    [in]igdtleninumber of elements of the grid definition template array - input grid. corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumogrid definition template number - output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. igdtnumo<0 means interpolate to random station points. Otherwise, same definition as "igdtnumi".
                    [in]igdtmplo(igdtleno) grid definition template array - output grid. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure (section 3 info). see comments in routine ipolatev() for complete definition.
                    [in]igdtlenonumber of elements of the grid definition template array - output grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags (must be all 0)
                    [in]ui(mi,km) input u-component fields to interpolate
                    [in]vi(mi,km) input v-component fields to interpolate
                    [out]nonumber of output points (only if igdtnumo>=0)
                    [in,out]rlat(mo) output latitudes in degrees (if igdtnumo<0)
                    [in,out]rlon(mo) output longitudes in degrees (if igdtnumo<0)
                    [in,out]crot(mo) vector rotation cosines (if igdtnumo<0)
                    [in,out]srot(mo) vector rotation sines (if igdtnumo<0) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]uo(mo,km) output u-component fields interpolated
                    [out]vo(mo,km) output v-component fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 41 invalid nonglobal input grid
                    • +
                    • 42 invalid spectral method parameters
                    • +
                    +
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 887 of file spectral_interp_mod.F90.

                    + +

                    References earth_radius_mod::earth_radius(), sptrungv(), sptrunmv(), sptrunsv(), and sptrunv().

                    + +
                    +
                    +
                    The documentation for this interface was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/interfacespectral__interp__mod_1_1polatev4.js b/ver-5.0.0/interfacespectral__interp__mod_1_1polatev4.js new file mode 100644 index 00000000..f9e2e84e --- /dev/null +++ b/ver-5.0.0/interfacespectral__interp__mod_1_1polatev4.js @@ -0,0 +1,5 @@ +var interfacespectral__interp__mod_1_1polatev4 = +[ + [ "polatev4_grib1", "interfacespectral__interp__mod_1_1polatev4.html#a5fa619eb983da3326380e9bafcf49ca8", null ], + [ "polatev4_grib2", "interfacespectral__interp__mod_1_1polatev4.html#a9dcbaeb719e3872ad5ad461adde5c98b", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__constants__mod_8F90.html b/ver-5.0.0/ip__constants__mod_8F90.html new file mode 100644 index 00000000..14f3e881 --- /dev/null +++ b/ver-5.0.0/ip__constants__mod_8F90.html @@ -0,0 +1,141 @@ + + + + + + + +NCEPLIBS-ip: ip_constants_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_constants_mod.F90 File Reference
                    +
                    +
                    + +

                    Constants for use in NCEPLIBS-ip. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Modules

                    module  ip_constants_mod
                     Module containing common constants.
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real, parameter ip_constants_mod::dpr =180.0/pi
                     Radians to degrees. More...
                     
                    real, parameter ip_constants_mod::e2_wgs84 = 0.00669437999013
                     Eccentricity squared of Earth defined by WGS-84. More...
                     
                    real, parameter ip_constants_mod::pi =3.14159265358979
                     PI. More...
                     
                    real, parameter ip_constants_mod::pi2 =pi/2.0
                     PI / 2.0. More...
                     
                    real, parameter ip_constants_mod::pi4 =pi/4.0
                     PI / 4.0. More...
                     
                    real, parameter ip_constants_mod::rerth_wgs84 =6.378137E6
                     Radius of the Earth defined by WGS-84. More...
                     
                    +

                    Detailed Description

                    +

                    Constants for use in NCEPLIBS-ip.

                    +
                    Author
                    Kyle Gerheiser, George Gayno, Alex Richert
                    +
                    Date
                    July 2021
                    + +

                    Definition in file ip_constants_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__constants__mod_8F90.js b/ver-5.0.0/ip__constants__mod_8F90.js new file mode 100644 index 00000000..1cc27c8a --- /dev/null +++ b/ver-5.0.0/ip__constants__mod_8F90.js @@ -0,0 +1,9 @@ +var ip__constants__mod_8F90 = +[ + [ "dpr", "ip__constants__mod_8F90.html#ae6b74489db06341b78c3088b3f207011", null ], + [ "e2_wgs84", "ip__constants__mod_8F90.html#af7783a977fa10c54d85282dc6ac5f545", null ], + [ "pi", "ip__constants__mod_8F90.html#a47f83a2267da693170054c958c401cd4", null ], + [ "pi2", "ip__constants__mod_8F90.html#a309f7e3b1f83b6b272b12ce4fff501c5", null ], + [ "pi4", "ip__constants__mod_8F90.html#a5fe7cdd86b44487666dc37f655d9ff15", null ], + [ "rerth_wgs84", "ip__constants__mod_8F90.html#ac6a501512f426673f064edbecd7a62fb", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__constants__mod_8F90_source.html b/ver-5.0.0/ip__constants__mod_8F90_source.html new file mode 100644 index 00000000..990a0fe5 --- /dev/null +++ b/ver-5.0.0/ip__constants__mod_8F90_source.html @@ -0,0 +1,122 @@ + + + + + + + +NCEPLIBS-ip: ip_constants_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_constants_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    + +
                    10  implicit none
                    +
                    11 
                    +
                    12  public
                    +
                    13 
                    +
                    14  real, parameter :: pi=3.14159265358979
                    +
                    15  real, parameter :: dpr=180.0/pi
                    +
                    16  real, parameter :: pi2=pi/2.0
                    +
                    17  real, parameter :: pi4=pi/4.0
                    +
                    18  real, parameter :: rerth_wgs84=6.378137e6
                    +
                    19  real, parameter :: e2_wgs84 = 0.00669437999013
                    +
                    20 
                    +
                    21 end module ip_constants_mod
                    +
                    22 
                    +
                    Module containing common constants.
                    +
                    real, parameter pi2
                    PI / 2.0.
                    +
                    real, parameter pi
                    PI.
                    +
                    real, parameter pi4
                    PI / 4.0.
                    +
                    real, parameter rerth_wgs84
                    Radius of the Earth defined by WGS-84.
                    +
                    real, parameter dpr
                    Radians to degrees.
                    +
                    real, parameter e2_wgs84
                    Eccentricity squared of Earth defined by WGS-84.
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__equid__cylind__grid__mod_8F90.html b/ver-5.0.0/ip__equid__cylind__grid__mod_8F90.html new file mode 100644 index 00000000..65f3c146 --- /dev/null +++ b/ver-5.0.0/ip__equid__cylind__grid__mod_8F90.html @@ -0,0 +1,160 @@ + + + + + + + +NCEPLIBS-ip: ip_equid_cylind_grid_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_equid_cylind_grid_mod.F90 File Reference
                    +
                    +
                    + +

                    Equidistant cylindrical grib decoder and grid coordinate transformations. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    type  ip_equid_cylind_grid_mod::ip_equid_cylind_grid
                     
                    + + + + +

                    +Modules

                    module  ip_equid_cylind_grid_mod
                     Equidistant cylindrical grib decoder and grid coordinate transformations.
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine ip_equid_cylind_grid_mod::equid_cylind_grid_area (RLAT, AREA)
                     Computes the grid box area for a equidistant cylindrical grid. More...
                     
                    subroutine ip_equid_cylind_grid_mod::equid_cylind_map_jacob (XLON, XLAT, YLON, YLAT)
                     Computes the map jacobians for a equidistant cylindrical grid. More...
                     
                    subroutine ip_equid_cylind_grid_mod::equid_cylind_vect_rot (CROT, SROT)
                     Computes the vector rotation sines and cosines for a equidistant cylindrical grid. More...
                     
                    subroutine ip_equid_cylind_grid_mod::gdswzd_equid_cylind (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for equidistant cylindrical grids. More...
                     
                    subroutine ip_equid_cylind_grid_mod::init_grib1 (self, g1_desc)
                     Initializes an equidistant cylindrical grid given a grib1_descriptor object. More...
                     
                    subroutine ip_equid_cylind_grid_mod::init_grib2 (self, g2_desc)
                     Initializes an equidistant cylindrical grid given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + +

                    +Variables

                    real ip_equid_cylind_grid_mod::dlat
                     Grid resolution in degrees n/s direction. More...
                     
                    real ip_equid_cylind_grid_mod::dlon
                     Grid resolution in degrees e/w direction. More...
                     
                    real ip_equid_cylind_grid_mod::rerth
                     Radius of the Earth. More...
                     
                    +

                    Detailed Description

                    +

                    Equidistant cylindrical grib decoder and grid coordinate transformations.

                    +
                    Author
                    Mark Iredell, George Gayno, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition in file ip_equid_cylind_grid_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__equid__cylind__grid__mod_8F90.js b/ver-5.0.0/ip__equid__cylind__grid__mod_8F90.js new file mode 100644 index 00000000..aa7b18ea --- /dev/null +++ b/ver-5.0.0/ip__equid__cylind__grid__mod_8F90.js @@ -0,0 +1,13 @@ +var ip__equid__cylind__grid__mod_8F90 = +[ + [ "ip_equid_cylind_grid", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid" ], + [ "equid_cylind_grid_area", "ip__equid__cylind__grid__mod_8F90.html#a5a70b82abdce76bef22cdeaa96a986c2", null ], + [ "equid_cylind_map_jacob", "ip__equid__cylind__grid__mod_8F90.html#a039501b44cd3ad4409983e193d509afd", null ], + [ "equid_cylind_vect_rot", "ip__equid__cylind__grid__mod_8F90.html#ade88ecea1c0bb4b4d5b0d08f8482268d", null ], + [ "gdswzd_equid_cylind", "ip__equid__cylind__grid__mod_8F90.html#af20f6f308b5a33211c677b894e41b727", null ], + [ "init_grib1", "ip__equid__cylind__grid__mod_8F90.html#a3d0132823d27b60835ebb59ead173477", null ], + [ "init_grib2", "ip__equid__cylind__grid__mod_8F90.html#a39d24c9468ecb7effd16972fd72e088a", null ], + [ "dlat", "ip__equid__cylind__grid__mod_8F90.html#a30cb127d26d74d2de6ab3cbfd63183fb", null ], + [ "dlon", "ip__equid__cylind__grid__mod_8F90.html#a46335f95ac343f7751bd519aec0a160f", null ], + [ "rerth", "ip__equid__cylind__grid__mod_8F90.html#ab5b84516fab9cee3316c07450f49746c", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__equid__cylind__grid__mod_8F90_source.html b/ver-5.0.0/ip__equid__cylind__grid__mod_8F90_source.html new file mode 100644 index 00000000..e787b5ce --- /dev/null +++ b/ver-5.0.0/ip__equid__cylind__grid__mod_8F90_source.html @@ -0,0 +1,399 @@ + + + + + + + +NCEPLIBS-ip: ip_equid_cylind_grid_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_equid_cylind_grid_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    7 
                    + + +
                    19  use ip_grid_mod
                    + +
                    21  implicit none
                    +
                    22 
                    +
                    23  private
                    +
                    24  public :: ip_equid_cylind_grid
                    +
                    25 
                    +
                    26  type, extends(ip_grid) :: ip_equid_cylind_grid
                    +
                    27  real :: hi
                    +
                    28  real :: rlat1
                    +
                    29  real :: rlon1
                    +
                    30  real :: rlat2
                    +
                    31  real :: rlon2
                    +
                    32  real :: dlat
                    +
                    33  real :: dlon
                    +
                    34  contains
                    +
                    35  procedure :: init_grib1
                    +
                    36  procedure :: init_grib2
                    +
                    37  procedure :: gdswzd => gdswzd_equid_cylind
                    +
                    38  end type ip_equid_cylind_grid
                    +
                    39 
                    +
                    40  REAL :: dlat
                    +
                    41  REAL :: dlon
                    +
                    42  REAL :: rerth
                    +
                    43 
                    +
                    44 contains
                    +
                    45 
                    +
                    53  subroutine init_grib1(self, g1_desc)
                    +
                    54  class(ip_equid_cylind_grid), intent(inout) :: self
                    +
                    55  type(grib1_descriptor), intent(in) :: g1_desc
                    +
                    56 
                    +
                    57  integer :: iscan
                    +
                    58 
                    +
                    59  associate(kgds => g1_desc%gds)
                    +
                    60  self%IM=kgds(2)
                    +
                    61  self%JM=kgds(3)
                    +
                    62  self%RLAT1=kgds(4)*1.e-3
                    +
                    63  self%RLON1=kgds(5)*1.e-3
                    +
                    64  self%RLAT2=kgds(7)*1.e-3
                    +
                    65  self%RLON2=kgds(8)*1.e-3
                    +
                    66  iscan=mod(kgds(11)/128,2)
                    +
                    67  self%HI=(-1.)**iscan
                    +
                    68  self%DLON=self%HI*(mod(self%HI*(self%RLON2-self%RLON1)-1+3600,360.)+1)/(self%IM-1)
                    +
                    69  self%DLAT=(self%RLAT2-self%RLAT1)/(self%JM-1)
                    +
                    70 
                    +
                    71  ! defaults
                    +
                    72  self%iwrap = 0
                    +
                    73  self%jwrap1 = 0
                    +
                    74  self%jwrap2 = 0
                    +
                    75  self%nscan = mod(kgds(11) / 32, 2)
                    +
                    76  self%nscan_field_pos = self%nscan
                    +
                    77  self%kscan = 0
                    +
                    78 
                    +
                    79  self%iwrap = nint(360/abs(self%dlon))
                    +
                    80 
                    +
                    81  if(self%im < self%iwrap) self%iwrap=0
                    +
                    82  self%jwrap1 = 0
                    +
                    83  self%jwrap2 = 0
                    +
                    84  if(self%iwrap > 0 .and. mod(self%iwrap,2) == 0) then
                    +
                    85  if(abs(self%rlat1) > 90-0.25*self%dlat) then
                    +
                    86  self%jwrap1 = 2
                    +
                    87  elseif(abs(self%rlat1) > 90-0.75*self%dlat) then
                    +
                    88  self%jwrap1 = 1
                    +
                    89  endif
                    +
                    90  if(abs(self%rlat2) > 90-0.25*self%dlat) then
                    +
                    91  self%jwrap2 = 2 * self%jm
                    +
                    92  elseif(abs(self%rlat2) > 90-0.75*self%dlat) then
                    +
                    93  self%jwrap2 = 2 * self%jm+1
                    +
                    94  endif
                    +
                    95  endif
                    +
                    96 
                    +
                    97  self%rerth = 6.3712e6
                    +
                    98  self%eccen_squared = 0.0
                    +
                    99  end associate
                    +
                    100 
                    +
                    101  end subroutine init_grib1
                    +
                    102 
                    +
                    109  subroutine init_grib2(self, g2_desc)
                    +
                    110  class(ip_equid_cylind_grid), intent(inout) :: self
                    +
                    111  type(grib2_descriptor), intent(in) :: g2_desc
                    +
                    112 
                    +
                    113  integer :: iscale, iscan
                    +
                    114 
                    +
                    115  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
                    +
                    116  self%IM=igdtmpl(8)
                    +
                    117  self%JM=igdtmpl(9)
                    +
                    118  iscale=igdtmpl(10)*igdtmpl(11)
                    +
                    119  IF(iscale==0) iscale=10**6
                    +
                    120  self%RLAT1=float(igdtmpl(12))/float(iscale)
                    +
                    121  self%RLON1=float(igdtmpl(13))/float(iscale)
                    +
                    122  self%RLAT2=float(igdtmpl(15))/float(iscale)
                    +
                    123  self%RLON2=float(igdtmpl(16))/float(iscale)
                    +
                    124  iscan=mod(igdtmpl(19)/128,2)
                    +
                    125  self%HI=(-1.)**iscan
                    +
                    126  self%DLON=self%HI*(mod(self%HI*(self%RLON2-self%RLON1)-1+3600,360.)+1)/(self%IM-1)
                    +
                    127  self%DLAT=(self%RLAT2-self%RLAT1)/(self%JM-1)
                    +
                    128 
                    +
                    129  self%nscan = mod(igdtmpl(19)/32,2)
                    +
                    130  self%nscan_field_pos = self%nscan
                    +
                    131  self%kscan = 0
                    +
                    132  self%iwrap = nint(360/abs(self%DLON))
                    +
                    133 
                    +
                    134  if(self%im.lt.self%iwrap) self%iwrap=0
                    +
                    135  self%jwrap1=0
                    +
                    136  self%jwrap2=0
                    +
                    137 
                    +
                    138  if(self%im < self%iwrap) self%iwrap=0
                    +
                    139  self%jwrap1 = 0
                    +
                    140  self%jwrap2 = 0
                    +
                    141  if(self%iwrap > 0 .and. mod(self%iwrap,2) == 0) then
                    +
                    142  if(abs(self%rlat1) > 90-0.25*self%dlat) then
                    +
                    143  self%jwrap1 = 2
                    +
                    144  elseif(abs(self%rlat1) > 90-0.75*self%dlat) then
                    +
                    145  self%jwrap1 = 1
                    +
                    146  endif
                    +
                    147  if(abs(self%rlat2) > 90-0.25*self%dlat) then
                    +
                    148  self%jwrap2 = 2 * self%jm
                    +
                    149  elseif(abs(self%rlat2) > 90-0.75*self%dlat) then
                    +
                    150  self%jwrap2 = 2 * self%jm+1
                    +
                    151  endif
                    +
                    152  endif
                    +
                    153 
                    +
                    154  call earth_radius(igdtmpl, igdtlen, self%rerth, self%eccen_squared)
                    +
                    155 
                    +
                    156  end associate
                    +
                    157  end subroutine init_grib2
                    +
                    158 
                    +
                    203  SUBROUTINE gdswzd_equid_cylind(self,IOPT,NPTS,FILL, &
                    +
                    204  XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    205  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    206  IMPLICIT NONE
                    +
                    207  !
                    +
                    208  class(ip_equid_cylind_grid), intent(in) :: self
                    +
                    209  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    210  INTEGER, INTENT( OUT) :: NRET
                    +
                    211  !
                    +
                    212  REAL, INTENT(IN ) :: FILL
                    +
                    213  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    214  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    215  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    216  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    217  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    218  !
                    +
                    219  INTEGER :: IM, JM, N
                    +
                    220  !
                    +
                    221  LOGICAL :: LROT, LMAP, LAREA
                    +
                    222  !
                    +
                    223  REAL :: HI, RLAT1, RLON1, RLAT2, RLON2
                    +
                    224  REAL :: XMAX, XMIN, YMAX, YMIN
                    +
                    225  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    226  IF(PRESENT(crot)) crot=fill
                    +
                    227  IF(PRESENT(srot)) srot=fill
                    +
                    228  IF(PRESENT(xlon)) xlon=fill
                    +
                    229  IF(PRESENT(xlat)) xlat=fill
                    +
                    230  IF(PRESENT(ylon)) ylon=fill
                    +
                    231  IF(PRESENT(ylat)) ylat=fill
                    +
                    232  IF(PRESENT(area)) area=fill
                    +
                    233 
                    +
                    234  im=self%im
                    +
                    235  jm=self%jm
                    +
                    236 
                    +
                    237  rlat1=self%rlat1
                    +
                    238  rlon1=self%rlon1
                    +
                    239  rlat2=self%rlat2
                    +
                    240  rlon2=self%rlon2
                    +
                    241 
                    +
                    242  hi=self%hi
                    +
                    243 
                    +
                    244  rerth = self%rerth
                    +
                    245  dlat = self%dlat
                    +
                    246  dlon = self%dlon
                    +
                    247 
                    +
                    248  xmin=0
                    +
                    249  xmax=im+1
                    +
                    250  IF(im.EQ.nint(360/abs(dlon))) xmax=im+2
                    +
                    251  ymin=0
                    +
                    252  ymax=jm+1
                    +
                    253  nret=0
                    +
                    254  IF(PRESENT(crot).AND.PRESENT(srot))THEN
                    +
                    255  lrot=.true.
                    +
                    256  ELSE
                    +
                    257  lrot=.false.
                    +
                    258  ENDIF
                    +
                    259  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
                    +
                    260  lmap=.true.
                    +
                    261  ELSE
                    +
                    262  lmap=.false.
                    +
                    263  ENDIF
                    +
                    264  IF(PRESENT(area))THEN
                    +
                    265  larea=.true.
                    +
                    266  ELSE
                    +
                    267  larea=.false.
                    +
                    268  ENDIF
                    +
                    269  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    270  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
                    +
                    271  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
                    +
                    272  !$OMP PARALLEL DO PRIVATE(N) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    273  DO n=1,npts
                    +
                    274  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    275  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    276  rlon(n)=mod(rlon1+dlon*(xpts(n)-1)+3600,360.)
                    +
                    277  rlat(n)=min(max(rlat1+dlat*(ypts(n)-1),-90.),90.)
                    +
                    278  nret=nret+1
                    +
                    279  IF(lrot) CALL equid_cylind_vect_rot(crot(n),srot(n))
                    +
                    280  IF(lmap) CALL equid_cylind_map_jacob(xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    281  IF(larea) CALL equid_cylind_grid_area(rlat(n),area(n))
                    +
                    282  ELSE
                    +
                    283  rlon(n)=fill
                    +
                    284  rlat(n)=fill
                    +
                    285  ENDIF
                    +
                    286  ENDDO
                    +
                    287  !$OMP END PARALLEL DO
                    +
                    288  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    289  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
                    +
                    290  ELSEIF(iopt.EQ.-1) THEN
                    +
                    291  !$OMP PARALLEL DO PRIVATE(N) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    292  DO n=1,npts
                    +
                    293  IF(abs(rlon(n)).LE.360.AND.abs(rlat(n)).LE.90) THEN
                    +
                    294  xpts(n)=1+hi*mod(hi*(rlon(n)-rlon1)+3600,360.)/dlon
                    +
                    295  ypts(n)=1+(rlat(n)-rlat1)/dlat
                    +
                    296  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    297  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    298  nret=nret+1
                    +
                    299  IF(lrot) CALL equid_cylind_vect_rot(crot(n),srot(n))
                    +
                    300  IF(lmap) CALL equid_cylind_map_jacob(xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    301  IF(larea) CALL equid_cylind_grid_area(rlat(n),area(n))
                    +
                    302  ELSE
                    +
                    303  xpts(n)=fill
                    +
                    304  ypts(n)=fill
                    +
                    305  ENDIF
                    +
                    306  ELSE
                    +
                    307  xpts(n)=fill
                    +
                    308  ypts(n)=fill
                    +
                    309  ENDIF
                    +
                    310  ENDDO
                    +
                    311  !$OMP END PARALLEL DO
                    +
                    312  ENDIF
                    +
                    313  END SUBROUTINE gdswzd_equid_cylind
                    +
                    314 
                    +
                    327  SUBROUTINE equid_cylind_vect_rot(CROT,SROT)
                    +
                    328  IMPLICIT NONE
                    +
                    329 
                    +
                    330  REAL, INTENT( OUT) :: CROT, SROT
                    +
                    331 
                    +
                    332  crot=1.0
                    +
                    333  srot=0.0
                    +
                    334 
                    +
                    335  END SUBROUTINE equid_cylind_vect_rot
                    +
                    336 
                    +
                    346  SUBROUTINE equid_cylind_map_jacob(XLON,XLAT,YLON,YLAT)
                    +
                    347  REAL, INTENT( OUT) :: XLON,XLAT,YLON,YLAT
                    +
                    348 
                    +
                    349  xlon=1.0/dlon
                    +
                    350  xlat=0.
                    +
                    351  ylon=0.
                    +
                    352  ylat=1.0/dlat
                    +
                    353 
                    +
                    354  END SUBROUTINE equid_cylind_map_jacob
                    +
                    355 
                    +
                    363  SUBROUTINE equid_cylind_grid_area(RLAT,AREA)
                    +
                    364  IMPLICIT NONE
                    +
                    365 
                    +
                    366  REAL, INTENT(IN ) :: RLAT
                    +
                    367  REAL, INTENT( OUT) :: AREA
                    +
                    368 
                    +
                    369  REAL, PARAMETER :: PI=3.14159265358979
                    +
                    370  REAL, PARAMETER :: DPR=180./pi
                    +
                    371 
                    +
                    372  REAL :: DSLAT, RLATU, RLATD
                    +
                    373 
                    +
                    374  rlatu=min(max(rlat+dlat/2,-90.),90.)
                    +
                    375  rlatd=min(max(rlat-dlat/2,-90.),90.)
                    +
                    376  dslat=sin(rlatu/dpr)-sin(rlatd/dpr)
                    +
                    377  area=rerth**2*abs(dslat*dlon)/dpr
                    +
                    378 
                    +
                    379  END SUBROUTINE equid_cylind_grid_area
                    +
                    380 
                    +
                    381 end module ip_equid_cylind_grid_mod
                    +
                    382 
                    +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    Determine earth radius and shape.
                    +
                    Equidistant cylindrical grib decoder and grid coordinate transformations.
                    +
                    subroutine equid_cylind_map_jacob(XLON, XLAT, YLON, YLAT)
                    Computes the map jacobians for a equidistant cylindrical grid.
                    +
                    real dlat
                    Grid resolution in degrees n/s direction.
                    +
                    subroutine init_grib2(self, g2_desc)
                    Initializes an equidistant cylindrical grid given a grib2_descriptor object.
                    +
                    subroutine init_grib1(self, g1_desc)
                    Initializes an equidistant cylindrical grid given a grib1_descriptor object.
                    +
                    real dlon
                    Grid resolution in degrees e/w direction.
                    +
                    subroutine equid_cylind_grid_area(RLAT, AREA)
                    Computes the grid box area for a equidistant cylindrical grid.
                    +
                    real rerth
                    Radius of the Earth.
                    +
                    subroutine equid_cylind_vect_rot(CROT, SROT)
                    Computes the vector rotation sines and cosines for a equidistant cylindrical grid.
                    +
                    subroutine gdswzd_equid_cylind(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for equidistant cylindrical g...
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    + +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__gaussian__grid__mod_8F90.html b/ver-5.0.0/ip__gaussian__grid__mod_8F90.html new file mode 100644 index 00000000..82eb5e12 --- /dev/null +++ b/ver-5.0.0/ip__gaussian__grid__mod_8F90.html @@ -0,0 +1,169 @@ + + + + + + + +NCEPLIBS-ip: ip_gaussian_grid_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_gaussian_grid_mod.F90 File Reference
                    +
                    +
                    + +

                    Gaussian grid coordinate transformations. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    type  ip_gaussian_grid_mod::ip_gaussian_grid
                     
                    + + + + +

                    +Modules

                    module  ip_gaussian_grid_mod
                     Gaussian grid coordinate transformations.
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine ip_gaussian_grid_mod::gaussian_grid_area (YPTS, AREA)
                     Computes the grid box area for a gaussian cylindrical grid. More...
                     
                    subroutine ip_gaussian_grid_mod::gaussian_map_jacob (YPTS, XLON, XLAT, YLON, YLAT)
                     Computes the map jacobians for a gaussian cylindrical grid. More...
                     
                    subroutine ip_gaussian_grid_mod::gaussian_vect_rot (CROT, SROT)
                     Computes the vector rotation sines and cosines for a gaussian cylindrical grid. More...
                     
                    subroutine ip_gaussian_grid_mod::gdswzd_gaussian (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids. More...
                     
                    subroutine ip_gaussian_grid_mod::init_grib1 (self, g1_desc)
                     Initializes a gaussian grid given a grib1_descriptor object. More...
                     
                    subroutine ip_gaussian_grid_mod::init_grib2 (self, g2_desc)
                     Initializes a gaussian grid given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real, dimension(:), allocatable ip_gaussian_grid_mod::blat
                     Gaussian latitude for each parallel. More...
                     
                    real ip_gaussian_grid_mod::dlon
                     "i"-direction increment. More...
                     
                    integer ip_gaussian_grid_mod::j1
                     'j' index of first grid point within the global array of latitudes. More...
                     
                    integer ip_gaussian_grid_mod::jh
                     Scan mode flag in 'j' direction. More...
                     
                    real ip_gaussian_grid_mod::rerth
                     Radius of the earth. More...
                     
                    real, dimension(:), allocatable ip_gaussian_grid_mod::ylat_row
                     dy/dlat for each row in 1/degrees. More...
                     
                    +

                    Detailed Description

                    +

                    Gaussian grid coordinate transformations.

                    +
                    Author
                    Mark Iredell, George Gayno, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition in file ip_gaussian_grid_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__gaussian__grid__mod_8F90.js b/ver-5.0.0/ip__gaussian__grid__mod_8F90.js new file mode 100644 index 00000000..d975899c --- /dev/null +++ b/ver-5.0.0/ip__gaussian__grid__mod_8F90.js @@ -0,0 +1,16 @@ +var ip__gaussian__grid__mod_8F90 = +[ + [ "ip_gaussian_grid", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html", "structip__gaussian__grid__mod_1_1ip__gaussian__grid" ], + [ "gaussian_grid_area", "ip__gaussian__grid__mod_8F90.html#ab602a870a477c7ab77438700af4e7780", null ], + [ "gaussian_map_jacob", "ip__gaussian__grid__mod_8F90.html#adca7b03877c6a7048ff1716a95e0bd9d", null ], + [ "gaussian_vect_rot", "ip__gaussian__grid__mod_8F90.html#ac72eec96d0012fbe0f0ec7c520f40dad", null ], + [ "gdswzd_gaussian", "ip__gaussian__grid__mod_8F90.html#a6eefd9270b3f9bb2c59a77bea4ecf1b9", null ], + [ "init_grib1", "ip__gaussian__grid__mod_8F90.html#a8fe2ee732a3a2db4891a6431787a0b01", null ], + [ "init_grib2", "ip__gaussian__grid__mod_8F90.html#ae048ac033628515113b11b8c7364e0c2", null ], + [ "blat", "ip__gaussian__grid__mod_8F90.html#ae2697b9c4dbe4945276633d1951e79fc", null ], + [ "dlon", "ip__gaussian__grid__mod_8F90.html#a8852b7cfb7b99318140c66b0c551dc6d", null ], + [ "j1", "ip__gaussian__grid__mod_8F90.html#af5c4024263aa3eaef5801849ae32c15a", null ], + [ "jh", "ip__gaussian__grid__mod_8F90.html#a67d6cd6d188a8bded8bdf64927617028", null ], + [ "rerth", "ip__gaussian__grid__mod_8F90.html#a8213e02ccf4325ad5db14f2e48990da2", null ], + [ "ylat_row", "ip__gaussian__grid__mod_8F90.html#a3591b5701f3d03931c6a9d5278e161dc", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__gaussian__grid__mod_8F90_source.html b/ver-5.0.0/ip__gaussian__grid__mod_8F90_source.html new file mode 100644 index 00000000..83df1de5 --- /dev/null +++ b/ver-5.0.0/ip__gaussian__grid__mod_8F90_source.html @@ -0,0 +1,455 @@ + + + + + + + +NCEPLIBS-ip: ip_gaussian_grid_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_gaussian_grid_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    + + +
                    16  use ip_grid_mod
                    + + +
                    19  implicit none
                    +
                    20 
                    +
                    21  private
                    +
                    22  public :: ip_gaussian_grid
                    +
                    23 
                    +
                    24  type, extends(ip_grid) :: ip_gaussian_grid
                    +
                    25  integer :: jh
                    +
                    26  real :: dlon
                    +
                    27  real :: rlat1
                    +
                    28  real :: rlon1
                    +
                    29  real :: rlon2
                    +
                    30  real :: hi
                    +
                    31  integer :: jg
                    +
                    32  integer :: jscan
                    +
                    33  contains
                    +
                    35  procedure :: init_grib1
                    +
                    37  procedure :: init_grib2
                    +
                    40  procedure :: gdswzd => gdswzd_gaussian
                    +
                    41  end type ip_gaussian_grid
                    +
                    42 
                    +
                    43  INTEGER :: j1
                    +
                    44  INTEGER :: jh
                    +
                    45  REAL, ALLOCATABLE :: blat(:)
                    +
                    46  REAL :: dlon
                    +
                    47  REAL :: rerth
                    +
                    48  REAL, ALLOCATABLE :: ylat_row(:)
                    +
                    49 
                    +
                    50 contains
                    +
                    51 
                    +
                    59  subroutine init_grib1(self, g1_desc)
                    +
                    60  class(ip_gaussian_grid), intent(inout) :: self
                    +
                    61  type(grib1_descriptor), intent(in) :: g1_desc
                    +
                    62 
                    +
                    63  integer :: iscan, jg
                    +
                    64 
                    +
                    65  associate(kgds => g1_desc%gds)
                    +
                    66  self%rerth = 6.3712e6
                    +
                    67  self%eccen_squared = 0.0
                    +
                    68 
                    +
                    69  self%IM=kgds(2)
                    +
                    70  self%JM=kgds(3)
                    +
                    71  self%RLAT1=kgds(4)*1.e-3
                    +
                    72  self%RLON1=kgds(5)*1.e-3
                    +
                    73  self%RLON2=kgds(8)*1.e-3
                    +
                    74  self%JG=kgds(10)*2
                    +
                    75  iscan=mod(kgds(11)/128,2)
                    +
                    76  self%JSCAN=mod(kgds(11)/64,2)
                    +
                    77  self%HI=(-1.)**iscan
                    +
                    78  self%JH=(-1)**self%JSCAN
                    +
                    79  self%DLON=self%HI*(mod(self%HI*(self%RLON2-self%RLON1)-1+3600,360.)+1)/(self%IM-1)
                    +
                    80 
                    +
                    81  self%iwrap = 0
                    +
                    82  self%jwrap1 = 0
                    +
                    83  self%jwrap2 = 0
                    +
                    84  self%nscan = mod(kgds(11) / 32, 2)
                    +
                    85  self%nscan_field_pos = self%nscan
                    +
                    86  self%kscan = 0
                    +
                    87 
                    +
                    88  self%iwrap=nint(360 / abs(self%dlon))
                    +
                    89  if(self%im < self%iwrap) self%iwrap = 0
                    +
                    90 
                    +
                    91  if(self%iwrap > 0 .and. mod(self%iwrap, 2) == 0) then
                    +
                    92  jg=kgds(10)*2
                    +
                    93  if(self%jm == self%jg) then
                    +
                    94  self%jwrap1 = 1
                    +
                    95  self%jwrap2 = 2 * self%jm + 1
                    +
                    96  endif
                    +
                    97  endif
                    +
                    98 
                    +
                    99  end associate
                    +
                    100  end subroutine init_grib1
                    +
                    101 
                    +
                    108  subroutine init_grib2(self, g2_desc)
                    +
                    109  class(ip_gaussian_grid), intent(inout) :: self
                    +
                    110  type(grib2_descriptor), intent(in) :: g2_desc
                    +
                    111 
                    +
                    112  integer :: iscale, iscan, jg
                    +
                    113 
                    +
                    114  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
                    +
                    115  call earth_radius(igdtmpl, igdtlen, self%rerth, self%eccen_squared)
                    +
                    116 
                    +
                    117  self%IM=igdtmpl(8)
                    +
                    118  self%JM=igdtmpl(9)
                    +
                    119  iscale=igdtmpl(10)*igdtmpl(11)
                    +
                    120  IF(iscale==0) iscale=10**6
                    +
                    121  self%RLAT1=float(igdtmpl(12))/float(iscale)
                    +
                    122  self%RLON1=float(igdtmpl(13))/float(iscale)
                    +
                    123  self%RLON2=float(igdtmpl(16))/float(iscale)
                    +
                    124  self%JG=igdtmpl(18)*2
                    +
                    125  iscan=mod(igdtmpl(19)/128,2)
                    +
                    126  self%JSCAN=mod(igdtmpl(19)/64,2)
                    +
                    127  self%HI=(-1.)**iscan
                    +
                    128  self%JH=(-1)**self%JSCAN
                    +
                    129  self%DLON=self%HI*(mod(self%HI*(self%RLON2-self%RLON1)-1+3600,360.)+1)/(self%IM-1)
                    +
                    130 
                    +
                    131 
                    +
                    132  self%iwrap = nint(360 / abs(self%dlon))
                    +
                    133  if(self%im < self%iwrap) self%iwrap = 0
                    +
                    134  self%jwrap1 = 0
                    +
                    135  self%jwrap2 = 0
                    +
                    136  if(self%iwrap > 0 .and. mod(self%iwrap, 2) == 0) then
                    +
                    137  jg = igdtmpl(18) * 2
                    +
                    138  if(self%jm == jg) then
                    +
                    139  self%jwrap1=1
                    +
                    140  self%jwrap2 = 2 * self%jm + 1
                    +
                    141  endif
                    +
                    142  endif
                    +
                    143  self%nscan = mod(igdtmpl(19) / 32, 2)
                    +
                    144  self%nscan_field_pos = self%nscan
                    +
                    145  self%kscan = 0
                    +
                    146  end associate
                    +
                    147 
                    +
                    148  end subroutine init_grib2
                    +
                    149 
                    +
                    194  SUBROUTINE gdswzd_gaussian(self,IOPT,NPTS,FILL, &
                    +
                    195  XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    196  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    197  IMPLICIT NONE
                    +
                    198  !
                    +
                    199  class(ip_gaussian_grid), intent(in) :: self
                    +
                    200  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    201  INTEGER, INTENT( OUT) :: NRET
                    +
                    202  !
                    +
                    203  REAL, INTENT(IN ) :: FILL
                    +
                    204  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    205  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    206  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    207  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    208  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    209  !
                    +
                    210  INTEGER :: JSCAN, IM, JM
                    +
                    211  INTEGER :: J, JA, JG
                    +
                    212  INTEGER :: N
                    +
                    213  !
                    +
                    214  LOGICAL :: LROT, LMAP, LAREA
                    +
                    215  !
                    +
                    216  REAL, ALLOCATABLE :: ALAT(:), ALAT_JSCAN(:)
                    +
                    217  REAL, ALLOCATABLE :: ALAT_TEMP(:),BLAT_TEMP(:)
                    +
                    218  REAL :: HI, RLATA, RLATB, RLAT1, RLON1, RLON2
                    +
                    219  REAL :: XMAX, XMIN, YMAX, YMIN, YPTSA, YPTSB
                    +
                    220  REAL :: WB
                    +
                    221 
                    +
                    222  IF(PRESENT(crot)) crot=fill
                    +
                    223  IF(PRESENT(srot)) srot=fill
                    +
                    224  IF(PRESENT(xlon)) xlon=fill
                    +
                    225  IF(PRESENT(xlat)) xlat=fill
                    +
                    226  IF(PRESENT(ylon)) ylon=fill
                    +
                    227  IF(PRESENT(ylat)) ylat=fill
                    +
                    228  IF(PRESENT(area)) area=fill
                    +
                    229 
                    +
                    230  IF(PRESENT(crot).AND.PRESENT(srot))THEN
                    +
                    231  lrot=.true.
                    +
                    232  ELSE
                    +
                    233  lrot=.false.
                    +
                    234  ENDIF
                    +
                    235  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
                    +
                    236  lmap=.true.
                    +
                    237  ELSE
                    +
                    238  lmap=.false.
                    +
                    239  ENDIF
                    +
                    240  IF(PRESENT(area))THEN
                    +
                    241  larea=.true.
                    +
                    242  ELSE
                    +
                    243  larea=.false.
                    +
                    244  ENDIF
                    +
                    245 
                    +
                    246  im=self%im
                    +
                    247  jm=self%jm
                    +
                    248 
                    +
                    249  rlat1=self%rlat1
                    +
                    250  rlon1=self%rlon1
                    +
                    251  rlon2=self%rlon2
                    +
                    252 
                    +
                    253  jg=self%jg
                    +
                    254  jscan=self%jscan
                    +
                    255  hi=self%hi
                    +
                    256 
                    +
                    257  jh=self%jh
                    +
                    258  dlon=self%dlon
                    +
                    259  rerth = self%rerth
                    +
                    260 
                    +
                    261  ALLOCATE(alat_temp(jg))
                    +
                    262  ALLOCATE(blat_temp(jg))
                    +
                    263  CALL splat(4,jg,alat_temp,blat_temp)
                    +
                    264  ALLOCATE(alat(0:jg+1))
                    +
                    265  ALLOCATE(blat(0:jg+1))
                    +
                    266  !$OMP PARALLEL DO PRIVATE(JA) SCHEDULE(STATIC)
                    +
                    267  DO ja=1,jg
                    +
                    268  alat(ja)=real(dpr*asin(alat_temp(ja)))
                    +
                    269  blat(ja)=blat_temp(ja)
                    +
                    270  ENDDO
                    +
                    271  !$OMP END PARALLEL DO
                    +
                    272  DEALLOCATE(alat_temp,blat_temp)
                    +
                    273  alat(0)=180.-alat(1)
                    +
                    274  alat(jg+1)=-alat(0)
                    +
                    275  blat(0)=-blat(1)
                    +
                    276  blat(jg+1)=blat(0)
                    +
                    277  j1=1
                    +
                    278  DO WHILE(j1.LT.jg.AND.rlat1.LT.(alat(j1)+alat(j1+1))/2)
                    +
                    279  j1=j1+1
                    +
                    280  ENDDO
                    +
                    281  IF(lmap)THEN
                    +
                    282  ALLOCATE(alat_jscan(jg))
                    +
                    283  DO ja=1,jg
                    +
                    284  alat_jscan(j1+jh*(ja-1))=alat(ja)
                    +
                    285  ENDDO
                    +
                    286  ALLOCATE(ylat_row(0:jg+1))
                    +
                    287  DO ja=2,(jg-1)
                    +
                    288  ylat_row(ja)=2.0/(alat_jscan(ja+1)-alat_jscan(ja-1))
                    +
                    289  ENDDO
                    +
                    290  ylat_row(1)=1.0/(alat_jscan(2)-alat_jscan(1))
                    +
                    291  ylat_row(0)=ylat_row(1)
                    +
                    292  ylat_row(jg)=1.0/(alat_jscan(jg)-alat_jscan(jg-1))
                    +
                    293  ylat_row(jg+1)=ylat_row(jg)
                    +
                    294  DEALLOCATE(alat_jscan)
                    +
                    295  ENDIF
                    +
                    296  xmin=0
                    +
                    297  xmax=im+1
                    +
                    298  IF(im.EQ.nint(360/abs(dlon))) xmax=im+2
                    +
                    299  ymin=0.5
                    +
                    300  ymax=jm+0.5
                    +
                    301  nret=0
                    +
                    302 
                    +
                    303  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
                    +
                    304  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
                    +
                    305  !$OMP PARALLEL DO PRIVATE(N,J,WB,RLATA,RLATB) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    306  DO n=1,npts
                    +
                    307  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    308  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    309  rlon(n)=mod(rlon1+dlon*(xpts(n)-1)+3600,360.)
                    +
                    310  j=int(ypts(n))
                    +
                    311  wb=ypts(n)-j
                    +
                    312  rlata=alat(j1+jh*(j-1))
                    +
                    313  rlatb=alat(j1+jh*j)
                    +
                    314  rlat(n)=rlata+wb*(rlatb-rlata)
                    +
                    315  nret=nret+1
                    +
                    316  IF(lrot) CALL gaussian_vect_rot(crot(n),srot(n))
                    +
                    317  IF(lmap) CALL gaussian_map_jacob(ypts(n),&
                    +
                    318  xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    319  IF(larea) CALL gaussian_grid_area(ypts(n),area(n))
                    +
                    320  ELSE
                    +
                    321  rlon(n)=fill
                    +
                    322  rlat(n)=fill
                    +
                    323  ENDIF
                    +
                    324  ENDDO
                    +
                    325  !$OMP END PARALLEL DO
                    +
                    326 
                    +
                    327  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
                    +
                    328  ELSEIF(iopt.EQ.-1) THEN
                    +
                    329  !$OMP PARALLEL DO PRIVATE(N,JA,YPTSA, YPTSB, WB) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    330  DO n=1,npts
                    +
                    331  xpts(n)=fill
                    +
                    332  ypts(n)=fill
                    +
                    333  IF(abs(rlon(n)).LE.360.AND.abs(rlat(n)).LE.90) THEN
                    +
                    334  xpts(n)=1+hi*mod(hi*(rlon(n)-rlon1)+3600,360.)/dlon
                    +
                    335  ja=min(int((jg+1)/180.*(90-rlat(n))),jg)
                    +
                    336  IF(rlat(n).GT.alat(ja)) ja=max(ja-2,0)
                    +
                    337  IF(rlat(n).LT.alat(ja+1)) ja=min(ja+2,jg)
                    +
                    338  IF(rlat(n).GT.alat(ja)) ja=ja-1
                    +
                    339  IF(rlat(n).LT.alat(ja+1)) ja=ja+1
                    +
                    340  yptsa=1+jh*(ja-j1)
                    +
                    341  yptsb=1+jh*(ja+1-j1)
                    +
                    342  wb=(alat(ja)-rlat(n))/(alat(ja)-alat(ja+1))
                    +
                    343  ypts(n)=yptsa+wb*(yptsb-yptsa)
                    +
                    344  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    345  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    346  nret=nret+1
                    +
                    347  IF(lrot) CALL gaussian_vect_rot(crot(n),srot(n))
                    +
                    348  IF(lmap) CALL gaussian_map_jacob(ypts(n), &
                    +
                    349  xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    350  IF(larea) CALL gaussian_grid_area(ypts(n),area(n))
                    +
                    351  ELSE
                    +
                    352  xpts(n)=fill
                    +
                    353  ypts(n)=fill
                    +
                    354  ENDIF
                    +
                    355  ENDIF
                    +
                    356  ENDDO
                    +
                    357  !$OMP END PARALLEL DO
                    +
                    358  ENDIF
                    +
                    359  DEALLOCATE(alat, blat)
                    +
                    360  IF (ALLOCATED(ylat_row)) DEALLOCATE(ylat_row)
                    +
                    361 
                    +
                    362  END SUBROUTINE gdswzd_gaussian
                    +
                    363 
                    +
                    376  SUBROUTINE gaussian_vect_rot(CROT,SROT)
                    +
                    377  IMPLICIT NONE
                    +
                    378 
                    +
                    379  REAL, INTENT( OUT) :: CROT, SROT
                    +
                    380 
                    +
                    381  crot=1.0
                    +
                    382  srot=0.0
                    +
                    383 
                    +
                    384  END SUBROUTINE gaussian_vect_rot
                    +
                    385 
                    +
                    396  SUBROUTINE gaussian_map_jacob(YPTS, XLON, XLAT, YLON, YLAT)
                    +
                    397  IMPLICIT NONE
                    +
                    398 
                    +
                    399  REAL, INTENT(IN ) :: YPTS
                    +
                    400  REAL, INTENT( OUT) :: XLON, XLAT, YLON, YLAT
                    +
                    401 
                    +
                    402  xlon=1/dlon
                    +
                    403  xlat=0.
                    +
                    404  ylon=0.
                    +
                    405  ylat=ylat_row(nint(ypts))
                    +
                    406 
                    +
                    407  END SUBROUTINE gaussian_map_jacob
                    +
                    408 
                    +
                    416  SUBROUTINE gaussian_grid_area(YPTS,AREA)
                    +
                    417  IMPLICIT NONE
                    +
                    418 
                    +
                    419  REAL, INTENT(IN ) :: YPTS
                    +
                    420  REAL, INTENT( OUT) :: AREA
                    +
                    421 
                    +
                    422  INTEGER :: J
                    +
                    423 
                    +
                    424  REAL :: WB, WLAT, WLATA, WLATB
                    +
                    425 
                    +
                    426  j = int(ypts)
                    +
                    427  wb=ypts-j
                    +
                    428  wlata=blat(j1+jh*(j-1))
                    +
                    429  wlatb=blat(j1+jh*j)
                    +
                    430  wlat=wlata+wb*(wlatb-wlata)
                    +
                    431  area=real(rerth**2*wlat*dlon/dpr)
                    +
                    432 
                    +
                    433  END SUBROUTINE gaussian_grid_area
                    +
                    434 end module ip_gaussian_grid_mod
                    +
                    435 
                    +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    Determine earth radius and shape.
                    +
                    Module containing common constants.
                    +
                    Gaussian grid coordinate transformations.
                    +
                    real, dimension(:), allocatable ylat_row
                    dy/dlat for each row in 1/degrees.
                    +
                    integer jh
                    Scan mode flag in 'j' direction.
                    +
                    subroutine gdswzd_gaussian(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids.
                    +
                    real rerth
                    Radius of the earth.
                    +
                    real dlon
                    "i"-direction increment.
                    +
                    subroutine init_grib1(self, g1_desc)
                    Initializes a gaussian grid given a grib1_descriptor object.
                    +
                    subroutine gaussian_grid_area(YPTS, AREA)
                    Computes the grid box area for a gaussian cylindrical grid.
                    +
                    subroutine gaussian_vect_rot(CROT, SROT)
                    Computes the vector rotation sines and cosines for a gaussian cylindrical grid.
                    +
                    subroutine gaussian_map_jacob(YPTS, XLON, XLAT, YLON, YLAT)
                    Computes the map jacobians for a gaussian cylindrical grid.
                    +
                    subroutine init_grib2(self, g2_desc)
                    Initializes a gaussian grid given a grib2_descriptor object.
                    +
                    real, dimension(:), allocatable blat
                    Gaussian latitude for each parallel.
                    +
                    integer j1
                    'j' index of first grid point within the global array of latitudes.
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    subroutine splat(IDRT, JMAX, SLAT, WLAT)
                    Computes cosines of colatitude and Gaussian weights for one of the following specific global sets of ...
                    Definition: splat.F:46
                    + +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__grid__descriptor__mod_8F90.html b/ver-5.0.0/ip__grid__descriptor__mod_8F90.html new file mode 100644 index 00000000..a76dae9d --- /dev/null +++ b/ver-5.0.0/ip__grid__descriptor__mod_8F90.html @@ -0,0 +1,154 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_descriptor_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_descriptor_mod.F90 File Reference
                    +
                    +
                    + +

                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + + + + + + + + + + + +

                    +Data Types

                    type  ip_grid_descriptor_mod::grib1_descriptor
                     Descriptor representing a grib1 grib descriptor section (GDS) with an integer array. More...
                     
                    type  ip_grid_descriptor_mod::grib2_descriptor
                     Grib-2 descriptor containing a grib2 GDT represented by an integer array. More...
                     
                    interface  ip_grid_descriptor_mod::init_descriptor
                     
                    type  ip_grid_descriptor_mod::ip_grid_descriptor
                     Abstract descriptor object which represents a grib1 or grib2 descriptor. More...
                     
                    interface  ip_grid_descriptor_mod::operator(==)
                     
                    + + + + +

                    +Modules

                    module  ip_grid_descriptor_mod
                     Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                     
                    + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    type(grib1_descriptor) function, public ip_grid_descriptor_mod::init_grib1_descriptor (gds)
                     Initialize grib-1 descriptor from integer grid definition section (GDS). More...
                     
                    type(grib2_descriptor) function, public ip_grid_descriptor_mod::init_grib2_descriptor (gdt_num, gdt_len, gdt_tmpl)
                     Initialize grib-2 descriptor from integer grid definition template (GDT). More...
                     
                    logical function ip_grid_descriptor_mod::is_same_grid (grid1, grid2)
                     Test whether two grid descriptors are the same. More...
                     
                    logical function ip_grid_descriptor_mod::is_same_grid_grib1 (self, grid_desc)
                     Test whether two grib1_descriptors are the same. More...
                     
                    logical function ip_grid_descriptor_mod::is_same_grid_grib2 (self, grid_desc)
                     Test whether two grib2_descriptors are the same. More...
                     
                    +

                    Detailed Description

                    +

                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.

                    +
                    Author
                    Kyle Gerheiser
                    + +

                    Definition in file ip_grid_descriptor_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__grid__descriptor__mod_8F90.js b/ver-5.0.0/ip__grid__descriptor__mod_8F90.js new file mode 100644 index 00000000..4b84aa87 --- /dev/null +++ b/ver-5.0.0/ip__grid__descriptor__mod_8F90.js @@ -0,0 +1,13 @@ +var ip__grid__descriptor__mod_8F90 = +[ + [ "grib1_descriptor", "structip__grid__descriptor__mod_1_1grib1__descriptor.html", "structip__grid__descriptor__mod_1_1grib1__descriptor" ], + [ "grib2_descriptor", "structip__grid__descriptor__mod_1_1grib2__descriptor.html", "structip__grid__descriptor__mod_1_1grib2__descriptor" ], + [ "init_descriptor", "interfaceip__grid__descriptor__mod_1_1init__descriptor.html", "interfaceip__grid__descriptor__mod_1_1init__descriptor" ], + [ "ip_grid_descriptor", "structip__grid__descriptor__mod_1_1ip__grid__descriptor.html", "structip__grid__descriptor__mod_1_1ip__grid__descriptor" ], + [ "operator(==)", "interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html", "interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08" ], + [ "init_grib1_descriptor", "ip__grid__descriptor__mod_8F90.html#aa00884a7fca018535eaf0c2ebe26bc98", null ], + [ "init_grib2_descriptor", "ip__grid__descriptor__mod_8F90.html#a143ac06a2a20697d01606a259213b451", null ], + [ "is_same_grid", "ip__grid__descriptor__mod_8F90.html#a202219f9c5c84fa04d3eb1c2208358ec", null ], + [ "is_same_grid_grib1", "ip__grid__descriptor__mod_8F90.html#a5bb3c5230b88012bddc3922bfa1cb019", null ], + [ "is_same_grid_grib2", "ip__grid__descriptor__mod_8F90.html#a75ac34ea9372afaa29b0df2ce8919988", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__grid__descriptor__mod_8F90_source.html b/ver-5.0.0/ip__grid__descriptor__mod_8F90_source.html new file mode 100644 index 00000000..821c8265 --- /dev/null +++ b/ver-5.0.0/ip__grid__descriptor__mod_8F90_source.html @@ -0,0 +1,577 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_descriptor_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_grid_descriptor_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    + +
                    16  implicit none
                    +
                    17 
                    +
                    18  private
                    +
                    19 
                    +
                    20  public :: ip_grid_descriptor
                    + + +
                    23 
                    +
                    24  public :: operator(==)
                    +
                    25 
                    +
                    28  type, abstract :: ip_grid_descriptor
                    +
                    29  integer :: grid_num
                    +
                    30  contains
                    +
                    32  procedure :: is_same_grid
                    +
                    33  end type ip_grid_descriptor
                    +
                    34 
                    + +
                    39  integer :: gds(200)
                    +
                    40  contains
                    +
                    42  procedure :: is_same_grid_grib1
                    +
                    43  end type grib1_descriptor
                    +
                    44 
                    + +
                    48  integer :: gdt_num
                    +
                    49  integer :: gdt_len
                    +
                    50  integer, allocatable :: gdt_tmpl(:)
                    +
                    51  contains
                    +
                    53  procedure :: is_same_grid_grib2
                    +
                    54  end type grib2_descriptor
                    +
                    55 
                    +
                    56  interface operator (==)
                    +
                    57  module procedure is_same_grid
                    +
                    58  end interface operator (==)
                    +
                    59 
                    +
                    60  interface init_descriptor
                    +
                    61  module procedure init_grib1_descriptor
                    +
                    62  module procedure init_grib2_descriptor
                    +
                    63  end interface init_descriptor
                    +
                    64 
                    +
                    65 contains
                    +
                    66 
                    +
                    74  function init_grib1_descriptor(gds) result(desc)
                    +
                    75  type(grib1_descriptor) :: desc
                    +
                    76  integer, intent(in) :: gds(:)
                    +
                    77  desc%gds = gds
                    +
                    78  desc%grid_num = gds(1)
                    +
                    79 
                    +
                    80  !call desc%decode_template()
                    +
                    81 
                    +
                    82  end function init_grib1_descriptor
                    +
                    83 
                    +
                    93  function init_grib2_descriptor(gdt_num, gdt_len, gdt_tmpl) result(desc)
                    +
                    94  type(grib2_descriptor) :: desc
                    +
                    95  integer, intent(in) :: gdt_num, gdt_len, gdt_tmpl(:)
                    +
                    96  desc%grid_num = gdt_num
                    +
                    97 
                    +
                    98  desc%gdt_num = gdt_num
                    +
                    99  desc%gdt_len = gdt_len
                    +
                    100  allocate(desc%gdt_tmpl(gdt_len))
                    +
                    101  desc%gdt_tmpl = gdt_tmpl
                    +
                    102 
                    +
                    103  !call desc%decode_template()
                    +
                    104 
                    +
                    105  end function init_grib2_descriptor
                    +
                    106 
                    +
                    115  logical function is_same_grid(grid1, grid2)
                    +
                    116  class(ip_grid_descriptor), intent(in) :: grid1, grid2
                    +
                    117 
                    +
                    118  select type(grid1)
                    +
                    119  type is(grib1_descriptor)
                    +
                    120  select type(grid2)
                    +
                    121  type is(grib1_descriptor)
                    +
                    122  is_same_grid = grid1%is_same_grid_grib1(grid2)
                    +
                    123  class default
                    +
                    124  is_same_grid = .false.
                    +
                    125  end select
                    +
                    126  type is(grib2_descriptor)
                    +
                    127  select type(grid2)
                    +
                    128  type is(grib2_descriptor)
                    +
                    129  is_same_grid = grid1%is_same_grid_grib2(grid2)
                    +
                    130  class default
                    +
                    131  is_same_grid = .false.
                    +
                    132  end select
                    +
                    133  end select
                    +
                    134 
                    +
                    135  end function is_same_grid
                    +
                    136 
                    +
                    145  logical function is_same_grid_grib1(self, grid_desc) result(same_grid)
                    +
                    146  class(grib1_descriptor), intent(in) :: self, grid_desc
                    +
                    147 
                    +
                    148  if (all(self%gds == grid_desc%gds)) then
                    +
                    149  same_grid = .true.
                    +
                    150  else
                    +
                    151  same_grid = .false.
                    +
                    152  end if
                    +
                    153 
                    +
                    154  end function is_same_grid_grib1
                    +
                    155 
                    +
                    164  logical function is_same_grid_grib2(self, grid_desc) result(same_grid)
                    +
                    165  class(grib2_descriptor), intent(in) :: self, grid_desc
                    +
                    166 
                    +
                    167  same_grid = .false.
                    +
                    168  if (self%grid_num == grid_desc%grid_num) then
                    +
                    169  if (self%gdt_len == grid_desc%gdt_len) then
                    +
                    170  if (all(self%gdt_tmpl == grid_desc%gdt_tmpl)) then
                    +
                    171  same_grid = .true.
                    +
                    172  end if
                    +
                    173  end if
                    +
                    174  end if
                    +
                    175 
                    +
                    176  end function is_same_grid_grib2
                    +
                    177 
                    +
                    178 
                    +
                    179 
                    +
                    180  ! subroutine decode_template_grib1(self)
                    +
                    181  ! type(grib1_descriptor), intent(inout) :: self
                    +
                    182 
                    +
                    183  ! integer :: im, jm, iwrap, jg
                    +
                    184  ! integer :: iscan, kscan, nscan, nscan_field_pos
                    +
                    185  ! integer :: jwrap1, jwrap2
                    +
                    186 
                    +
                    187  ! real :: dlat, dlon
                    +
                    188  ! real :: rlat1, rlat2
                    +
                    189  ! real :: rlon1, rlon2
                    +
                    190 
                    +
                    191  ! ! set a default value for this to check if it has changed
                    +
                    192  ! ! for rotated grids nscan is set = 3, but in other places it's not, so use this special value
                    +
                    193  ! ! just for field_position routine
                    +
                    194  ! nscan_field_pos = -1
                    +
                    195 
                    +
                    196  ! im = self%gds(2)
                    +
                    197  ! jm = self%gds(3)
                    +
                    198  ! iwrap = 0
                    +
                    199  ! jwrap1 = 0
                    +
                    200  ! jwrap2 = 0
                    +
                    201  ! nscan = mod(self%gds(11) / 32, 2)
                    +
                    202  ! kscan = 0
                    +
                    203 
                    +
                    204  ! select case(self%gds(1))
                    +
                    205  ! case(0)
                    +
                    206  ! rlon1=self%gds(5)*1.e-3
                    +
                    207  ! rlon2=self%gds(8)*1.e-3
                    +
                    208  ! iscan=mod(self%gds(11)/128,2)
                    +
                    209  ! if(iscan.eq.0) then
                    +
                    210  ! dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    211  ! else
                    +
                    212  ! dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    213  ! endif
                    +
                    214  ! iwrap=nint(360/abs(dlon))
                    +
                    215  ! if(im.lt.iwrap) iwrap=0
                    +
                    216  ! if(iwrap.gt.0.and.mod(iwrap,2).eq.0) then
                    +
                    217  ! rlat1=self%gds(4)*1.e-3
                    +
                    218  ! rlat2=self%gds(7)*1.e-3
                    +
                    219  ! dlat=abs(rlat2-rlat1)/(jm-1)
                    +
                    220  ! if(abs(rlat1).gt.90-0.25*dlat) then
                    +
                    221  ! jwrap1=2
                    +
                    222  ! elseif(abs(rlat1).gt.90-0.75*dlat) then
                    +
                    223  ! jwrap1=1
                    +
                    224  ! endif
                    +
                    225  ! if(abs(rlat2).gt.90-0.25*dlat) then
                    +
                    226  ! jwrap2=2*jm
                    +
                    227  ! elseif(abs(rlat2).gt.90-0.75*dlat) then
                    +
                    228  ! jwrap2=2*jm+1
                    +
                    229  ! endif
                    +
                    230  ! endif
                    +
                    231  ! case(1)
                    +
                    232  ! rlon1=self%gds(5)*1.e-3
                    +
                    233  ! rlon2=self%gds(8)*1.e-3
                    +
                    234  ! iscan=mod(self%gds(11)/128,2)
                    +
                    235  ! if(iscan.eq.0) then
                    +
                    236  ! dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    237  ! else
                    +
                    238  ! dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    239  ! endif
                    +
                    240  ! iwrap=nint(360/abs(dlon))
                    +
                    241  ! if(im.lt.iwrap) iwrap=0
                    +
                    242  ! case(4)
                    +
                    243  ! rlon1=self%gds(5)*1.e-3
                    +
                    244  ! rlon2=self%gds(8)*1.e-3
                    +
                    245  ! iscan=mod(self%gds(11)/128,2)
                    +
                    246  ! if(iscan.eq.0) then
                    +
                    247  ! dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    248  ! else
                    +
                    249  ! dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    250  ! endif
                    +
                    251  ! iwrap=nint(360/abs(dlon))
                    +
                    252  ! if(im.lt.iwrap) iwrap=0
                    +
                    253  ! if(iwrap.gt.0.and.mod(iwrap,2).eq.0) then
                    +
                    254  ! jg=self%gds(10)*2
                    +
                    255  ! if(jm.eq.jg) then
                    +
                    256  ! jwrap1=1
                    +
                    257  ! jwrap2=2*jm+1
                    +
                    258  ! endif
                    +
                    259  ! endif
                    +
                    260  ! case(203)
                    +
                    261  ! ! why is nscan set to 3 for this grid?
                    +
                    262  ! nscan_field_pos = 3
                    +
                    263  ! kscan=mod(self%gds(11) / 256, 2)
                    +
                    264  ! case default
                    +
                    265  ! print *, "grib1 grid type ", self%gds(1), " not recognized"
                    +
                    266  ! error stop
                    +
                    267  ! end select
                    +
                    268 
                    +
                    269  ! self%im = im
                    +
                    270  ! self%jm = jm
                    +
                    271  ! self%nm = im * jm
                    +
                    272  ! self%iwrap = iwrap
                    +
                    273  ! self%jwrap1 = jwrap1
                    +
                    274  ! self%jwrap2 = jwrap2
                    +
                    275  ! self%nscan = nscan
                    +
                    276 
                    +
                    277  ! if (nscan_field_pos == -1) then
                    +
                    278  ! ! just use regular value of nscan
                    +
                    279  ! self%nscan_field_pos = nscan
                    +
                    280  ! else
                    +
                    281  ! ! nscan = 3 for rotated grids and is set to 3 for use in field_position
                    +
                    282  ! self%nscan_field_pos = nscan_field_pos
                    +
                    283  ! end if
                    +
                    284 
                    +
                    285  ! self%kscan = kscan
                    +
                    286 
                    +
                    287  ! end subroutine decode_template_grib1
                    +
                    288 
                    +
                    289  ! subroutine decode_template_grib2(self)
                    +
                    290  ! type(grib2_descriptor), intent(inout) :: self
                    +
                    291 
                    +
                    292  ! integer :: im, jm, iwrap, jg
                    +
                    293  ! integer :: i_offset_odd, i_offset_even
                    +
                    294  ! integer :: iscan, kscan, nscan, nscan_field_pos
                    +
                    295  ! integer :: jwrap1, jwrap2, iscale
                    +
                    296 
                    +
                    297  ! real :: dlat, dlon
                    +
                    298  ! real :: rlat1, rlat2
                    +
                    299  ! real :: rlon1, rlon2
                    +
                    300 
                    +
                    301  ! nscan_field_pos = -1
                    +
                    302 
                    +
                    303  ! select case(self%gdt_num)
                    +
                    304  ! ! EQUIDISTANT CYLINDRICAL
                    +
                    305  ! case(0)
                    +
                    306  ! im=self%gdt_tmpl(8)
                    +
                    307  ! jm=self%gdt_tmpl(9)
                    +
                    308  ! nscan=mod(self%gdt_tmpl(19)/32,2)
                    +
                    309  ! kscan=0
                    +
                    310  ! iscale=self%gdt_tmpl(10)*self%gdt_tmpl(11)
                    +
                    311  ! if(iscale==0) iscale=10**6
                    +
                    312  ! rlon1=float(self%gdt_tmpl(13))/float(iscale)
                    +
                    313  ! rlon2=float(self%gdt_tmpl(16))/float(iscale)
                    +
                    314  ! iscan=mod(self%gdt_tmpl(19)/128,2)
                    +
                    315  ! if(iscan.eq.0) then
                    +
                    316  ! dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    317  ! else
                    +
                    318  ! dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    319  ! endif
                    +
                    320  ! iwrap=nint(360/abs(dlon))
                    +
                    321  ! if(im.lt.iwrap) iwrap=0
                    +
                    322  ! jwrap1=0
                    +
                    323  ! jwrap2=0
                    +
                    324  ! if(iwrap.gt.0.and.mod(iwrap,2).eq.0) then
                    +
                    325  ! rlat1=float(self%gdt_tmpl(12))/float(iscale)
                    +
                    326  ! rlat2=float(self%gdt_tmpl(15))/float(iscale)
                    +
                    327  ! dlat=abs(rlat2-rlat1)/(jm-1)
                    +
                    328  ! if(abs(rlat1).gt.90-0.25*dlat) then
                    +
                    329  ! jwrap1=2
                    +
                    330  ! elseif(abs(rlat1).gt.90-0.75*dlat) then
                    +
                    331  ! jwrap1=1
                    +
                    332  ! endif
                    +
                    333  ! if(abs(rlat2).gt.90-0.25*dlat) then
                    +
                    334  ! jwrap2=2*jm
                    +
                    335  ! elseif(abs(rlat2).gt.90-0.75*dlat) then
                    +
                    336  ! jwrap2=2*jm+1
                    +
                    337  ! endif
                    +
                    338  ! endif
                    +
                    339  ! case(1)
                    +
                    340  ! i_offset_odd=mod(self%gdt_tmpl(19)/8,2)
                    +
                    341  ! i_offset_even=mod(self%gdt_tmpl(19)/4,2)
                    +
                    342  ! im=self%gdt_tmpl(8)
                    +
                    343  ! jm=self%gdt_tmpl(9)
                    +
                    344  ! iwrap=0
                    +
                    345  ! jwrap1=0
                    +
                    346  ! jwrap2=0
                    +
                    347  ! kscan=0
                    +
                    348  ! nscan=mod(self%gdt_tmpl(19)/32,2)
                    +
                    349  ! if(i_offset_odd/=i_offset_even)then
                    +
                    350  ! kscan=i_offset_odd
                    +
                    351  ! nscan_field_pos=3
                    +
                    352  ! endif
                    +
                    353  ! ! MERCATOR CYLINDRICAL
                    +
                    354  ! case(10)
                    +
                    355  ! im=self%gdt_tmpl(8)
                    +
                    356  ! jm=self%gdt_tmpl(9)
                    +
                    357  ! rlon1=float(self%gdt_tmpl(11))*1.0e-6
                    +
                    358  ! rlon2=float(self%gdt_tmpl(15))*1.0e-6
                    +
                    359  ! iscan=mod(self%gdt_tmpl(16)/128,2)
                    +
                    360  ! if(iscan.eq.0) then
                    +
                    361  ! dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    362  ! else
                    +
                    363  ! dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    364  ! endif
                    +
                    365  ! iwrap=nint(360/abs(dlon))
                    +
                    366  ! if(im.lt.iwrap) iwrap=0
                    +
                    367  ! jwrap1=0
                    +
                    368  ! jwrap2=0
                    +
                    369  ! kscan=0
                    +
                    370  ! nscan=mod(self%gdt_tmpl(16)/32,2)
                    +
                    371  ! ! POLAR STEREOGRAPHIC AZIMUTHAL
                    +
                    372  ! case(20)
                    +
                    373  ! im=self%gdt_tmpl(8)
                    +
                    374  ! jm=self%gdt_tmpl(9)
                    +
                    375  ! nscan=mod(self%gdt_tmpl(18)/32,2)
                    +
                    376  ! iwrap=0
                    +
                    377  ! jwrap1=0
                    +
                    378  ! jwrap2=0
                    +
                    379  ! kscan=0
                    +
                    380  ! ! LAMBERT CONFORMAL CONICAL
                    +
                    381  ! case(30)
                    +
                    382  ! im=self%gdt_tmpl(8)
                    +
                    383  ! jm=self%gdt_tmpl(9)
                    +
                    384  ! nscan=mod(self%gdt_tmpl(18)/32,2)
                    +
                    385  ! iwrap=0
                    +
                    386  ! jwrap1=0
                    +
                    387  ! jwrap2=0
                    +
                    388  ! kscan=0
                    +
                    389  ! ! GAUSSIAN CYLINDRICAL
                    +
                    390  ! case(40)
                    +
                    391  ! im=self%gdt_tmpl(8)
                    +
                    392  ! jm=self%gdt_tmpl(9)
                    +
                    393  ! iscale=self%gdt_tmpl(10)*self%gdt_tmpl(11)
                    +
                    394  ! if(iscale==0) iscale=10**6
                    +
                    395  ! rlon1=float(self%gdt_tmpl(13))/float(iscale)
                    +
                    396  ! rlon2=float(self%gdt_tmpl(16))/float(iscale)
                    +
                    397  ! iscan=mod(self%gdt_tmpl(19)/128,2)
                    +
                    398  ! if(iscan.eq.0) then
                    +
                    399  ! dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    400  ! else
                    +
                    401  ! dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    402  ! endif
                    +
                    403  ! iwrap=nint(360/abs(dlon))
                    +
                    404  ! if(im.lt.iwrap) iwrap=0
                    +
                    405  ! jwrap1=0
                    +
                    406  ! jwrap2=0
                    +
                    407  ! if(iwrap.gt.0.and.mod(iwrap,2).eq.0) then
                    +
                    408  ! jg=self%gdt_tmpl(18)*2
                    +
                    409  ! if(jm.eq.jg) then
                    +
                    410  ! jwrap1=1
                    +
                    411  ! jwrap2=2*jm+1
                    +
                    412  ! endif
                    +
                    413  ! endif
                    +
                    414  ! nscan=mod(self%gdt_tmpl(19)/32,2)
                    +
                    415  ! kscan=0
                    +
                    416  ! case default
                    +
                    417  ! print *, "gdt_num ", self%gdt_num, " not recognized"
                    +
                    418  ! error stop
                    +
                    419  ! end select
                    +
                    420 
                    +
                    421  ! self%im = im
                    +
                    422  ! self%jm = jm
                    +
                    423  ! self%nm = im*jm
                    +
                    424  ! self%iwrap = iwrap
                    +
                    425  ! self%jwrap1 = jwrap1
                    +
                    426  ! self%jwrap2 = jwrap2
                    +
                    427  ! self%nscan = nscan
                    +
                    428  ! if (nscan_field_pos == -1) then
                    +
                    429  ! self%nscan_field_pos = nscan
                    +
                    430  ! else
                    +
                    431  ! self%nscan_field_pos = nscan_field_pos
                    +
                    432  ! end if
                    +
                    433  ! self%kscan = kscan
                    +
                    434 
                    +
                    435  ! end subroutine decode_template_grib2
                    +
                    436 
                    +
                    437  ! subroutine earth_radius(self, radius, eccen_squared)
                    +
                    438  ! class(ip_grid_descriptor), intent(in) :: self
                    +
                    439  ! real, intent(out) :: radius, eccen_squared
                    +
                    440 
                    +
                    441  ! real :: flat, major_axis, minor_axis
                    +
                    442  ! logical :: elliptical
                    +
                    443 
                    +
                    444  ! select type(self)
                    +
                    445  ! type is(grib1_descriptor)
                    +
                    446  ! associate(gds => self%gds)
                    +
                    447  ! select case(gds(1))
                    +
                    448  ! case(0)
                    +
                    449  ! radius = 6.3712d6
                    +
                    450  ! eccen_squared = 0d0
                    +
                    451  ! case(1)
                    +
                    452  ! radius = 6.3712d6
                    +
                    453  ! eccen_squared = 0d0
                    +
                    454  ! case(3)
                    +
                    455  ! radius = 6.3712d6
                    +
                    456  ! eccen_squared = 0d0
                    +
                    457  ! case(4)
                    +
                    458  ! radius = 6.3712d6
                    +
                    459  ! eccen_squared = 0d0
                    +
                    460  ! case(5)
                    +
                    461  ! elliptical = mod(gds(6) / 64, 2) == 1
                    +
                    462  ! if (.not. elliptical) then
                    +
                    463  ! radius = 6.3712d6
                    +
                    464  ! eccen_squared = 0d0
                    +
                    465  ! else
                    +
                    466  ! radius = 6.378137E6 ! WGS-84
                    +
                    467  ! eccen_squared = 0.00669437999013d0
                    +
                    468  ! end if
                    +
                    469  ! case(203)
                    +
                    470  ! radius = 6.3712d6
                    +
                    471  ! eccen_squared = 0d0
                    +
                    472  ! case(205)
                    +
                    473  ! radius = 6.3712d6
                    +
                    474  ! eccen_squared = 0d0
                    +
                    475  ! case default
                    +
                    476  ! print *, "grib1 grid not recognized. gds(1) = ", gds(1)
                    +
                    477  ! error stop
                    +
                    478  ! end select
                    +
                    479  ! end associate
                    +
                    480  ! type is(grib2_descriptor)
                    +
                    481  ! associate(gdt_tmpl => self%gdt_tmpl)
                    +
                    482  ! select case (gdt_tmpl(1))
                    +
                    483  ! case (0)
                    +
                    484  ! radius = 6367470.0
                    +
                    485  ! eccen_squared = 0.0
                    +
                    486  ! case (1) ! user specified spherical
                    +
                    487  ! radius = float(gdt_tmpl(3))/float(10**gdt_tmpl(2))
                    +
                    488  ! eccen_squared = 0.0
                    +
                    489  ! case (2) ! iau 1965
                    +
                    490  ! radius = 6378160.0 ! semi major axis
                    +
                    491  ! flat = 1.0/297.0 ! flattening
                    +
                    492  ! eccen_squared = (2.0*flat) - (flat**2)
                    +
                    493  ! case (3) ! user specified elliptical (km)
                    +
                    494  ! major_axis = float(gdt_tmpl(5))/float(10**gdt_tmpl(4))
                    +
                    495  ! major_axis = major_axis * 1000.0
                    +
                    496  ! minor_axis = float(gdt_tmpl(7))/float(10**gdt_tmpl(6))
                    +
                    497  ! minor_axis = minor_axis * 1000.0
                    +
                    498  ! eccen_squared = 1.0 - (minor_axis**2 / major_axis**2)
                    +
                    499  ! radius = major_axis
                    +
                    500  ! case (4) ! iag-grs80 model
                    +
                    501  ! radius = 6378137.0 ! semi major axis
                    +
                    502  ! flat = 1.0/298.2572 ! flattening
                    +
                    503  ! eccen_squared = (2.0*flat) - (flat**2)
                    +
                    504  ! case (5) ! wgs84 datum
                    +
                    505  ! radius = 6378137.0 ! semi major axis
                    +
                    506  ! eccen_squared = 0.00669437999013
                    +
                    507  ! case (6)
                    +
                    508  ! radius = 6371229.0
                    +
                    509  ! eccen_squared = 0.0
                    +
                    510  ! case (7) ! user specified elliptical (m)
                    +
                    511  ! major_axis = float(gdt_tmpl(5))/float(10**gdt_tmpl(4))
                    +
                    512  ! minor_axis = float(gdt_tmpl(7))/float(10**gdt_tmpl(6))
                    +
                    513  ! eccen_squared = 1.0 - (minor_axis**2 / major_axis**2)
                    +
                    514  ! radius = major_axis
                    +
                    515  ! case (8)
                    +
                    516  ! radius = 6371200.0
                    +
                    517  ! eccen_squared = 0.0
                    +
                    518  ! case default
                    +
                    519  ! radius = -9999.
                    +
                    520  ! eccen_squared = -9999.
                    +
                    521  ! error stop
                    +
                    522  ! end select
                    +
                    523  ! end associate
                    +
                    524  ! class default
                    +
                    525  ! print *, "unknown descriptor type"
                    +
                    526  ! error stop
                    +
                    527  ! end select
                    +
                    528  ! end subroutine earth_radius
                    +
                    529 
                    +
                    530 end module ip_grid_descriptor_mod
                    + +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    type(grib2_descriptor) function, public init_grib2_descriptor(gdt_num, gdt_len, gdt_tmpl)
                    Initialize grib-2 descriptor from integer grid definition template (GDT).
                    +
                    logical function is_same_grid(grid1, grid2)
                    Test whether two grid descriptors are the same.
                    +
                    logical function is_same_grid_grib1(self, grid_desc)
                    Test whether two grib1_descriptors are the same.
                    +
                    logical function is_same_grid_grib2(self, grid_desc)
                    Test whether two grib2_descriptors are the same.
                    +
                    type(grib1_descriptor) function, public init_grib1_descriptor(gds)
                    Initialize grib-1 descriptor from integer grid definition section (GDS).
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Grib-2 descriptor containing a grib2 GDT represented by an integer array.
                    +
                    Abstract descriptor object which represents a grib1 or grib2 descriptor.
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__grid__factory__mod_8F90.html b/ver-5.0.0/ip__grid__factory__mod_8F90.html new file mode 100644 index 00000000..ab8e7bd9 --- /dev/null +++ b/ver-5.0.0/ip__grid__factory__mod_8F90.html @@ -0,0 +1,138 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_factory_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_factory_mod.F90 File Reference
                    +
                    +
                    + +

                    Routines for creating an ip_grid given a Grib descriptor. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    interface  ip_grid_factory_mod::init_grid
                     
                    + + + + +

                    +Modules

                    module  ip_grid_factory_mod
                     Routines for creating an ip_grid given a Grib descriptor.
                     
                    + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine ip_grid_factory_mod::init_grid_generic (grid, grid_desc)
                     Initializes a polymorphic ip_grid object from an ip_grid_descriptor. More...
                     
                    subroutine ip_grid_factory_mod::init_grid_grib1 (grid, g1_desc)
                     Initializes a polymorphic ip_grid from a grib1_descriptor. More...
                     
                    subroutine ip_grid_factory_mod::init_grid_grib2 (grid, g2_desc)
                     Initializes a polymorphic ip_grid from a grib2_descriptor. More...
                     
                    +

                    Detailed Description

                    +

                    Routines for creating an ip_grid given a Grib descriptor.

                    +
                    Author
                    Mark Iredell, George Gayno, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition in file ip_grid_factory_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__grid__factory__mod_8F90.js b/ver-5.0.0/ip__grid__factory__mod_8F90.js new file mode 100644 index 00000000..c8acead3 --- /dev/null +++ b/ver-5.0.0/ip__grid__factory__mod_8F90.js @@ -0,0 +1,7 @@ +var ip__grid__factory__mod_8F90 = +[ + [ "init_grid", "interfaceip__grid__factory__mod_1_1init__grid.html", "interfaceip__grid__factory__mod_1_1init__grid" ], + [ "init_grid_generic", "ip__grid__factory__mod_8F90.html#a2d2ea07d353bae8b057471aa99b58e46", null ], + [ "init_grid_grib1", "ip__grid__factory__mod_8F90.html#ad8906ed6fe52c2426c0ff09ce50b6fc5", null ], + [ "init_grid_grib2", "ip__grid__factory__mod_8F90.html#aa187dc8dbd1d004a51cc0e9826ffa225", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__grid__factory__mod_8F90_source.html b/ver-5.0.0/ip__grid__factory__mod_8F90_source.html new file mode 100644 index 00000000..16fbd895 --- /dev/null +++ b/ver-5.0.0/ip__grid__factory__mod_8F90_source.html @@ -0,0 +1,218 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_factory_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_grid_factory_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    6 
                    + + +
                    13  use ip_grids_mod
                    +
                    14  use ip_grid_mod
                    +
                    15  implicit none
                    +
                    16 
                    +
                    17  private
                    +
                    18  public :: init_grid
                    +
                    19 
                    +
                    20  interface init_grid
                    +
                    21  module procedure init_grid_generic
                    +
                    22  end interface init_grid
                    +
                    23 
                    +
                    24 contains
                    +
                    25 
                    +
                    33  subroutine init_grid_generic(grid, grid_desc)
                    +
                    34  class(ip_grid_descriptor), intent(in) :: grid_desc
                    +
                    35  class(ip_grid), allocatable, intent(out) :: grid
                    +
                    36 
                    +
                    37  select type(grid_desc)
                    +
                    38  type is(grib1_descriptor)
                    +
                    39  call init_grid_grib1(grid, grid_desc)
                    +
                    40  type is(grib2_descriptor)
                    +
                    41  call init_grid_grib2(grid, grid_desc)
                    +
                    42  end select
                    +
                    43  end subroutine init_grid_generic
                    +
                    44 
                    +
                    53  subroutine init_grid_grib1(grid, g1_desc)
                    +
                    54  type(grib1_descriptor), intent(in) :: g1_desc
                    +
                    55  class(ip_grid), allocatable, intent(out) :: grid
                    +
                    56 
                    +
                    57  select case(g1_desc%grid_num)
                    +
                    58  case(:-1)
                    +
                    59  allocate(ip_station_points_grid::grid)
                    + +
                    61  allocate(ip_equid_cylind_grid::grid)
                    + +
                    63  allocate(ip_mercator_grid::grid)
                    + +
                    65  allocate(ip_lambert_conf_grid::grid)
                    + +
                    67  allocate(ip_gaussian_grid::grid)
                    + +
                    69  allocate(ip_polar_stereo_grid::grid)
                    + +
                    71  allocate(ip_rot_equid_cylind_egrid::grid)
                    + +
                    73  allocate(ip_rot_equid_cylind_grid::grid)
                    +
                    74  end select
                    +
                    75 
                    +
                    76  call grid%init(g1_desc)
                    +
                    77  allocate(grid%descriptor, source = g1_desc)
                    +
                    78  end subroutine init_grid_grib1
                    +
                    79 
                    +
                    80 
                    +
                    89  subroutine init_grid_grib2(grid, g2_desc)
                    +
                    90  type(grib2_descriptor), intent(in) :: g2_desc
                    +
                    91  class(ip_grid), allocatable, intent(out) :: grid
                    +
                    92 
                    +
                    93  integer :: i_offset_odd, i_offset_even
                    +
                    94 
                    +
                    95  select case(g2_desc%grid_num)
                    +
                    96  case(:-1)
                    +
                    97  allocate(ip_station_points_grid::grid)
                    + +
                    99  allocate(ip_equid_cylind_grid::grid)
                    + +
                    101  i_offset_odd = mod(g2_desc%gdt_tmpl(19) / 8, 2)
                    +
                    102  i_offset_even = mod(g2_desc%gdt_tmpl(19) / 4, 2)
                    +
                    103  if (i_offset_odd /= i_offset_even) then
                    +
                    104  allocate(ip_rot_equid_cylind_egrid::grid)
                    +
                    105  else
                    +
                    106  allocate(ip_rot_equid_cylind_grid::grid)
                    +
                    107  end if
                    + +
                    109  allocate(ip_mercator_grid::grid)
                    + +
                    111  allocate(ip_polar_stereo_grid::grid)
                    + +
                    113  allocate(ip_lambert_conf_grid::grid)
                    + +
                    115  allocate(ip_gaussian_grid::grid)
                    +
                    116  case default
                    +
                    117  print *, "gdt_num: ", g2_desc%gdt_num, " not recognized"
                    +
                    118  error stop
                    +
                    119  end select
                    +
                    120 
                    +
                    121  call grid%init(g2_desc)
                    +
                    122  allocate(grid%descriptor, source = g2_desc)
                    +
                    123  end subroutine init_grid_grib2
                    +
                    124 
                    +
                    125 end module ip_grid_factory_mod
                    + +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Routines for creating an ip_grid given a Grib descriptor.
                    +
                    subroutine init_grid_generic(grid, grid_desc)
                    Initializes a polymorphic ip_grid object from an ip_grid_descriptor.
                    +
                    subroutine init_grid_grib2(grid, g2_desc)
                    Initializes a polymorphic ip_grid from a grib2_descriptor.
                    +
                    subroutine init_grid_grib1(grid, g1_desc)
                    Initializes a polymorphic ip_grid from a grib1_descriptor.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    integer, parameter, public lambert_conf_grid_id_grib2
                    Integer grid number for Lambert conformal grid in grib2.
                    Definition: ip_grid_mod.F90:26
                    +
                    integer, parameter, public gaussian_grid_id_grib2
                    Integer grid number for Gaussian grid in grib2.
                    Definition: ip_grid_mod.F90:27
                    +
                    integer, parameter, public equid_cylind_grid_id_grib2
                    Integer grid number for equidistant cylindrical grid in grib2.
                    Definition: ip_grid_mod.F90:22
                    +
                    integer, parameter, public gaussian_grid_id_grib1
                    Integer grid number for Gaussian grid in grib1.
                    Definition: ip_grid_mod.F90:17
                    +
                    integer, parameter, public rot_equid_cylind_e_grid_id_grib1
                    Integer grid number for rotated equidistant cylindrical E-stagger grid.
                    Definition: ip_grid_mod.F90:19
                    +
                    integer, parameter, public polar_stereo_grid_id_grib2
                    Integer grid number for polar stereo grid in grib2.
                    Definition: ip_grid_mod.F90:25
                    +
                    integer, parameter, public lambert_conf_grid_id_grib1
                    Integer grid number for Lambert Conformal grid in grib1.
                    Definition: ip_grid_mod.F90:16
                    +
                    integer, parameter, public mercator_grid_id_grib1
                    Integer grid number for Mercator grid in grib1.
                    Definition: ip_grid_mod.F90:15
                    +
                    integer, parameter, public equid_cylind_grid_id_grib1
                    Integer grid number for equidistant cylindrical grid in grib1.
                    Definition: ip_grid_mod.F90:14
                    +
                    integer, parameter, public rot_equid_cylind_b_grid_id_grib1
                    Integer grid number for rotated equidistant cylindrical B-stagger grid.
                    Definition: ip_grid_mod.F90:20
                    +
                    integer, parameter, public rot_equid_cylind_grid_id_grib2
                    Integer grid number for rotated equidistant cylindrical grid in grib2.
                    Definition: ip_grid_mod.F90:23
                    +
                    integer, parameter, public mercator_grid_id_grib2
                    Integer grid number for Mercator grid in grib2.
                    Definition: ip_grid_mod.F90:24
                    +
                    integer, parameter, public polar_stereo_grid_id_grib1
                    Integer grid number for polar stereo grid in grib1.
                    Definition: ip_grid_mod.F90:18
                    +
                    Re-export the individual grids.
                    Definition: ip_grids_mod.F90:7
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Grib-2 descriptor containing a grib2 GDT represented by an integer array.
                    +
                    Abstract descriptor object which represents a grib1 or grib2 descriptor.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__grid__mod_8F90.html b/ver-5.0.0/ip__grid__mod_8F90.html new file mode 100644 index 00000000..2fb445a4 --- /dev/null +++ b/ver-5.0.0/ip__grid__mod_8F90.html @@ -0,0 +1,188 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_mod.F90 File Reference
                    +
                    +
                    + +

                    Abstract ip_grid type. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + + + + + + + + + + +

                    +Data Types

                    interface  ip_grid_mod::gdswzd_interface
                     
                    interface  ip_grid_mod::init_grib1_interface
                     
                    interface  ip_grid_mod::init_grib2_interface
                     
                    type  ip_grid_mod::ip_grid
                     Abstract grid that holds fields and methods common to all grids. More...
                     
                    interface  ip_grid_mod::operator(==)
                     Check equality. More...
                     
                    + + + + +

                    +Modules

                    module  ip_grid_mod
                     Abstract ip_grid type.
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    integer function ip_grid_mod::field_pos (self, i, j)
                     Returns the field position for a given grid point. More...
                     
                    logical function ip_grid_mod::is_same_grid (grid1, grid2)
                     Compares two grids. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    integer, parameter, public ip_grid_mod::equid_cylind_grid_id_grib1 = 0
                     Integer grid number for equidistant cylindrical grid in grib1. More...
                     
                    integer, parameter, public ip_grid_mod::equid_cylind_grid_id_grib2 = 0
                     Integer grid number for equidistant cylindrical grid in grib2. More...
                     
                    integer, parameter, public ip_grid_mod::gaussian_grid_id_grib1 = 4
                     Integer grid number for Gaussian grid in grib1. More...
                     
                    integer, parameter, public ip_grid_mod::gaussian_grid_id_grib2 = 40
                     Integer grid number for Gaussian grid in grib2. More...
                     
                    integer, parameter, public ip_grid_mod::lambert_conf_grid_id_grib1 = 3
                     Integer grid number for Lambert Conformal grid in grib1. More...
                     
                    integer, parameter, public ip_grid_mod::lambert_conf_grid_id_grib2 = 30
                     Integer grid number for Lambert conformal grid in grib2. More...
                     
                    integer, parameter, public ip_grid_mod::mercator_grid_id_grib1 = 1
                     Integer grid number for Mercator grid in grib1. More...
                     
                    integer, parameter, public ip_grid_mod::mercator_grid_id_grib2 = 10
                     Integer grid number for Mercator grid in grib2. More...
                     
                    integer, parameter, public ip_grid_mod::polar_stereo_grid_id_grib1 = 5
                     Integer grid number for polar stereo grid in grib1. More...
                     
                    integer, parameter, public ip_grid_mod::polar_stereo_grid_id_grib2 = 20
                     Integer grid number for polar stereo grid in grib2. More...
                     
                    integer, parameter, public ip_grid_mod::rot_equid_cylind_b_grid_id_grib1 = 205
                     Integer grid number for rotated equidistant cylindrical B-stagger grid. More...
                     
                    integer, parameter, public ip_grid_mod::rot_equid_cylind_e_grid_id_grib1 = 203
                     Integer grid number for rotated equidistant cylindrical E-stagger grid. More...
                     
                    integer, parameter, public ip_grid_mod::rot_equid_cylind_grid_id_grib2 = 1
                     Integer grid number for rotated equidistant cylindrical grid in grib2. More...
                     
                    +

                    Detailed Description

                    +

                    Abstract ip_grid type.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition in file ip_grid_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__grid__mod_8F90.js b/ver-5.0.0/ip__grid__mod_8F90.js new file mode 100644 index 00000000..e34260b2 --- /dev/null +++ b/ver-5.0.0/ip__grid__mod_8F90.js @@ -0,0 +1,23 @@ +var ip__grid__mod_8F90 = +[ + [ "gdswzd_interface", "interfaceip__grid__mod_1_1gdswzd__interface.html", "interfaceip__grid__mod_1_1gdswzd__interface" ], + [ "init_grib1_interface", "interfaceip__grid__mod_1_1init__grib1__interface.html", "interfaceip__grid__mod_1_1init__grib1__interface" ], + [ "init_grib2_interface", "interfaceip__grid__mod_1_1init__grib2__interface.html", "interfaceip__grid__mod_1_1init__grib2__interface" ], + [ "ip_grid", "structip__grid__mod_1_1ip__grid.html", "structip__grid__mod_1_1ip__grid" ], + [ "operator(==)", "interfaceip__grid__mod_1_1operator_07_0a_0a_08.html", "interfaceip__grid__mod_1_1operator_07_0a_0a_08" ], + [ "field_pos", "ip__grid__mod_8F90.html#a63572318d74ec94c20c5ccd6ded2d442", null ], + [ "is_same_grid", "ip__grid__mod_8F90.html#a663bda9af9dd991a09ba0f0de66dc045", null ], + [ "equid_cylind_grid_id_grib1", "ip__grid__mod_8F90.html#ad96da95d40beceb1a1c405971e8130bb", null ], + [ "equid_cylind_grid_id_grib2", "ip__grid__mod_8F90.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6", null ], + [ "gaussian_grid_id_grib1", "ip__grid__mod_8F90.html#a45e8afad72b1b8856b3e44f2dd3123b3", null ], + [ "gaussian_grid_id_grib2", "ip__grid__mod_8F90.html#a36a9a73ecd50353f892341ae8a5c8316", null ], + [ "lambert_conf_grid_id_grib1", "ip__grid__mod_8F90.html#ab82b90d20f38ff39741f6890fa422d16", null ], + [ "lambert_conf_grid_id_grib2", "ip__grid__mod_8F90.html#a2e49846c9122b1fe1fcdbb2913fc32fe", null ], + [ "mercator_grid_id_grib1", "ip__grid__mod_8F90.html#ab9ff525eca4f053b04ec96a83cb06682", null ], + [ "mercator_grid_id_grib2", "ip__grid__mod_8F90.html#af9c58af5162d96cb7d1ac5001139b856", null ], + [ "polar_stereo_grid_id_grib1", "ip__grid__mod_8F90.html#afee73c2f09ea9de43c156dc594ae1df1", null ], + [ "polar_stereo_grid_id_grib2", "ip__grid__mod_8F90.html#a5b3ad320b41791e65966e1bb498e9ae3", null ], + [ "rot_equid_cylind_b_grid_id_grib1", "ip__grid__mod_8F90.html#adb7d7d18410aaae52d7eee2e97f04b14", null ], + [ "rot_equid_cylind_e_grid_id_grib1", "ip__grid__mod_8F90.html#a4e11ce780c3d165c282684188890af1c", null ], + [ "rot_equid_cylind_grid_id_grib2", "ip__grid__mod_8F90.html#adc7c650c524eb6425e77b2e0eac0979a", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__grid__mod_8F90_source.html b/ver-5.0.0/ip__grid__mod_8F90_source.html new file mode 100644 index 00000000..dea37bf3 --- /dev/null +++ b/ver-5.0.0/ip__grid__mod_8F90_source.html @@ -0,0 +1,273 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_grid_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    + + +
                    12  implicit none
                    +
                    13 
                    +
                    14  integer, public, parameter :: equid_cylind_grid_id_grib1 = 0
                    +
                    15  integer, public, parameter :: mercator_grid_id_grib1 = 1
                    +
                    16  integer, public, parameter :: lambert_conf_grid_id_grib1 = 3
                    +
                    17  integer, public, parameter :: gaussian_grid_id_grib1 = 4
                    +
                    18  integer, public, parameter :: polar_stereo_grid_id_grib1 = 5
                    +
                    19  integer, public, parameter :: rot_equid_cylind_e_grid_id_grib1 = 203
                    +
                    20  integer, public, parameter :: rot_equid_cylind_b_grid_id_grib1 = 205
                    +
                    21 
                    +
                    22  integer, public, parameter :: equid_cylind_grid_id_grib2 = 0
                    +
                    23  integer, public, parameter :: rot_equid_cylind_grid_id_grib2 = 1
                    +
                    24  integer, public, parameter :: mercator_grid_id_grib2 = 10
                    +
                    25  integer, public, parameter :: polar_stereo_grid_id_grib2 = 20
                    +
                    26  integer, public, parameter :: lambert_conf_grid_id_grib2 = 30
                    +
                    27  integer, public, parameter :: gaussian_grid_id_grib2 = 40
                    +
                    28 
                    +
                    29  private
                    +
                    30  public :: ip_grid
                    +
                    31  public :: gdswzd_interface
                    +
                    32  public :: operator(==)
                    +
                    33 
                    +
                    52  type, abstract :: ip_grid
                    +
                    53  class(ip_grid_descriptor), allocatable :: descriptor
                    +
                    54 
                    +
                    55  integer :: im
                    +
                    56  integer :: jm
                    +
                    57  integer :: nm
                    +
                    58 
                    +
                    63  integer :: nscan
                    +
                    64  integer :: kscan
                    +
                    65 
                    +
                    66  integer :: nscan_field_pos
                    +
                    67 
                    +
                    68  integer :: iwrap
                    +
                    69  integer :: jwrap1
                    +
                    70  integer :: jwrap2
                    +
                    71  real :: rerth
                    +
                    72  real :: eccen_squared
                    +
                    73  contains
                    +
                    75  procedure(init_grib1_interface), deferred :: init_grib1
                    +
                    77  procedure(init_grib2_interface), deferred :: init_grib2
                    +
                    79  procedure(gdswzd_interface), deferred :: gdswzd
                    +
                    82  procedure :: field_pos
                    +
                    84  generic :: init => init_grib1, init_grib2
                    +
                    85  end type ip_grid
                    +
                    86 
                    +
                    87  abstract interface
                    +
                    88 
                    +
                    119  subroutine gdswzd_interface(self, iopt, npts, fill, xpts, ypts, rlon, rlat, nret, crot, srot, &
                    +
                    120  xlon, xlat, ylon, ylat, area)
                    +
                    121  import
                    +
                    122  class(ip_grid), intent(in) :: self
                    +
                    123  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    124  INTEGER, INTENT( OUT) :: NRET
                    +
                    125  !
                    +
                    126  REAL, INTENT(IN ) :: FILL
                    +
                    127  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    128  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    129  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    130  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    131  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    132  end subroutine gdswzd_interface
                    +
                    133 
                    +
                    142  subroutine init_grib1_interface(self, g1_desc)
                    +
                    143  import
                    +
                    144  class(ip_grid), intent(inout) :: self
                    +
                    145  type(grib1_descriptor), intent(in) :: g1_desc
                    +
                    146  end subroutine init_grib1_interface
                    +
                    147 
                    +
                    156  subroutine init_grib2_interface(self, g2_desc)
                    +
                    157  import
                    +
                    158  class(ip_grid), intent(inout) :: self
                    +
                    159  type(grib2_descriptor), intent(in) :: g2_desc
                    +
                    160  end subroutine init_grib2_interface
                    +
                    161 
                    +
                    162  end interface
                    +
                    163 
                    +
                    166  interface operator (==)
                    +
                    167  module procedure is_same_grid
                    +
                    168  end interface operator (==)
                    +
                    169 
                    +
                    170 
                    +
                    171 contains
                    +
                    172 
                    +
                    182  logical function is_same_grid(grid1, grid2)
                    +
                    183  class(ip_grid), intent(in) :: grid1, grid2
                    +
                    184  is_same_grid = grid1%descriptor == grid2%descriptor
                    +
                    185  end function is_same_grid
                    +
                    186 
                    +
                    197  function field_pos(self, i, j)
                    +
                    198  class(ip_grid), intent(in) :: self
                    +
                    199  integer, intent(in) :: i, j
                    +
                    200  integer :: field_pos
                    +
                    201 
                    +
                    202  integer :: ii, jj, im, jm
                    +
                    203  integer :: iif, jjf, is1, iwrap
                    +
                    204  integer :: jwrap1, jwrap2, kscan, nscan
                    +
                    205 
                    +
                    206  ! extract from navigation parameter array
                    +
                    207  im=self%im
                    +
                    208  jm=self%jm
                    +
                    209  iwrap=self%iwrap
                    +
                    210  jwrap1=self%jwrap1
                    +
                    211  jwrap2=self%jwrap2
                    +
                    212  nscan=self%nscan_field_pos
                    +
                    213  kscan=self%kscan
                    +
                    214 
                    +
                    215  ! compute wraparounds in x and y if necessary and possible
                    +
                    216  ii=i
                    +
                    217  jj=j
                    +
                    218  if(iwrap.gt.0) then
                    +
                    219  ii=mod(i-1+iwrap,iwrap)+1
                    +
                    220  if(j.lt.1.and.jwrap1.gt.0) then
                    +
                    221  jj=jwrap1-j
                    +
                    222  ii=mod(ii-1+iwrap/2,iwrap)+1
                    +
                    223  elseif(j.gt.jm.and.jwrap2.gt.0) then
                    +
                    224  jj=jwrap2-j
                    +
                    225  ii=mod(ii-1+iwrap/2,iwrap)+1
                    +
                    226  endif
                    +
                    227  endif
                    +
                    228 
                    +
                    229  ! compute position for the appropriate scanning mode
                    +
                    230  field_pos=0
                    +
                    231  if(nscan.eq.0) then
                    +
                    232  if(ii.ge.1.and.ii.le.im.and.jj.ge.1.and.jj.le.jm) field_pos=ii+(jj-1)*im
                    +
                    233  elseif(nscan.eq.1) then
                    +
                    234  if(ii.ge.1.and.ii.le.im.and.jj.ge.1.and.jj.le.jm) field_pos=jj+(ii-1)*jm
                    +
                    235  elseif(nscan.eq.2) then
                    +
                    236  is1=(jm+1-kscan)/2
                    +
                    237  iif=jj+(ii-is1)
                    +
                    238  jjf=jj-(ii-is1)+kscan
                    +
                    239  if(iif.ge.1.and.iif.le.2*im-1.and.jjf.ge.1.and.jjf.le.jm) &
                    +
                    240  field_pos=(iif+(jjf-1)*(2*im-1)+1-kscan)/2
                    +
                    241  elseif(nscan.eq.3) then
                    +
                    242  is1=(jm+1-kscan)/2
                    +
                    243  iif=jj+(ii-is1)
                    +
                    244  jjf=jj-(ii-is1)+kscan
                    +
                    245  if(iif.ge.1.and.iif.le.2*im-1.and.jjf.ge.1.and.jjf.le.jm) field_pos=(iif+1)/2+(jjf-1)*im
                    +
                    246  endif
                    +
                    247  end function field_pos
                    +
                    248 
                    +
                    249 
                    +
                    250 end module ip_grid_mod
                    +
                    251 
                    + + + +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    logical function is_same_grid(grid1, grid2)
                    Test whether two grid descriptors are the same.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    integer, parameter, public lambert_conf_grid_id_grib2
                    Integer grid number for Lambert conformal grid in grib2.
                    Definition: ip_grid_mod.F90:26
                    +
                    integer, parameter, public gaussian_grid_id_grib2
                    Integer grid number for Gaussian grid in grib2.
                    Definition: ip_grid_mod.F90:27
                    +
                    integer, parameter, public equid_cylind_grid_id_grib2
                    Integer grid number for equidistant cylindrical grid in grib2.
                    Definition: ip_grid_mod.F90:22
                    +
                    integer, parameter, public gaussian_grid_id_grib1
                    Integer grid number for Gaussian grid in grib1.
                    Definition: ip_grid_mod.F90:17
                    +
                    integer, parameter, public rot_equid_cylind_e_grid_id_grib1
                    Integer grid number for rotated equidistant cylindrical E-stagger grid.
                    Definition: ip_grid_mod.F90:19
                    +
                    integer, parameter, public polar_stereo_grid_id_grib2
                    Integer grid number for polar stereo grid in grib2.
                    Definition: ip_grid_mod.F90:25
                    +
                    integer function field_pos(self, i, j)
                    Returns the field position for a given grid point.
                    +
                    integer, parameter, public lambert_conf_grid_id_grib1
                    Integer grid number for Lambert Conformal grid in grib1.
                    Definition: ip_grid_mod.F90:16
                    +
                    integer, parameter, public mercator_grid_id_grib1
                    Integer grid number for Mercator grid in grib1.
                    Definition: ip_grid_mod.F90:15
                    +
                    integer, parameter, public equid_cylind_grid_id_grib1
                    Integer grid number for equidistant cylindrical grid in grib1.
                    Definition: ip_grid_mod.F90:14
                    +
                    integer, parameter, public rot_equid_cylind_b_grid_id_grib1
                    Integer grid number for rotated equidistant cylindrical B-stagger grid.
                    Definition: ip_grid_mod.F90:20
                    +
                    integer, parameter, public rot_equid_cylind_grid_id_grib2
                    Integer grid number for rotated equidistant cylindrical grid in grib2.
                    Definition: ip_grid_mod.F90:23
                    +
                    integer, parameter, public mercator_grid_id_grib2
                    Integer grid number for Mercator grid in grib2.
                    Definition: ip_grid_mod.F90:24
                    +
                    integer, parameter, public polar_stereo_grid_id_grib1
                    Integer grid number for polar stereo grid in grib1.
                    Definition: ip_grid_mod.F90:18
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Grib-2 descriptor containing a grib2 GDT represented by an integer array.
                    +
                    Abstract descriptor object which represents a grib1 or grib2 descriptor.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__grids__mod_8F90.html b/ver-5.0.0/ip__grids__mod_8F90.html new file mode 100644 index 00000000..20a25509 --- /dev/null +++ b/ver-5.0.0/ip__grids__mod_8F90.html @@ -0,0 +1,119 @@ + + + + + + + +NCEPLIBS-ip: ip_grids_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grids_mod.F90 File Reference
                    +
                    +
                    + +

                    Re-export the individual grids. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Modules

                    module  ip_grids_mod
                     Re-export the individual grids.
                     
                    +

                    Detailed Description

                    +

                    Re-export the individual grids.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    7/21/21
                    + +

                    Definition in file ip_grids_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__grids__mod_8F90_source.html b/ver-5.0.0/ip__grids__mod_8F90_source.html new file mode 100644 index 00000000..e8e383c2 --- /dev/null +++ b/ver-5.0.0/ip__grids__mod_8F90_source.html @@ -0,0 +1,126 @@ + + + + + + + +NCEPLIBS-ip: ip_grids_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_grids_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + + + + + + + + + +
                    16  use ip_grid_mod
                    +
                    17  implicit none
                    +
                    18 end module ip_grids_mod
                    +
                    19 
                    +
                    20 
                    +
                    21 
                    +
                    Equidistant cylindrical grib decoder and grid coordinate transformations.
                    +
                    Gaussian grid coordinate transformations.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    Re-export the individual grids.
                    Definition: ip_grids_mod.F90:7
                    +
                    Lambert conformal grib decoder and grid coordinate transformations.
                    +
                    GDS wizard for mercator cylindrical.
                    +
                    GDS wizard for polar stereographic azimuthal.
                    +
                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E.
                    +
                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A ...
                    +
                    Interpolate gridded data to a series of station points.
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__interpolators__mod_8F90.html b/ver-5.0.0/ip__interpolators__mod_8F90.html new file mode 100644 index 00000000..a9326ba1 --- /dev/null +++ b/ver-5.0.0/ip__interpolators__mod_8F90.html @@ -0,0 +1,134 @@ + + + + + + + +NCEPLIBS-ip: ip_interpolators_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_interpolators_mod.F90 File Reference
                    +
                    +
                    + +

                    Top-level module to export interpolation routines and constants. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Modules

                    module  ip_interpolators_mod
                     Top-level module to export interpolation routines and constants.
                     
                    + + + + + + + + + + + + + +

                    +Variables

                    integer, parameter, public ip_interpolators_mod::bicubic_interp_id = 1
                     
                    integer, parameter, public ip_interpolators_mod::bilinear_interp_id = 0
                     
                    integer, parameter, public ip_interpolators_mod::budget_interp_id = 3
                     
                    integer, parameter, public ip_interpolators_mod::neighbor_budget_interp_id = 6
                     
                    integer, parameter, public ip_interpolators_mod::neighbor_interp_id = 2
                     
                    integer, parameter, public ip_interpolators_mod::spectral_interp_id = 4
                     
                    +

                    Detailed Description

                    +

                    Top-level module to export interpolation routines and constants.

                    +
                    Author
                    Kyle Gerheiser
                    + +

                    Definition in file ip_interpolators_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__interpolators__mod_8F90.js b/ver-5.0.0/ip__interpolators__mod_8F90.js new file mode 100644 index 00000000..11e232b6 --- /dev/null +++ b/ver-5.0.0/ip__interpolators__mod_8F90.js @@ -0,0 +1,9 @@ +var ip__interpolators__mod_8F90 = +[ + [ "bicubic_interp_id", "ip__interpolators__mod_8F90.html#adfdc7760718083d85618df85320c495e", null ], + [ "bilinear_interp_id", "ip__interpolators__mod_8F90.html#a753e4b6c113a9a8b226c3c834786f3e1", null ], + [ "budget_interp_id", "ip__interpolators__mod_8F90.html#a7df843ca4a64e3178f448aebf7dad359", null ], + [ "neighbor_budget_interp_id", "ip__interpolators__mod_8F90.html#ae77a1da241f5de94f1874004ee8e715c", null ], + [ "neighbor_interp_id", "ip__interpolators__mod_8F90.html#a35e5fe3a2dd79d205c0503f550388258", null ], + [ "spectral_interp_id", "ip__interpolators__mod_8F90.html#a83ba2963a0b686c6ae67b53f9c385851", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__interpolators__mod_8F90_source.html b/ver-5.0.0/ip__interpolators__mod_8F90_source.html new file mode 100644 index 00000000..882b8e7a --- /dev/null +++ b/ver-5.0.0/ip__interpolators__mod_8F90_source.html @@ -0,0 +1,135 @@ + + + + + + + +NCEPLIBS-ip: ip_interpolators_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_interpolators_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + + + + + + + +
                    14  implicit none
                    +
                    15 
                    +
                    17  integer, parameter, public :: bilinear_interp_id = 0
                    +
                    19  integer, parameter, public :: bicubic_interp_id = 1
                    +
                    21  integer, parameter, public :: neighbor_interp_id = 2
                    +
                    23  integer, parameter, public :: budget_interp_id = 3
                    +
                    25  integer, parameter, public :: spectral_interp_id = 4
                    +
                    27  integer, parameter, public :: neighbor_budget_interp_id = 6
                    +
                    28 
                    +
                    29 contains
                    +
                    30 
                    +
                    31 
                    +
                    32 end module ip_interpolators_mod
                    +
                    33 
                    +
                    Bicubic interpolation routines for scalars and vectors.
                    +
                    Bilinear interpolation routines for scalars and vectors.
                    +
                    Budget interpolation routines for scalars and vectors.
                    +
                    Top-level module to export interpolation routines and constants.
                    +
                    integer, parameter, public neighbor_interp_id
                    +
                    integer, parameter, public bilinear_interp_id
                    +
                    integer, parameter, public budget_interp_id
                    +
                    integer, parameter, public spectral_interp_id
                    +
                    integer, parameter, public bicubic_interp_id
                    +
                    integer, parameter, public neighbor_budget_interp_id
                    +
                    Interpolate scalar fields (neighbor).
                    +
                    Interpolate scalar fields (neighbor).
                    +
                    Interpolate spectral.
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__lambert__conf__grid__mod_8F90.html b/ver-5.0.0/ip__lambert__conf__grid__mod_8F90.html new file mode 100644 index 00000000..b7d56b5d --- /dev/null +++ b/ver-5.0.0/ip__lambert__conf__grid__mod_8F90.html @@ -0,0 +1,169 @@ + + + + + + + +NCEPLIBS-ip: ip_lambert_conf_grid_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_lambert_conf_grid_mod.F90 File Reference
                    +
                    +
                    + +

                    GDS wizard for lambert conformal conical. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    type  ip_lambert_conf_grid_mod::ip_lambert_conf_grid
                     
                    + + + + +

                    +Modules

                    module  ip_lambert_conf_grid_mod
                     Lambert conformal grib decoder and grid coordinate transformations.
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine ip_lambert_conf_grid_mod::gdswzd_lambert_conf (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     GDS wizard for lambert conformal conical. More...
                     
                    subroutine ip_lambert_conf_grid_mod::init_grib1 (self, g1_desc)
                     Initializes a Lambert Conformal grid given a grib1_descriptor object. More...
                     
                    subroutine ip_lambert_conf_grid_mod::init_grib2 (self, g2_desc)
                     Initializes a Lambert Conformal grid given a grib2_descriptor object. More...
                     
                    subroutine ip_lambert_conf_grid_mod::lambert_conf_grid_area (RLAT, FILL, DR, AREA)
                     Grid box area for lambert conformal conical. More...
                     
                    subroutine ip_lambert_conf_grid_mod::lambert_conf_map_jacob (RLAT, FILL, DLON, DR, XLON, XLAT, YLON, YLAT)
                     Map jacobians for lambert conformal conical. More...
                     
                    subroutine ip_lambert_conf_grid_mod::lambert_conf_vect_rot (DLON, CROT, SROT)
                     Vector rotation fields for lambert conformal conical. More...
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real ip_lambert_conf_grid_mod::an
                     Cone factor. More...
                     
                    real ip_lambert_conf_grid_mod::dxs
                     x-direction grid length adjusted for scan mode. More...
                     
                    real ip_lambert_conf_grid_mod::dys
                     y-direction grid length adjusted for scan model. More...
                     
                    real ip_lambert_conf_grid_mod::h
                     Hemisphere flag. More...
                     
                    integer ip_lambert_conf_grid_mod::irot
                     vector rotation flag. More...
                     
                    real ip_lambert_conf_grid_mod::rerth
                     Radius of the earth. More...
                     
                    +

                    Detailed Description

                    +

                    GDS wizard for lambert conformal conical.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition in file ip_lambert_conf_grid_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__lambert__conf__grid__mod_8F90.js b/ver-5.0.0/ip__lambert__conf__grid__mod_8F90.js new file mode 100644 index 00000000..87e405da --- /dev/null +++ b/ver-5.0.0/ip__lambert__conf__grid__mod_8F90.js @@ -0,0 +1,16 @@ +var ip__lambert__conf__grid__mod_8F90 = +[ + [ "ip_lambert_conf_grid", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid" ], + [ "gdswzd_lambert_conf", "ip__lambert__conf__grid__mod_8F90.html#a5ebb9e4f1bd58caa254771b305c94f71", null ], + [ "init_grib1", "ip__lambert__conf__grid__mod_8F90.html#a5544708e893ffcfbe7d958fdec700eea", null ], + [ "init_grib2", "ip__lambert__conf__grid__mod_8F90.html#acb0339a9fff4fff6c2017d37f8bed0cf", null ], + [ "lambert_conf_grid_area", "ip__lambert__conf__grid__mod_8F90.html#a15c44b47172b926aea840caee9723b1c", null ], + [ "lambert_conf_map_jacob", "ip__lambert__conf__grid__mod_8F90.html#a5e1d42f0027236f47467e25c525e66ae", null ], + [ "lambert_conf_vect_rot", "ip__lambert__conf__grid__mod_8F90.html#a58187073914efa18eca897c6ec203b71", null ], + [ "an", "ip__lambert__conf__grid__mod_8F90.html#a82b75fe2d8495aab75b225c6309e61c8", null ], + [ "dxs", "ip__lambert__conf__grid__mod_8F90.html#a196e94b5a2add34133c87f845394fa81", null ], + [ "dys", "ip__lambert__conf__grid__mod_8F90.html#aad8b04b77b0920dbf9ed3827e2e8cfd7", null ], + [ "h", "ip__lambert__conf__grid__mod_8F90.html#aa91572e8b5ba3559c041f1750b6696c6", null ], + [ "irot", "ip__lambert__conf__grid__mod_8F90.html#a7dea876ed4206c5ecc0444aadb7d6acd", null ], + [ "rerth", "ip__lambert__conf__grid__mod_8F90.html#a9f0538d092cd7d2829a5b98247eb560d", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__lambert__conf__grid__mod_8F90_source.html b/ver-5.0.0/ip__lambert__conf__grid__mod_8F90_source.html new file mode 100644 index 00000000..23a77258 --- /dev/null +++ b/ver-5.0.0/ip__lambert__conf__grid__mod_8F90_source.html @@ -0,0 +1,461 @@ + + + + + + + +NCEPLIBS-ip: ip_lambert_conf_grid_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_lambert_conf_grid_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    + + +
                    16  use ip_grid_mod
                    + + +
                    19  implicit none
                    +
                    20 
                    +
                    21  private
                    +
                    22  public :: ip_lambert_conf_grid
                    +
                    23 
                    +
                    24  type, extends(ip_grid) :: ip_lambert_conf_grid
                    +
                    25  real :: rlat1
                    +
                    26  real :: rlon1
                    +
                    27  real :: rlati1
                    +
                    28  real :: rlati2
                    +
                    29  real :: orient
                    +
                    30  real :: dxs
                    +
                    31  real :: dys
                    +
                    32  real :: h
                    +
                    33  integer :: irot
                    +
                    34  contains
                    +
                    36  procedure :: init_grib1
                    +
                    38  procedure :: init_grib2
                    +
                    41  procedure :: gdswzd => gdswzd_lambert_conf
                    +
                    42  end type ip_lambert_conf_grid
                    +
                    43 
                    +
                    44  INTEGER :: irot
                    +
                    45  REAL :: an
                    +
                    46  REAL :: dxs
                    +
                    47  REAL :: dys
                    +
                    48  REAL :: h
                    +
                    49  REAL :: rerth
                    +
                    50  REAL :: tinyreal=tiny(1.0)
                    +
                    51 
                    +
                    52 contains
                    +
                    53 
                    +
                    60  subroutine init_grib1(self, g1_desc)
                    +
                    61  class(ip_lambert_conf_grid), intent(inout) :: self
                    +
                    62  type(grib1_descriptor), intent(in) :: g1_desc
                    +
                    63 
                    +
                    64  real :: dx, dy, hi, hj
                    +
                    65  integer :: iproj, iscan, jscan
                    +
                    66 
                    +
                    67  associate(kgds => g1_desc%gds)
                    +
                    68  self%rerth = 6.3712e6
                    +
                    69  self%eccen_squared = 0.0
                    +
                    70 
                    +
                    71  self%IM=kgds(2)
                    +
                    72  self%JM=kgds(3)
                    +
                    73 
                    +
                    74  self%RLAT1=kgds(4)*1.e-3
                    +
                    75  self%RLON1=kgds(5)*1.e-3
                    +
                    76 
                    +
                    77  self%IROT=mod(kgds(6)/8,2)
                    +
                    78  self%ORIENT=kgds(7)*1.e-3
                    +
                    79 
                    +
                    80  dx=kgds(8)
                    +
                    81  dy=kgds(9)
                    +
                    82 
                    +
                    83  iproj=mod(kgds(10)/128,2)
                    +
                    84  iscan=mod(kgds(11)/128,2)
                    +
                    85  jscan=mod(kgds(11)/64,2)
                    +
                    86 
                    +
                    87  self%RLATI1=kgds(12)*1.e-3
                    +
                    88  self%RLATI2=kgds(13)*1.e-3
                    +
                    89  self%H=(-1.)**iproj
                    +
                    90 
                    +
                    91  hi=(-1.)**iscan
                    +
                    92  hj=(-1.)**(1-jscan)
                    +
                    93  self%DXS=dx*hi
                    +
                    94  self%DYS=dy*hj
                    +
                    95 
                    +
                    96  self%iwrap = 0
                    +
                    97  self%jwrap1 = 0
                    +
                    98  self%jwrap2 = 0
                    +
                    99  self%nscan = mod(kgds(11) / 32, 2)
                    +
                    100  self%nscan_field_pos = self%nscan
                    +
                    101  self%kscan = 0
                    +
                    102  end associate
                    +
                    103 
                    +
                    104  end subroutine init_grib1
                    +
                    105 
                    +
                    112  subroutine init_grib2(self, g2_desc)
                    +
                    113  class(ip_lambert_conf_grid), intent(inout) :: self
                    +
                    114  type(grib2_descriptor), intent(in) :: g2_desc
                    +
                    115 
                    +
                    116  real :: dx, dy, hi, hj
                    +
                    117  integer :: iproj, iscan, jscan
                    +
                    118 
                    +
                    119 
                    +
                    120  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
                    +
                    121  call earth_radius(igdtmpl, igdtlen, self%rerth, self%eccen_squared)
                    +
                    122 
                    +
                    123  self%IM=igdtmpl(8)
                    +
                    124  self%JM=igdtmpl(9)
                    +
                    125 
                    +
                    126  self%RLAT1=float(igdtmpl(10))*1.0e-6
                    +
                    127  self%RLON1=float(igdtmpl(11))*1.0e-6
                    +
                    128 
                    +
                    129  self%IROT=mod(igdtmpl(12)/8,2)
                    +
                    130  self%ORIENT=float(igdtmpl(14))*1.0e-6
                    +
                    131 
                    +
                    132  dx=float(igdtmpl(15))*1.0e-3
                    +
                    133  dy=float(igdtmpl(16))*1.0e-3
                    +
                    134 
                    +
                    135  iproj=mod(igdtmpl(17)/128,2)
                    +
                    136  iscan=mod(igdtmpl(18)/128,2)
                    +
                    137  jscan=mod(igdtmpl(18)/64,2)
                    +
                    138 
                    +
                    139  self%RLATI1=float(igdtmpl(19))*1.0e-6
                    +
                    140  self%RLATI2=float(igdtmpl(20))*1.0e-6
                    +
                    141 
                    +
                    142  self%H=(-1.)**iproj
                    +
                    143  hi=(-1.)**iscan
                    +
                    144  hj=(-1.)**(1-jscan)
                    +
                    145  self%DXS=dx*hi
                    +
                    146  self%DYS=dy*hj
                    +
                    147 
                    +
                    148  self%nscan = mod(igdtmpl(18) / 32, 2)
                    +
                    149  self%nscan_field_pos = self%nscan
                    +
                    150  self%iwrap = 0
                    +
                    151  self%jwrap1 = 0
                    +
                    152  self%jwrap2 = 0
                    +
                    153  self%kscan = 0
                    +
                    154  end associate
                    +
                    155  end subroutine init_grib2
                    +
                    156 
                    +
                    219  SUBROUTINE gdswzd_lambert_conf(self,IOPT,NPTS,FILL, &
                    +
                    220  XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    221  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    222  IMPLICIT NONE
                    +
                    223  !
                    +
                    224  class(ip_lambert_conf_grid), intent(in) :: self
                    +
                    225  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    226  INTEGER, INTENT( OUT) :: NRET
                    +
                    227  !
                    +
                    228  REAL, INTENT(IN ) :: FILL
                    +
                    229  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    230  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    231  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    232  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    233  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    234  !
                    +
                    235  INTEGER :: IM, JM, N
                    +
                    236  !
                    +
                    237  LOGICAL :: LROT, LMAP, LAREA
                    +
                    238  !
                    +
                    239  REAL :: ANTR, DI, DJ
                    +
                    240  REAL :: DLON1
                    +
                    241  REAL :: DE, DE2, DR2
                    +
                    242  REAL :: ORIENT, RLAT1, RLON1
                    +
                    243  REAL :: RLATI1, RLATI2
                    +
                    244  REAL :: XMAX, XMIN, YMAX, YMIN, XP, YP
                    +
                    245  REAL :: DLON, DR
                    +
                    246  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    247  IF(PRESENT(crot)) crot=fill
                    +
                    248  IF(PRESENT(srot)) srot=fill
                    +
                    249  IF(PRESENT(xlon)) xlon=fill
                    +
                    250  IF(PRESENT(xlat)) xlat=fill
                    +
                    251  IF(PRESENT(ylon)) ylon=fill
                    +
                    252  IF(PRESENT(ylat)) ylat=fill
                    +
                    253  IF(PRESENT(area)) area=fill
                    +
                    254 
                    +
                    255  im=self%im
                    +
                    256  jm=self%jm
                    +
                    257 
                    +
                    258  rlat1=self%rlat1
                    +
                    259  rlon1=self%rlon1
                    +
                    260 
                    +
                    261  irot=self%irot
                    +
                    262  orient=self%orient
                    +
                    263 
                    +
                    264  rlati1=self%rlati1
                    +
                    265  rlati2=self%rlati2
                    +
                    266 
                    +
                    267  h=self%h
                    +
                    268  dxs=self%dxs
                    +
                    269  dys=self%dys
                    +
                    270 
                    +
                    271  rerth = self%rerth
                    +
                    272 
                    +
                    273  IF(abs(rlati1-rlati2).LT.tinyreal) THEN
                    +
                    274  an=sin(rlati1/dpr)
                    +
                    275  ELSE
                    +
                    276  an=log(cos(rlati1/dpr)/cos(rlati2/dpr))/ &
                    +
                    277  log(tan((90-rlati1)/2/dpr)/tan((90-rlati2)/2/dpr))
                    +
                    278  ENDIF
                    +
                    279  de=rerth*cos(rlati1/dpr)*tan((rlati1+90)/2/dpr)**an/an
                    +
                    280  IF(abs(h*rlat1-90).LT.tinyreal) THEN
                    +
                    281  xp=1
                    +
                    282  yp=1
                    +
                    283  ELSE
                    +
                    284  dr=de/tan((rlat1+90)/2/dpr)**an
                    +
                    285  dlon1=mod(rlon1-orient+180+3600,360.)-180
                    +
                    286  xp=1-sin(an*dlon1/dpr)*dr/dxs
                    +
                    287  yp=1+cos(an*dlon1/dpr)*dr/dys
                    +
                    288  ENDIF
                    +
                    289  antr=1/(2*an)
                    +
                    290  de2=de**2
                    +
                    291  xmin=0
                    +
                    292  xmax=im+1
                    +
                    293  ymin=0
                    +
                    294  ymax=jm+1
                    +
                    295  nret=0
                    +
                    296  IF(PRESENT(crot).AND.PRESENT(srot))THEN
                    +
                    297  lrot=.true.
                    +
                    298  ELSE
                    +
                    299  lrot=.false.
                    +
                    300  ENDIF
                    +
                    301  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
                    +
                    302  lmap=.true.
                    +
                    303  ELSE
                    +
                    304  lmap=.false.
                    +
                    305  ENDIF
                    +
                    306  IF(PRESENT(area))THEN
                    +
                    307  larea=.true.
                    +
                    308  ELSE
                    +
                    309  larea=.false.
                    +
                    310  ENDIF
                    +
                    311  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    312  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
                    +
                    313  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
                    +
                    314  !$OMP PARALLEL DO PRIVATE(N,DI,DJ,DR2,DR,DLON) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    315  DO n=1,npts
                    +
                    316  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    317  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    318  di=h*(xpts(n)-xp)*dxs
                    +
                    319  dj=h*(ypts(n)-yp)*dys
                    +
                    320  dr2=di**2+dj**2
                    +
                    321  dr=sqrt(dr2)
                    +
                    322  IF(dr2.LT.de2*1.e-6) THEN
                    +
                    323  rlon(n)=0.
                    +
                    324  rlat(n)=h*90.
                    +
                    325  ELSE
                    +
                    326  rlon(n)=mod(orient+1./an*dpr*atan2(di,-dj)+3600,360.)
                    +
                    327  rlat(n)=(2*dpr*atan((de2/dr2)**antr)-90)
                    +
                    328  ENDIF
                    +
                    329  nret=nret+1
                    +
                    330  dlon=mod(rlon(n)-orient+180+3600,360.)-180
                    +
                    331  IF(lrot) CALL lambert_conf_vect_rot(dlon,crot(n),srot(n))
                    +
                    332  IF(lmap) CALL lambert_conf_map_jacob(rlat(n),fill, dlon, dr, &
                    +
                    333  xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    334  IF(larea) CALL lambert_conf_grid_area(rlat(n),fill,dr,area(n))
                    +
                    335  ELSE
                    +
                    336  rlon(n)=fill
                    +
                    337  rlat(n)=fill
                    +
                    338  ENDIF
                    +
                    339  ENDDO
                    +
                    340  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    341  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
                    +
                    342  ELSEIF(iopt.EQ.-1) THEN
                    +
                    343  !$OMP PARALLEL DO PRIVATE(N,DR,DLON) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    344  DO n=1,npts
                    +
                    345  IF(abs(rlon(n)).LT.(360.+tinyreal).AND.abs(rlat(n)).LT.(90.+tinyreal).AND. &
                    +
                    346  abs(h*rlat(n)+90).GT.tinyreal) THEN
                    +
                    347  dr=h*de*tan((90-rlat(n))/2/dpr)**an
                    +
                    348  dlon=mod(rlon(n)-orient+180+3600,360.)-180
                    +
                    349  xpts(n)=xp+h*sin(an*dlon/dpr)*dr/dxs
                    +
                    350  ypts(n)=yp-h*cos(an*dlon/dpr)*dr/dys
                    +
                    351  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    352  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    353  nret=nret+1
                    +
                    354  IF(lrot) CALL lambert_conf_vect_rot(dlon,crot(n),srot(n))
                    +
                    355  IF(lmap) CALL lambert_conf_map_jacob(rlat(n),fill,dlon,dr, &
                    +
                    356  xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    357  IF(larea) CALL lambert_conf_grid_area(rlat(n),fill,dr,area(n))
                    +
                    358  ELSE
                    +
                    359  xpts(n)=fill
                    +
                    360  ypts(n)=fill
                    +
                    361  ENDIF
                    +
                    362  ELSE
                    +
                    363  xpts(n)=fill
                    +
                    364  ypts(n)=fill
                    +
                    365  ENDIF
                    +
                    366  ENDDO
                    +
                    367  !$OMP END PARALLEL DO
                    +
                    368  ENDIF
                    +
                    369  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    370  END SUBROUTINE gdswzd_lambert_conf
                    +
                    371 
                    +
                    390  SUBROUTINE lambert_conf_vect_rot(DLON,CROT,SROT)
                    +
                    391  IMPLICIT NONE
                    +
                    392  REAL, INTENT( IN) :: DLON
                    +
                    393  REAL, INTENT( OUT) :: CROT, SROT
                    +
                    394 
                    +
                    395  IF(irot.EQ.1) THEN
                    +
                    396  crot=cos(an*dlon/dpr)
                    +
                    397  srot=sin(an*dlon/dpr)
                    +
                    398  ELSE
                    +
                    399  crot=1.
                    +
                    400  srot=0.
                    +
                    401  ENDIF
                    +
                    402 
                    +
                    403  END SUBROUTINE lambert_conf_vect_rot
                    +
                    404 
                    +
                    427  SUBROUTINE lambert_conf_map_jacob(RLAT,FILL,DLON,DR,XLON,XLAT,YLON,YLAT)
                    +
                    428  IMPLICIT NONE
                    +
                    429 
                    +
                    430  REAL, INTENT(IN ) :: RLAT, FILL, DLON, DR
                    +
                    431  REAL, INTENT( OUT) :: XLON, XLAT, YLON, YLAT
                    +
                    432 
                    +
                    433  REAL :: CLAT
                    +
                    434 
                    +
                    435  clat=cos(rlat/dpr)
                    +
                    436  IF(clat.LE.0.OR.dr.LE.0) THEN
                    +
                    437  xlon=fill
                    +
                    438  xlat=fill
                    +
                    439  ylon=fill
                    +
                    440  ylat=fill
                    +
                    441  ELSE
                    +
                    442  xlon=h*cos(an*dlon/dpr)*an/dpr*dr/dxs
                    +
                    443  xlat=-h*sin(an*dlon/dpr)*an/dpr*dr/dxs/clat
                    +
                    444  ylon=h*sin(an*dlon/dpr)*an/dpr*dr/dys
                    +
                    445  ylat=h*cos(an*dlon/dpr)*an/dpr*dr/dys/clat
                    +
                    446  ENDIF
                    +
                    447 
                    +
                    448  END SUBROUTINE lambert_conf_map_jacob
                    +
                    449 
                    +
                    468  SUBROUTINE lambert_conf_grid_area(RLAT,FILL,DR,AREA)
                    +
                    469  IMPLICIT NONE
                    +
                    470 
                    +
                    471  REAL, INTENT(IN ) :: RLAT
                    +
                    472  REAL, INTENT(IN ) :: FILL
                    +
                    473  REAL, INTENT(IN ) :: DR
                    +
                    474  REAL, INTENT( OUT) :: AREA
                    +
                    475 
                    +
                    476  REAL :: CLAT
                    +
                    477 
                    +
                    478  clat=cos(rlat/dpr)
                    +
                    479  IF(clat.LE.0.OR.dr.LE.0) THEN
                    +
                    480  area=fill
                    +
                    481  ELSE
                    +
                    482  area=rerth**2*clat**2*abs(dxs)*abs(dys)/(an*dr)**2
                    +
                    483  ENDIF
                    +
                    484 
                    +
                    485  END SUBROUTINE lambert_conf_grid_area
                    +
                    486 
                    +
                    487 end module ip_lambert_conf_grid_mod
                    +
                    488 
                    +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    Determine earth radius and shape.
                    +
                    Module containing common constants.
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    Lambert conformal grib decoder and grid coordinate transformations.
                    +
                    subroutine lambert_conf_grid_area(RLAT, FILL, DR, AREA)
                    Grid box area for lambert conformal conical.
                    +
                    real dxs
                    x-direction grid length adjusted for scan mode.
                    +
                    subroutine init_grib1(self, g1_desc)
                    Initializes a Lambert Conformal grid given a grib1_descriptor object.
                    +
                    subroutine lambert_conf_vect_rot(DLON, CROT, SROT)
                    Vector rotation fields for lambert conformal conical.
                    +
                    subroutine lambert_conf_map_jacob(RLAT, FILL, DLON, DR, XLON, XLAT, YLON, YLAT)
                    Map jacobians for lambert conformal conical.
                    +
                    subroutine gdswzd_lambert_conf(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    GDS wizard for lambert conformal conical.
                    +
                    integer irot
                    vector rotation flag.
                    + +
                    real rerth
                    Radius of the earth.
                    + +
                    real dys
                    y-direction grid length adjusted for scan model.
                    +
                    subroutine init_grib2(self, g2_desc)
                    Initializes a Lambert Conformal grid given a grib2_descriptor object.
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    + +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__mercator__grid__mod_8F90.html b/ver-5.0.0/ip__mercator__grid__mod_8F90.html new file mode 100644 index 00000000..fc4c3548 --- /dev/null +++ b/ver-5.0.0/ip__mercator__grid__mod_8F90.html @@ -0,0 +1,160 @@ + + + + + + + +NCEPLIBS-ip: ip_mercator_grid_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_mercator_grid_mod.F90 File Reference
                    +
                    +
                    + +

                    GDS wizard for mercator cylindrical. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    type  ip_mercator_grid_mod::ip_mercator_grid
                     
                    + + + + +

                    +Modules

                    module  ip_mercator_grid_mod
                     GDS wizard for mercator cylindrical.
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine ip_mercator_grid_mod::gdswzd_mercator (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     GDS wizard for mercator cylindrical. More...
                     
                    subroutine ip_mercator_grid_mod::init_grib1 (self, g1_desc)
                     Initializes a mercator grid given a grib1_descriptor object. More...
                     
                    subroutine ip_mercator_grid_mod::init_grib2 (self, g2_desc)
                     Init GRIB2. More...
                     
                    subroutine ip_mercator_grid_mod::mercator_grid_area (RLAT, AREA)
                     Grid box area for mercator cylindrical grids. More...
                     
                    subroutine ip_mercator_grid_mod::mercator_map_jacob (RLAT, XLON, XLAT, YLON, YLAT)
                     Map jacobians for mercator cylindrical grids. More...
                     
                    subroutine ip_mercator_grid_mod::mercator_vect_rot (CROT, SROT)
                     Vector rotation fields for mercator cylindrical grids. More...
                     
                    + + + + + + + + + + +

                    +Variables

                    real ip_mercator_grid_mod::dlon
                     Longitudinal direction grid length. More...
                     
                    real ip_mercator_grid_mod::dphi
                     Latitudinal direction grid length. More...
                     
                    real ip_mercator_grid_mod::rerth
                     Radius of the Earth. More...
                     
                    +

                    Detailed Description

                    +

                    GDS wizard for mercator cylindrical.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition in file ip_mercator_grid_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__mercator__grid__mod_8F90.js b/ver-5.0.0/ip__mercator__grid__mod_8F90.js new file mode 100644 index 00000000..90631cb4 --- /dev/null +++ b/ver-5.0.0/ip__mercator__grid__mod_8F90.js @@ -0,0 +1,13 @@ +var ip__mercator__grid__mod_8F90 = +[ + [ "ip_mercator_grid", "structip__mercator__grid__mod_1_1ip__mercator__grid.html", "structip__mercator__grid__mod_1_1ip__mercator__grid" ], + [ "gdswzd_mercator", "ip__mercator__grid__mod_8F90.html#acc39017fa51125972ab8e755e16d339e", null ], + [ "init_grib1", "ip__mercator__grid__mod_8F90.html#a4125dba8b09e9b69933e224b00f4758d", null ], + [ "init_grib2", "ip__mercator__grid__mod_8F90.html#aad3b6fef6ee74b8df984c0159ff29c82", null ], + [ "mercator_grid_area", "ip__mercator__grid__mod_8F90.html#a952ab9add18587c4dbe54699feb8eafd", null ], + [ "mercator_map_jacob", "ip__mercator__grid__mod_8F90.html#ab93a0a6ae8c5f5056abece1dcffdc57a", null ], + [ "mercator_vect_rot", "ip__mercator__grid__mod_8F90.html#aea5e18faf7a18bf8d06c87ccb11f3e17", null ], + [ "dlon", "ip__mercator__grid__mod_8F90.html#a14e1cb3f8c05d2de49d2aa8dc69d104f", null ], + [ "dphi", "ip__mercator__grid__mod_8F90.html#a156e638e2d1b93e388d674462ac3f732", null ], + [ "rerth", "ip__mercator__grid__mod_8F90.html#adaa27c5d41ee24185b6d020420ce9419", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__mercator__grid__mod_8F90_source.html b/ver-5.0.0/ip__mercator__grid__mod_8F90_source.html new file mode 100644 index 00000000..5361015d --- /dev/null +++ b/ver-5.0.0/ip__mercator__grid__mod_8F90_source.html @@ -0,0 +1,385 @@ + + + + + + + +NCEPLIBS-ip: ip_mercator_grid_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_mercator_grid_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    + + +
                    14  use ip_grid_mod
                    +
                    15  use ip_constants_mod, only: dpr, pi
                    + +
                    17  implicit none
                    +
                    18 
                    +
                    19  private
                    +
                    20  public :: ip_mercator_grid
                    +
                    21 
                    +
                    22  type, extends(ip_grid) :: ip_mercator_grid
                    +
                    23  real :: rlat1
                    +
                    24  real :: rlon1
                    +
                    25  real :: rlon2
                    +
                    26  real :: rlati
                    +
                    27  real :: hi
                    +
                    28  real :: dlon
                    +
                    29  real :: dphi
                    +
                    30  contains
                    +
                    32  procedure :: init_grib1
                    +
                    34  procedure :: init_grib2
                    +
                    37  procedure :: gdswzd => gdswzd_mercator
                    +
                    38  end type ip_mercator_grid
                    +
                    39 
                    +
                    40  REAL :: dlon
                    +
                    41  REAL :: dphi
                    +
                    42  REAL :: rerth
                    +
                    43 
                    +
                    44 CONTAINS
                    +
                    45 
                    +
                    52  subroutine init_grib1(self, g1_desc)
                    +
                    53  class(ip_mercator_grid), intent(inout) :: self
                    +
                    54  type(grib1_descriptor), intent(in) :: g1_desc
                    +
                    55 
                    +
                    56  integer :: iscan, jscan
                    +
                    57  real :: dy, hj
                    +
                    58 
                    +
                    59  associate(kgds => g1_desc%gds)
                    +
                    60  self%rerth = 6.3712e6
                    +
                    61  self%eccen_squared = 0.0
                    +
                    62 
                    +
                    63  self%IM=kgds(2)
                    +
                    64  self%JM=kgds(3)
                    +
                    65 
                    +
                    66  self%RLAT1=kgds(4)*1.e-3
                    +
                    67  self%RLON1=kgds(5)*1.e-3
                    +
                    68  self%RLON2=kgds(8)*1.e-3
                    +
                    69  self%RLATI=kgds(9)*1.e-3
                    +
                    70 
                    +
                    71  iscan=mod(kgds(11)/128,2)
                    +
                    72  jscan=mod(kgds(11)/64,2)
                    +
                    73 
                    +
                    74  dy=kgds(13)
                    +
                    75  self%HI=(-1.)**iscan
                    +
                    76  hj=(-1.)**(1-jscan)
                    +
                    77  self%DLON=self%HI*(mod(self%HI*(self%RLON2-self%RLON1)-1+3600,360.)+1)/(self%IM-1)
                    +
                    78  self%DPHI=hj*dy/(self%RERTH*cos(self%RLATI/dpr))
                    +
                    79 
                    +
                    80  ! defaults
                    +
                    81  self%iwrap = 0
                    +
                    82  self%jwrap1 = 0
                    +
                    83  self%jwrap2 = 0
                    +
                    84  self%nscan = mod(kgds(11) / 32, 2)
                    +
                    85  self%nscan_field_pos = self%nscan
                    +
                    86  self%kscan = 0
                    +
                    87 
                    +
                    88  self%iwrap = nint(360 / abs(self%dlon))
                    +
                    89  if (self%im < self%iwrap) self%iwrap = 0
                    +
                    90  end associate
                    +
                    91 
                    +
                    92  end subroutine init_grib1
                    +
                    93 
                    +
                    100  subroutine init_grib2(self, g2_desc)
                    +
                    101  class(ip_mercator_grid), intent(inout) :: self
                    +
                    102  type(grib2_descriptor), intent(in) :: g2_desc
                    +
                    103 
                    +
                    104  integer :: iscan, jscan
                    +
                    105  real :: hj, dy
                    +
                    106 
                    +
                    107  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
                    +
                    108 
                    +
                    109  call earth_radius(igdtmpl, igdtlen, self%rerth, self%eccen_squared)
                    +
                    110 
                    +
                    111  self%IM=igdtmpl(8)
                    +
                    112  self%JM=igdtmpl(9)
                    +
                    113 
                    +
                    114  self%RLAT1=float(igdtmpl(10))*1.0e-6
                    +
                    115  self%RLON1=float(igdtmpl(11))*1.0e-6
                    +
                    116  self%RLON2=float(igdtmpl(15))*1.0e-6
                    +
                    117  self%RLATI=float(igdtmpl(13))*1.0e-6
                    +
                    118 
                    +
                    119  iscan=mod(igdtmpl(16)/128,2)
                    +
                    120  jscan=mod(igdtmpl(16)/64,2)
                    +
                    121 
                    +
                    122  dy=float(igdtmpl(19))*1.0e-3
                    +
                    123  self%HI=(-1.)**iscan
                    +
                    124  hj=(-1.)**(1-jscan)
                    +
                    125  self%DLON=self%HI*(mod(self%HI*(self%RLON2-self%RLON1)-1+3600,360.)+1)/(self%IM-1)
                    +
                    126  self%DPHI=hj*dy/(self%RERTH*cos(self%RLATI/dpr))
                    +
                    127 
                    +
                    128  self%jwrap1 = 0
                    +
                    129  self%jwrap2 = 0
                    +
                    130  self%kscan = 0
                    +
                    131  self%nscan=mod(igdtmpl(16) / 32,2)
                    +
                    132  self%nscan_field_pos = self%nscan
                    +
                    133 
                    +
                    134  self%iwrap = nint(360 / abs(self%dlon))
                    +
                    135  if(self%im < self%iwrap) self%iwrap = 0
                    +
                    136 
                    +
                    137  end associate
                    +
                    138  end subroutine init_grib2
                    +
                    139 
                    +
                    198  SUBROUTINE gdswzd_mercator(self,IOPT,NPTS,FILL, &
                    +
                    199  XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    200  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    201  IMPLICIT NONE
                    +
                    202  !
                    +
                    203  class(ip_mercator_grid), intent(in) :: self
                    +
                    204  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    205  INTEGER, INTENT( OUT) :: NRET
                    +
                    206  !
                    +
                    207  REAL, INTENT(IN ) :: FILL
                    +
                    208  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    209  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    210  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    211  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    212  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    213  !
                    +
                    214  INTEGER :: IM, JM, N
                    +
                    215  !
                    +
                    216  LOGICAL :: LROT, LMAP, LAREA
                    +
                    217  !
                    +
                    218  REAL :: HI
                    +
                    219  REAL :: RLAT1, RLON1, RLON2, RLATI
                    +
                    220  REAL :: XMAX, XMIN, YMAX, YMIN
                    +
                    221  REAL :: YE
                    +
                    222  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    223  IF(PRESENT(crot)) crot=fill
                    +
                    224  IF(PRESENT(srot)) srot=fill
                    +
                    225  IF(PRESENT(xlon)) xlon=fill
                    +
                    226  IF(PRESENT(xlat)) xlat=fill
                    +
                    227  IF(PRESENT(ylon)) ylon=fill
                    +
                    228  IF(PRESENT(ylat)) ylat=fill
                    +
                    229  IF(PRESENT(area)) area=fill
                    +
                    230  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    231 
                    +
                    232  im=self%im
                    +
                    233  jm=self%jm
                    +
                    234 
                    +
                    235  rlat1=self%rlat1
                    +
                    236  rlon1=self%rlon1
                    +
                    237  rlon2=self%rlon2
                    +
                    238  rlati=self%rlati
                    +
                    239 
                    +
                    240  hi=self%hi
                    +
                    241 
                    +
                    242  dlon=self%dlon
                    +
                    243  dphi=self%dphi
                    +
                    244  rerth = self%rerth
                    +
                    245 
                    +
                    246  ye=1-log(tan((rlat1+90)/2/dpr))/dphi
                    +
                    247  xmin=0
                    +
                    248  xmax=im+1
                    +
                    249  IF(im.EQ.nint(360/abs(dlon))) xmax=im+2
                    +
                    250  ymin=0
                    +
                    251  ymax=jm+1
                    +
                    252  nret=0
                    +
                    253  IF(PRESENT(crot).AND.PRESENT(srot))THEN
                    +
                    254  lrot=.true.
                    +
                    255  ELSE
                    +
                    256  lrot=.false.
                    +
                    257  ENDIF
                    +
                    258  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
                    +
                    259  lmap=.true.
                    +
                    260  ELSE
                    +
                    261  lmap=.false.
                    +
                    262  ENDIF
                    +
                    263  IF(PRESENT(area))THEN
                    +
                    264  larea=.true.
                    +
                    265  ELSE
                    +
                    266  larea=.false.
                    +
                    267  ENDIF
                    +
                    268  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    269  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
                    +
                    270  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
                    +
                    271  !$OMP PARALLEL DO PRIVATE(N) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    272  DO n=1,npts
                    +
                    273  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    274  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    275  rlon(n)=mod(rlon1+dlon*(xpts(n)-1)+3600,360.)
                    +
                    276  rlat(n)=2*atan(exp(dphi*(ypts(n)-ye)))*dpr-90
                    +
                    277  nret=nret+1
                    +
                    278  IF(lrot) CALL mercator_vect_rot(crot(n),srot(n))
                    +
                    279  IF(lmap) CALL mercator_map_jacob(rlat(n),xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    280  IF(larea) CALL mercator_grid_area(rlat(n),area(n))
                    +
                    281  ELSE
                    +
                    282  rlon(n)=fill
                    +
                    283  rlat(n)=fill
                    +
                    284  ENDIF
                    +
                    285  ENDDO
                    +
                    286  !$OMP END PARALLEL DO
                    +
                    287  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    288  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
                    +
                    289  ELSEIF(iopt.EQ.-1) THEN
                    +
                    290  !$OMP PARALLEL DO PRIVATE(N) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    291  DO n=1,npts
                    +
                    292  IF(abs(rlon(n)).LE.360.AND.abs(rlat(n)).LT.90) THEN
                    +
                    293  xpts(n)=1+hi*mod(hi*(rlon(n)-rlon1)+3600,360.)/dlon
                    +
                    294  ypts(n)=ye+log(tan((rlat(n)+90)/2/dpr))/dphi
                    +
                    295  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    296  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    297  nret=nret+1
                    +
                    298  IF(lrot) CALL mercator_vect_rot(crot(n),srot(n))
                    +
                    299  IF(lmap) CALL mercator_map_jacob(rlat(n),xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    300  IF(larea) CALL mercator_grid_area(rlat(n),area(n))
                    +
                    301  ELSE
                    +
                    302  xpts(n)=fill
                    +
                    303  ypts(n)=fill
                    +
                    304  ENDIF
                    +
                    305  ELSE
                    +
                    306  xpts(n)=fill
                    +
                    307  ypts(n)=fill
                    +
                    308  ENDIF
                    +
                    309  ENDDO
                    +
                    310  !$OMP END PARALLEL DO
                    +
                    311  ENDIF
                    +
                    312  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    313  END SUBROUTINE gdswzd_mercator
                    +
                    314 
                    +
                    331  SUBROUTINE mercator_vect_rot(CROT,SROT)
                    +
                    332  IMPLICIT NONE
                    +
                    333 
                    +
                    334  REAL, INTENT( OUT) :: CROT, SROT
                    +
                    335 
                    +
                    336  crot=1.0
                    +
                    337  srot=0.0
                    +
                    338 
                    +
                    339  END SUBROUTINE mercator_vect_rot
                    +
                    340 
                    +
                    359  SUBROUTINE mercator_map_jacob(RLAT,XLON,XLAT,YLON,YLAT)
                    +
                    360  IMPLICIT NONE
                    +
                    361 
                    +
                    362  REAL, INTENT(IN ) :: RLAT
                    +
                    363  REAL, INTENT( OUT) :: XLON, XLAT, YLON, YLAT
                    +
                    364 
                    +
                    365  xlon=1./dlon
                    +
                    366  xlat=0.
                    +
                    367  ylon=0.
                    +
                    368  ylat=1./dphi/cos(rlat/dpr)/dpr
                    +
                    369 
                    +
                    370  END SUBROUTINE mercator_map_jacob
                    +
                    371 
                    +
                    387  SUBROUTINE mercator_grid_area(RLAT,AREA)
                    +
                    388  IMPLICIT NONE
                    +
                    389 
                    +
                    390  REAL, INTENT(IN ) :: RLAT
                    +
                    391  REAL, INTENT( OUT) :: AREA
                    +
                    392 
                    +
                    393  area=rerth**2*cos(rlat/dpr)**2*dphi*dlon/dpr
                    +
                    394 
                    +
                    395  END SUBROUTINE mercator_grid_area
                    +
                    396 
                    +
                    397 end module ip_mercator_grid_mod
                    +
                    398 
                    +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    Determine earth radius and shape.
                    +
                    Module containing common constants.
                    +
                    real, parameter pi
                    PI.
                    +
                    real, parameter dpr
                    Radians to degrees.
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    GDS wizard for mercator cylindrical.
                    +
                    real dlon
                    Longitudinal direction grid length.
                    +
                    real dphi
                    Latitudinal direction grid length.
                    +
                    subroutine init_grib1(self, g1_desc)
                    Initializes a mercator grid given a grib1_descriptor object.
                    +
                    subroutine mercator_grid_area(RLAT, AREA)
                    Grid box area for mercator cylindrical grids.
                    +
                    subroutine init_grib2(self, g2_desc)
                    Init GRIB2.
                    +
                    subroutine mercator_map_jacob(RLAT, XLON, XLAT, YLON, YLAT)
                    Map jacobians for mercator cylindrical grids.
                    +
                    subroutine gdswzd_mercator(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    GDS wizard for mercator cylindrical.
                    +
                    real rerth
                    Radius of the Earth.
                    +
                    subroutine mercator_vect_rot(CROT, SROT)
                    Vector rotation fields for mercator cylindrical grids.
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    + +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__mod_8F90.html b/ver-5.0.0/ip__mod_8F90.html new file mode 100644 index 00000000..77e5dbb1 --- /dev/null +++ b/ver-5.0.0/ip__mod_8F90.html @@ -0,0 +1,118 @@ + + + + + + + +NCEPLIBS-ip: ip_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_mod.F90 File Reference
                    +
                    +
                    + +

                    Top-level module for the ip library. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Modules

                    module  ip_mod
                     Top-level module for the ip library which re-exports public routines such as ipolates, ipolatev, and gdswzd.
                     
                    +

                    Detailed Description

                    +

                    Top-level module for the ip library.

                    +
                    Author
                    Kyle Gerheiser
                    + +

                    Definition in file ip_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__mod_8F90_source.html b/ver-5.0.0/ip__mod_8F90_source.html new file mode 100644 index 00000000..68c62ad5 --- /dev/null +++ b/ver-5.0.0/ip__mod_8F90_source.html @@ -0,0 +1,127 @@ + + + + + + + +NCEPLIBS-ip: ip_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    +
                    6 module ip_mod
                    +
                    7 
                    +
                    8  ! Make these constants public to everyone instead of
                    +
                    9  ! using numbers directly
                    + + + + + + +
                    16 
                    +
                    17  use ipolates_mod
                    +
                    18  use ipolatev_mod
                    +
                    19  use gdswzd_mod
                    +
                    20 end module ip_mod
                    +
                    Driver module for gdswzd routines.
                    Definition: gdswzd_mod.F90:25
                    +
                    Top-level module to export interpolation routines and constants.
                    +
                    integer, parameter, public neighbor_interp_id
                    +
                    integer, parameter, public bilinear_interp_id
                    +
                    integer, parameter, public budget_interp_id
                    +
                    integer, parameter, public spectral_interp_id
                    +
                    integer, parameter, public bicubic_interp_id
                    +
                    integer, parameter, public neighbor_budget_interp_id
                    +
                    Top-level module for the ip library which re-exports public routines such as ipolates,...
                    Definition: ip_mod.F90:6
                    +
                    Top-level driver for scalar interpolation interpolation routine ipolates().
                    Definition: ipolates.F90:12
                    +
                    Top-level driver for vector interpolation interpolation routine ipolatev().
                    Definition: ipolatev.F90:10
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__polar__stereo__grid__mod_8F90.html b/ver-5.0.0/ip__polar__stereo__grid__mod_8F90.html new file mode 100644 index 00000000..6c35c045 --- /dev/null +++ b/ver-5.0.0/ip__polar__stereo__grid__mod_8F90.html @@ -0,0 +1,175 @@ + + + + + + + +NCEPLIBS-ip: ip_polar_stereo_grid_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_polar_stereo_grid_mod.F90 File Reference
                    +
                    +
                    + +

                    GDS wizard for polar stereographic azimuthal. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    type  ip_polar_stereo_grid_mod::ip_polar_stereo_grid
                     
                    + + + + +

                    +Modules

                    module  ip_polar_stereo_grid_mod
                     GDS wizard for polar stereographic azimuthal.
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine ip_polar_stereo_grid_mod::gdswzd_polar_stereo (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     GDS wizard for polar stereographic azimuthal. More...
                     
                    subroutine ip_polar_stereo_grid_mod::init_grib1 (self, g1_desc)
                     Initializes a polar stereographic grid given a grib1_descriptor object. More...
                     
                    subroutine ip_polar_stereo_grid_mod::init_grib2 (self, g2_desc)
                     Initializes a polar stereographic grid given a grib2_descriptor object. More...
                     
                    subroutine ip_polar_stereo_grid_mod::polar_stereo_grid_area (RLAT, DR2, AREA)
                     Grid box area for polar stereographic grids. More...
                     
                    subroutine ip_polar_stereo_grid_mod::polar_stereo_map_jacob (RLON, RLAT, DR2, XLON, XLAT, YLON, YLAT)
                     Map jacobians for polar stereographic grids. More...
                     
                    subroutine ip_polar_stereo_grid_mod::polar_stereo_vect_rot (RLON, CROT, SROT)
                     Vector rotation fields for polar stereographic grids. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real ip_polar_stereo_grid_mod::de2
                     Square of DE. More...
                     
                    real ip_polar_stereo_grid_mod::dxs
                     Local copy of dxs. More...
                     
                    real ip_polar_stereo_grid_mod::dys
                     Local copy of dys. More...
                     
                    real ip_polar_stereo_grid_mod::e2
                     Eccentricity squared. More...
                     
                    real ip_polar_stereo_grid_mod::h
                     Local copy of h. More...
                     
                    integer ip_polar_stereo_grid_mod::irot
                     Local copy of irot. More...
                     
                    real ip_polar_stereo_grid_mod::orient
                     Local copy of orient. More...
                     
                    real ip_polar_stereo_grid_mod::rerth
                     Radius of the Earth. More...
                     
                    +

                    Detailed Description

                    +

                    GDS wizard for polar stereographic azimuthal.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition in file ip_polar_stereo_grid_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__polar__stereo__grid__mod_8F90.js b/ver-5.0.0/ip__polar__stereo__grid__mod_8F90.js new file mode 100644 index 00000000..79171727 --- /dev/null +++ b/ver-5.0.0/ip__polar__stereo__grid__mod_8F90.js @@ -0,0 +1,18 @@ +var ip__polar__stereo__grid__mod_8F90 = +[ + [ "ip_polar_stereo_grid", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid" ], + [ "gdswzd_polar_stereo", "ip__polar__stereo__grid__mod_8F90.html#ae2694d90ab514a131e083dfba3b173c5", null ], + [ "init_grib1", "ip__polar__stereo__grid__mod_8F90.html#a6ed76f58f30993cd7be84b7e03cf4d6f", null ], + [ "init_grib2", "ip__polar__stereo__grid__mod_8F90.html#a5210b986366b503683ae966519d501e7", null ], + [ "polar_stereo_grid_area", "ip__polar__stereo__grid__mod_8F90.html#a2a2e0854e5c129e320924a811cbd08e2", null ], + [ "polar_stereo_map_jacob", "ip__polar__stereo__grid__mod_8F90.html#a386933f7e52c348b9d742df423e0e223", null ], + [ "polar_stereo_vect_rot", "ip__polar__stereo__grid__mod_8F90.html#abe4d416201e986421a8e325a9b00e462", null ], + [ "de2", "ip__polar__stereo__grid__mod_8F90.html#a605d287e34e60f553521a5de2da22962", null ], + [ "dxs", "ip__polar__stereo__grid__mod_8F90.html#acf60181f89954e2ff31b08bb1b345354", null ], + [ "dys", "ip__polar__stereo__grid__mod_8F90.html#aea7950530d06d9c59ff61bf706df0a0f", null ], + [ "e2", "ip__polar__stereo__grid__mod_8F90.html#abf3a34d9bb00c39dac5225798aea4d5b", null ], + [ "h", "ip__polar__stereo__grid__mod_8F90.html#a5a63da5168a1432a1af42c0b668f0645", null ], + [ "irot", "ip__polar__stereo__grid__mod_8F90.html#a1269037aaecd12e75e17d8aac8e20c8c", null ], + [ "orient", "ip__polar__stereo__grid__mod_8F90.html#aa4a88f48d7b78cfdfc54754882195d18", null ], + [ "rerth", "ip__polar__stereo__grid__mod_8F90.html#a3315b2efb5cb9aebc0b2cb2773aa20b5", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__polar__stereo__grid__mod_8F90_source.html b/ver-5.0.0/ip__polar__stereo__grid__mod_8F90_source.html new file mode 100644 index 00000000..c62463e7 --- /dev/null +++ b/ver-5.0.0/ip__polar__stereo__grid__mod_8F90_source.html @@ -0,0 +1,557 @@ + + + + + + + +NCEPLIBS-ip: ip_polar_stereo_grid_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_polar_stereo_grid_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    + + +
                    15  use ip_grid_mod
                    + + +
                    18  implicit none
                    +
                    19 
                    +
                    20  private
                    +
                    21  public :: ip_polar_stereo_grid
                    +
                    22 
                    +
                    23  type, extends(ip_grid) :: ip_polar_stereo_grid
                    +
                    24  logical :: elliptical
                    +
                    25  real :: rlat1
                    +
                    26  real :: rlon1
                    +
                    27  real :: orient
                    +
                    28  real :: h
                    +
                    29  real :: dxs
                    +
                    30  real :: dys
                    +
                    31  real :: slatr
                    +
                    35  integer :: irot
                    +
                    36  contains
                    +
                    37  procedure :: init_grib1
                    +
                    38  procedure :: init_grib2
                    +
                    41  procedure :: gdswzd => gdswzd_polar_stereo
                    +
                    42  end type ip_polar_stereo_grid
                    +
                    43 
                    +
                    44  INTEGER :: irot
                    +
                    45  REAL :: de2
                    +
                    46  REAL :: dxs
                    +
                    47  REAL :: dys
                    +
                    48  REAL :: e2
                    +
                    49  REAL :: rerth
                    +
                    50  REAL :: h
                    +
                    51  REAL :: orient
                    +
                    52  REAL :: tinyreal=tiny(1.0)
                    +
                    53 
                    +
                    54 CONTAINS
                    +
                    55 
                    +
                    63  subroutine init_grib1(self, g1_desc)
                    +
                    64  class(ip_polar_stereo_grid), intent(inout) :: self
                    +
                    65  type(grib1_descriptor), intent(in) :: g1_desc
                    +
                    66 
                    +
                    67  REAL, PARAMETER :: SLAT=60.0 ! standard latitude according grib1 standard
                    +
                    68 
                    +
                    69  real :: dx, dy, hi, hj
                    +
                    70  integer :: iproj, iscan, jscan
                    +
                    71 
                    +
                    72  associate(kgds => g1_desc%gds)
                    +
                    73  self%ELLIPTICAL=mod(kgds(6)/64,2).EQ.1
                    +
                    74 
                    +
                    75  if (.not. self%elliptical) then
                    +
                    76  self%rerth = 6.3712e6
                    +
                    77  self%eccen_squared = 0d0
                    +
                    78  else
                    +
                    79  self%rerth = rerth_wgs84
                    +
                    80  self%eccen_squared = e2_wgs84 !wgs84 datum
                    +
                    81  end if
                    +
                    82 
                    +
                    83  self%IM=kgds(2)
                    +
                    84  self%JM=kgds(3)
                    +
                    85 
                    +
                    86  self%RLAT1=kgds(4)*1.e-3
                    +
                    87  self%RLON1=kgds(5)*1.e-3
                    +
                    88 
                    +
                    89  self%IROT=mod(kgds(6)/8,2)
                    +
                    90 
                    +
                    91  self%SLATR=slat/dpr
                    +
                    92 
                    +
                    93  self%ORIENT=kgds(7)*1.e-3
                    +
                    94 
                    +
                    95  dx=kgds(8)
                    +
                    96  dy=kgds(9)
                    +
                    97 
                    +
                    98  iproj=mod(kgds(10)/128,2)
                    +
                    99  iscan=mod(kgds(11)/128,2)
                    +
                    100  jscan=mod(kgds(11)/64,2)
                    +
                    101 
                    +
                    102  self%H=(-1.)**iproj
                    +
                    103  hi=(-1.)**iscan
                    +
                    104  hj=(-1.)**(1-jscan)
                    +
                    105 
                    +
                    106  IF(abs(self%H+1.).LT.tinyreal) self%ORIENT=self%ORIENT+180.
                    +
                    107 
                    +
                    108  self%DXS=dx*hi
                    +
                    109  self%DYS=dy*hj
                    +
                    110 
                    +
                    111  self%iwrap= 0
                    +
                    112  self%jwrap1 = 0
                    +
                    113  self%jwrap2 = 0
                    +
                    114  self%nscan = mod(kgds(11) / 32, 2)
                    +
                    115  self%nscan_field_pos = self%nscan
                    +
                    116  self%kscan = 0
                    +
                    117  end associate
                    +
                    118 
                    +
                    119  end subroutine init_grib1
                    +
                    120 
                    +
                    128  subroutine init_grib2(self, g2_desc)
                    +
                    129  class(ip_polar_stereo_grid), intent(inout) :: self
                    +
                    130  type(grib2_descriptor), intent(in) :: g2_desc
                    +
                    131 
                    +
                    132  real :: slat, dx, dy, hi, hj
                    +
                    133  integer :: iproj, iscan, jscan
                    +
                    134 
                    +
                    135  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
                    +
                    136  call earth_radius(igdtmpl, igdtlen, self%rerth, self%eccen_squared)
                    +
                    137 
                    +
                    138  self%ELLIPTICAL = self%eccen_squared > 0.0
                    +
                    139 
                    +
                    140  self%IM=igdtmpl(8)
                    +
                    141  self%JM=igdtmpl(9)
                    +
                    142 
                    +
                    143  self%RLAT1=float(igdtmpl(10))*1.e-6
                    +
                    144  self%RLON1=float(igdtmpl(11))*1.e-6
                    +
                    145 
                    +
                    146  self%IROT=mod(igdtmpl(12)/8,2)
                    +
                    147 
                    +
                    148  slat=float(abs(igdtmpl(13)))*1.e-6
                    +
                    149  self%SLATR=slat/dpr
                    +
                    150 
                    +
                    151  self%ORIENT=float(igdtmpl(14))*1.e-6
                    +
                    152 
                    +
                    153  dx=float(igdtmpl(15))*1.e-3
                    +
                    154  dy=float(igdtmpl(16))*1.e-3
                    +
                    155 
                    +
                    156  iproj=mod(igdtmpl(17)/128,2)
                    +
                    157  iscan=mod(igdtmpl(18)/128,2)
                    +
                    158  jscan=mod(igdtmpl(18)/64,2)
                    +
                    159 
                    +
                    160  self%H=(-1.)**iproj
                    +
                    161  hi=(-1.)**iscan
                    +
                    162  hj=(-1.)**(1-jscan)
                    +
                    163 
                    +
                    164  self%DXS=dx*hi
                    +
                    165  self%DYS=dy*hj
                    +
                    166 
                    +
                    167  self%nscan = mod(igdtmpl(18) / 32, 2)
                    +
                    168  self%nscan_field_pos = self%nscan
                    +
                    169  self%iwrap = 0
                    +
                    170  self%jwrap1 = 0
                    +
                    171  self%jwrap2 = 0
                    +
                    172  self%kscan = 0
                    +
                    173  end associate
                    +
                    174  end subroutine init_grib2
                    +
                    175 
                    +
                    239  SUBROUTINE gdswzd_polar_stereo(self,IOPT,NPTS, &
                    +
                    240  FILL,XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    241  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    242  IMPLICIT NONE
                    +
                    243  !
                    +
                    244 
                    +
                    245  class(ip_polar_stereo_grid), intent(in) :: self
                    +
                    246  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    247  INTEGER, INTENT( OUT) :: NRET
                    +
                    248  !
                    +
                    249  REAL, INTENT(IN ) :: FILL
                    +
                    250  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    251  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    252  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    253  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    254  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    255  !
                    +
                    256  INTEGER :: IM, JM
                    +
                    257  INTEGER :: ITER, N
                    +
                    258  !
                    +
                    259  LOGICAL :: ELLIPTICAL, LROT, LMAP, LAREA
                    +
                    260  !
                    +
                    261  REAL :: ALAT, ALAT1, ALONG, DIFF
                    +
                    262  REAL :: DI, DJ, DE
                    +
                    263  REAL :: DR, E, E_OVER_2
                    +
                    264  REAL :: MC, SLATR
                    +
                    265  REAL :: RLAT1, RLON1, RHO, T, TC
                    +
                    266  REAL :: XMAX, XMIN, YMAX, YMIN
                    +
                    267  REAL :: XP, YP, DR2
                    +
                    268  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    269  IF(PRESENT(crot)) crot=fill
                    +
                    270  IF(PRESENT(srot)) srot=fill
                    +
                    271  IF(PRESENT(xlon)) xlon=fill
                    +
                    272  IF(PRESENT(xlat)) xlat=fill
                    +
                    273  IF(PRESENT(ylon)) ylon=fill
                    +
                    274  IF(PRESENT(ylat)) ylat=fill
                    +
                    275  IF(PRESENT(area)) area=fill
                    +
                    276 
                    +
                    277  elliptical = self%elliptical
                    +
                    278  im=self%im
                    +
                    279  jm=self%jm
                    +
                    280 
                    +
                    281  rlat1=self%rlat1
                    +
                    282  rlon1=self%rlon1
                    +
                    283 
                    +
                    284  irot=self%irot
                    +
                    285  slatr=self%slatr
                    +
                    286  orient=self%orient
                    +
                    287 
                    +
                    288  h=self%h
                    +
                    289  dxs=self%dxs
                    +
                    290  dys=self%dys
                    +
                    291 
                    +
                    292  rerth = self%rerth
                    +
                    293  e2 = self%eccen_squared
                    +
                    294  !
                    +
                    295  ! FIND X/Y OF POLE
                    +
                    296  IF (.NOT.elliptical) THEN
                    +
                    297  de=(1.+sin(slatr))*rerth
                    +
                    298  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    +
                    299  xp=1-h*sin((rlon1-orient)/dpr)*dr/dxs
                    +
                    300  yp=1+cos((rlon1-orient)/dpr)*dr/dys
                    +
                    301  de2=de**2
                    +
                    302  ELSE
                    +
                    303  e=sqrt(e2)
                    +
                    304  e_over_2=e*0.5
                    +
                    305  alat=h*rlat1/dpr
                    +
                    306  along = (rlon1-orient)/dpr
                    +
                    307  t=tan(pi4-alat/2.)/((1.-e*sin(alat))/ &
                    +
                    308  (1.+e*sin(alat)))**(e_over_2)
                    +
                    309  tc=tan(pi4-slatr/2.)/((1.-e*sin(slatr))/ &
                    +
                    310  (1.+e*sin(slatr)))**(e_over_2)
                    +
                    311  mc=cos(slatr)/sqrt(1.0-e2*(sin(slatr)**2))
                    +
                    312  rho=rerth*mc*t/tc
                    +
                    313  yp = 1.0 + rho*cos(h*along)/dys
                    +
                    314  xp = 1.0 - rho*sin(h*along)/dxs
                    +
                    315  ENDIF ! ELLIPTICAL
                    +
                    316  xmin=0
                    +
                    317  xmax=im+1
                    +
                    318  ymin=0
                    +
                    319  ymax=jm+1
                    +
                    320  nret=0
                    +
                    321  IF(PRESENT(crot).AND.PRESENT(srot))THEN
                    +
                    322  lrot=.true.
                    +
                    323  ELSE
                    +
                    324  lrot=.false.
                    +
                    325  ENDIF
                    +
                    326  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
                    +
                    327  lmap=.true.
                    +
                    328  ELSE
                    +
                    329  lmap=.false.
                    +
                    330  ENDIF
                    +
                    331  IF(PRESENT(area))THEN
                    +
                    332  larea=.true.
                    +
                    333  ELSE
                    +
                    334  larea=.false.
                    +
                    335  ENDIF
                    +
                    336  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    337  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
                    +
                    338  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
                    +
                    339  IF(.NOT.elliptical)THEN
                    +
                    340  !$OMP PARALLEL DO PRIVATE(N,DI,DJ,DR2) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    341  DO n=1,npts
                    +
                    342  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    343  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    344  di=(xpts(n)-xp)*dxs
                    +
                    345  dj=(ypts(n)-yp)*dys
                    +
                    346  dr2=di**2+dj**2
                    +
                    347  IF(dr2.LT.de2*1.e-6) THEN
                    +
                    348  rlon(n)=0.
                    +
                    349  rlat(n)=h*90.
                    +
                    350  ELSE
                    +
                    351  rlon(n)=mod(orient+h*dpr*atan2(di,-dj)+3600,360.)
                    +
                    352  rlat(n)=h*dpr*asin((de2-dr2)/(de2+dr2))
                    +
                    353  ENDIF
                    +
                    354  nret=nret+1
                    +
                    355  IF(lrot) CALL polar_stereo_vect_rot(rlon(n),crot(n),srot(n))
                    +
                    356  IF(lmap) CALL polar_stereo_map_jacob(rlon(n),rlat(n),dr2, &
                    +
                    357  xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    358  IF(larea) CALL polar_stereo_grid_area(rlat(n),dr2,area(n))
                    +
                    359  ELSE
                    +
                    360  rlon(n)=fill
                    +
                    361  rlat(n)=fill
                    +
                    362  ENDIF
                    +
                    363  ENDDO
                    +
                    364  !$OMP END PARALLEL DO
                    +
                    365  ELSE ! ELLIPTICAL
                    +
                    366  !$OMP PARALLEL DO PRIVATE(N,DI,DJ,RHO,T,ALONG,ALAT1,ALAT,DIFF) &
                    +
                    367  !$OMP& REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    368  DO n=1,npts
                    +
                    369  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    370  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    371  di=(xpts(n)-xp)*dxs
                    +
                    372  dj=(ypts(n)-yp)*dys
                    +
                    373  rho=sqrt(di*di+dj*dj)
                    +
                    374  t=(rho*tc)/(rerth*mc)
                    +
                    375  IF(abs(ypts(n)-yp)<0.01)THEN
                    +
                    376  IF(di>0.0) along=orient+h*90.0
                    +
                    377  IF(di<=0.0) along=orient-h*90.0
                    +
                    378  ELSE
                    +
                    379  along=orient+h*atan(di/(-dj))*dpr
                    +
                    380  IF(dj>0) along=along+180.
                    +
                    381  END IF
                    +
                    382  alat1=pi2-2.0*atan(t)
                    +
                    383  DO iter=1,10
                    +
                    384  alat = pi2 - 2.0*atan(t*(((1.0-e*sin(alat1))/ &
                    +
                    385  (1.0+e*sin(alat1)))**(e_over_2)))
                    +
                    386  diff = abs(alat-alat1)*dpr
                    +
                    387  IF (diff < 0.000001) EXIT
                    +
                    388  alat1=alat
                    +
                    389  ENDDO
                    +
                    390  rlat(n)=h*alat*dpr
                    +
                    391  rlon(n)=along
                    +
                    392  IF(rlon(n)<0.0) rlon(n)=rlon(n)+360.
                    +
                    393  IF(rlon(n)>360.0) rlon(n)=rlon(n)-360.0
                    +
                    394  nret=nret+1
                    +
                    395  IF(lrot) CALL polar_stereo_vect_rot(rlon(n),crot(n),srot(n))
                    +
                    396  ELSE
                    +
                    397  rlon(n)=fill
                    +
                    398  rlat(n)=fill
                    +
                    399  ENDIF
                    +
                    400  ENDDO
                    +
                    401  !$OMP END PARALLEL DO
                    +
                    402  ENDIF ! ELLIPTICAL
                    +
                    403  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    404  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
                    +
                    405  ELSEIF(iopt.EQ.-1) THEN
                    +
                    406  IF(.NOT.elliptical)THEN
                    +
                    407  !$OMP PARALLEL DO PRIVATE(N,DR,DR2) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    408  DO n=1,npts
                    +
                    409  IF(abs(rlon(n)).LT.(360.+tinyreal).AND.abs(rlat(n)).LT.(90.+tinyreal).AND. &
                    +
                    410  abs(h*rlat(n)+90).GT.tinyreal) THEN
                    +
                    411  dr=de*tan((90-h*rlat(n))/2/dpr)
                    +
                    412  dr2=dr**2
                    +
                    413  xpts(n)=xp+h*sin((rlon(n)-orient)/dpr)*dr/dxs
                    +
                    414  ypts(n)=yp-cos((rlon(n)-orient)/dpr)*dr/dys
                    +
                    415  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    416  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    417  nret=nret+1
                    +
                    418  IF(lrot) CALL polar_stereo_vect_rot(rlon(n),crot(n),srot(n))
                    +
                    419  IF(lmap) CALL polar_stereo_map_jacob(rlon(n),rlat(n),dr2, &
                    +
                    420  xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    421  IF(larea) CALL polar_stereo_grid_area(rlat(n),dr2,area(n))
                    +
                    422  ELSE
                    +
                    423  xpts(n)=fill
                    +
                    424  ypts(n)=fill
                    +
                    425  ENDIF
                    +
                    426  ELSE
                    +
                    427  xpts(n)=fill
                    +
                    428  ypts(n)=fill
                    +
                    429  ENDIF
                    +
                    430  ENDDO
                    +
                    431  !$OMP END PARALLEL DO
                    +
                    432  ELSE ! ELLIPTICAL CASE
                    +
                    433  !$OMP PARALLEL DO PRIVATE(N,ALAT,ALONG,T,RHO) REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    434  DO n=1,npts
                    +
                    435  IF(abs(rlon(n)).LT.(360+tinyreal).AND.abs(rlat(n)).LT.(90+tinyreal).AND. &
                    +
                    436  abs(h*rlat(n)+90).GT.tinyreal) THEN
                    +
                    437  alat = h*rlat(n)/dpr
                    +
                    438  along = (rlon(n)-orient)/dpr
                    +
                    439  t=tan(pi4-alat*0.5)/((1.-e*sin(alat))/ &
                    +
                    440  (1.+e*sin(alat)))**(e_over_2)
                    +
                    441  rho=rerth*mc*t/tc
                    +
                    442  xpts(n)= xp + rho*sin(h*along) / dxs
                    +
                    443  ypts(n)= yp - rho*cos(h*along) / dys
                    +
                    444  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    445  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    446  nret=nret+1
                    +
                    447  IF(lrot) CALL polar_stereo_vect_rot(rlon(n),crot(n),srot(n))
                    +
                    448  ELSE
                    +
                    449  xpts(n)=fill
                    +
                    450  ypts(n)=fill
                    +
                    451  ENDIF
                    +
                    452  ELSE
                    +
                    453  xpts(n)=fill
                    +
                    454  ypts(n)=fill
                    +
                    455  ENDIF
                    +
                    456  ENDDO
                    +
                    457  !$OMP END PARALLEL DO
                    +
                    458  ENDIF
                    +
                    459  ENDIF
                    +
                    460  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    461  END SUBROUTINE gdswzd_polar_stereo
                    +
                    462 
                    +
                    482  SUBROUTINE polar_stereo_vect_rot(RLON, CROT, SROT)
                    +
                    483  IMPLICIT NONE
                    +
                    484 
                    +
                    485  REAL, INTENT(IN ) :: RLON
                    +
                    486  REAL, INTENT( OUT) :: CROT, SROT
                    +
                    487 
                    +
                    488  IF(irot.EQ.1) THEN
                    +
                    489  crot=h*cos((rlon-orient)/dpr)
                    +
                    490  srot=sin((rlon-orient)/dpr)
                    +
                    491  ELSE
                    +
                    492  crot=1.
                    +
                    493  srot=0.
                    +
                    494  ENDIF
                    +
                    495 
                    +
                    496  END SUBROUTINE polar_stereo_vect_rot
                    +
                    497 
                    +
                    520  SUBROUTINE polar_stereo_map_jacob(RLON,RLAT,DR2,XLON,XLAT,YLON,YLAT)
                    +
                    521  IMPLICIT NONE
                    +
                    522 
                    +
                    523  REAL, INTENT(IN ) :: RLON, RLAT, DR2
                    +
                    524  REAL, INTENT( OUT) :: XLON, XLAT, YLON, YLAT
                    +
                    525 
                    +
                    526  REAL :: CLAT, DE, DR
                    +
                    527 
                    +
                    528  IF(dr2.LT.de2*1.e-6) THEN
                    +
                    529  de=sqrt(de2)
                    +
                    530  xlon=0.
                    +
                    531  xlat=-sin((rlon-orient)/dpr)/dpr*de/dxs/2
                    +
                    532  ylon=0.
                    +
                    533  ylat=h*cos((rlon-orient)/dpr)/dpr*de/dys/2
                    +
                    534  ELSE
                    +
                    535  dr=sqrt(dr2)
                    +
                    536  clat=cos(rlat/dpr)
                    +
                    537  xlon=h*cos((rlon-orient)/dpr)/dpr*dr/dxs
                    +
                    538  xlat=-sin((rlon-orient)/dpr)/dpr*dr/dxs/clat
                    +
                    539  ylon=sin((rlon-orient)/dpr)/dpr*dr/dys
                    +
                    540  ylat=h*cos((rlon-orient)/dpr)/dpr*dr/dys/clat
                    +
                    541  ENDIF
                    +
                    542 
                    +
                    543  END SUBROUTINE polar_stereo_map_jacob
                    +
                    544 
                    +
                    563  SUBROUTINE polar_stereo_grid_area(RLAT, DR2, AREA)
                    +
                    564  IMPLICIT NONE
                    +
                    565 
                    +
                    566  REAL, INTENT(IN ) :: RLAT, DR2
                    +
                    567  REAL, INTENT( OUT) :: AREA
                    +
                    568 
                    +
                    569  REAL :: CLAT
                    +
                    570 
                    +
                    571  IF(dr2.LT.de2*1.e-6) THEN
                    +
                    572  area=rerth**2*abs(dxs)*abs(dys)*4/de2
                    +
                    573  ELSE
                    +
                    574  clat=cos(rlat/dpr)
                    +
                    575  area=rerth**2*clat**2*abs(dxs)*abs(dys)/dr2
                    +
                    576  ENDIF
                    +
                    577 
                    +
                    578  END SUBROUTINE polar_stereo_grid_area
                    +
                    579 
                    +
                    580 end module ip_polar_stereo_grid_mod
                    +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    Determine earth radius and shape.
                    +
                    Module containing common constants.
                    +
                    real, parameter pi2
                    PI / 2.0.
                    +
                    real, parameter pi
                    PI.
                    +
                    real, parameter pi4
                    PI / 4.0.
                    +
                    real, parameter rerth_wgs84
                    Radius of the Earth defined by WGS-84.
                    +
                    real, parameter dpr
                    Radians to degrees.
                    +
                    real, parameter e2_wgs84
                    Eccentricity squared of Earth defined by WGS-84.
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    GDS wizard for polar stereographic azimuthal.
                    +
                    integer irot
                    Local copy of irot.
                    +
                    subroutine polar_stereo_grid_area(RLAT, DR2, AREA)
                    Grid box area for polar stereographic grids.
                    +
                    real rerth
                    Radius of the Earth.
                    +
                    subroutine polar_stereo_map_jacob(RLON, RLAT, DR2, XLON, XLAT, YLON, YLAT)
                    Map jacobians for polar stereographic grids.
                    +
                    subroutine init_grib2(self, g2_desc)
                    Initializes a polar stereographic grid given a grib2_descriptor object.
                    + + +
                    subroutine init_grib1(self, g1_desc)
                    Initializes a polar stereographic grid given a grib1_descriptor object.
                    +
                    real orient
                    Local copy of orient.
                    +
                    subroutine polar_stereo_vect_rot(RLON, CROT, SROT)
                    Vector rotation fields for polar stereographic grids.
                    +
                    real e2
                    Eccentricity squared.
                    + +
                    subroutine gdswzd_polar_stereo(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    GDS wizard for polar stereographic azimuthal.
                    + +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    + +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__rot__equid__cylind__egrid__mod_8F90.html b/ver-5.0.0/ip__rot__equid__cylind__egrid__mod_8F90.html new file mode 100644 index 00000000..5d8eb36a --- /dev/null +++ b/ver-5.0.0/ip__rot__equid__cylind__egrid__mod_8F90.html @@ -0,0 +1,193 @@ + + + + + + + +NCEPLIBS-ip: ip_rot_equid_cylind_egrid_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_rot_equid_cylind_egrid_mod.F90 File Reference
                    +
                    +
                    + +

                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    type  ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid
                     
                    + + + + +

                    +Modules

                    module  ip_rot_equid_cylind_egrid_mod
                     Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E.
                     
                    + + + + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine ip_rot_equid_cylind_egrid_mod::gdswzd_rot_equid_cylind_egrid (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for rotated equidistant cylindrical grids. More...
                     
                    subroutine ip_rot_equid_cylind_egrid_mod::init_grib1 (self, g1_desc)
                     Initializes a rotated equidistant cylindrical grid given a grib1_descriptor object. More...
                     
                    subroutine ip_rot_equid_cylind_egrid_mod::init_grib2 (self, g2_desc)
                     Initializes a rotated equidistant cylindrical grid given a grib2_descriptor object. More...
                     
                    subroutine ip_rot_equid_cylind_egrid_mod::rot_equid_cylind_egrid_error (IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS)
                     Error handler. More...
                     
                    subroutine ip_rot_equid_cylind_egrid_mod::rot_equid_cylind_egrid_grid_area (FILL, AREA)
                     Computes the grid box area for a rotated equidistant cylindrical grid. More...
                     
                    subroutine ip_rot_equid_cylind_egrid_mod::rot_equid_cylind_egrid_map_jacob (FILL, RLON, XLON, XLAT, YLON, YLAT)
                     Computes the map jacobians for a rotated equidistant cylindrical grid. More...
                     
                    subroutine ip_rot_equid_cylind_egrid_mod::rot_equid_cylind_egrid_vect_rot (RLON, CROT, SROT)
                     Computes the vector rotation sines and cosines for a rotated equidistant cylindrical grid. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::clat
                     Cosine of the latitude. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::clat0
                     Local copy of clat0. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::clatr
                     Cosine of the rotated latitude. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::clon
                     Cosine of the difference between rlon and rlon0. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::dlats
                     Local copy of dlats. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::dlons
                     Local copy of dlons. More...
                     
                    integer ip_rot_equid_cylind_egrid_mod::irot
                     Local copy of irot. More...
                     
                    integer, parameter ip_rot_equid_cylind_egrid_mod::kd = real64
                     Kind of reals. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::rerth
                     Radius of the Earth. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::rlon0
                     Local copy of rlon0. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::slat
                     Sine of the latitude. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::slat0
                     Local copy of slat0. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::slatr
                     Sine of the rotated latitude. More...
                     
                    +

                    Detailed Description

                    +

                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E.

                    +
                    Author
                    Mark Iredell, George Gayno, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition in file ip_rot_equid_cylind_egrid_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__rot__equid__cylind__egrid__mod_8F90.js b/ver-5.0.0/ip__rot__equid__cylind__egrid__mod_8F90.js new file mode 100644 index 00000000..2854a1d9 --- /dev/null +++ b/ver-5.0.0/ip__rot__equid__cylind__egrid__mod_8F90.js @@ -0,0 +1,24 @@ +var ip__rot__equid__cylind__egrid__mod_8F90 = +[ + [ "ip_rot_equid_cylind_egrid", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid" ], + [ "gdswzd_rot_equid_cylind_egrid", "ip__rot__equid__cylind__egrid__mod_8F90.html#a9ad11a599fc0bdc4a9ece86a3b1cc399", null ], + [ "init_grib1", "ip__rot__equid__cylind__egrid__mod_8F90.html#aa65616b97df9c89893161ff802e16eab", null ], + [ "init_grib2", "ip__rot__equid__cylind__egrid__mod_8F90.html#af3cbc17f27800bc67135feacb2c1c3e0", null ], + [ "rot_equid_cylind_egrid_error", "ip__rot__equid__cylind__egrid__mod_8F90.html#a69d4e473a1a276b855d37518dc6f1d48", null ], + [ "rot_equid_cylind_egrid_grid_area", "ip__rot__equid__cylind__egrid__mod_8F90.html#a4e6c3a758f9a6474d3e499fabeac0640", null ], + [ "rot_equid_cylind_egrid_map_jacob", "ip__rot__equid__cylind__egrid__mod_8F90.html#a45b87f77888d428ca0f551edae8da94e", null ], + [ "rot_equid_cylind_egrid_vect_rot", "ip__rot__equid__cylind__egrid__mod_8F90.html#a9ac1f76f515981c464e8391d8c941888", null ], + [ "clat", "ip__rot__equid__cylind__egrid__mod_8F90.html#aac1018f3ca1b7ad4b5d33f245678d416", null ], + [ "clat0", "ip__rot__equid__cylind__egrid__mod_8F90.html#a83649d02b55d6252d59514aec4eb3142", null ], + [ "clatr", "ip__rot__equid__cylind__egrid__mod_8F90.html#aad4e673a94976b2b5a9bfad9de9e6e30", null ], + [ "clon", "ip__rot__equid__cylind__egrid__mod_8F90.html#a557d49c609fc8c5c564a3a5f10174eec", null ], + [ "dlats", "ip__rot__equid__cylind__egrid__mod_8F90.html#a0b2faca2325b413e1f3207778d4c4c68", null ], + [ "dlons", "ip__rot__equid__cylind__egrid__mod_8F90.html#af04f8a1044f4d9a7e0d13d38887adcbc", null ], + [ "irot", "ip__rot__equid__cylind__egrid__mod_8F90.html#a93ed996cf2dc9569e356256ec946b571", null ], + [ "kd", "ip__rot__equid__cylind__egrid__mod_8F90.html#a50497d277c347a2991b0e34e85f1787e", null ], + [ "rerth", "ip__rot__equid__cylind__egrid__mod_8F90.html#aed7a425f4d300fe14ac1b48d76378edb", null ], + [ "rlon0", "ip__rot__equid__cylind__egrid__mod_8F90.html#a134acf8ab7f40ff49ce8e03daad900e6", null ], + [ "slat", "ip__rot__equid__cylind__egrid__mod_8F90.html#ae1f8503816477fb685fbadc7a9e50f0b", null ], + [ "slat0", "ip__rot__equid__cylind__egrid__mod_8F90.html#a72199c827ab3218b7f2aba35ad30b94d", null ], + [ "slatr", "ip__rot__equid__cylind__egrid__mod_8F90.html#a4ccccb64d3e7236d8cac19c279aab900", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__rot__equid__cylind__egrid__mod_8F90_source.html b/ver-5.0.0/ip__rot__equid__cylind__egrid__mod_8F90_source.html new file mode 100644 index 00000000..045c45d1 --- /dev/null +++ b/ver-5.0.0/ip__rot__equid__cylind__egrid__mod_8F90_source.html @@ -0,0 +1,588 @@ + + + + + + + +NCEPLIBS-ip: ip_rot_equid_cylind_egrid_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_rot_equid_cylind_egrid_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    7 
                    + +
                    25  use iso_fortran_env, only: real64
                    + +
                    27  use ip_grid_mod
                    +
                    28  use ip_constants_mod, only: dpr, pi
                    + +
                    30  implicit none
                    +
                    31 
                    +
                    32  private
                    + +
                    34 
                    +
                    35  integer, parameter :: kd = real64
                    +
                    36 
                    + +
                    38  real(kd) :: rlon0
                    +
                    39  real(kd) :: rlon1
                    +
                    40  real(kd) :: rlat1
                    +
                    41  real(kd) :: clat0
                    +
                    42  real(kd) :: slat0
                    +
                    43  real(kd) :: dlats
                    +
                    44  real(kd) :: dlons
                    +
                    45  real(kd) :: hi
                    +
                    49  integer :: irot
                    +
                    50  contains
                    +
                    53  procedure :: init_grib1
                    +
                    56  procedure :: init_grib2
                    + + +
                    61 
                    +
                    62  INTEGER :: irot
                    +
                    63 
                    +
                    64  REAL(kind=kd) :: clat
                    +
                    65  REAL(kind=kd) :: clat0
                    +
                    66  REAL(kind=kd) :: clatr
                    +
                    67  REAL(kind=kd) :: clon
                    +
                    68  REAL(kind=kd) :: dlats
                    +
                    69  REAL(kind=kd) :: dlons
                    +
                    70  REAL(kind=kd) :: rerth
                    +
                    71  REAL(kind=kd) :: rlon0
                    +
                    72  REAL(kind=kd) :: slat
                    +
                    73  REAL(kind=kd) :: slat0
                    +
                    74  REAL(kind=kd) :: slatr
                    +
                    75 
                    +
                    76 contains
                    +
                    77 
                    +
                    86  subroutine init_grib1(self, g1_desc)
                    +
                    87  class(ip_rot_equid_cylind_egrid), intent(inout) :: self
                    +
                    88  type(grib1_descriptor), intent(in) :: g1_desc
                    +
                    89 
                    +
                    90  integer :: iscan
                    +
                    91  real(kd) :: rlat0
                    +
                    92 
                    +
                    93  real(kd) :: rlat1, rlon1, rlon0, slat1, clat1, slat0, clat0, clon1
                    +
                    94  real(kd) :: slatr, clatr, clonr, rlatr, rlonr, dlats, dlons, hs, hi
                    +
                    95  integer :: im, jm
                    +
                    96 
                    +
                    97  integer :: is1, kscan, irot
                    +
                    98 
                    +
                    99  associate(kgds => g1_desc%gds)
                    +
                    100  self%rerth = 6.3712e6_kd
                    +
                    101  self%eccen_squared = 0.0
                    +
                    102 
                    +
                    103  im=kgds(2)
                    +
                    104  jm=kgds(3)
                    +
                    105 
                    +
                    106  self%nscan_field_pos = 3
                    +
                    107  self%nscan = mod(kgds(11)/32,2)
                    +
                    108 
                    +
                    109  rlat1=kgds(4)*1.e-3_kd
                    +
                    110  rlon1=kgds(5)*1.e-3_kd
                    +
                    111  rlat0=kgds(7)*1.e-3_kd
                    +
                    112  rlon0=kgds(8)*1.e-3_kd
                    +
                    113 
                    +
                    114  irot=mod(kgds(6)/8,2)
                    +
                    115  kscan=mod(kgds(11)/256,2)
                    +
                    116  iscan=mod(kgds(11)/128,2)
                    +
                    117  hi=(-1.)**iscan
                    +
                    118  slat1=sin(rlat1/dpr)
                    +
                    119  clat1=cos(rlat1/dpr)
                    +
                    120  slat0=sin(rlat0/dpr)
                    +
                    121  clat0=cos(rlat0/dpr)
                    +
                    122  hs=sign(1._kd,mod(rlon1-rlon0+180+3600,360._kd)-180)
                    +
                    123  clon1=cos((rlon1-rlon0)/dpr)
                    +
                    124  slatr=clat0*slat1-slat0*clat1*clon1
                    +
                    125  clatr=sqrt(1-slatr**2)
                    +
                    126  clonr=(clat0*clat1*clon1+slat0*slat1)/clatr
                    +
                    127  rlatr=dpr*asin(slatr)
                    +
                    128  rlonr=hs*dpr*acos(clonr)
                    +
                    129  dlats=rlatr/(-(jm-1)/2)
                    +
                    130  dlons=rlonr/(-((im * 2 - 1) -1)/2)
                    +
                    131 
                    +
                    132  IF(kscan.EQ.0) THEN
                    +
                    133  is1=(jm+1)/2
                    +
                    134  ELSE
                    +
                    135  is1=jm/2
                    +
                    136  ENDIF
                    +
                    137 
                    +
                    138  self%im = im
                    +
                    139  self%jm = jm
                    +
                    140  self%rlon0 = rlon0
                    +
                    141  self%rlon1 = rlon1
                    +
                    142  self%rlat1 = rlat1
                    +
                    143  self%clat0 = clat0
                    +
                    144  self%slat0 = slat0
                    +
                    145  self%dlats = dlats
                    +
                    146  self%dlons = dlons
                    +
                    147  self%hi = hi
                    +
                    148  self%irot = irot
                    +
                    149  self%kscan = kscan
                    +
                    150 
                    +
                    151 
                    +
                    152  end associate
                    +
                    153 
                    +
                    154  end subroutine init_grib1
                    +
                    155 
                    +
                    156 
                    +
                    163  subroutine init_grib2(self, g2_desc)
                    +
                    164  class(ip_rot_equid_cylind_egrid), intent(inout) :: self
                    +
                    165  type(grib2_descriptor), intent(in) :: g2_desc
                    +
                    166 
                    +
                    167  integer :: iscale, iscan
                    +
                    168  real(kd) :: rlat0
                    +
                    169  integer :: i_offset_odd!, i_offset_even
                    +
                    170 
                    +
                    171  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
                    +
                    172  CALL earth_radius(igdtmpl,igdtlen,self%rerth,self%eccen_squared)
                    +
                    173 
                    +
                    174  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    175  ! ROUTINE ONLY WORKS FOR "E"-STAGGER GRIDS.
                    +
                    176  ! "V" GRID WHEN BIT 5 IS '1' AND BIT 6 IS '0'.
                    +
                    177  ! "H" GRID WHEN BIT 5 IS '0' AND BIT 6 IS '1'.
                    +
                    178  ! I_OFFSET_ODD=MOD(IGDTMPL(19)/8,2)
                    +
                    179  ! I_OFFSET_EVEN=MOD(IGDTMPL(19)/4,2)
                    +
                    180  ! IF(I_OFFSET_ODD==I_OFFSET_EVEN) THEN
                    +
                    181  ! CALL ROT_EQUID_CYLIND_EGRID_ERROR(IOPT,FILL,RLAT,RLON,XPTS,YPTS,NPTS)
                    +
                    182  ! RETURN
                    +
                    183  ! ENDIF
                    +
                    184  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    185 
                    +
                    186  self%IM=igdtmpl(8)
                    +
                    187  self%JM=igdtmpl(9)
                    +
                    188 
                    +
                    189  self%NSCAN=mod(igdtmpl(16)/32,2)
                    +
                    190  self%nscan_field_pos = 3
                    +
                    191 
                    +
                    192  iscale=igdtmpl(10)*igdtmpl(11)
                    +
                    193  IF(iscale==0) iscale=10**6
                    +
                    194 
                    +
                    195  self%RLON0=float(igdtmpl(21))/float(iscale)
                    +
                    196  self%DLATS=float(igdtmpl(18))/float(iscale)
                    +
                    197  ! THE GRIB2 CONVENTION FOR "I" RESOLUTION IS TWICE WHAT THIS ROUTINE ASSUMES.
                    +
                    198  self%DLONS=float(igdtmpl(17))/float(iscale) * 0.5_kd
                    +
                    199 
                    +
                    200  self%IROT=mod(igdtmpl(14)/8,2)
                    +
                    201 
                    +
                    202  i_offset_odd=mod(igdtmpl(19)/8,2)
                    +
                    203  self%KSCAN=i_offset_odd
                    +
                    204  iscan=mod(igdtmpl(19)/128,2)
                    +
                    205 
                    +
                    206  self%HI=(-1.)**iscan
                    +
                    207 
                    +
                    208  rlat0=float(igdtmpl(20))/float(iscale)
                    +
                    209  rlat0=rlat0+90.0_kd
                    +
                    210 
                    +
                    211  self%SLAT0=sin(rlat0/dpr)
                    +
                    212  self%CLAT0=cos(rlat0/dpr)
                    +
                    213 
                    +
                    214  self%RLAT1=float(igdtmpl(12))/float(iscale)
                    +
                    215  self%RLON1=float(igdtmpl(13))/float(iscale)
                    +
                    216  end associate
                    +
                    217  end subroutine init_grib2
                    +
                    218 
                    +
                    219 
                    +
                    267  SUBROUTINE gdswzd_rot_equid_cylind_egrid(self,IOPT,NPTS,&
                    +
                    268  FILL,XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    269  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    270  IMPLICIT NONE
                    +
                    271  !
                    +
                    272  class(ip_rot_equid_cylind_egrid), intent(in) :: self
                    +
                    273 
                    +
                    274  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    275  INTEGER, INTENT( OUT) :: NRET
                    +
                    276  !
                    +
                    277  REAL, INTENT(IN ) :: FILL
                    +
                    278  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    279  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    280  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    281  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    282  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    283  !
                    +
                    284  INTEGER :: IM, JM, IS1, N
                    +
                    285  INTEGER :: KSCAN
                    +
                    286  ! INTEGER :: I_OFFSET_ODD, I_OFFSET_EVEN
                    +
                    287  !
                    +
                    288  LOGICAL :: LROT, LMAP, LAREA
                    +
                    289  !
                    +
                    290  REAL(KIND=kd) :: rlat1, rlon1
                    +
                    291  REAL(KIND=kd) :: clonr
                    +
                    292  REAL(KIND=kd) :: rlatr, rlonr, sbd, wbd, hs, hi
                    +
                    293  REAL :: XMAX, XMIN, YMAX, YMIN, XPTF, YPTF
                    +
                    294  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    295  IF(PRESENT(crot)) crot=fill
                    +
                    296  IF(PRESENT(srot)) srot=fill
                    +
                    297  IF(PRESENT(xlon)) xlon=fill
                    +
                    298  IF(PRESENT(xlat)) xlat=fill
                    +
                    299  IF(PRESENT(ylon)) ylon=fill
                    +
                    300  IF(PRESENT(ylat)) ylat=fill
                    +
                    301  IF(PRESENT(area)) area=fill
                    +
                    302 
                    +
                    303  rlon0=self%rlon0
                    +
                    304  irot=self%irot
                    +
                    305  im=self%im * 2 - 1
                    +
                    306  jm=self%jm
                    +
                    307  dlats=self%dlats
                    +
                    308  dlons=self%dlons
                    +
                    309  kscan=self%kscan
                    +
                    310  hi=self%hi
                    +
                    311  slat0=self%slat0
                    +
                    312  clat0=self%clat0
                    +
                    313  rlat1=self%rlat1
                    +
                    314  rlon1=self%rlon1
                    +
                    315 
                    +
                    316  rerth = self%rerth
                    +
                    317 
                    +
                    318  ! IS THE EARTH RADIUS DEFINED?
                    +
                    319  IF(rerth<0.)THEN
                    +
                    320  CALL rot_equid_cylind_egrid_error(iopt,fill,rlat,rlon,xpts,ypts,npts)
                    +
                    321  RETURN
                    +
                    322  ENDIF
                    +
                    323 
                    +
                    324  sbd=rlat1
                    +
                    325  wbd=rlon1
                    +
                    326 
                    +
                    327  IF (wbd > 180.0) wbd = wbd - 360.0
                    +
                    328  IF(kscan.EQ.0) THEN
                    +
                    329  is1=(jm+1)/2
                    +
                    330  ELSE
                    +
                    331  is1=jm/2
                    +
                    332  ENDIF
                    +
                    333 
                    +
                    334  xmin=0
                    +
                    335  xmax=im+2
                    +
                    336  ymin=0
                    +
                    337  ymax=jm+1
                    +
                    338  nret=0
                    +
                    339 
                    +
                    340  IF(PRESENT(crot).AND.PRESENT(srot))THEN
                    +
                    341  lrot=.true.
                    +
                    342  ELSE
                    +
                    343  lrot=.false.
                    +
                    344  ENDIF
                    +
                    345  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
                    +
                    346  lmap=.true.
                    +
                    347  ELSE
                    +
                    348  lmap=.false.
                    +
                    349  ENDIF
                    +
                    350  IF(PRESENT(area))THEN
                    +
                    351  larea=.true.
                    +
                    352  ELSE
                    +
                    353  larea=.false.
                    +
                    354  ENDIF
                    +
                    355 
                    +
                    356  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    357  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
                    +
                    358  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
                    +
                    359  DO n=1,npts
                    +
                    360  xptf=ypts(n)+(xpts(n)-is1)
                    +
                    361  yptf=ypts(n)-(xpts(n)-is1)+kscan
                    +
                    362  IF(xptf.GE.xmin.AND.xptf.LE.xmax.AND. &
                    +
                    363  yptf.GE.ymin.AND.yptf.LE.ymax) THEN
                    +
                    364  hs=hi*sign(1.,xptf-(im+1)/2)
                    +
                    365  select type(desc => self%descriptor)
                    +
                    366  type is(grib1_descriptor)
                    +
                    367  rlonr=(xptf-(im+1)/2)*dlons
                    +
                    368  rlatr=(yptf-(jm+1)/2)*dlats
                    +
                    369  type is(grib2_descriptor)
                    +
                    370  rlonr=(xptf-1.0_kd)*dlons + wbd
                    +
                    371  rlatr=(yptf-1.0_kd)*dlats + sbd
                    +
                    372  end select
                    +
                    373  clonr=cos(rlonr/dpr)
                    +
                    374  slatr=sin(rlatr/dpr)
                    +
                    375  clatr=cos(rlatr/dpr)
                    +
                    376  slat=clat0*slatr+slat0*clatr*clonr
                    +
                    377  IF(slat.LE.-1) THEN
                    +
                    378  clat=0.
                    +
                    379  clon=cos(rlon0/dpr)
                    +
                    380  rlon(n)=0
                    +
                    381  rlat(n)=-90
                    +
                    382  ELSEIF(slat.GE.1) THEN
                    +
                    383  clat=0.
                    +
                    384  clon=cos(rlon0/dpr)
                    +
                    385  rlon(n)=0
                    +
                    386  rlat(n)=90
                    +
                    387  ELSE
                    +
                    388  clat=sqrt(1-slat**2)
                    +
                    389  clon=(clat0*clatr*clonr-slat0*slatr)/clat
                    +
                    390  clon=min(max(clon,-1._kd),1._kd)
                    +
                    391  rlon(n)=real(mod(rlon0+hs*dpr*acos(clon)+3600,360._kd))
                    +
                    392  rlat(n)=real(dpr*asin(slat))
                    +
                    393  ENDIF
                    +
                    394  nret=nret+1
                    +
                    395  IF(lrot) CALL rot_equid_cylind_egrid_vect_rot(rlon(n),crot(n),srot(n))
                    +
                    396  IF(lmap) CALL rot_equid_cylind_egrid_map_jacob(fill, rlon(n), &
                    +
                    397  xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    398  IF(larea) CALL rot_equid_cylind_egrid_grid_area(fill, area(n))
                    +
                    399  ELSE
                    +
                    400  rlon(n)=fill
                    +
                    401  rlat(n)=fill
                    +
                    402  ENDIF
                    +
                    403  ENDDO
                    +
                    404  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    405  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
                    +
                    406  ELSEIF(iopt.EQ.-1) THEN
                    +
                    407  DO n=1,npts
                    +
                    408  IF(abs(rlon(n)).LE.360.AND.abs(rlat(n)).LE.90) THEN
                    +
                    409  hs=sign(1._kd,mod(rlon(n)-rlon0+180+3600,360._kd)-180)
                    +
                    410  clon=cos((rlon(n)-rlon0)/dpr)
                    +
                    411  slat=sin(rlat(n)/dpr)
                    +
                    412  clat=cos(rlat(n)/dpr)
                    + +
                    414  IF(slatr.LE.-1) THEN
                    +
                    415  clatr=0.
                    +
                    416  rlonr=0
                    +
                    417  rlatr=-90
                    +
                    418  ELSEIF(slatr.GE.1) THEN
                    +
                    419  clatr=0.
                    +
                    420  rlonr=0
                    +
                    421  rlatr=90
                    +
                    422  ELSE
                    +
                    423  clatr=sqrt(1-slatr**2)
                    +
                    424  clonr=(clat0*clat*clon+slat0*slat)/clatr
                    +
                    425  clonr=min(max(clonr,-1._kd),1._kd)
                    +
                    426  rlonr=hs*dpr*acos(clonr)
                    +
                    427  rlatr=dpr*asin(slatr)
                    +
                    428  ENDIF
                    +
                    429  select type(desc => self%descriptor)
                    +
                    430  type is(grib1_descriptor)
                    +
                    431  xptf=real(((rlonr-wbd)/dlons)+1.0_kd)
                    +
                    432  yptf=real(((rlatr-sbd)/dlats)+1.0_kd)
                    +
                    433  type is(grib2_descriptor)
                    +
                    434  xptf=real((im+1)/2+rlonr/dlons)
                    +
                    435  yptf=real((jm+1)/2+rlatr/dlats)
                    +
                    436  end select
                    +
                    437 
                    +
                    438  IF(xptf.GE.xmin.AND.xptf.LE.xmax.AND. &
                    +
                    439  yptf.GE.ymin.AND.yptf.LE.ymax) THEN
                    +
                    440  xpts(n)=is1+(xptf-(yptf-kscan))/2
                    +
                    441  ypts(n)=(xptf+(yptf-kscan))/2
                    +
                    442  nret=nret+1
                    +
                    443  IF(lrot) CALL rot_equid_cylind_egrid_vect_rot(rlon(n),crot(n),srot(n))
                    +
                    444  IF(lmap) CALL rot_equid_cylind_egrid_map_jacob(fill, rlon(n), &
                    +
                    445  xlon(n),xlat(n),ylon(n),ylat(n))
                    +
                    446  IF(larea) CALL rot_equid_cylind_egrid_grid_area(fill, area(n))
                    +
                    447  ELSE
                    +
                    448  xpts(n)=fill
                    +
                    449  ypts(n)=fill
                    +
                    450  ENDIF
                    +
                    451  ELSE
                    +
                    452  xpts(n)=fill
                    +
                    453  ypts(n)=fill
                    +
                    454  ENDIF
                    +
                    455  ENDDO
                    +
                    456  ENDIF
                    +
                    457  END SUBROUTINE gdswzd_rot_equid_cylind_egrid
                    +
                    458 
                    +
                    482  SUBROUTINE rot_equid_cylind_egrid_error(IOPT,FILL,RLAT,RLON,XPTS,YPTS,NPTS)
                    +
                    483  IMPLICIT NONE
                    +
                    484  !
                    +
                    485  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    486  !
                    +
                    487  REAL, INTENT(IN ) :: FILL
                    +
                    488  REAL, INTENT( OUT) :: RLAT(NPTS),RLON(NPTS)
                    +
                    489  REAL, INTENT( OUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    490 
                    +
                    491  IF(iopt>=0) THEN
                    +
                    492  rlon=fill
                    +
                    493  rlat=fill
                    +
                    494  ENDIF
                    +
                    495  IF(iopt<=0) THEN
                    +
                    496  xpts=fill
                    +
                    497  ypts=fill
                    +
                    498  ENDIF
                    +
                    499  END SUBROUTINE rot_equid_cylind_egrid_error
                    +
                    500 
                    +
                    514  SUBROUTINE rot_equid_cylind_egrid_vect_rot(RLON, CROT, SROT)
                    +
                    515  IMPLICIT NONE
                    +
                    516 
                    +
                    517  REAL , INTENT(IN ) :: RLON
                    +
                    518  REAL , INTENT( OUT) :: CROT, SROT
                    +
                    519 
                    +
                    520  REAL(KIND=kd) :: slon
                    +
                    521 
                    +
                    522  IF(irot.EQ.1) THEN
                    +
                    523  IF(clatr.LE.0) THEN
                    +
                    524  crot=real(-sign(1._kd,slatr*slat0))
                    +
                    525  srot=0.
                    +
                    526  ELSE
                    +
                    527  slon=sin((rlon-rlon0)/dpr)
                    +
                    528  crot=real((clat0*clat+slat0*slat*clon)/clatr)
                    +
                    529  srot=real(slat0*slon/clatr)
                    +
                    530  ENDIF
                    +
                    531  ELSE
                    +
                    532  crot=1.
                    +
                    533  srot=0.
                    +
                    534  ENDIF
                    +
                    535 
                    +
                    536  END SUBROUTINE rot_equid_cylind_egrid_vect_rot
                    +
                    537 
                    +
                    549  SUBROUTINE rot_equid_cylind_egrid_map_jacob(FILL, RLON, &
                    +
                    550  XLON, XLAT, YLON, YLAT)
                    +
                    551  IMPLICIT NONE
                    +
                    552 
                    +
                    553  REAL , INTENT(IN ) :: FILL, RLON
                    +
                    554  REAL , INTENT( OUT) :: XLON, XLAT, YLON, YLAT
                    +
                    555 
                    +
                    556  REAL(KIND=kd) :: slon, term1, term2
                    +
                    557  REAL(KIND=kd) :: xlatf, xlonf, ylatf, ylonf
                    +
                    558 
                    +
                    559  IF(clatr.LE.0._kd) THEN
                    +
                    560  xlon=fill
                    +
                    561  xlat=fill
                    +
                    562  ylon=fill
                    +
                    563  ylat=fill
                    +
                    564  ELSE
                    +
                    565  slon=sin((rlon-rlon0)/dpr)
                    +
                    566  term1=(clat0*clat+slat0*slat*clon)/clatr
                    +
                    567  term2=slat0*slon/clatr
                    +
                    568  xlonf=term1*clat/(dlons*clatr)
                    +
                    569  xlatf=-term2/(dlons*clatr)
                    +
                    570  ylonf=term2*clat/dlats
                    +
                    571  ylatf=term1/dlats
                    +
                    572  xlon=real(xlonf-ylonf)
                    +
                    573  xlat=real(xlatf-ylatf)
                    +
                    574  ylon=real(xlonf+ylonf)
                    +
                    575  ylat=real(xlatf+ylatf)
                    +
                    576  ENDIF
                    +
                    577 
                    +
                    578  END SUBROUTINE rot_equid_cylind_egrid_map_jacob
                    +
                    579 
                    +
                    587  SUBROUTINE rot_equid_cylind_egrid_grid_area(FILL, AREA)
                    +
                    588  IMPLICIT NONE
                    +
                    589 
                    +
                    590  REAL, INTENT(IN ) :: FILL
                    +
                    591  REAL, INTENT( OUT) :: AREA
                    +
                    592 
                    +
                    593  IF(clatr.LE.0._kd) THEN
                    +
                    594  area=fill
                    +
                    595  ELSE
                    +
                    596  area=real(rerth**2*clatr*dlats*dlons)*2/dpr**2
                    +
                    597  ENDIF
                    +
                    598 
                    +
                    599  END SUBROUTINE rot_equid_cylind_egrid_grid_area
                    +
                    600 
                    + +
                    602 
                    +
                    603 
                    +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    Determine earth radius and shape.
                    +
                    Module containing common constants.
                    +
                    real, parameter pi
                    PI.
                    +
                    real, parameter dpr
                    Radians to degrees.
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E.
                    +
                    real(kind=kd) dlats
                    Local copy of dlats.
                    +
                    real(kind=kd) rlon0
                    Local copy of rlon0.
                    +
                    subroutine rot_equid_cylind_egrid_map_jacob(FILL, RLON, XLON, XLAT, YLON, YLAT)
                    Computes the map jacobians for a rotated equidistant cylindrical grid.
                    +
                    real(kind=kd) slatr
                    Sine of the rotated latitude.
                    +
                    subroutine rot_equid_cylind_egrid_grid_area(FILL, AREA)
                    Computes the grid box area for a rotated equidistant cylindrical grid.
                    +
                    integer, parameter kd
                    Kind of reals.
                    +
                    real(kind=kd) clon
                    Cosine of the difference between rlon and rlon0.
                    +
                    subroutine rot_equid_cylind_egrid_error(IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS)
                    Error handler.
                    +
                    real(kind=kd) slat0
                    Local copy of slat0.
                    +
                    real(kind=kd) clat0
                    Local copy of clat0.
                    + +
                    subroutine rot_equid_cylind_egrid_vect_rot(RLON, CROT, SROT)
                    Computes the vector rotation sines and cosines for a rotated equidistant cylindrical grid.
                    +
                    subroutine gdswzd_rot_equid_cylind_egrid(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for rotated equidistant cylin...
                    +
                    subroutine init_grib1(self, g1_desc)
                    Initializes a rotated equidistant cylindrical grid given a grib1_descriptor object.
                    +
                    real(kind=kd) clat
                    Cosine of the latitude.
                    +
                    real(kind=kd) clatr
                    Cosine of the rotated latitude.
                    +
                    real(kind=kd) slat
                    Sine of the latitude.
                    +
                    real(kind=kd) rerth
                    Radius of the Earth.
                    +
                    real(kind=kd) dlons
                    Local copy of dlons.
                    +
                    subroutine init_grib2(self, g2_desc)
                    Initializes a rotated equidistant cylindrical grid given a grib2_descriptor object.
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    + +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__rot__equid__cylind__grid__mod_8F90.html b/ver-5.0.0/ip__rot__equid__cylind__grid__mod_8F90.html new file mode 100644 index 00000000..4efa87b7 --- /dev/null +++ b/ver-5.0.0/ip__rot__equid__cylind__grid__mod_8F90.html @@ -0,0 +1,178 @@ + + + + + + + +NCEPLIBS-ip: ip_rot_equid_cylind_grid_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_rot_equid_cylind_grid_mod.F90 File Reference
                    +
                    +
                    + +

                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    type  ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid
                     
                    + + + + +

                    +Modules

                    module  ip_rot_equid_cylind_grid_mod
                     Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D.
                     
                    + + + + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine ip_rot_equid_cylind_grid_mod::gdswzd_rot_equid_cylind (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     GDS wizard for rotated equidistant cylindrical. More...
                     
                    subroutine ip_rot_equid_cylind_grid_mod::init_grib1 (self, g1_desc)
                     Initializes a Rotated equidistant cylindrical grid given a grib1_descriptor object. More...
                     
                    subroutine ip_rot_equid_cylind_grid_mod::init_grib2 (self, g2_desc)
                     Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object. More...
                     
                    subroutine ip_rot_equid_cylind_grid_mod::rot_equid_cylind_error (IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS)
                     Error handler. More...
                     
                    subroutine ip_rot_equid_cylind_grid_mod::rot_equid_cylind_grid_area (CLATR, FILL, AREA)
                     Grid box area for rotated equidistant cylindrical grids - non "e" stagger. More...
                     
                    subroutine ip_rot_equid_cylind_grid_mod::rot_equid_cylind_map_jacob (FILL, RLON, CLATR, CLAT, SLAT, CLON, XLON, XLAT, YLON, YLAT)
                     Map jacobians for rotated equidistant cylindrical grids - non "e" stagger. More...
                     
                    subroutine ip_rot_equid_cylind_grid_mod::rot_equid_cylind_vect_rot (RLON, CLATR, SLATR, CLAT, SLAT, CLON, CROT, SROT)
                     Vector rotation fields for rotated equidistant cylindrical grids - non "e" stagger. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real(kind=kd) ip_rot_equid_cylind_grid_mod::clat0
                     Local copy of clat0. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::dlats
                     Local copy of dlats. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::dlons
                     Local copy of dlons. More...
                     
                    integer ip_rot_equid_cylind_grid_mod::irot
                     Local copy of irot. More...
                     
                    integer, parameter ip_rot_equid_cylind_grid_mod::kd = real64
                     Fortran kind for reals. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::rerth
                     Radius of the Earth. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::rlon0
                     Local copy of rlon0. More...
                     
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::slat0
                     Local copy of slat0. More...
                     
                    +

                    Detailed Description

                    +

                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D.

                    +
                    Author
                    Mark Iredell, George Gayno, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition in file ip_rot_equid_cylind_grid_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__rot__equid__cylind__grid__mod_8F90.js b/ver-5.0.0/ip__rot__equid__cylind__grid__mod_8F90.js new file mode 100644 index 00000000..e383063c --- /dev/null +++ b/ver-5.0.0/ip__rot__equid__cylind__grid__mod_8F90.js @@ -0,0 +1,19 @@ +var ip__rot__equid__cylind__grid__mod_8F90 = +[ + [ "ip_rot_equid_cylind_grid", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid" ], + [ "gdswzd_rot_equid_cylind", "ip__rot__equid__cylind__grid__mod_8F90.html#a55c153201e15205d3f75e4ffb717cc0b", null ], + [ "init_grib1", "ip__rot__equid__cylind__grid__mod_8F90.html#acb27dfdc6f03dea897d509910365afee", null ], + [ "init_grib2", "ip__rot__equid__cylind__grid__mod_8F90.html#add3c6c1dad5748b452d291df6619867d", null ], + [ "rot_equid_cylind_error", "ip__rot__equid__cylind__grid__mod_8F90.html#a1cc09c83f9a3815d8c5f8ed2f239f53f", null ], + [ "rot_equid_cylind_grid_area", "ip__rot__equid__cylind__grid__mod_8F90.html#ad8f1133eb6809705c15337134eafe9fd", null ], + [ "rot_equid_cylind_map_jacob", "ip__rot__equid__cylind__grid__mod_8F90.html#a985f1dc1a20444cef706d4bb20e0841b", null ], + [ "rot_equid_cylind_vect_rot", "ip__rot__equid__cylind__grid__mod_8F90.html#a3de472bfc18740a7d985f560f3541c10", null ], + [ "clat0", "ip__rot__equid__cylind__grid__mod_8F90.html#afeb699d0eaa8d157277e93fe8e8c5852", null ], + [ "dlats", "ip__rot__equid__cylind__grid__mod_8F90.html#ab43075e39d4e2dde4110e608931a392d", null ], + [ "dlons", "ip__rot__equid__cylind__grid__mod_8F90.html#aa0cf7bb2dd8be1239ae38c7220d29702", null ], + [ "irot", "ip__rot__equid__cylind__grid__mod_8F90.html#abb0c2acdbd71f0c07ffaf9db54ce06c1", null ], + [ "kd", "ip__rot__equid__cylind__grid__mod_8F90.html#af5dea0592cccce2de1c5c6a92d42cfd6", null ], + [ "rerth", "ip__rot__equid__cylind__grid__mod_8F90.html#ae08318392106d174ab36cf7dc05c570b", null ], + [ "rlon0", "ip__rot__equid__cylind__grid__mod_8F90.html#a620a55069afd33b301240533915387df", null ], + [ "slat0", "ip__rot__equid__cylind__grid__mod_8F90.html#a64831f92d5306513987a98e97a32aea1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__rot__equid__cylind__grid__mod_8F90_source.html b/ver-5.0.0/ip__rot__equid__cylind__grid__mod_8F90_source.html new file mode 100644 index 00000000..4c8ecec8 --- /dev/null +++ b/ver-5.0.0/ip__rot__equid__cylind__grid__mod_8F90_source.html @@ -0,0 +1,561 @@ + + + + + + + +NCEPLIBS-ip: ip_rot_equid_cylind_grid_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_rot_equid_cylind_grid_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    7 
                    + +
                    20  use iso_fortran_env, only: real64
                    + +
                    22  use ip_grid_mod
                    +
                    23  use ip_constants_mod, only: dpr, pi
                    + +
                    25  implicit none
                    +
                    26 
                    +
                    27  private
                    +
                    28  public :: ip_rot_equid_cylind_grid
                    +
                    29 
                    +
                    30  integer, parameter :: kd = real64
                    +
                    31 
                    + +
                    33  real(kd) :: clat0
                    +
                    34  real(kd) :: dlats
                    +
                    35  real(kd) :: dlons
                    +
                    36  real(kd) :: rlon0
                    +
                    37  real(kd) :: slat0
                    +
                    38  real(kd) :: wbd
                    +
                    39  real(kd) :: sbd
                    +
                    43  integer :: irot
                    +
                    44  contains
                    +
                    47  procedure :: init_grib1
                    +
                    50  procedure :: init_grib2
                    + + +
                    55 
                    +
                    56  INTEGER :: irot
                    +
                    57  REAL(kind=kd) :: rerth
                    +
                    58  REAL(kind=kd) :: clat0
                    +
                    59  REAL(kind=kd) :: dlats
                    +
                    60  REAL(kind=kd) :: dlons
                    +
                    61  REAL(kind=kd) :: rlon0
                    +
                    62  REAL(kind=kd) :: slat0
                    +
                    63 
                    +
                    64 CONTAINS
                    +
                    65 
                    +
                    73  subroutine init_grib1(self, g1_desc)
                    +
                    74  class(ip_rot_equid_cylind_grid), intent(inout) :: self
                    +
                    75  type(grib1_descriptor), intent(in) :: g1_desc
                    +
                    76 
                    +
                    77  real(kd) :: rlat1, rlon1, rlat0, rlat2, rlon2, nbd, ebd
                    +
                    78  real(kd) :: hs, hs2, slat1, slat2, slatr, clon1, clon2, clat1, clat2, clatr, clonr, rlonr, rlatr
                    +
                    79 
                    +
                    80  associate(kgds => g1_desc%gds)
                    +
                    81  self%rerth = 6.3712e6_kd
                    +
                    82  self%eccen_squared = 0d0
                    +
                    83 
                    +
                    84  rlat1=kgds(4)*1.e-3_kd
                    +
                    85  rlon1=kgds(5)*1.e-3_kd
                    +
                    86  rlat0=kgds(7)*1.e-3_kd
                    +
                    87  self%RLON0=kgds(8)*1.e-3_kd
                    +
                    88  rlat2=kgds(12)*1.e-3_kd
                    +
                    89  rlon2=kgds(13)*1.e-3_kd
                    +
                    90 
                    +
                    91  self%IROT=mod(kgds(6)/8,2)
                    +
                    92  self%IM=kgds(2)
                    +
                    93  self%JM=kgds(3)
                    +
                    94 
                    +
                    95  slat1=sin(rlat1/dpr)
                    +
                    96  clat1=cos(rlat1/dpr)
                    +
                    97  self%SLAT0=sin(rlat0/dpr)
                    +
                    98  self%CLAT0=cos(rlat0/dpr)
                    +
                    99 
                    +
                    100  hs=sign(1._kd,mod(rlon1-self%RLON0+180+3600,360._kd)-180)
                    +
                    101  clon1=cos((rlon1-self%RLON0)/dpr)
                    +
                    102  slatr=self%CLAT0*slat1-self%SLAT0*clat1*clon1
                    +
                    103  clatr=sqrt(1-slatr**2)
                    +
                    104  clonr=(self%CLAT0*clat1*clon1+self%SLAT0*slat1)/clatr
                    +
                    105  rlatr=dpr*asin(slatr)
                    +
                    106  rlonr=hs*dpr*acos(clonr)
                    +
                    107 
                    +
                    108  self%WBD=rlonr
                    +
                    109  self%SBD=rlatr
                    +
                    110  slat2=sin(rlat2/dpr)
                    +
                    111  clat2=cos(rlat2/dpr)
                    +
                    112  hs2=sign(1._kd,mod(rlon2-self%RLON0+180+3600,360._kd)-180)
                    +
                    113  clon2=cos((rlon2-self%RLON0)/dpr)
                    +
                    114  slatr=self%CLAT0*slat2-self%SLAT0*clat2*clon2
                    +
                    115  clatr=sqrt(1-slatr**2)
                    +
                    116  clonr=(self%CLAT0*clat2*clon2+self%SLAT0*slat2)/clatr
                    +
                    117  nbd=dpr*asin(slatr)
                    +
                    118  ebd=hs2*dpr*acos(clonr)
                    +
                    119  self%DLATS=(nbd-self%SBD)/float(self%JM-1)
                    +
                    120  self%DLONS=(ebd-self%WBD)/float(self%IM-1)
                    +
                    121 
                    +
                    122  self%iwrap = 0
                    +
                    123  self%jwrap1 = 0
                    +
                    124  self%jwrap2 = 0
                    +
                    125  self%nscan = mod(kgds(11) / 32, 2)
                    +
                    126  self%nscan_field_pos = self%nscan
                    +
                    127  self%kscan = 0
                    +
                    128  end associate
                    +
                    129 
                    +
                    130  end subroutine init_grib1
                    +
                    131 
                    +
                    139  subroutine init_grib2(self, g2_desc)
                    +
                    140  class(ip_rot_equid_cylind_grid), intent(inout) :: self
                    +
                    141  type(grib2_descriptor), intent(in) :: g2_desc
                    +
                    142 
                    +
                    143  real(kd) :: rlat1, rlon1, rlat0, rlat2, rlon2, nbd, ebd
                    +
                    144  integer :: iscale
                    +
                    145  integer :: i_offset_odd, i_offset_even, j_offset
                    +
                    146 
                    +
                    147  associate(igdtmpl => g2_desc%gdt_tmpl, igdtlen => g2_desc%gdt_len)
                    +
                    148 
                    +
                    149  CALL earth_radius(igdtmpl,igdtlen,self%rerth,self%eccen_squared)
                    +
                    150 
                    +
                    151  i_offset_odd=mod(igdtmpl(19)/8,2)
                    +
                    152  i_offset_even=mod(igdtmpl(19)/4,2)
                    +
                    153  j_offset=mod(igdtmpl(19)/2,2)
                    +
                    154 
                    +
                    155  iscale=igdtmpl(10)*igdtmpl(11)
                    +
                    156  IF(iscale==0) iscale=10**6
                    +
                    157 
                    +
                    158  rlat1=float(igdtmpl(12))/float(iscale)
                    +
                    159  rlon1=float(igdtmpl(13))/float(iscale)
                    +
                    160  rlat0=float(igdtmpl(20))/float(iscale)
                    +
                    161  rlat0=rlat0+90.0_kd
                    +
                    162 
                    +
                    163  self%RLON0=float(igdtmpl(21))/float(iscale)
                    +
                    164 
                    +
                    165  rlat2=float(igdtmpl(15))/float(iscale)
                    +
                    166  rlon2=float(igdtmpl(16))/float(iscale)
                    +
                    167 
                    +
                    168  self%IROT=mod(igdtmpl(14)/8,2)
                    +
                    169  self%IM=igdtmpl(8)
                    +
                    170  self%JM=igdtmpl(9)
                    +
                    171 
                    +
                    172  self%SLAT0=sin(rlat0/dpr)
                    +
                    173  self%CLAT0=cos(rlat0/dpr)
                    +
                    174 
                    +
                    175  self%WBD=rlon1
                    +
                    176  IF (self%WBD > 180.0) self%WBD = self%WBD - 360.0
                    +
                    177  self%SBD=rlat1
                    +
                    178 
                    +
                    179  nbd=rlat2
                    +
                    180  ebd=rlon2
                    +
                    181 
                    +
                    182  self%DLATS=(nbd-self%SBD)/float(self%JM-1)
                    +
                    183  self%DLONS=(ebd-self%WBD)/float(self%IM-1)
                    +
                    184 
                    +
                    185  IF(i_offset_odd==1) self%WBD=self%WBD+(0.5_kd*self%DLONS)
                    +
                    186  IF(j_offset==1) self%SBD=self%SBD+(0.5_kd*self%DLATS)
                    +
                    187 
                    +
                    188  self%iwrap = 0
                    +
                    189  self%jwrap1 = 0
                    +
                    190  self%jwrap2 = 0
                    +
                    191  self%kscan = 0
                    +
                    192  self%nscan = mod(igdtmpl(19) / 32, 2)
                    +
                    193  self%nscan_field_pos = self%nscan
                    +
                    194  end associate
                    +
                    195  end subroutine init_grib2
                    +
                    196 
                    +
                    256  SUBROUTINE gdswzd_rot_equid_cylind(self,IOPT,NPTS, &
                    +
                    257  FILL,XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    258  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    259  IMPLICIT NONE
                    +
                    260 
                    +
                    261  class(ip_rot_equid_cylind_grid), intent(in) :: self
                    +
                    262  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    263  INTEGER, INTENT( OUT) :: NRET
                    +
                    264  !
                    +
                    265  REAL, INTENT(IN ) :: FILL
                    +
                    266  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    267  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    268  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    269  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    270  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    271  !
                    +
                    272  INTEGER :: IM,JM,N
                    +
                    273  !
                    +
                    274  LOGICAL :: LROT, LMAP, LAREA
                    +
                    275  !
                    +
                    276  REAL(KIND=kd) :: hs
                    +
                    277  REAL(KIND=kd) :: clonr,clatr,slatr
                    +
                    278  REAL(KIND=kd) :: clat,slat,clon
                    +
                    279  REAL(KIND=kd) :: rlatr,rlonr
                    +
                    280  REAL(KIND=kd) :: wbd,sbd
                    +
                    281  REAL :: XMIN,XMAX,YMIN,YMAX
                    +
                    282  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    283  IF(PRESENT(crot)) crot=fill
                    +
                    284  IF(PRESENT(srot)) srot=fill
                    +
                    285  IF(PRESENT(xlon)) xlon=fill
                    +
                    286  IF(PRESENT(xlat)) xlat=fill
                    +
                    287  IF(PRESENT(ylon)) ylon=fill
                    +
                    288  IF(PRESENT(ylat)) ylat=fill
                    +
                    289  IF(PRESENT(area)) area=fill
                    +
                    290  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    291  ! IS THE EARTH RADIUS DEFINED?
                    +
                    292  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    293  ! IS THIS AN "E"-STAGGER GRID? ROUTINE CAN'T PROCESS THOSE.
                    +
                    294  ! I_OFFSET_ODD=MOD(IGDTMPL(19)/8,2)
                    +
                    295  ! I_OFFSET_EVEN=MOD(IGDTMPL(19)/4,2)
                    +
                    296  ! J_OFFSET=MOD(IGDTMPL(19)/2,2)
                    +
                    297  ! IF(I_OFFSET_ODD/=I_OFFSET_EVEN) THEN
                    +
                    298  ! CALL ROT_EQUID_CYLIND_ERROR(IOPT,FILL,RLAT,RLON,XPTS,YPTS,NPTS)
                    +
                    299  ! RETURN
                    +
                    300  ! ENDIF
                    +
                    301  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    302 
                    +
                    303 
                    +
                    304  rlon0=self%rlon0
                    +
                    305  irot=self%irot
                    +
                    306 
                    +
                    307  im=self%im
                    +
                    308  jm=self%jm
                    +
                    309 
                    +
                    310  slat0=self%slat0
                    +
                    311  clat0=self%clat0
                    +
                    312 
                    +
                    313  wbd=self%wbd
                    +
                    314  sbd=self%sbd
                    +
                    315 
                    +
                    316  dlats=self%dlats
                    +
                    317  dlons=self%dlons
                    +
                    318 
                    +
                    319  xmin=0
                    +
                    320  xmax=im+1
                    +
                    321  ymin=0
                    +
                    322  ymax=jm+1
                    +
                    323  nret=0
                    +
                    324 
                    +
                    325  rerth = self%rerth
                    +
                    326  IF(rerth<0.)THEN
                    +
                    327  CALL rot_equid_cylind_error(iopt,fill,rlat,rlon,xpts,ypts,npts)
                    +
                    328  RETURN
                    +
                    329  ENDIF
                    +
                    330 
                    +
                    331  IF(PRESENT(crot).AND.PRESENT(srot))THEN
                    +
                    332  lrot=.true.
                    +
                    333  ELSE
                    +
                    334  lrot=.false.
                    +
                    335  ENDIF
                    +
                    336  IF(PRESENT(xlon).AND.PRESENT(xlat).AND.PRESENT(ylon).AND.PRESENT(ylat))THEN
                    +
                    337  lmap=.true.
                    +
                    338  ELSE
                    +
                    339  lmap=.false.
                    +
                    340  ENDIF
                    +
                    341  IF(PRESENT(area))THEN
                    +
                    342  larea=.true.
                    +
                    343  ELSE
                    +
                    344  larea=.false.
                    +
                    345  ENDIF
                    +
                    346  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    347  ! TRANSLATE GRID COORDINATES TO EARTH COORDINATES
                    +
                    348  IF(iopt.EQ.0.OR.iopt.EQ.1) THEN
                    +
                    349  !$OMP PARALLEL DO PRIVATE(N,RLONR,RLATR,HS,CLONR,SLATR,CLATR,SLAT,CLAT,CLON) &
                    +
                    350  !$OMP& REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    351  DO n=1,npts
                    +
                    352  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    353  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    354  rlonr=wbd+(xpts(n)-1._kd)*dlons
                    +
                    355  rlatr=sbd+(ypts(n)-1._kd)*dlats
                    +
                    356  IF(rlonr <= 0._kd) THEN
                    +
                    357  hs=-1.0_kd
                    +
                    358  ELSE
                    +
                    359  hs=1.0_kd
                    +
                    360  ENDIF
                    +
                    361  clonr=cos(rlonr/dpr)
                    +
                    362  slatr=sin(rlatr/dpr)
                    +
                    363  clatr=cos(rlatr/dpr)
                    +
                    364  slat=clat0*slatr+slat0*clatr*clonr
                    +
                    365  IF(slat.LE.-1) THEN
                    +
                    366  clat=0.
                    +
                    367  clon=cos(rlon0/dpr)
                    +
                    368  rlon(n)=0.
                    +
                    369  rlat(n)=-90.
                    +
                    370  ELSEIF(slat.GE.1) THEN
                    +
                    371  clat=0.
                    +
                    372  clon=cos(rlon0/dpr)
                    +
                    373  rlon(n)=0.
                    +
                    374  rlat(n)=90.
                    +
                    375  ELSE
                    +
                    376  clat=sqrt(1-slat**2)
                    +
                    377  clon=(clat0*clatr*clonr-slat0*slatr)/clat
                    +
                    378  clon=min(max(clon,-1._kd),1._kd)
                    +
                    379  rlon(n)=real(mod(rlon0+hs*dpr*acos(clon)+3600,360._kd))
                    +
                    380  rlat(n)=real(dpr*asin(slat))
                    +
                    381  ENDIF
                    +
                    382  nret=nret+1
                    +
                    383  IF(lrot) CALL rot_equid_cylind_vect_rot(rlon(n), clatr, slatr, &
                    +
                    384  clat, slat, clon, crot(n), srot(n))
                    +
                    385  IF(lmap) CALL rot_equid_cylind_map_jacob(fill, rlon(n), clatr, &
                    +
                    386  clat, slat, clon, xlon(n), xlat(n), ylon(n), ylat(n))
                    +
                    387  IF(larea) CALL rot_equid_cylind_grid_area(clatr, fill, area(n))
                    +
                    388  ELSE
                    +
                    389  rlon(n)=fill
                    +
                    390  rlat(n)=fill
                    +
                    391  ENDIF
                    +
                    392  ENDDO
                    +
                    393  !$OMP END PARALLEL DO
                    +
                    394  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    395  ! TRANSLATE EARTH COORDINATES TO GRID COORDINATES
                    +
                    396  ELSEIF(iopt.EQ.-1) THEN
                    +
                    397  !$OMP PARALLEL DO PRIVATE(N,HS,CLON,SLAT,CLAT,SLATR,CLATR,CLONR,RLONR,RLATR) &
                    +
                    398  !$OMP& REDUCTION(+:NRET) SCHEDULE(STATIC)
                    +
                    399  DO n=1,npts
                    +
                    400  IF(abs(rlon(n)).LE.360.AND.abs(rlat(n)).LE.90) THEN
                    +
                    401  hs=sign(1._kd,mod(rlon(n)-rlon0+180+3600,360._kd)-180)
                    +
                    402  clon=cos((rlon(n)-rlon0)/dpr)
                    +
                    403  slat=sin(rlat(n)/dpr)
                    +
                    404  clat=cos(rlat(n)/dpr)
                    +
                    405  slatr=clat0*slat-slat0*clat*clon
                    +
                    406  IF(slatr.LE.-1) THEN
                    +
                    407  clatr=0._kd
                    +
                    408  rlonr=0.
                    +
                    409  rlatr=-90.
                    +
                    410  ELSEIF(slatr.GE.1) THEN
                    +
                    411  clatr=0._kd
                    +
                    412  rlonr=0.
                    +
                    413  rlatr=90.
                    +
                    414  ELSE
                    +
                    415  clatr=sqrt(1-slatr**2)
                    +
                    416  clonr=(clat0*clat*clon+slat0*slat)/clatr
                    +
                    417  clonr=min(max(clonr,-1._kd),1._kd)
                    +
                    418  rlonr=hs*dpr*acos(clonr)
                    +
                    419  rlatr=dpr*asin(slatr)
                    +
                    420  ENDIF
                    +
                    421  xpts(n)=real((rlonr-wbd)/dlons+1._kd)
                    +
                    422  ypts(n)=real((rlatr-sbd)/dlats+1._kd)
                    +
                    423  IF(xpts(n).GE.xmin.AND.xpts(n).LE.xmax.AND. &
                    +
                    424  ypts(n).GE.ymin.AND.ypts(n).LE.ymax) THEN
                    +
                    425  nret=nret+1
                    +
                    426  IF(lrot) CALL rot_equid_cylind_vect_rot(rlon(n), clatr, slatr, &
                    +
                    427  clat, slat, clon, crot(n), srot(n))
                    +
                    428  IF(lmap) CALL rot_equid_cylind_map_jacob(fill, rlon(n), clatr, &
                    +
                    429  clat, slat, clon, xlon(n), xlat(n), ylon(n), ylat(n))
                    +
                    430  IF(larea) CALL rot_equid_cylind_grid_area(clatr, fill, area(n))
                    +
                    431  ELSE
                    +
                    432  xpts(n)=fill
                    +
                    433  ypts(n)=fill
                    +
                    434  ENDIF
                    +
                    435  ELSE
                    +
                    436  xpts(n)=fill
                    +
                    437  ypts(n)=fill
                    +
                    438  ENDIF
                    +
                    439  ENDDO
                    +
                    440  !$OMP END PARALLEL DO
                    +
                    441  ENDIF
                    +
                    442  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    443  END SUBROUTINE gdswzd_rot_equid_cylind
                    +
                    444 
                    +
                    462  SUBROUTINE rot_equid_cylind_error(IOPT,FILL,RLAT,RLON,XPTS,YPTS,NPTS)
                    +
                    463  IMPLICIT NONE
                    +
                    464  !
                    +
                    465  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    466  !
                    +
                    467  REAL, INTENT(IN ) :: FILL
                    +
                    468  REAL, INTENT( OUT) :: RLAT(NPTS),RLON(NPTS)
                    +
                    469  REAL, INTENT( OUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    470  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    471  IF(iopt>=0) THEN
                    +
                    472  rlon=fill
                    +
                    473  rlat=fill
                    +
                    474  ENDIF
                    +
                    475  IF(iopt<=0) THEN
                    +
                    476  xpts=fill
                    +
                    477  ypts=fill
                    +
                    478  ENDIF
                    +
                    479  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    480  END SUBROUTINE rot_equid_cylind_error
                    +
                    481 
                    +
                    507  SUBROUTINE rot_equid_cylind_vect_rot(RLON, CLATR, SLATR, CLAT, SLAT, &
                    +
                    508  CLON, CROT, SROT)
                    +
                    509  IMPLICIT NONE
                    +
                    510 
                    +
                    511  REAL(KIND=kd), INTENT(IN ) :: clat, clatr, clon, slat, slatr
                    +
                    512  REAL , INTENT(IN ) :: RLON
                    +
                    513  REAL , INTENT( OUT) :: CROT, SROT
                    +
                    514 
                    +
                    515  REAL(KIND=kd) :: slon
                    +
                    516 
                    +
                    517  IF(irot.EQ.1) THEN
                    +
                    518  IF(clatr.LE.0._kd) THEN
                    +
                    519  crot=real(-sign(1._kd,slatr*slat0))
                    +
                    520  srot=0.
                    +
                    521  ELSE
                    +
                    522  slon=sin((rlon-rlon0)/dpr)
                    +
                    523  crot=real((clat0*clat+slat0*slat*clon)/clatr)
                    +
                    524  srot=real(slat0*slon/clatr)
                    +
                    525  ENDIF
                    +
                    526  ELSE
                    +
                    527  crot=1.
                    +
                    528  srot=0.
                    +
                    529  ENDIF
                    +
                    530 
                    +
                    531  END SUBROUTINE rot_equid_cylind_vect_rot
                    +
                    532 
                    +
                    558  SUBROUTINE rot_equid_cylind_map_jacob(FILL, RLON, CLATR, CLAT, &
                    +
                    559  SLAT, CLON, XLON, XLAT, YLON, YLAT)
                    +
                    560  IMPLICIT NONE
                    +
                    561 
                    +
                    562  REAL(KIND=kd), INTENT(IN ) :: clatr, clat, slat, clon
                    +
                    563  REAL , INTENT(IN ) :: FILL, RLON
                    +
                    564  REAL , INTENT( OUT) :: XLON, XLAT, YLON, YLAT
                    +
                    565 
                    +
                    566  REAL(KIND=kd) :: slon, term1, term2
                    +
                    567 
                    +
                    568  IF(clatr.LE.0._kd) THEN
                    +
                    569  xlon=fill
                    +
                    570  xlat=fill
                    +
                    571  ylon=fill
                    +
                    572  ylat=fill
                    +
                    573  ELSE
                    +
                    574  slon=sin((rlon-rlon0)/dpr)
                    +
                    575  term1=(clat0*clat+slat0*slat*clon)/clatr
                    +
                    576  term2=slat0*slon/clatr
                    +
                    577  xlon=real(term1*clat/(dlons*clatr))
                    +
                    578  xlat=real(-term2/(dlons*clatr))
                    +
                    579  ylon=real(term2*clat/dlats)
                    +
                    580  ylat=real(term1/dlats)
                    +
                    581  ENDIF
                    +
                    582 
                    +
                    583  END SUBROUTINE rot_equid_cylind_map_jacob
                    +
                    584 
                    +
                    603  SUBROUTINE rot_equid_cylind_grid_area(CLATR, FILL, AREA)
                    +
                    604  IMPLICIT NONE
                    +
                    605 
                    +
                    606  REAL(KIND=kd), INTENT(IN ) :: clatr
                    +
                    607  REAL, INTENT(IN ) :: FILL
                    +
                    608  REAL, INTENT( OUT) :: AREA
                    +
                    609 
                    +
                    610  IF(clatr.LE.0._kd) THEN
                    +
                    611  area=fill
                    +
                    612  ELSE
                    +
                    613  area=real(2._kd*(rerth**2)*clatr*(dlons/dpr)*sin(0.5_kd*dlats/dpr))
                    +
                    614  ENDIF
                    +
                    615 
                    +
                    616  END SUBROUTINE rot_equid_cylind_grid_area
                    +
                    617 
                    + +
                    619 
                    +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    Determine earth radius and shape.
                    +
                    Module containing common constants.
                    +
                    real, parameter pi
                    PI.
                    +
                    real, parameter dpr
                    Radians to degrees.
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A ...
                    +
                    subroutine rot_equid_cylind_error(IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS)
                    Error handler.
                    +
                    subroutine rot_equid_cylind_vect_rot(RLON, CLATR, SLATR, CLAT, SLAT, CLON, CROT, SROT)
                    Vector rotation fields for rotated equidistant cylindrical grids - non "e" stagger.
                    +
                    subroutine gdswzd_rot_equid_cylind(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    GDS wizard for rotated equidistant cylindrical.
                    +
                    real(kind=kd) rlon0
                    Local copy of rlon0.
                    +
                    real(kind=kd) slat0
                    Local copy of slat0.
                    +
                    subroutine rot_equid_cylind_map_jacob(FILL, RLON, CLATR, CLAT, SLAT, CLON, XLON, XLAT, YLON, YLAT)
                    Map jacobians for rotated equidistant cylindrical grids - non "e" stagger.
                    +
                    real(kind=kd) dlons
                    Local copy of dlons.
                    +
                    real(kind=kd) dlats
                    Local copy of dlats.
                    + +
                    subroutine init_grib1(self, g1_desc)
                    Initializes a Rotated equidistant cylindrical grid given a grib1_descriptor object.
                    +
                    subroutine rot_equid_cylind_grid_area(CLATR, FILL, AREA)
                    Grid box area for rotated equidistant cylindrical grids - non "e" stagger.
                    +
                    subroutine init_grib2(self, g2_desc)
                    Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object.
                    +
                    real(kind=kd) rerth
                    Radius of the Earth.
                    +
                    integer, parameter kd
                    Fortran kind for reals.
                    +
                    real(kind=kd) clat0
                    Local copy of clat0.
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    + +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__station__points__grid__mod_8F90.html b/ver-5.0.0/ip__station__points__grid__mod_8F90.html new file mode 100644 index 00000000..ad12d23e --- /dev/null +++ b/ver-5.0.0/ip__station__points__grid__mod_8F90.html @@ -0,0 +1,138 @@ + + + + + + + +NCEPLIBS-ip: ip_station_points_grid_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_station_points_grid_mod.F90 File Reference
                    +
                    +
                    + +

                    Interpolate gridded data to a series of station points. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    type  ip_station_points_grid_mod::ip_station_points_grid
                     
                    + + + + +

                    +Modules

                    module  ip_station_points_grid_mod
                     Interpolate gridded data to a series of station points.
                     
                    + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine ip_station_points_grid_mod::gdswzd_station_points (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Interpolate gridded data to a series of station points. More...
                     
                    subroutine ip_station_points_grid_mod::init_grib1 (self, g1_desc)
                     Initializes an IP Station grid given a grib1_descriptor object. More...
                     
                    subroutine ip_station_points_grid_mod::init_grib2 (self, g2_desc)
                     Initializes an IP Station grid given a grib2_descriptor object. More...
                     
                    +

                    Detailed Description

                    +

                    Interpolate gridded data to a series of station points.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    7/21/21
                    + +

                    Definition in file ip_station_points_grid_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ip__station__points__grid__mod_8F90.js b/ver-5.0.0/ip__station__points__grid__mod_8F90.js new file mode 100644 index 00000000..f83de141 --- /dev/null +++ b/ver-5.0.0/ip__station__points__grid__mod_8F90.js @@ -0,0 +1,7 @@ +var ip__station__points__grid__mod_8F90 = +[ + [ "ip_station_points_grid", "structip__station__points__grid__mod_1_1ip__station__points__grid.html", "structip__station__points__grid__mod_1_1ip__station__points__grid" ], + [ "gdswzd_station_points", "ip__station__points__grid__mod_8F90.html#a8da297b45242279a497dbd7062a33197", null ], + [ "init_grib1", "ip__station__points__grid__mod_8F90.html#a4b28ebf2b4fe826c96af69db28e0a1ff", null ], + [ "init_grib2", "ip__station__points__grid__mod_8F90.html#ad17e6d245295803b62b146be984f874d", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ip__station__points__grid__mod_8F90_source.html b/ver-5.0.0/ip__station__points__grid__mod_8F90_source.html new file mode 100644 index 00000000..ef0c2cbc --- /dev/null +++ b/ver-5.0.0/ip__station__points__grid__mod_8F90_source.html @@ -0,0 +1,160 @@ + + + + + + + +NCEPLIBS-ip: ip_station_points_grid_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_station_points_grid_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    + + +
                    11  use ip_grid_mod
                    +
                    12  implicit none
                    +
                    13 
                    +
                    14  ! Not really a grid
                    +
                    15  private
                    +
                    16  public :: ip_station_points_grid
                    +
                    17 
                    +
                    18  type, extends(ip_grid) :: ip_station_points_grid
                    +
                    19  contains
                    +
                    21  procedure :: init_grib1
                    +
                    23  procedure :: init_grib2
                    +
                    26  procedure :: gdswzd => gdswzd_station_points
                    +
                    27  end type ip_station_points_grid
                    +
                    28 
                    +
                    29 contains
                    +
                    30 
                    +
                    37  subroutine init_grib1(self, g1_desc)
                    +
                    38  class(ip_station_points_grid), intent(inout) :: self
                    +
                    39  type(grib1_descriptor), intent(in) :: g1_desc
                    +
                    40  end subroutine init_grib1
                    +
                    41 
                    +
                    48  subroutine init_grib2(self, g2_desc)
                    +
                    49  class(ip_station_points_grid), intent(inout) :: self
                    +
                    50  type(grib2_descriptor), intent(in) :: g2_desc
                    +
                    51  end subroutine init_grib2
                    +
                    52 
                    +
                    75  SUBROUTINE gdswzd_station_points(self,IOPT,NPTS, &
                    +
                    76  FILL,XPTS,YPTS,RLON,RLAT,NRET, &
                    +
                    77  CROT,SROT,XLON,XLAT,YLON,YLAT,AREA)
                    +
                    78  class(ip_station_points_grid), intent(in) :: self
                    +
                    79  INTEGER, INTENT(IN ) :: IOPT, NPTS
                    +
                    80  INTEGER, INTENT( OUT) :: NRET
                    +
                    81  !
                    +
                    82  REAL, INTENT(IN ) :: FILL
                    +
                    83  REAL, INTENT(INOUT) :: RLON(NPTS),RLAT(NPTS)
                    +
                    84  REAL, INTENT(INOUT) :: XPTS(NPTS),YPTS(NPTS)
                    +
                    85  REAL, OPTIONAL, INTENT( OUT) :: CROT(NPTS),SROT(NPTS)
                    +
                    86  REAL, OPTIONAL, INTENT( OUT) :: XLON(NPTS),XLAT(NPTS)
                    +
                    87  REAL, OPTIONAL, INTENT( OUT) :: YLON(NPTS),YLAT(NPTS),AREA(NPTS)
                    +
                    88 
                    +
                    89  ! This is all that needs to be done for GDSWZD for station points.
                    +
                    90  nret = npts
                    +
                    91 
                    +
                    92  end subroutine gdswzd_station_points
                    +
                    93 
                    + +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    Interpolate gridded data to a series of station points.
                    +
                    subroutine init_grib1(self, g1_desc)
                    Initializes an IP Station grid given a grib1_descriptor object.
                    +
                    subroutine gdswzd_station_points(self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                    Interpolate gridded data to a series of station points.
                    +
                    subroutine init_grib2(self, g2_desc)
                    Initializes an IP Station grid given a grib2_descriptor object.
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Grib-2 descriptor containing a grib2 GDT represented by an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    + +
                    +
                    + + + + diff --git a/ver-5.0.0/iplib__4_8h.html b/ver-5.0.0/iplib__4_8h.html new file mode 100644 index 00000000..58af23f7 --- /dev/null +++ b/ver-5.0.0/iplib__4_8h.html @@ -0,0 +1,516 @@ + + + + + + + +NCEPLIBS-ip: iplib_4.h File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    iplib_4.h File Reference
                    +
                    +
                    + +

                    C interface to gdswzd() and gdswzd_grib1() functions for '4' library build. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + + + + +

                    +Functions

                    void gdswzd (int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                     gdswzd() interface for C for _4 build of library. More...
                     
                    void gdswzd_grib1 (int *kgds, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                     gdswzd_grib1() interface for C for the _4 build of the library. More...
                     
                    +

                    Detailed Description

                    +

                    C interface to gdswzd() and gdswzd_grib1() functions for '4' library build.

                    +
                    Author
                    Jovic
                    +
                    Date
                    2016
                    + +

                    Definition in file iplib_4.h.

                    +

                    Function Documentation

                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    void gdswzd (int igdtnum,
                    int * igdtmpl,
                    int igdtlen,
                    int iopt,
                    int npts,
                    float fill,
                    float * xpts,
                    float * ypts,
                    float * rlon,
                    float * rlat,
                    int * nret,
                    float * crot,
                    float * srot,
                    float * xlon,
                    float * xlat,
                    float * ylon,
                    float * ylat,
                    float * area 
                    )
                    +
                    + +

                    gdswzd() interface for C for _4 build of library.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + +
                    igdtnumgrid definition template number. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure.
                      +
                    • 00 equidistant cylindrical
                    • +
                    • 01 rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 mercator cyclindrical
                    • +
                    • 20 polar stereographic azimuthal
                    • +
                    • 30 lambert conformal conical
                    • +
                    • 40 gaussian equidistant cyclindrical
                    • +
                    +
                    igdtmpl(igdtlen) grid definition template array. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure for section three. all projections:
                      +
                    • 1 shape of earth, octet 15
                    • +
                    • 2 scale factor of spherical earth radius, octet 16
                    • +
                    • 3 scaled value of radius of spherical earth, octets 17-20
                    • +
                    • 4 scale factor of major axis of elliptical earth, octet 21
                    • +
                    • 5 scaled value of major axis of elliptical earth, octets 22-25
                    • +
                    • 6 scale factor of minor axis of elliptical earth, octet 26
                    • +
                    • 7 scaled value of minor axis of elliptical earth, octets 27-30 equidistant cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42.
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72 mercator cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 latitude of first point, octets 39-42
                    • +
                    • 11 longitude of first point, octets 43-46
                    • +
                    • 12 resolution and component flags, octet 47
                    • +
                    • 13 tangent latitude, octets 48-51
                    • +
                    • 14 latitude of last point, octets 52-55
                    • +
                    • 15 longitude of last point, octets 56-59
                    • +
                    • 16 scanning mode flags, octet 60
                    • +
                    • 17 orientation of grid, octets 61-64
                    • +
                    • 18 longitudinal grid length, octets 65-68
                    • +
                    • 19 latitudinal grid length, octets 69-72 Lambert conformal conical:
                    • +
                    • 8 number of points along x-axis, octs 31-34
                    • +
                    • 9 number of points along y-axis, octs 35-38
                    • +
                    • 10 latitude of first point, octets 39-42
                    • +
                    • 11 longitude of first point, octets 43-46
                    • +
                    • 12 resolution of component flag, octet 47
                    • +
                    • 13 latitude where grid lengths specified, octets 48-51
                    • +
                    • 14 longitude of meridian that is parallel to y-axis, octets 52-55
                    • +
                    • 15 x-direction grid length, octets 56-59
                    • +
                    • 16 y-direction grid length, octets 60-63
                    • +
                    • 17 projection center flag, octet 64
                    • +
                    • 18 scanning mode, octet 65
                    • +
                    • 19 first tangent latitude from pole, octets 66-69
                    • +
                    • 20 second tangent latitude from pole, octets 70-73
                    • +
                    • 21 latitude of south pole of projection, octets 74-77
                    • +
                    • 22 longitude of south pole of projection, octets 78-81 gaussian cylindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 number of parallels between pole and equator, octets 68-71
                    • +
                    • 19 scanning mode, octet 72 polar stereographic azimuthal:
                    • +
                    • 8 number of points along x-axis, octets 31-34
                    • +
                    • 9 number of points along y-axis, octets 35-38
                    • +
                    • 10 latitude of first grid point, octets 39-42
                    • +
                    • 11 longitude of first grid point, octets 43-46
                    • +
                    • 12 resolution and component flags, octet 47
                    • +
                    • 13 true latitude, octets 48-51
                    • +
                    • 14 orientation longitude, octets 52-55
                    • +
                    • 15 x-direction grid length, octets 56-59
                    • +
                    • 16 y-direction grid length, octets 60-63
                    • +
                    • 17 projection center flag, octet 64
                    • +
                    • 18 scanning mode flags, octet 65 rotated equidistant cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72
                    • +
                    • 20 latitude of southern pole of projection, octets 73-76
                    • +
                    • 21 longitude of southern pole of projection, octets 77-80
                    • +
                    • 22 angle of rotation of projection, octs 81-84
                    • +
                    +
                    igdtlennumber of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    ioptoption flag
                      +
                    • 0 to compute earth coords of all the grid points
                    • +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    nptsinteger maximum number of coordinates
                    fillreal fill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    xptsreal (npts) grid x point coordinates if iopt>0
                    yptsreal (npts) grid y point coordinates if iopt>0
                    rlonreal (npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    rlatreal (npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    nretnumber of valid points computed (-1 if projection unrecognized)
                    crot(npts) clockwise vector rotation cosines
                    srot(npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth, vgrid=srot*uearth+crot*vearth)
                    xlon(npts) dx/dlon in 1/degrees
                    xlat(npts) dx/dlat in 1/degrees
                    ylon(npts) dy/dlon in 1/degrees
                    ylat(npts) dy/dlat in 1/degrees
                    area(npts) area weights in m**2 (Proportional to the square of the map factor in the case of conformal projections.)
                    +
                    +
                    +
                    Author
                    Jovic
                    +
                    Date
                    2016
                    + +
                    +
                    + +

                    ◆ gdswzd_grib1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    void gdswzd_grib1 (int * kgds,
                    int iopt,
                    int npts,
                    float fill,
                    float * xpts,
                    float * ypts,
                    float * rlon,
                    float * rlat,
                    int * nret,
                    float * crot,
                    float * srot,
                    float * xlon,
                    float * xlat,
                    float * ylon,
                    float * ylat,
                    float * area 
                    )
                    +
                    + +

                    gdswzd_grib1() interface for C for the _4 build of the library.

                    +

                    This is a C prototype to call the Fortran module subroutine gdswzd_c_grib1() for the _4 version of the library.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    kgds(200) gds parameters as decoded by w3fi63.
                    ioptoption flag
                      +
                    • 0 to compute earth coords of all the grid points
                    • +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    nptsmaximum number of coordinates
                    fillfill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    xpts(npts) grid x point coordinates if iopt>0
                    ypts(npts) grid y point coordinates if iopt>0
                    rlon(npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    rlat(npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    nretnumber of valid points computed (-1 if projection unrecognized)
                    crot(npts) clockwise vector rotation cosines
                    srot(npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    xlon(npts) dx/dlon in 1/degrees
                    xlat(npts) dx/dlat in 1/degrees
                    ylon(npts) dy/dlon in 1/degrees
                    ylat(npts) dy/dlat in 1/degrees
                    area(npts) area weights in m**2 (proportional to the square of the map factor in the case of conformal projections.)
                    +
                    +
                    +
                    Author
                    Jovic
                    +
                    Date
                    2016
                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/iplib__4_8h.js b/ver-5.0.0/iplib__4_8h.js new file mode 100644 index 00000000..a2de2916 --- /dev/null +++ b/ver-5.0.0/iplib__4_8h.js @@ -0,0 +1,5 @@ +var iplib__4_8h = +[ + [ "gdswzd", "iplib__4_8h.html#a44daefd49c37e9bc59933d98e56efa53", null ], + [ "gdswzd_grib1", "iplib__4_8h.html#a7f2f96041c0d42926e14cb0f40f336e1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/iplib__4_8h_source.html b/ver-5.0.0/iplib__4_8h_source.html new file mode 100644 index 00000000..278145c0 --- /dev/null +++ b/ver-5.0.0/iplib__4_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +NCEPLIBS-ip: iplib_4.h Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    iplib_4.h
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    7 #ifndef IPLIB
                    +
                    8 #define IPLIB
                    +
                    9 
                    +
                    146 void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt,
                    +
                    147  int npts, float fill, float *xpts, float *ypts,
                    +
                    148  float *rlon, float *rlat, int *nret,
                    +
                    149  float *crot, float *srot, float *xlon, float *xlat,
                    +
                    150  float *ylon, float *ylat, float *area);
                    +
                    151 
                    +
                    187 void gdswzd_grib1(int *kgds, int iopt, int npts, float fill,
                    +
                    188  float *xpts, float *ypts, float *rlon, float *rlat,
                    +
                    189  int *nret, float *crot, float *srot,
                    +
                    190  float *xlon, float *xlat, float *ylon, float *ylat, float *area);
                    +
                    191 
                    +
                    192 #endif
                    +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    void gdswzd_grib1(int *kgds, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd_grib1() interface for C for the _4 build of the library.
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/iplib__8_8h.html b/ver-5.0.0/iplib__8_8h.html new file mode 100644 index 00000000..d14eee2d --- /dev/null +++ b/ver-5.0.0/iplib__8_8h.html @@ -0,0 +1,516 @@ + + + + + + + +NCEPLIBS-ip: iplib_8.h File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    iplib_8.h File Reference
                    +
                    +
                    + +

                    C interface to gdswzd() and gdswzd_grib1() functions for '8' library build. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + + + + +

                    +Functions

                    void gdswzd (long igdtnum, long *igdtmpl, long igdtlen, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area)
                     gdswzd() interface for C for _8 build of library. More...
                     
                    void gdswzd_grib1 (long *kgds, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area)
                     gdswzd_grib1() interface for C for _8 build of the library. More...
                     
                    +

                    Detailed Description

                    +

                    C interface to gdswzd() and gdswzd_grib1() functions for '8' library build.

                    +
                    Author
                    Jovic
                    +
                    Date
                    2016
                    + +

                    Definition in file iplib_8.h.

                    +

                    Function Documentation

                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    void gdswzd (long igdtnum,
                    long * igdtmpl,
                    long igdtlen,
                    long iopt,
                    long npts,
                    double fill,
                    double * xpts,
                    double * ypts,
                    double * rlon,
                    double * rlat,
                    long * nret,
                    double * crot,
                    double * srot,
                    double * xlon,
                    double * xlat,
                    double * ylon,
                    double * ylat,
                    double * area 
                    )
                    +
                    + +

                    gdswzd() interface for C for _8 build of library.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + +
                    igdtnumgrid definition template number. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure.
                      +
                    • 00 equidistant cylindrical
                    • +
                    • 01 rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 mercator cyclindrical
                    • +
                    • 20 polar stereographic azimuthal
                    • +
                    • 30 lambert conformal conical
                    • +
                    • 40 gaussian equidistant cyclindrical
                    • +
                    +
                    igdtmpl(igdtlen) grid definition template array. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure for section three. all projections:
                      +
                    • 1 shape of earth, octet 15
                    • +
                    • 2 scale factor of spherical earth radius, octet 16
                    • +
                    • 3 scaled value of radius of spherical earth, octets 17-20
                    • +
                    • 4 scale factor of major axis of elliptical earth, octet 21
                    • +
                    • 5 scaled value of major axis of elliptical earth, octets 22-25
                    • +
                    • 6 scale factor of minor axis of elliptical earth, octet 26
                    • +
                    • 7 scaled value of minor axis of elliptical earth, octets 27-30 equidistant cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42.
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72 mercator cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 latitude of first point, octets 39-42
                    • +
                    • 11 longitude of first point, octets 43-46
                    • +
                    • 12 resolution and component flags, octet 47
                    • +
                    • 13 tangent latitude, octets 48-51
                    • +
                    • 14 latitude of last point, octets 52-55
                    • +
                    • 15 longitude of last point, octets 56-59
                    • +
                    • 16 scanning mode flags, octet 60
                    • +
                    • 17 orientation of grid, octets 61-64
                    • +
                    • 18 longitudinal grid length, octets 65-68
                    • +
                    • 19 latitudinal grid length, octets 69-72 Lambert conformal conical:
                    • +
                    • 8 number of points along x-axis, octs 31-34
                    • +
                    • 9 number of points along y-axis, octs 35-38
                    • +
                    • 10 latitude of first point, octets 39-42
                    • +
                    • 11 longitude of first point, octets 43-46
                    • +
                    • 12 resolution of component flag, octet 47
                    • +
                    • 13 latitude where grid lengths specified, octets 48-51
                    • +
                    • 14 longitude of meridian that is parallel to y-axis, octets 52-55
                    • +
                    • 15 x-direction grid length, octets 56-59
                    • +
                    • 16 y-direction grid length, octets 60-63
                    • +
                    • 17 projection center flag, octet 64
                    • +
                    • 18 scanning mode, octet 65
                    • +
                    • 19 first tangent latitude from pole, octets 66-69
                    • +
                    • 20 second tangent latitude from pole, octets 70-73
                    • +
                    • 21 latitude of south pole of projection, octets 74-77
                    • +
                    • 22 longitude of south pole of projection, octets 78-81 gaussian cylindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 number of parallels between pole and equator, octets 68-71
                    • +
                    • 19 scanning mode, octet 72 polar stereographic azimuthal:
                    • +
                    • 8 number of points along x-axis, octets 31-34
                    • +
                    • 9 number of points along y-axis, octets 35-38
                    • +
                    • 10 latitude of first grid point, octets 39-42
                    • +
                    • 11 longitude of first grid point, octets 43-46
                    • +
                    • 12 resolution and component flags, octet 47
                    • +
                    • 13 true latitude, octets 48-51
                    • +
                    • 14 orientation longitude, octets 52-55
                    • +
                    • 15 x-direction grid length, octets 56-59
                    • +
                    • 16 y-direction grid length, octets 60-63
                    • +
                    • 17 projection center flag, octet 64
                    • +
                    • 18 scanning mode flags, octet 65 rotated equidistant cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72
                    • +
                    • 20 latitude of southern pole of projection, octets 73-76
                    • +
                    • 21 longitude of southern pole of projection, octets 77-80
                    • +
                    • 22 angle of rotation of projection, octs 81-84
                    • +
                    +
                    igdtlennumber of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    ioptoption flag
                      +
                    • 0 to compute earth coords of all the grid points
                    • +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    nptsinteger maximum number of coordinates
                    fillreal fill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    xptsreal (npts) grid x point coordinates if iopt>0
                    yptsreal (npts) grid y point coordinates if iopt>0
                    rlonreal (npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    rlatreal (npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    nretnumber of valid points computed (-1 if projection unrecognized)
                    crot(npts) clockwise vector rotation cosines
                    srot(npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth, vgrid=srot*uearth+crot*vearth)
                    xlon(npts) dx/dlon in 1/degrees
                    xlat(npts) dx/dlat in 1/degrees
                    ylon(npts) dy/dlon in 1/degrees
                    ylat(npts) dy/dlat in 1/degrees
                    area(npts) area weights in m**2 (Proportional to the square of the map factor in the case of conformal projections.)
                    +
                    +
                    +
                    Author
                    Jovic
                    +
                    Date
                    2016
                    + +
                    +
                    + +

                    ◆ gdswzd_grib1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    void gdswzd_grib1 (long * kgds,
                    long iopt,
                    long npts,
                    double fill,
                    double * xpts,
                    double * ypts,
                    double * rlon,
                    double * rlat,
                    long * nret,
                    double * crot,
                    double * srot,
                    double * xlon,
                    double * xlat,
                    double * ylon,
                    double * ylat,
                    double * area 
                    )
                    +
                    + +

                    gdswzd_grib1() interface for C for _8 build of the library.

                    +

                    This is a C prototype to call the Fortran module subroutine gdswzd_c_grib1() for the _4 version of the library.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    kgds(200) gds parameters as decoded by w3fi63.
                    ioptoption flag
                      +
                    • 0 to compute earth coords of all the grid points
                    • +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    nptsmaximum number of coordinates
                    fillfill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    xpts(npts) grid x point coordinates if iopt>0
                    ypts(npts) grid y point coordinates if iopt>0
                    rlon(npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    rlat(npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    nretnumber of valid points computed (-1 if projection unrecognized)
                    crot(npts) clockwise vector rotation cosines
                    srot(npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    xlon(npts) dx/dlon in 1/degrees
                    xlat(npts) dx/dlat in 1/degrees
                    ylon(npts) dy/dlon in 1/degrees
                    ylat(npts) dy/dlat in 1/degrees
                    area(npts) area weights in m**2 (proportional to the square of the map factor in the case of conformal projections.)
                    +
                    +
                    +
                    Author
                    Jovic
                    +
                    Date
                    2016
                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/iplib__8_8h.js b/ver-5.0.0/iplib__8_8h.js new file mode 100644 index 00000000..8ec13f88 --- /dev/null +++ b/ver-5.0.0/iplib__8_8h.js @@ -0,0 +1,5 @@ +var iplib__8_8h = +[ + [ "gdswzd", "iplib__8_8h.html#af41ad9a4b34f78d182a68b3d72b9bdf4", null ], + [ "gdswzd_grib1", "iplib__8_8h.html#ab8e46b623c66911913f66d314c15cc93", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/iplib__8_8h_source.html b/ver-5.0.0/iplib__8_8h_source.html new file mode 100644 index 00000000..b4d07ab7 --- /dev/null +++ b/ver-5.0.0/iplib__8_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +NCEPLIBS-ip: iplib_8.h Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    iplib_8.h
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    7 #ifndef IPLIB
                    +
                    8 #define IPLIB
                    +
                    9 
                    +
                    146 void gdswzd(long igdtnum, long *igdtmpl, long igdtlen, long iopt,
                    +
                    147  long npts, double fill, double *xpts, double *ypts,
                    +
                    148  double *rlon, double *rlat, long *nret,
                    +
                    149  double *crot, double *srot, double *xlon, double *xlat,
                    +
                    150  double *ylon, double *ylat, double *area);
                    +
                    151 
                    +
                    187 void gdswzd_grib1(long *kgds, long iopt, long npts, double fill,
                    +
                    188  double *xpts, double *ypts, double *rlon, double *rlat,
                    +
                    189  long *nret, double *crot, double *srot,
                    +
                    190  double *xlon, double *xlat, double *ylon, double *ylat, double *area);
                    +
                    191 #endif
                    +
                    void gdswzd_grib1(long *kgds, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area)
                    gdswzd_grib1() interface for C for _8 build of the library.
                    +
                    void gdswzd(long igdtnum, long *igdtmpl, long igdtlen, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area)
                    gdswzd() interface for C for _8 build of library.
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/iplib__d_8h.html b/ver-5.0.0/iplib__d_8h.html new file mode 100644 index 00000000..dc296043 --- /dev/null +++ b/ver-5.0.0/iplib__d_8h.html @@ -0,0 +1,516 @@ + + + + + + + +NCEPLIBS-ip: iplib_d.h File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    iplib_d.h File Reference
                    +
                    +
                    + +

                    C interface to gdswzd() and gdswzd_grib1() functions for 'd' library build. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + + + + +

                    +Functions

                    void gdswzd (int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area)
                     gdswzd() interface for C for _d build of library. More...
                     
                    void gdswzd_grib1 (int *kgds, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area)
                     gdswzd_grib1() interface for C for _d build of the library. More...
                     
                    +

                    Detailed Description

                    +

                    C interface to gdswzd() and gdswzd_grib1() functions for 'd' library build.

                    +
                    Author
                    Jovic
                    +
                    Date
                    2016
                    + +

                    Definition in file iplib_d.h.

                    +

                    Function Documentation

                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    void gdswzd (int igdtnum,
                    int * igdtmpl,
                    int igdtlen,
                    int iopt,
                    int npts,
                    double fill,
                    double * xpts,
                    double * ypts,
                    double * rlon,
                    double * rlat,
                    int * nret,
                    double * crot,
                    double * srot,
                    double * xlon,
                    double * xlat,
                    double * ylon,
                    double * ylat,
                    double * area 
                    )
                    +
                    + +

                    gdswzd() interface for C for _d build of library.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + +
                    igdtnumgrid definition template number. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure.
                      +
                    • 00 equidistant cylindrical
                    • +
                    • 01 rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 mercator cyclindrical
                    • +
                    • 20 polar stereographic azimuthal
                    • +
                    • 30 lambert conformal conical
                    • +
                    • 40 gaussian equidistant cyclindrical
                    • +
                    +
                    igdtmpl(igdtlen) grid definition template array. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure for section three. all projections:
                      +
                    • 1 shape of earth, octet 15
                    • +
                    • 2 scale factor of spherical earth radius, octet 16
                    • +
                    • 3 scaled value of radius of spherical earth, octets 17-20
                    • +
                    • 4 scale factor of major axis of elliptical earth, octet 21
                    • +
                    • 5 scaled value of major axis of elliptical earth, octets 22-25
                    • +
                    • 6 scale factor of minor axis of elliptical earth, octet 26
                    • +
                    • 7 scaled value of minor axis of elliptical earth, octets 27-30 equidistant cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42.
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72 mercator cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 latitude of first point, octets 39-42
                    • +
                    • 11 longitude of first point, octets 43-46
                    • +
                    • 12 resolution and component flags, octet 47
                    • +
                    • 13 tangent latitude, octets 48-51
                    • +
                    • 14 latitude of last point, octets 52-55
                    • +
                    • 15 longitude of last point, octets 56-59
                    • +
                    • 16 scanning mode flags, octet 60
                    • +
                    • 17 orientation of grid, octets 61-64
                    • +
                    • 18 longitudinal grid length, octets 65-68
                    • +
                    • 19 latitudinal grid length, octets 69-72 Lambert conformal conical:
                    • +
                    • 8 number of points along x-axis, octs 31-34
                    • +
                    • 9 number of points along y-axis, octs 35-38
                    • +
                    • 10 latitude of first point, octets 39-42
                    • +
                    • 11 longitude of first point, octets 43-46
                    • +
                    • 12 resolution of component flag, octet 47
                    • +
                    • 13 latitude where grid lengths specified, octets 48-51
                    • +
                    • 14 longitude of meridian that is parallel to y-axis, octets 52-55
                    • +
                    • 15 x-direction grid length, octets 56-59
                    • +
                    • 16 y-direction grid length, octets 60-63
                    • +
                    • 17 projection center flag, octet 64
                    • +
                    • 18 scanning mode, octet 65
                    • +
                    • 19 first tangent latitude from pole, octets 66-69
                    • +
                    • 20 second tangent latitude from pole, octets 70-73
                    • +
                    • 21 latitude of south pole of projection, octets 74-77
                    • +
                    • 22 longitude of south pole of projection, octets 78-81 gaussian cylindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 number of parallels between pole and equator, octets 68-71
                    • +
                    • 19 scanning mode, octet 72 polar stereographic azimuthal:
                    • +
                    • 8 number of points along x-axis, octets 31-34
                    • +
                    • 9 number of points along y-axis, octets 35-38
                    • +
                    • 10 latitude of first grid point, octets 39-42
                    • +
                    • 11 longitude of first grid point, octets 43-46
                    • +
                    • 12 resolution and component flags, octet 47
                    • +
                    • 13 true latitude, octets 48-51
                    • +
                    • 14 orientation longitude, octets 52-55
                    • +
                    • 15 x-direction grid length, octets 56-59
                    • +
                    • 16 y-direction grid length, octets 60-63
                    • +
                    • 17 projection center flag, octet 64
                    • +
                    • 18 scanning mode flags, octet 65 rotated equidistant cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72
                    • +
                    • 20 latitude of southern pole of projection, octets 73-76
                    • +
                    • 21 longitude of southern pole of projection, octets 77-80
                    • +
                    • 22 angle of rotation of projection, octs 81-84
                    • +
                    +
                    igdtlennumber of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    ioptoption flag
                      +
                    • 0 to compute earth coords of all the grid points
                    • +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    nptsinteger maximum number of coordinates
                    fillreal fill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    xptsreal (npts) grid x point coordinates if iopt>0
                    yptsreal (npts) grid y point coordinates if iopt>0
                    rlonreal (npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    rlatreal (npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    nretnumber of valid points computed (-1 if projection unrecognized)
                    crot(npts) clockwise vector rotation cosines
                    srot(npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth, vgrid=srot*uearth+crot*vearth)
                    xlon(npts) dx/dlon in 1/degrees
                    xlat(npts) dx/dlat in 1/degrees
                    ylon(npts) dy/dlon in 1/degrees
                    ylat(npts) dy/dlat in 1/degrees
                    area(npts) area weights in m**2 (Proportional to the square of the map factor in the case of conformal projections.)
                    +
                    +
                    +
                    Author
                    Jovic
                    +
                    Date
                    2016
                    + +
                    +
                    + +

                    ◆ gdswzd_grib1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    void gdswzd_grib1 (int * kgds,
                    int iopt,
                    int npts,
                    double fill,
                    double * xpts,
                    double * ypts,
                    double * rlon,
                    double * rlat,
                    int * nret,
                    double * crot,
                    double * srot,
                    double * xlon,
                    double * xlat,
                    double * ylon,
                    double * ylat,
                    double * area 
                    )
                    +
                    + +

                    gdswzd_grib1() interface for C for _d build of the library.

                    +

                    This is a C prototype to call the Fortran module subroutine gdswzd_c_grib1() for the _4 version of the library.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    kgds(200) gds parameters as decoded by w3fi63.
                    ioptoption flag
                      +
                    • 0 to compute earth coords of all the grid points
                    • +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    nptsmaximum number of coordinates
                    fillfill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    xpts(npts) grid x point coordinates if iopt>0
                    ypts(npts) grid y point coordinates if iopt>0
                    rlon(npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    rlat(npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    nretnumber of valid points computed (-1 if projection unrecognized)
                    crot(npts) clockwise vector rotation cosines
                    srot(npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    xlon(npts) dx/dlon in 1/degrees
                    xlat(npts) dx/dlat in 1/degrees
                    ylon(npts) dy/dlon in 1/degrees
                    ylat(npts) dy/dlat in 1/degrees
                    area(npts) area weights in m**2 (proportional to the square of the map factor in the case of conformal projections.)
                    +
                    +
                    +
                    Author
                    Jovic
                    +
                    Date
                    2016
                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/iplib__d_8h.js b/ver-5.0.0/iplib__d_8h.js new file mode 100644 index 00000000..3bc76200 --- /dev/null +++ b/ver-5.0.0/iplib__d_8h.js @@ -0,0 +1,5 @@ +var iplib__d_8h = +[ + [ "gdswzd", "iplib__d_8h.html#ac919f31612096fd6a7547a425ab3d38e", null ], + [ "gdswzd_grib1", "iplib__d_8h.html#ac33340cba2ac7b42dd9b9116fc28d691", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/iplib__d_8h_source.html b/ver-5.0.0/iplib__d_8h_source.html new file mode 100644 index 00000000..3e38e29c --- /dev/null +++ b/ver-5.0.0/iplib__d_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +NCEPLIBS-ip: iplib_d.h Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    iplib_d.h
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    7 #ifndef IPLIB
                    +
                    8 #define IPLIB
                    +
                    9 
                    +
                    146 void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt,
                    +
                    147  int npts, double fill, double *xpts, double *ypts,
                    +
                    148  double *rlon, double *rlat, int *nret,
                    +
                    149  double *crot, double *srot, double *xlon, double *xlat,
                    +
                    150  double *ylon, double *ylat, double *area);
                    +
                    151 
                    +
                    187 void gdswzd_grib1(int *kgds, int iopt, int npts, double fill,
                    +
                    188  double *xpts, double *ypts, double *rlon, double *rlat,
                    +
                    189  int *nret, double *crot, double *srot,
                    +
                    190  double *xlon, double *xlat, double *ylon, double *ylat, double *area);
                    +
                    191 #endif
                    +
                    void gdswzd_grib1(int *kgds, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area)
                    gdswzd_grib1() interface for C for _d build of the library.
                    +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area)
                    gdswzd() interface for C for _d build of library.
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipolates_8F90.html b/ver-5.0.0/ipolates_8F90.html new file mode 100644 index 00000000..0f4ab20f --- /dev/null +++ b/ver-5.0.0/ipolates_8F90.html @@ -0,0 +1,143 @@ + + + + + + + +NCEPLIBS-ip: ipolates.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ipolates.F90 File Reference
                    +
                    +
                    + +

                    Top-level driver for scalar interpolation routine ipolates(). +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    interface  ipolates_mod::ipolates
                     
                    + + + + +

                    +Modules

                    module  ipolates_mod
                     Top-level driver for scalar interpolation interpolation routine ipolates().
                     
                    + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine, public ipolates_mod::ipolates_grib1 (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                     This subprogram interpolates scalar field from any grid to any grid given a grib1 Grid Descriptor Section. More...
                     
                    subroutine, public ipolates_mod::ipolates_grib1_single_field (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                     Special case of ipolates_grib1 when interpolating a single field. More...
                     
                    subroutine, public ipolates_mod::ipolates_grib2 (IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     This subprogram interpolates scalar field from any grid to any grid given a grib2 descriptor. More...
                     
                    subroutine, public ipolates_mod::ipolates_grib2_single_field (IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Special case of ipolates_grib2 when interpolating a single field. More...
                     
                    subroutine ipolates_mod::ipolates_grid (ip, ipopt, grid_in, grid_out, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                     Interpolates scalar fields between grids given ip_grid objects. More...
                     
                    +

                    Detailed Description

                    +

                    Top-level driver for scalar interpolation routine ipolates().

                    +
                    Author
                    Mark Iredell, Kyle Gerheiser
                    + +

                    Definition in file ipolates.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipolates_8F90.js b/ver-5.0.0/ipolates_8F90.js new file mode 100644 index 00000000..7387fc3c --- /dev/null +++ b/ver-5.0.0/ipolates_8F90.js @@ -0,0 +1,9 @@ +var ipolates_8F90 = +[ + [ "ipolates", "interfaceipolates__mod_1_1ipolates.html", "interfaceipolates__mod_1_1ipolates" ], + [ "ipolates_grib1", "ipolates_8F90.html#acb5408cf5c3a0f50326edc183f9bd269", null ], + [ "ipolates_grib1_single_field", "ipolates_8F90.html#ae70a9ca9871bb33e038782b036b7b53d", null ], + [ "ipolates_grib2", "ipolates_8F90.html#a6b2ea6d5b04d2a68baad261e7a409fac", null ], + [ "ipolates_grib2_single_field", "ipolates_8F90.html#a49541b2af75b7c037a863a4785726856", null ], + [ "ipolates_grid", "ipolates_8F90.html#a2761e20fab898e7fd9963f3e0eb5d104", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ipolates_8F90_source.html b/ver-5.0.0/ipolates_8F90_source.html new file mode 100644 index 00000000..dd9bbc25 --- /dev/null +++ b/ver-5.0.0/ipolates_8F90_source.html @@ -0,0 +1,398 @@ + + + + + + + +NCEPLIBS-ip: ipolates.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ipolates.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + + + + + +
                    17  use ip_grid_mod
                    +
                    18  implicit none
                    +
                    19 
                    +
                    20  private
                    + +
                    22 
                    +
                    23  interface ipolates
                    +
                    24  module procedure ipolates_grib1
                    +
                    25  module procedure ipolates_grib1_single_field
                    +
                    26  module procedure ipolates_grib2
                    +
                    27  module procedure ipolates_grib2_single_field
                    +
                    28  end interface ipolates
                    +
                    29 
                    +
                    30 contains
                    +
                    31 
                    +
                    63  subroutine ipolates_grid(ip, ipopt, grid_in, grid_out, mi, mo, km,&
                    +
                    64  & ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                    +
                    65  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    66  INTEGER, INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
                    +
                    67  INTEGER, INTENT(IN ) :: IBI(KM)
                    +
                    68  INTEGER, INTENT(INOUT) :: NO
                    +
                    69  INTEGER, INTENT( OUT) :: IRET, IBO(KM)
                    +
                    70  !
                    +
                    71  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    72  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    73  !
                    +
                    74  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    75  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    76  REAL, INTENT( OUT) :: GO(MO,KM)
                    +
                    77  !
                    +
                    78 
                    +
                    79  select case(ip)
                    +
                    80  case(bilinear_interp_id)
                    +
                    81  CALL interpolate_bilinear(ipopt,grid_in,grid_out,mi,mo,km,ibi&
                    +
                    82  &,li,gi,no,rlat,rlon,ibo,lo,go,iret)
                    +
                    83  case(bicubic_interp_id)
                    +
                    84  CALL interpolate_bicubic(ipopt,grid_in,grid_out,mi,mo,km,ibi&
                    +
                    85  &,li,gi,no,rlat,rlon,ibo,lo,go,iret)
                    +
                    86  case(neighbor_interp_id)
                    +
                    87  CALL interpolate_neighbor(ipopt,grid_in,grid_out,mi,mo,km,ibi&
                    +
                    88  &,li,gi,no,rlat,rlon,ibo,lo,go,iret)
                    +
                    89  case(budget_interp_id)
                    +
                    90  CALL interpolate_budget(ipopt,grid_in,grid_out,mi,mo,km,ibi,li&
                    +
                    91  &,gi,no,rlat,rlon,ibo,lo,go,iret)
                    +
                    92  case(spectral_interp_id)
                    +
                    93  CALL interpolate_spectral(ipopt,grid_in,grid_out,mi,mo,km,ibi&
                    +
                    94  &,gi,no,rlat,rlon,ibo,lo,go,iret)
                    + +
                    96  CALL interpolate_neighbor_budget(ipopt,grid_in,grid_out,mi,mo&
                    +
                    97  &,km,ibi,li,gi,no,rlat,rlon,ibo,lo,go,iret)
                    +
                    98  case default
                    +
                    99  ! IF(KGDSO(1).GE.0) NO=0
                    +
                    100  ! DO K=1,KM
                    +
                    101  ! IBO(K)=1
                    +
                    102  ! DO N=1,NO
                    +
                    103  ! LO(N,K)=.FALSE.
                    +
                    104  ! GO(N,K)=0.
                    +
                    105  ! ENDDO
                    +
                    106  ! ENDDO
                    +
                    107  iret=1
                    +
                    108  print *, "Unrecognized interp option: ", ip
                    +
                    109  error stop
                    +
                    110  end select
                    +
                    111 
                    +
                    112  end subroutine ipolates_grid
                    +
                    113 
                    +
                    158  subroutine ipolates_grib1_single_field(ip,ipopt,kgdsi,kgdso,mi,mo,km,ibi,li,gi, &
                    +
                    159  no,rlat,rlon,ibo,lo,go,iret) bind(c)
                    +
                    160  !
                    +
                    161  USE iso_c_binding, ONLY: c_int, c_float, c_double, c_bool, c_long
                    +
                    162 #if (LSIZE==8)
                    +
                    163  INTEGER(C_LONG), INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
                    +
                    164  INTEGER(C_LONG), INTENT(IN ) :: IBI, KGDSI(200), KGDSO(200)
                    +
                    165  INTEGER(C_LONG), INTENT(INOUT) :: NO
                    +
                    166  INTEGER(C_LONG), INTENT( OUT) :: IRET, IBO
                    +
                    167 #else
                    +
                    168  INTEGER(C_INT), INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
                    +
                    169  INTEGER(C_INT), INTENT(IN ) :: IBI, KGDSI(200), KGDSO(200)
                    +
                    170  INTEGER(C_INT), INTENT(INOUT) :: NO
                    +
                    171  INTEGER(C_INT), INTENT( OUT) :: IRET, IBO
                    +
                    172 #endif
                    +
                    173  !
                    +
                    174  LOGICAL(C_BOOL), INTENT(IN ) :: LI(MI)
                    +
                    175  LOGICAL(C_BOOL), INTENT( OUT) :: LO(MO)
                    +
                    176  !
                    +
                    177 #if (LSIZE==4)
                    +
                    178  REAL(C_FLOAT), INTENT(IN ) :: GI(MI)
                    +
                    179  REAL(C_FLOAT), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    180  REAL(C_FLOAT), INTENT( OUT) :: GO(MO)
                    +
                    181 #else
                    +
                    182  REAL(C_DOUBLE), INTENT(IN ) :: GI(MI)
                    +
                    183  REAL(C_DOUBLE), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    184  REAL(C_DOUBLE), INTENT( OUT) :: GO(MO)
                    +
                    185 #endif
                    +
                    186  !
                    +
                    187 
                    +
                    188  type(grib1_descriptor) :: desc_in, desc_out
                    +
                    189  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    190  integer :: ibo_array(1)
                    +
                    191 
                    +
                    192  desc_in = init_descriptor(kgdsi)
                    +
                    193  desc_out = init_descriptor(kgdso)
                    +
                    194 
                    +
                    195  call init_grid(grid_in, desc_in)
                    +
                    196  call init_grid(grid_out, desc_out)
                    +
                    197 
                    +
                    198  ! Can't pass expression (e.g. [ibo]) to intent(out) argument.
                    +
                    199  ! Initialize placeholder array of size 1 to make rank match.
                    +
                    200  ibo_array(1) = ibo
                    +
                    201 
                    +
                    202  call ipolates_grid(ip, ipopt, grid_in, grid_out, mi, mo, km, [ibi], li, gi, no, rlat, rlon, ibo_array, lo, go, iret)
                    +
                    203 
                    +
                    204  ibo = ibo_array(1)
                    +
                    205 
                    +
                    206  END SUBROUTINE ipolates_grib1_single_field
                    +
                    207 
                    +
                    293  subroutine ipolates_grib1(ip,ipopt,kgdsi,kgdso,mi,mo,km,ibi,li,gi, &
                    +
                    294  no,rlat,rlon,ibo,lo,go,iret) bind(c)
                    +
                    295  !
                    +
                    296  USE iso_c_binding, ONLY: c_int, c_float, c_double, c_bool, c_long
                    +
                    297 #if (LSIZE==8)
                    +
                    298  INTEGER(C_LONG), INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
                    +
                    299  INTEGER(C_LONG), INTENT(IN ) :: IBI(KM), KGDSI(200), KGDSO(200)
                    +
                    300  INTEGER(C_LONG), INTENT(INOUT) :: NO
                    +
                    301  INTEGER(C_LONG), INTENT( OUT) :: IRET, IBO(KM)
                    +
                    302 #else
                    +
                    303  INTEGER(C_INT), INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
                    +
                    304  INTEGER(C_INT), INTENT(IN ) :: IBI(KM), KGDSI(200), KGDSO(200)
                    +
                    305  INTEGER(C_INT), INTENT(INOUT) :: NO
                    +
                    306  INTEGER(C_INT), INTENT( OUT) :: IRET, IBO(KM)
                    +
                    307 #endif
                    +
                    308  !
                    +
                    309  LOGICAL(C_BOOL), INTENT(IN ) :: LI(MI,KM)
                    +
                    310  LOGICAL(C_BOOL), INTENT( OUT) :: LO(MO,KM)
                    +
                    311  !
                    +
                    312 #if (LSIZE==4)
                    +
                    313  REAL(C_FLOAT), INTENT(IN ) :: GI(MI,KM)
                    +
                    314  REAL(C_FLOAT), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    315  REAL(C_FLOAT), INTENT( OUT) :: GO(MO,KM)
                    +
                    316 #else
                    +
                    317  REAL(C_DOUBLE), INTENT(IN ) :: GI(MI,KM)
                    +
                    318  REAL(C_DOUBLE), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    319  REAL(C_DOUBLE), INTENT( OUT) :: GO(MO,KM)
                    +
                    320 #endif
                    +
                    321  !
                    +
                    322 
                    +
                    323  type(grib1_descriptor) :: desc_in, desc_out
                    +
                    324  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    325 
                    +
                    326  desc_in = init_descriptor(kgdsi)
                    +
                    327  desc_out = init_descriptor(kgdso)
                    +
                    328 
                    +
                    329  call init_grid(grid_in, desc_in)
                    +
                    330  call init_grid(grid_out, desc_out)
                    +
                    331 
                    +
                    332  call ipolates_grid(ip, ipopt, grid_in, grid_out, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                    +
                    333 
                    +
                    334  END SUBROUTINE ipolates_grib1
                    +
                    335 
                    +
                    587  SUBROUTINE ipolates_grib2(IP,IPOPT,IGDTNUMI,IGDTMPLI,IGDTLENI, &
                    +
                    588  IGDTNUMO,IGDTMPLO,IGDTLENO, &
                    +
                    589  MI,MO,KM,IBI,LI,GI, &
                    +
                    590  NO,RLAT,RLON,IBO,LO,GO,IRET) bind(C)
                    +
                    591  USE iso_c_binding, ONLY: c_int, c_float, c_double, c_bool, c_long
                    +
                    592 #if (LSIZE==8)
                    +
                    593  INTEGER(C_LONG), INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
                    +
                    594  INTEGER(C_LONG), INTENT(IN ) :: IBI(KM)
                    +
                    595  INTEGER(C_LONG), INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    596  INTEGER(C_LONG), INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    597  INTEGER(C_LONG), INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    598  INTEGER(C_LONG), INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    599  INTEGER(C_LONG), INTENT( OUT) :: NO
                    +
                    600  INTEGER(C_LONG), INTENT( OUT) :: IRET, IBO(KM)
                    +
                    601 #else
                    +
                    602  INTEGER(C_INT), INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
                    +
                    603  INTEGER(C_INT), INTENT(IN ) :: IBI(KM)
                    +
                    604  INTEGER(C_INT), INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    605  INTEGER(C_INT), INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    606  INTEGER(C_INT), INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    607  INTEGER(C_INT), INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    608  INTEGER(C_INT), INTENT( OUT) :: NO
                    +
                    609  INTEGER(C_INT), INTENT( OUT) :: IRET, IBO(KM)
                    +
                    610 #endif
                    +
                    611  !
                    +
                    612  LOGICAL(C_BOOL), INTENT(IN ) :: LI(MI,KM)
                    +
                    613  LOGICAL(C_BOOL), INTENT( OUT) :: LO(MO,KM)
                    +
                    614  !
                    +
                    615 #if (LSIZE==4)
                    +
                    616  REAL(C_FLOAT), INTENT(IN ) :: GI(MI,KM)
                    +
                    617  REAL(C_FLOAT), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    618  REAL(C_FLOAT), INTENT( OUT) :: GO(MO,KM)
                    +
                    619 #else
                    +
                    620  REAL(C_DOUBLE), INTENT(IN ) :: GI(MI,KM)
                    +
                    621  REAL(C_DOUBLE), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    622  REAL(C_DOUBLE), INTENT( OUT) :: GO(MO,KM)
                    +
                    623 #endif
                    +
                    624 
                    +
                    625  type(grib2_descriptor) :: desc_in, desc_out
                    +
                    626  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    627 
                    +
                    628  desc_in = init_descriptor(igdtnumi, igdtleni, igdtmpli)
                    +
                    629  desc_out = init_descriptor(igdtnumo, igdtleno, igdtmplo)
                    +
                    630 
                    +
                    631  call init_grid(grid_in, desc_in)
                    +
                    632  call init_grid(grid_out, desc_out)
                    +
                    633 
                    +
                    634  CALL ipolates_grid(ip,ipopt,grid_in,grid_out,mi,mo,km,ibi,li,gi,no,rlat,rlon,ibo,lo,go,iret)
                    +
                    635 
                    +
                    636  END SUBROUTINE ipolates_grib2
                    +
                    637 
                    +
                    808  SUBROUTINE ipolates_grib2_single_field(IP,IPOPT,IGDTNUMI,IGDTMPLI,IGDTLENI, &
                    +
                    809  IGDTNUMO,IGDTMPLO,IGDTLENO, &
                    +
                    810  MI,MO,KM,IBI,LI,GI, &
                    +
                    811  NO,RLAT,RLON,IBO,LO,GO,IRET) bind(C)
                    +
                    812  USE iso_c_binding, ONLY: c_int, c_float, c_double, c_bool, c_long
                    +
                    813 #if (LSIZE==8)
                    +
                    814  INTEGER(C_LONG), INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
                    +
                    815  INTEGER(C_LONG), INTENT(IN ) :: IBI
                    +
                    816  INTEGER(C_LONG), INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    817  INTEGER(C_LONG), INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    818  INTEGER(C_LONG), INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    819  INTEGER(C_LONG), INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    820  INTEGER(C_LONG), INTENT( OUT) :: NO
                    +
                    821  INTEGER(C_LONG), INTENT( OUT) :: IRET, IBO
                    +
                    822 #else
                    +
                    823  INTEGER(C_INT), INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
                    +
                    824  INTEGER(C_INT), INTENT(IN ) :: IBI
                    +
                    825  INTEGER(C_INT), INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    826  INTEGER(C_INT), INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    827  INTEGER(C_INT), INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    828  INTEGER(C_INT), INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    829  INTEGER(C_INT), INTENT( OUT) :: NO
                    +
                    830  INTEGER(C_INT), INTENT( OUT) :: IRET, IBO
                    +
                    831 #endif
                    +
                    832  !
                    +
                    833  LOGICAL(C_BOOL), INTENT(IN ) :: LI(MI)
                    +
                    834  LOGICAL(C_BOOL), INTENT( OUT) :: LO(MO)
                    +
                    835  !
                    +
                    836 #if (LSIZE==4)
                    +
                    837  REAL(C_FLOAT), INTENT(IN ) :: GI(MI)
                    +
                    838  REAL(C_FLOAT), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    839  REAL(C_FLOAT), INTENT( OUT) :: GO(MO)
                    +
                    840 #else
                    +
                    841  REAL(C_DOUBLE), INTENT(IN ) :: GI(MI)
                    +
                    842  REAL(C_DOUBLE), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    843  REAL(C_DOUBLE), INTENT( OUT) :: GO(MO)
                    +
                    844 #endif
                    +
                    845 
                    +
                    846  type(grib2_descriptor) :: desc_in, desc_out
                    +
                    847  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    848  integer :: ibo_array(1)
                    +
                    849 
                    +
                    850  desc_in = init_descriptor(igdtnumi, igdtleni, igdtmpli)
                    +
                    851  desc_out = init_descriptor(igdtnumo, igdtleno, igdtmplo)
                    +
                    852 
                    +
                    853  call init_grid(grid_in, desc_in)
                    +
                    854  call init_grid(grid_out, desc_out)
                    +
                    855 
                    +
                    856  ! Can't pass expression (e.g. [ibo]) to intent(out) argument.
                    +
                    857  ! Initialize placeholder array of size 1 to make rank match.
                    +
                    858  ibo_array(1) = ibo
                    +
                    859 
                    +
                    860  call ipolates_grid(ip,ipopt,grid_in,grid_out,mi,mo,km,[ibi],li,gi,no,rlat,rlon,ibo_array,lo,go,iret)
                    +
                    861 
                    +
                    862  ibo = ibo_array(1)
                    +
                    863 
                    +
                    864  END SUBROUTINE ipolates_grib2_single_field
                    +
                    865 
                    +
                    866 end module ipolates_mod
                    +
                    867 
                    + + + +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Routines for creating an ip_grid given a Grib descriptor.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    Top-level module to export interpolation routines and constants.
                    +
                    integer, parameter, public neighbor_interp_id
                    +
                    integer, parameter, public bilinear_interp_id
                    +
                    integer, parameter, public budget_interp_id
                    +
                    integer, parameter, public spectral_interp_id
                    +
                    integer, parameter, public bicubic_interp_id
                    +
                    integer, parameter, public neighbor_budget_interp_id
                    +
                    Top-level driver for scalar interpolation interpolation routine ipolates().
                    Definition: ipolates.F90:12
                    +
                    subroutine ipolates_grid(ip, ipopt, grid_in, grid_out, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                    Interpolates scalar fields between grids given ip_grid objects.
                    Definition: ipolates.F90:65
                    +
                    subroutine, public ipolates_grib2_single_field(IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Special case of ipolates_grib2 when interpolating a single field.
                    Definition: ipolates.F90:812
                    +
                    subroutine, public ipolates_grib2(IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    This subprogram interpolates scalar field from any grid to any grid given a grib2 descriptor.
                    Definition: ipolates.F90:591
                    +
                    subroutine, public ipolates_grib1(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                    This subprogram interpolates scalar field from any grid to any grid given a grib1 Grid Descriptor Sec...
                    Definition: ipolates.F90:295
                    +
                    subroutine, public ipolates_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                    Special case of ipolates_grib1 when interpolating a single field.
                    Definition: ipolates.F90:160
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Grib-2 descriptor containing a grib2 GDT represented by an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipolatev_8F90.html b/ver-5.0.0/ipolatev_8F90.html new file mode 100644 index 00000000..094d9786 --- /dev/null +++ b/ver-5.0.0/ipolatev_8F90.html @@ -0,0 +1,144 @@ + + + + + + + +NCEPLIBS-ip: ipolatev.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ipolatev.F90 File Reference
                    +
                    +
                    + +

                    Top-level driver for vector interpolation routine ipolates. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    interface  ipolatev_mod::ipolatev
                     
                    + + + + +

                    +Modules

                    module  ipolatev_mod
                     Top-level driver for vector interpolation interpolation routine ipolatev().
                     
                    + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine, public ipolatev_mod::ipolatev_grib1 (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram interpolates vector field from any grid to any grid given a grib1 Grid Descriptor Section. More...
                     
                    subroutine, public ipolatev_mod::ipolatev_grib1_single_field (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     Special case of ipolatev_grib1 when interpolating a single field. More...
                     
                    subroutine, public ipolatev_mod::ipolatev_grib2 (ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor. More...
                     
                    subroutine, public ipolatev_mod::ipolatev_grib2_single_field (ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor. More...
                     
                    subroutine ipolatev_mod::ipolatev_grid (IP, IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolates vector fields between grids given ip_grid objects. More...
                     
                    +

                    Detailed Description

                    +

                    Top-level driver for vector interpolation routine ipolates.

                    +
                    Author
                    Mark Iredell, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition in file ipolatev.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipolatev_8F90.js b/ver-5.0.0/ipolatev_8F90.js new file mode 100644 index 00000000..ecf26618 --- /dev/null +++ b/ver-5.0.0/ipolatev_8F90.js @@ -0,0 +1,9 @@ +var ipolatev_8F90 = +[ + [ "ipolatev", "interfaceipolatev__mod_1_1ipolatev.html", "interfaceipolatev__mod_1_1ipolatev" ], + [ "ipolatev_grib1", "ipolatev_8F90.html#abddc4a9b00133b358443b118f1352d1f", null ], + [ "ipolatev_grib1_single_field", "ipolatev_8F90.html#ad535ffd159c46e770effd774aabede58", null ], + [ "ipolatev_grib2", "ipolatev_8F90.html#a00fed53dd867a802b3adbc1141e8d272", null ], + [ "ipolatev_grib2_single_field", "ipolatev_8F90.html#a71d7507e8f89e1229caaaacb37e0c9c7", null ], + [ "ipolatev_grid", "ipolatev_8F90.html#a8f3bfec7495e13b75b2035e8e1f081a1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ipolatev_8F90_source.html b/ver-5.0.0/ipolatev_8F90_source.html new file mode 100644 index 00000000..c61d1ac6 --- /dev/null +++ b/ver-5.0.0/ipolatev_8F90_source.html @@ -0,0 +1,451 @@ + + + + + + + +NCEPLIBS-ip: ipolatev.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ipolatev.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + + + + +
                    14  use ip_grid_mod
                    +
                    15 
                    +
                    16  implicit none
                    +
                    17 
                    +
                    18  private
                    + +
                    20 
                    +
                    21  interface ipolatev
                    +
                    22  module procedure ipolatev_grib1
                    +
                    23  module procedure ipolatev_grib1_single_field
                    +
                    24  module procedure ipolatev_grib2
                    +
                    25  module procedure ipolatev_grib2_single_field
                    +
                    26  end interface ipolatev
                    +
                    27 
                    +
                    28 contains
                    +
                    29 
                    +
                    67  SUBROUTINE ipolatev_grid(IP,IPOPT,grid_in,grid_out, &
                    +
                    68  MI,MO,KM,IBI,LI,UI,VI, &
                    +
                    69  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    70  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    71  INTEGER, INTENT(IN ) :: IP, IPOPT(20), IBI(KM)
                    +
                    72  INTEGER, INTENT(IN ) :: KM, MI, MO
                    +
                    73  INTEGER, INTENT( OUT) :: IBO(KM), IRET, NO
                    +
                    74  !
                    +
                    75  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    76  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    77  !
                    +
                    78  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    79  REAL, INTENT(INOUT) :: CROT(MO),SROT(MO)
                    +
                    80  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    81  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    82 
                    +
                    83  select case(ip)
                    +
                    84  case(bilinear_interp_id)
                    +
                    85  CALL interpolate_bilinear(ipopt,grid_in,grid_out, &
                    +
                    86  mi,mo,km,ibi,li,ui,vi,&
                    +
                    87  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    88  case(bicubic_interp_id)
                    +
                    89  CALL interpolate_bicubic(ipopt,grid_in,grid_out,mi,mo,km,ibi,li,ui,vi,&
                    +
                    90  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    91  case(neighbor_interp_id)
                    +
                    92  CALL interpolate_neighbor(ipopt,grid_in,grid_out,mi,mo,km,ibi,li,ui,vi,&
                    +
                    93  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    94  case(budget_interp_id)
                    +
                    95  CALL interpolate_budget(ipopt,grid_in,grid_out,mi,mo,km,ibi,li,ui,vi,&
                    +
                    96  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    97  case(spectral_interp_id)
                    +
                    98  CALL interpolate_spectral(ipopt,grid_in,grid_out, &
                    +
                    99  mi,mo,km,ibi,ui,vi,&
                    +
                    100  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    + +
                    102  CALL interpolate_neighbor_budget(ipopt,grid_in,grid_out,mi,mo,km,ibi,li,ui,vi,&
                    +
                    103  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    104  case default
                    +
                    105  print *, "unrecognized interpolation option: ", ip
                    +
                    106  error stop
                    +
                    107  ! IF(IGDTNUMO.GE.0) NO=0
                    +
                    108  ! DO K=1,KM
                    +
                    109  ! IBO(K)=1
                    +
                    110  ! DO N=1,NO
                    +
                    111  ! LO(N,K)=.FALSE.
                    +
                    112  ! UO(N,K)=0.
                    +
                    113  ! VO(N,K)=0.
                    +
                    114  ! ENDDO
                    +
                    115  ! ENDDO
                    +
                    116  ! IRET=1
                    +
                    117  end select
                    +
                    118 
                    +
                    119  end subroutine ipolatev_grid
                    +
                    120 
                    +
                    382  subroutine ipolatev_grib2(ip,ipopt,igdtnumi,igdtmpli,igdtleni, &
                    +
                    383  igdtnumo,igdtmplo,igdtleno, &
                    +
                    384  mi,mo,km,ibi,li,ui,vi, &
                    +
                    385  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret) bind(c)
                    +
                    386  USE iso_c_binding, ONLY: c_int, c_float, c_double, c_bool, c_long
                    +
                    387 #if (LSIZE==8)
                    +
                    388  INTEGER(C_LONG), INTENT(IN ) :: IP, IPOPT(20), IBI(KM)
                    +
                    389  INTEGER(C_LONG), INTENT(IN ) :: KM, MI, MO
                    +
                    390  INTEGER(C_LONG), INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    391  INTEGER(C_LONG), INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    392  INTEGER(C_LONG), INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    393  INTEGER(C_LONG), INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    394  INTEGER(C_LONG), INTENT( OUT) :: IBO(KM), IRET, NO
                    +
                    395 #else
                    +
                    396  INTEGER(C_INT), INTENT(IN ) :: IP, IPOPT(20), IBI(KM)
                    +
                    397  INTEGER(C_INT), INTENT(IN ) :: KM, MI, MO
                    +
                    398  INTEGER(C_INT), INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    399  INTEGER(C_INT), INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    400  INTEGER(C_INT), INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    401  INTEGER(C_INT), INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    402  INTEGER(C_INT), INTENT( OUT) :: IBO(KM), IRET, NO
                    +
                    403 #endif
                    +
                    404  !
                    +
                    405  LOGICAL(C_BOOL), INTENT(IN ) :: LI(MI,KM)
                    +
                    406  LOGICAL(C_BOOL), INTENT( OUT) :: LO(MO,KM)
                    +
                    407  !
                    +
                    408 #if (LSIZE==4)
                    +
                    409  REAL(C_FLOAT), INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    410  REAL(C_FLOAT), INTENT(INOUT) :: CROT(MO),SROT(MO)
                    +
                    411  REAL(C_FLOAT), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    412  REAL(C_FLOAT), INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    413 #else
                    +
                    414  REAL(C_DOUBLE), INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    415  REAL(C_DOUBLE), INTENT(INOUT) :: CROT(MO),SROT(MO)
                    +
                    416  REAL(C_DOUBLE), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    417  REAL(C_DOUBLE), INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    418 #endif
                    +
                    419  !
                    +
                    420 
                    +
                    421  type(grib2_descriptor) :: desc_in, desc_out
                    +
                    422  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    423 
                    +
                    424  desc_in = init_descriptor(igdtnumi, igdtleni, igdtmpli)
                    +
                    425  desc_out = init_descriptor(igdtnumo, igdtleno, igdtmplo)
                    +
                    426 
                    +
                    427  call init_grid(grid_in, desc_in)
                    +
                    428  call init_grid(grid_out, desc_out)
                    +
                    429 
                    +
                    430  CALL ipolatev_grid(ip,ipopt,grid_in,grid_out, &
                    +
                    431  mi,mo,km,ibi,li,ui,vi,&
                    +
                    432  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    433 
                    +
                    434  end subroutine ipolatev_grib2
                    +
                    435 
                    +
                    565  subroutine ipolatev_grib1(ip,ipopt,kgdsi,kgdso,mi,mo,km,ibi,li,ui,vi, &
                    +
                    566  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret) bind(c)
                    +
                    567  USE iso_c_binding, ONLY: c_int, c_float, c_double, c_bool, c_long
                    +
                    568  IMPLICIT NONE
                    +
                    569  !
                    +
                    570 #if (LSIZE==8)
                    +
                    571  INTEGER(C_LONG), INTENT(IN ):: IP, IPOPT(20), IBI(KM)
                    +
                    572  INTEGER(C_LONG), INTENT(IN ):: KM, MI, MO
                    +
                    573  INTEGER(C_LONG), INTENT(INOUT):: KGDSI(200), KGDSO(200)
                    +
                    574  INTEGER(C_LONG), INTENT( OUT):: IBO(KM), IRET, NO
                    +
                    575 #else
                    +
                    576  INTEGER(C_INT), INTENT(IN ):: IP, IPOPT(20), IBI(KM)
                    +
                    577  INTEGER(C_INT), INTENT(IN ):: KM, MI, MO
                    +
                    578  INTEGER(C_INT), INTENT(INOUT):: KGDSI(200), KGDSO(200)
                    +
                    579  INTEGER(C_INT), INTENT( OUT):: IBO(KM), IRET, NO
                    +
                    580 #endif
                    +
                    581  !
                    +
                    582  LOGICAL(C_BOOL), INTENT(IN ):: LI(MI,KM)
                    +
                    583  LOGICAL(C_BOOL), INTENT( OUT):: LO(MO,KM)
                    +
                    584  !
                    +
                    585 #if (LSIZE==4)
                    +
                    586  REAL(C_FLOAT), INTENT(IN ):: UI(MI,KM),VI(MI,KM)
                    +
                    587  REAL(C_FLOAT), INTENT(INOUT):: CROT(MO),SROT(MO)
                    +
                    588  REAL(C_FLOAT), INTENT(INOUT):: RLAT(MO),RLON(MO)
                    +
                    589  REAL(C_FLOAT), INTENT( OUT):: UO(MO,KM),VO(MO,KM)
                    +
                    590 #else
                    +
                    591  REAL(C_DOUBLE), INTENT(IN ):: UI(MI,KM),VI(MI,KM)
                    +
                    592  REAL(C_DOUBLE), INTENT(INOUT):: CROT(MO),SROT(MO)
                    +
                    593  REAL(C_DOUBLE), INTENT(INOUT):: RLAT(MO),RLON(MO)
                    +
                    594  REAL(C_DOUBLE), INTENT( OUT):: UO(MO,KM),VO(MO,KM)
                    +
                    595 #endif
                    +
                    596  !
                    +
                    597  INTEGER :: KGDSI11, KGDSO11
                    +
                    598 
                    +
                    599  type(grib1_descriptor) :: desc_in, desc_out
                    +
                    600  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    601 
                    +
                    602  IF(kgdsi(1).EQ.203) THEN
                    +
                    603  kgdsi11=kgdsi(11)
                    +
                    604  kgdsi(11)=ior(kgdsi(11),256)
                    +
                    605  ENDIF
                    +
                    606  IF(kgdso(1).EQ.203) THEN
                    +
                    607  kgdso11=kgdso(11)
                    +
                    608  kgdso(11)=ior(kgdso(11),256)
                    +
                    609  ENDIF
                    +
                    610 
                    +
                    611  desc_in = init_descriptor(kgdsi)
                    +
                    612  desc_out = init_descriptor(kgdso)
                    +
                    613 
                    +
                    614  call init_grid(grid_in, desc_in)
                    +
                    615  call init_grid(grid_out, desc_out)
                    +
                    616 
                    +
                    617  CALL ipolatev_grid(ip,ipopt,grid_in,grid_out, &
                    +
                    618  mi,mo,km,ibi,li,ui,vi,&
                    +
                    619  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    620 
                    +
                    621  IF(kgdsi(1).EQ.203) THEN
                    +
                    622  kgdsi(11)=kgdsi11
                    +
                    623  ENDIF
                    +
                    624  IF(kgdso(1).EQ.203) THEN
                    +
                    625  kgdso(11)=kgdso11
                    +
                    626  ENDIF
                    +
                    627 
                    +
                    628  END SUBROUTINE ipolatev_grib1
                    +
                    629 
                    +
                    680  subroutine ipolatev_grib1_single_field(ip,ipopt,kgdsi,kgdso,mi,mo,km,ibi,li,ui,vi, &
                    +
                    681  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret) bind(c)
                    +
                    682  USE iso_c_binding, ONLY: c_int, c_float, c_double, c_bool, c_long
                    +
                    683  IMPLICIT NONE
                    +
                    684  !
                    +
                    685 #if (LSIZE==8)
                    +
                    686  INTEGER(C_LONG), INTENT(IN ):: IP, IPOPT(20), IBI
                    +
                    687  INTEGER(C_LONG), INTENT(IN ):: KM, MI, MO
                    +
                    688  INTEGER(C_LONG), INTENT(INOUT):: KGDSI(200), KGDSO(200)
                    +
                    689  INTEGER(C_LONG), INTENT( OUT):: IBO, IRET, NO
                    +
                    690 #else
                    +
                    691  INTEGER(C_INT), INTENT(IN ):: IP, IPOPT(20), IBI
                    +
                    692  INTEGER(C_INT), INTENT(IN ):: KM, MI, MO
                    +
                    693  INTEGER(C_INT), INTENT(INOUT):: KGDSI(200), KGDSO(200)
                    +
                    694  INTEGER(C_INT), INTENT( OUT):: IBO, IRET, NO
                    +
                    695 #endif
                    +
                    696  !
                    +
                    697  LOGICAL(C_BOOL), INTENT(IN ):: LI(MI)
                    +
                    698  LOGICAL(C_BOOL), INTENT( OUT):: LO(MO)
                    +
                    699  !
                    +
                    700 #if (LSIZE==4)
                    +
                    701  REAL(C_FLOAT), INTENT(IN ):: UI(MI),VI(MI)
                    +
                    702  REAL(C_FLOAT), INTENT(INOUT):: CROT(MO),SROT(MO)
                    +
                    703  REAL(C_FLOAT), INTENT(INOUT):: RLAT(MO),RLON(MO)
                    +
                    704  REAL(C_FLOAT), INTENT( OUT):: UO(MO),VO(MO)
                    +
                    705 #else
                    +
                    706  REAL(C_DOUBLE), INTENT(IN ):: UI(MI),VI(MI)
                    +
                    707  REAL(C_DOUBLE), INTENT(INOUT):: CROT(MO),SROT(MO)
                    +
                    708  REAL(C_DOUBLE), INTENT(INOUT):: RLAT(MO),RLON(MO)
                    +
                    709  REAL(C_DOUBLE), INTENT( OUT):: UO(MO),VO(MO)
                    +
                    710 #endif
                    +
                    711  !
                    +
                    712  INTEGER :: KGDSI11, KGDSO11
                    +
                    713 
                    +
                    714  type(grib1_descriptor) :: desc_in, desc_out
                    +
                    715  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    716  integer :: ibo_array(1)
                    +
                    717 
                    +
                    718  ! Can't pass expression (e.g. [ibo]) to intent(out) argument.
                    +
                    719  ! Initialize placeholder array of size 1 to make rank match.
                    +
                    720  ibo_array(1) = ibo
                    +
                    721 
                    +
                    722  IF(kgdsi(1).EQ.203) THEN
                    +
                    723  kgdsi11=kgdsi(11)
                    +
                    724  kgdsi(11)=ior(kgdsi(11),256)
                    +
                    725  ENDIF
                    +
                    726  IF(kgdso(1).EQ.203) THEN
                    +
                    727  kgdso11=kgdso(11)
                    +
                    728  kgdso(11)=ior(kgdso(11),256)
                    +
                    729  ENDIF
                    +
                    730 
                    +
                    731  desc_in = init_descriptor(kgdsi)
                    +
                    732  desc_out = init_descriptor(kgdso)
                    +
                    733 
                    +
                    734  call init_grid(grid_in, desc_in)
                    +
                    735  call init_grid(grid_out, desc_out)
                    +
                    736 
                    +
                    737  CALL ipolatev_grid(ip,ipopt,grid_in,grid_out, &
                    +
                    738  mi,mo,km,[ibi],li,ui,vi,&
                    +
                    739  no,rlat,rlon,crot,srot,ibo_array,lo,uo,vo,iret)
                    +
                    740 
                    +
                    741  ibo = ibo_array(1)
                    +
                    742 
                    +
                    743  IF(kgdsi(1).EQ.203) THEN
                    +
                    744  kgdsi(11)=kgdsi11
                    +
                    745  ENDIF
                    +
                    746  IF(kgdso(1).EQ.203) THEN
                    +
                    747  kgdso(11)=kgdso11
                    +
                    748  ENDIF
                    +
                    749 
                    +
                    750  END SUBROUTINE ipolatev_grib1_single_field
                    +
                    751 
                    +
                    832  subroutine ipolatev_grib2_single_field(ip,ipopt,igdtnumi,igdtmpli,igdtleni, &
                    +
                    833  igdtnumo,igdtmplo,igdtleno, &
                    +
                    834  mi,mo,km,ibi,li,ui,vi, &
                    +
                    835  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret) bind(c)
                    +
                    836  USE iso_c_binding, ONLY: c_int, c_float, c_double, c_bool, c_long
                    +
                    837 #if (LSIZE==8)
                    +
                    838  INTEGER(C_LONG), INTENT(IN ) :: IP, IPOPT(20), IBI
                    +
                    839  INTEGER(C_LONG), INTENT(IN ) :: KM, MI, MO
                    +
                    840  INTEGER(C_LONG), INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    841  INTEGER(C_LONG), INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    842  INTEGER(C_LONG), INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    843  INTEGER(C_LONG), INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    844  INTEGER(C_LONG), INTENT( OUT) :: IBO, IRET, NO
                    +
                    845 #else
                    +
                    846  INTEGER(C_INT), INTENT(IN ) :: IP, IPOPT(20), IBI
                    +
                    847  INTEGER(C_INT), INTENT(IN ) :: KM, MI, MO
                    +
                    848  INTEGER(C_INT), INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    849  INTEGER(C_INT), INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    850  INTEGER(C_INT), INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    851  INTEGER(C_INT), INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    852  INTEGER(C_INT), INTENT( OUT) :: IBO, IRET, NO
                    +
                    853 #endif
                    +
                    854  !
                    +
                    855  LOGICAL(C_BOOL), INTENT(IN ) :: LI(MI)
                    +
                    856  LOGICAL(C_BOOL), INTENT( OUT) :: LO(MO)
                    +
                    857  !
                    +
                    858 #if (LSIZE==4)
                    +
                    859  REAL(C_FLOAT), INTENT(IN ) :: UI(MI),VI(MI)
                    +
                    860  REAL(C_FLOAT), INTENT(INOUT) :: CROT(MO),SROT(MO)
                    +
                    861  REAL(C_FLOAT), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    862  REAL(C_FLOAT), INTENT( OUT) :: UO(MO),VO(MO)
                    +
                    863 #else
                    +
                    864  REAL(C_DOUBLE), INTENT(IN ) :: UI(MI),VI(MI)
                    +
                    865  REAL(C_DOUBLE), INTENT(INOUT) :: CROT(MO),SROT(MO)
                    +
                    866  REAL(C_DOUBLE), INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    867  REAL(C_DOUBLE), INTENT( OUT) :: UO(MO),VO(MO)
                    +
                    868 #endif
                    +
                    869  !
                    +
                    870 
                    +
                    871  type(grib2_descriptor) :: desc_in, desc_out
                    +
                    872  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    873  integer :: ibo_array(1)
                    +
                    874 
                    +
                    875  ! Can't pass expression (e.g. [ibo]) to intent(out) argument.
                    +
                    876  ! Initialize placeholder array of size 1 to make rank match.
                    +
                    877  ibo_array(1) = ibo
                    +
                    878 
                    +
                    879  desc_in = init_descriptor(igdtnumi, igdtleni, igdtmpli)
                    +
                    880  desc_out = init_descriptor(igdtnumo, igdtleno, igdtmplo)
                    +
                    881 
                    +
                    882  call init_grid(grid_in, desc_in)
                    +
                    883  call init_grid(grid_out, desc_out)
                    +
                    884 
                    +
                    885  CALL ipolatev_grid(ip,ipopt,grid_in,grid_out, &
                    +
                    886  mi,mo,km,[ibi],li,ui,vi,&
                    +
                    887  no,rlat,rlon,crot,srot,ibo_array,lo,uo,vo,iret)
                    +
                    888 
                    +
                    889  ibo = ibo_array(1)
                    +
                    890 
                    +
                    891  end subroutine ipolatev_grib2_single_field
                    +
                    892 
                    +
                    893 end module ipolatev_mod
                    +
                    894 
                    + + + +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Routines for creating an ip_grid given a Grib descriptor.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    Top-level module to export interpolation routines and constants.
                    +
                    integer, parameter, public neighbor_interp_id
                    +
                    integer, parameter, public bilinear_interp_id
                    +
                    integer, parameter, public budget_interp_id
                    +
                    integer, parameter, public spectral_interp_id
                    +
                    integer, parameter, public bicubic_interp_id
                    +
                    integer, parameter, public neighbor_budget_interp_id
                    +
                    Top-level driver for vector interpolation interpolation routine ipolatev().
                    Definition: ipolatev.F90:10
                    +
                    subroutine, public ipolatev_grib2(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                    This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor.
                    Definition: ipolatev.F90:386
                    +
                    subroutine, public ipolatev_grib2_single_field(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                    This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor.
                    Definition: ipolatev.F90:836
                    +
                    subroutine ipolatev_grid(IP, IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolates vector fields between grids given ip_grid objects.
                    Definition: ipolatev.F90:70
                    +
                    subroutine, public ipolatev_grib1(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                    This subprogram interpolates vector field from any grid to any grid given a grib1 Grid Descriptor Sec...
                    Definition: ipolatev.F90:567
                    +
                    subroutine, public ipolatev_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                    Special case of ipolatev_grib1 when interpolating a single field.
                    Definition: ipolatev.F90:682
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Grib-2 descriptor containing a grib2 GDT represented by an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipxetas_8F90.html b/ver-5.0.0/ipxetas_8F90.html new file mode 100644 index 00000000..300dab6a --- /dev/null +++ b/ver-5.0.0/ipxetas_8F90.html @@ -0,0 +1,290 @@ + + + + + + + +NCEPLIBS-ip: ipxetas.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ipxetas.F90 File Reference
                    +
                    +
                    + +

                    Expand or contract eta grids using linear interpolation. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine ipxetas (IDIR, IGDTNUMI, IGDTLEN, IGDTMPLI, NPTS_INPUT, BITMAP_INPUT, DATA_INPUT, IGDTNUMO, IGDTMPLO, NPTS_OUTPUT, BITMAP_OUTPUT, DATA_OUTPUT, IRET)
                     Expand or contract eta grids using linear interpolation. More...
                     
                    +

                    Detailed Description

                    +

                    Expand or contract eta grids using linear interpolation.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition in file ipxetas.F90.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ ipxetas()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipxetas (integer, intent(in) IDIR,
                    integer, intent(in) IGDTNUMI,
                    integer, intent(in) IGDTLEN,
                    integer, dimension(igdtlen), intent(in) IGDTMPLI,
                    integer, intent(in) NPTS_INPUT,
                    logical(kind=1), dimension(npts_input), intent(in) BITMAP_INPUT,
                    real, dimension(npts_input), intent(in) DATA_INPUT,
                    integer, intent(out) IGDTNUMO,
                    integer, dimension(igdtlen), intent(out) IGDTMPLO,
                    integer, intent(in) NPTS_OUTPUT,
                    logical(kind=1), dimension(npts_output), intent(out) BITMAP_OUTPUT,
                    real, dimension(npts_output), intent(out) DATA_OUTPUT,
                    integer, intent(out) IRET 
                    )
                    +
                    + +

                    Expand or contract eta grids using linear interpolation.

                    +

                    This subprogram transforms between the staggered eta grids as used in the eta model and for native grid transmission and their full expansion as used for general interpolation and graphics. The eta grids are rotated latitude-longitude grids staggered as defined by the arakawa e-grid, that is with mass data points alternating with wind data points.

                    +

                    This is similar to:

                      +
                    • ipxwafs2() which uses linear interpolation and accounts for
                    • +
                    • bitmapped data.
                    • +
                    • ipxwafs2() which uses neighbor interpolation and accounts for
                    • +
                    • bitmapped data.
                    • +
                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell Initial
                    2015-07-14 Gayno Make grib 2 compliant. Replace 4-pt interpolation with call to ipolates.
                    2022-11-09 Engle Made ibi and ibo scalars.
                    +
                    Parameters
                    + + + + + + + + + + + + + + +
                    [in]idirinteger transform option.
                      +
                    • 0 to expand staggered fields to full fields
                    • +
                    • -1 to contract full mass fields to staggered fields
                    • +
                    • -2 to contract full wind fields to staggered fields
                    • +
                    +
                    [in]igdtnumiinteger grid definition template number - input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. Must be = 1 (for a rotated lat/lon grid.)
                    [in]igdtleninteger number of elements of the grid definition template array - same for input and output grids (=22) which are both rotated lat/lon grids. corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtmpliinteger (igdtlen) grid definition template array - input grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure (section 3 info):
                      +
                    • 1 shape of earth, octet 15
                        +
                      • 2 scale factor of spherical earth radius, octet 16
                      • +
                      • 3 scaled value of radius of spherical earth, octets 17-20
                      • +
                      • 4 scale factor of major axis of elliptical earth, octet 21
                      • +
                      • 5 scaled value of major axis of elliptical earth, octets 22-25
                      • +
                      • 6 scale factor of minor axis of elliptical earth, octet 26
                      • +
                      • 7 scaled value of minor axis of elliptical earth, octets 27-30
                      • +
                      • 8 number of points along a parallel, octs 31-34
                      • +
                      • 9 number of points along a meridian, octs 35-38
                      • +
                      • 10 basic angle of initial production domain, octets 39-42
                      • +
                      • 11 subdivisions of basic angle, octets 43-46
                      • +
                      • 12 latitude of first grid point, octets 47-50
                      • +
                      • 13 longitude of first grid point, octets 51-54
                      • +
                      • 14 resolution and component flags, octet 55
                      • +
                      • 15 latitude of last grid point, octets 56-59
                      • +
                      • 16 longitude of last grid point, octets 60-63
                      • +
                      • 17 i-direction increment, octets 64-67
                      • +
                      • 18 j-direction increment, octets 68-71
                      • +
                      • 19 scanning mode, octet 72
                      • +
                      • 20 latitude of southern pole of projection, octets 73-76
                      • +
                      • 21 longitude of southern pole of projection, octets 77-80
                      • +
                      • 22 angle of rotation of projection, octs 81-84
                      • +
                      +
                    • +
                    +
                    [in]npts_inputinteger number points input grid
                    [in]bitmap_inputlogical (npts_input) input grid bitmap
                    [in]data_inputreal (npts_input) input grid data
                    [out]igdtnumointeger grid definition template number - output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. Same as igdtnumi (=1 for a rotated lat/lon grid).
                    [out]igdtmplointeger (igdtlen) grid definition template array - output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. Array definitions same as "igdtmpli".
                    [out]npts_outputinteger number points output grid. the j-dimension of the input and output grids are the same. When going from a staggered to a full grid the i-dimension increases to idim*2-1. When going from full to staggered the i-dimension decreases to (idim+1)/2.
                    [out]bitmap_outputlogical (npts_outut) output grid bitmap
                    [out]data_outputreal (npts_output) output grid data
                    [out]iretinteger return code
                      +
                    • 0 successful transformation
                    • +
                    • non-0 invalid grid specs or problem in ipolates().
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 90 of file ipxetas.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipxetas_8F90.js b/ver-5.0.0/ipxetas_8F90.js new file mode 100644 index 00000000..d61378ad --- /dev/null +++ b/ver-5.0.0/ipxetas_8F90.js @@ -0,0 +1,4 @@ +var ipxetas_8F90 = +[ + [ "ipxetas", "ipxetas_8F90.html#a89ff34ee39b0da1895e9d8552bb462e1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ipxetas_8F90_source.html b/ver-5.0.0/ipxetas_8F90_source.html new file mode 100644 index 00000000..b971c5b6 --- /dev/null +++ b/ver-5.0.0/ipxetas_8F90_source.html @@ -0,0 +1,222 @@ + + + + + + + +NCEPLIBS-ip: ipxetas.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ipxetas.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    +
                    40 
                    +
                    44 
                    +
                    89 ! @author Iredell @date 96-04-10
                    +
                    90  SUBROUTINE ipxetas(IDIR, IGDTNUMI, IGDTLEN, IGDTMPLI, NPTS_INPUT, &
                    +
                    91  BITMAP_INPUT, DATA_INPUT, IGDTNUMO, IGDTMPLO, &
                    +
                    92  NPTS_OUTPUT, BITMAP_OUTPUT, DATA_OUTPUT, IRET)
                    +
                    93  USE ipolates_mod
                    +
                    94  IMPLICIT NONE
                    +
                    95 !
                    +
                    96  INTEGER, INTENT(IN ) :: IDIR
                    +
                    97  INTEGER, INTENT(IN ) :: IGDTNUMI, IGDTLEN
                    +
                    98  INTEGER, INTENT(IN ) :: IGDTMPLI(IGDTLEN)
                    +
                    99  INTEGER, INTENT(IN ) :: NPTS_INPUT, NPTS_OUTPUT
                    +
                    100  INTEGER, INTENT( OUT) :: IGDTNUMO
                    +
                    101  INTEGER, INTENT( OUT) :: IGDTMPLO(IGDTLEN)
                    +
                    102  INTEGER, INTENT( OUT) :: IRET
                    +
                    103 
                    +
                    104  LOGICAL(KIND=1), INTENT(IN ) :: BITMAP_INPUT(NPTS_INPUT)
                    +
                    105  LOGICAL(KIND=1), INTENT( OUT) :: BITMAP_OUTPUT(NPTS_OUTPUT)
                    +
                    106 
                    +
                    107  REAL, INTENT(IN ) :: DATA_INPUT(NPTS_INPUT)
                    +
                    108  REAL, INTENT( OUT) :: DATA_OUTPUT(NPTS_OUTPUT)
                    +
                    109 
                    +
                    110  INTEGER :: SCAN_MODE, ISCALE, IP, IPOPT(20)
                    +
                    111  INTEGER :: IBI, IBO, J, KM, NO
                    +
                    112 
                    +
                    113  REAL :: DLONS
                    +
                    114  REAL, ALLOCATABLE :: OUTPUT_RLAT(:), OUTPUT_RLON(:)
                    +
                    115 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    116  iret = 0
                    +
                    117 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    118 ! ROUTINE ONLY WORKS FOR ROTATED LAT/LON GRIDS.
                    +
                    119  IF (igdtnumi/=1) THEN
                    +
                    120  iret=1
                    +
                    121  RETURN
                    +
                    122  ENDIF
                    +
                    123 !
                    +
                    124  scan_mode=igdtmpli(19)
                    +
                    125  IF((scan_mode==68.OR.scan_mode==72).AND.(idir<-2.OR.idir>-1))THEN
                    +
                    126  igdtnumo=igdtnumi
                    +
                    127  igdtmplo=igdtmpli
                    +
                    128  igdtmplo(19)=64
                    +
                    129  igdtmplo(8)=igdtmplo(8)*2-1
                    +
                    130  IF((igdtmplo(8)*igdtmplo(9))/=npts_output)THEN
                    +
                    131  iret=3
                    +
                    132  RETURN
                    +
                    133  ENDIF
                    +
                    134  iscale=igdtmplo(10)*igdtmplo(11)
                    +
                    135  IF(iscale==0) iscale=10**6
                    +
                    136  dlons=float(igdtmplo(17))/float(iscale)
                    +
                    137  dlons=dlons*0.5
                    +
                    138  igdtmplo(17)=nint(dlons*float(iscale))
                    +
                    139  ELSEIF(scan_mode==64.AND.idir==-1)THEN ! FULL TO H-GRID
                    +
                    140  igdtnumo=igdtnumi
                    +
                    141  igdtmplo=igdtmpli
                    +
                    142  igdtmplo(19)=68
                    +
                    143  igdtmplo(8)=(igdtmplo(8)+1)/2
                    +
                    144  IF((igdtmplo(8)*igdtmplo(9))/=npts_output)THEN
                    +
                    145  iret=3
                    +
                    146  RETURN
                    +
                    147  ENDIF
                    +
                    148  iscale=igdtmplo(10)*igdtmplo(11)
                    +
                    149  IF(iscale==0) iscale=10**6
                    +
                    150  dlons=float(igdtmplo(17))/float(iscale)
                    +
                    151  dlons=dlons*2.0
                    +
                    152  igdtmplo(17)=nint(dlons*float(iscale))
                    +
                    153  ELSEIF(scan_mode==64.AND.idir==-2)THEN ! FULL TO V-GRID
                    +
                    154  igdtnumo=igdtnumi
                    +
                    155  igdtmplo=igdtmpli
                    +
                    156  igdtmplo(19)=72
                    +
                    157  igdtmplo(8)=(igdtmplo(8)+1)/2
                    +
                    158  IF((igdtmplo(8)*igdtmplo(9))/=npts_output)THEN
                    +
                    159  iret=3
                    +
                    160  RETURN
                    +
                    161  ENDIF
                    +
                    162  iscale=igdtmplo(10)*igdtmplo(11)
                    +
                    163  IF(iscale==0) iscale=10**6
                    +
                    164  dlons=float(igdtmplo(17))/float(iscale)
                    +
                    165  dlons=dlons*2.0
                    +
                    166  igdtmplo(17)=nint(dlons*float(iscale))
                    +
                    167  ELSE
                    +
                    168  iret=2
                    +
                    169  RETURN
                    +
                    170  ENDIF
                    +
                    171 
                    +
                    172  km=1
                    +
                    173  ip=0
                    +
                    174  ipopt=0
                    +
                    175  ibi=1
                    +
                    176  ibo=0
                    +
                    177 
                    +
                    178  ALLOCATE(output_rlat(npts_output))
                    +
                    179  ALLOCATE(output_rlon(npts_output))
                    +
                    180 
                    +
                    181  CALL ipolates(ip, ipopt, igdtnumi, igdtmpli, igdtlen, &
                    +
                    182  igdtnumo, igdtmplo, igdtlen, &
                    +
                    183  npts_input, npts_output, km, ibi, bitmap_input, data_input, &
                    +
                    184  no, output_rlat, output_rlon, ibo, bitmap_output, data_output, iret)
                    +
                    185 
                    +
                    186  DEALLOCATE(output_rlat, output_rlon)
                    +
                    187 
                    +
                    188  IF(iret /= 0)THEN
                    +
                    189  print*,'- PROBLEM IN IPOLATES: ', iret
                    +
                    190  RETURN
                    +
                    191  ENDIF
                    +
                    192 
                    +
                    193 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    194 ! REPLACE ANY UNDEFINED POINTS ALONG THE LEFT AND RIGHT EDGES.
                    +
                    195  DO j=1, igdtmplo(9)
                    +
                    196  bitmap_output(j*igdtmplo(8))=bitmap_output(j*igdtmplo(8)-1)
                    +
                    197  data_output(j*igdtmplo(8))=data_output(j*igdtmplo(8)-1)
                    +
                    198  bitmap_output((j-1)*igdtmplo(8)+1)=bitmap_output((j-1)*igdtmplo(8)+2)
                    +
                    199  data_output((j-1)*igdtmplo(8)+1)=data_output((j-1)*igdtmplo(8)+2)
                    +
                    200  ENDDO
                    +
                    201 
                    +
                    202  RETURN
                    +
                    203 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    204  END SUBROUTINE ipxetas
                    + +
                    subroutine ipxetas(IDIR, IGDTNUMI, IGDTLEN, IGDTMPLI, NPTS_INPUT, BITMAP_INPUT, DATA_INPUT, IGDTNUMO, IGDTMPLO, NPTS_OUTPUT, BITMAP_OUTPUT, DATA_OUTPUT, IRET)
                    Expand or contract eta grids using linear interpolation.
                    Definition: ipxetas.F90:93
                    +
                    Top-level driver for scalar interpolation interpolation routine ipolates().
                    Definition: ipolates.F90:12
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipxwafs2_8F90.html b/ver-5.0.0/ipxwafs2_8F90.html new file mode 100644 index 00000000..e2a59b41 --- /dev/null +++ b/ver-5.0.0/ipxwafs2_8F90.html @@ -0,0 +1,308 @@ + + + + + + + +NCEPLIBS-ip: ipxwafs2.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ipxwafs2.F90 File Reference
                    +
                    +
                    + +

                    Expand or contract wafs grids using linear interpolation and account for bitmapped data. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine ipxwafs2 (IDIR, NUMPTS_THIN, NUMPTS_FULL, KM, NUM_OPT, OPT_PTS, IGDTLEN, IGDTMPL_THIN, DATA_THIN, IB_THIN, BITMAP_THIN, IGDTMPL_FULL, DATA_FULL, IB_FULL, BITMAP_FULL, IRET)
                     Expand or contract wafs grids using linear interpolation and account for bitmapped data. More...
                     
                    +

                    Detailed Description

                    +

                    Expand or contract wafs grids using linear interpolation and account for bitmapped data.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition in file ipxwafs2.F90.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ ipxwafs2()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipxwafs2 (integer, intent(in) IDIR,
                    integer, intent(in) NUMPTS_THIN,
                    integer, intent(in) NUMPTS_FULL,
                    integer, intent(in) KM,
                    integer, intent(in) NUM_OPT,
                    integer, dimension(num_opt), intent(inout) OPT_PTS,
                    integer, intent(in) IGDTLEN,
                    integer, dimension(igdtlen), intent(inout) IGDTMPL_THIN,
                    real, dimension(numpts_thin,km), intent(inout) DATA_THIN,
                    integer, dimension(km), intent(inout) IB_THIN,
                    logical(kind=1), dimension(numpts_thin,km), intent(inout) BITMAP_THIN,
                    integer, dimension(igdtlen), intent(inout) IGDTMPL_FULL,
                    real, dimension(numpts_full,km), intent(inout) DATA_FULL,
                    integer, dimension(km), intent(inout) IB_FULL,
                    logical(kind=1), dimension(numpts_full,km), intent(inout) BITMAP_FULL,
                    integer, intent(out) IRET 
                    )
                    +
                    + +

                    Expand or contract wafs grids using linear interpolation and account for bitmapped data.

                    +

                    This subprogram transforms between the thinned wafs grids used for transmitting to the aviation community and their full expansion as used for general interpolation and graphics. The thinned wafs grids are latitude-longitude grids where the number of points in each row decrease toward the pole. This information is stored in the grib 2 grid definition template (section 3) starting at octet 73.

                    +

                    The full grid counterparts have an equal number of points per row.

                    +

                    The transform between the full and thinned wafs wafs grid is done by linear interpolation and is not reversible. This routine works with bitmapped data.

                    +

                    This subroutine is similar to:

                      +
                    • ipxwafs() which uses linear interpolation.
                    • +
                    • ipxwafs3() which uses neighbor interpolation and accounts for
                    • +
                    • bitmapped data.
                    • +
                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 iredell initial version
                    99-01-25 gilbert changed bitmap fields from logical to logical*1
                    2015-jul gayno convert to grib 2
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]idirinteger transform option
                      +
                    • 1 to expand thinned fields to full fields
                    • +
                    • -1 to contract full fields to thinned fields
                    • +
                    +
                    [in]numpts_thininteger number of grid points - thinned grid. Must be 3447.
                    [in]numpts_fullinteger number of grid points - full grid. Must be 5329.
                    [in]kminteger number of fields to transform
                    [in]num_optinteger number of values to describe the thinned grid. must be 73. dimension of array opt_pts.
                    [in,out]opt_ptsinteger (num_opt) number of grid points per row - thinned grid - if idir=+1
                    [in]igdtleninteger grid defintion template array length. must be 19 for lat/lon grids. corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure. same for thin and full grids which are both lat/lon.
                    [in]igdtmpl_thininteger (igdtlen) grid definition template array - thinned grid - if idir=+1. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure (section 3 info):
                      +
                    • 1 shape of earth, octet 15
                    • +
                    • 2 scale factor of spherical earth radius, octet 16
                    • +
                    • 3 scaled value of radius of spherical earth, octets 17-20
                    • +
                    • 4 scale factor of major axis of elliptical earth, octet 21
                    • +
                    • 5 scaled value of major axis of elliptical earth, octets 22-25
                    • +
                    • 6 scale factor of minor axis of elliptical earth, octet 26
                    • +
                    • 7 scaled value of minor axis of elliptical earth, octets 27-30
                    • +
                    • 8 set to missing for thinned grid., octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42.
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 set to missing for thinned grid, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72
                    • +
                    +
                    [in,out]data_thinreal (numpts_thin,km) thinned grid fields if idir=+1
                    [in,out]ib_thininteger (km) bitmap flags thinned grid - if idir=+1
                    [in,out]bitmap_thinlogical (numpts_thin,km) bitmap fields thin grid - if idir=+1
                    [in,out]igdtmpl_fullinteger (igdtlen) grid definition template array - full grid - if idir=-1. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. same as igdtmpl_thin except: (8): number of points along a parallel, octs 31-34 (17): i-direction increment, octets 64-67
                    [in,out]data_fullreal (numpts_full,km) full grid fields if idir=-1
                    [in,out]ib_fullinteger (km) bitmap flags full grid - if idir=-1
                    [in,out]bitmap_fulllogical (numpts_full,km) bitmap fields full grid - if idir=-1
                    [out]iretinteger return code
                      +
                    • 0 successful transformation
                    • +
                    • 1 improper grid specification
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 89 of file ipxwafs2.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipxwafs2_8F90.js b/ver-5.0.0/ipxwafs2_8F90.js new file mode 100644 index 00000000..524b1d34 --- /dev/null +++ b/ver-5.0.0/ipxwafs2_8F90.js @@ -0,0 +1,4 @@ +var ipxwafs2_8F90 = +[ + [ "ipxwafs2", "ipxwafs2_8F90.html#ab602c9c04957836c0b8860560d442894", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ipxwafs2_8F90_source.html b/ver-5.0.0/ipxwafs2_8F90_source.html new file mode 100644 index 00000000..3dfa151a --- /dev/null +++ b/ver-5.0.0/ipxwafs2_8F90_source.html @@ -0,0 +1,267 @@ + + + + + + + +NCEPLIBS-ip: ipxwafs2.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ipxwafs2.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    +
                    89 SUBROUTINE ipxwafs2(IDIR, NUMPTS_THIN, NUMPTS_FULL, KM, NUM_OPT, OPT_PTS, &
                    +
                    90  IGDTLEN, IGDTMPL_THIN, DATA_THIN, IB_THIN, BITMAP_THIN, &
                    +
                    91  IGDTMPL_FULL, DATA_FULL, IB_FULL, BITMAP_FULL, IRET)
                    +
                    92  IMPLICIT NONE
                    +
                    93  !
                    +
                    94  INTEGER, INTENT(IN ) :: NUM_OPT
                    +
                    95  INTEGER, INTENT(INOUT) :: OPT_PTS(NUM_OPT)
                    +
                    96  INTEGER, INTENT(IN ) :: IDIR, KM, NUMPTS_THIN, NUMPTS_FULL
                    +
                    97  INTEGER, INTENT(IN ) :: IGDTLEN
                    +
                    98  INTEGER, INTENT(INOUT) :: IGDTMPL_THIN(IGDTLEN)
                    +
                    99  INTEGER, INTENT(INOUT) :: IGDTMPL_FULL(IGDTLEN)
                    +
                    100  INTEGER, INTENT(INOUT) :: IB_THIN(KM), IB_FULL(KM)
                    +
                    101  INTEGER, INTENT( OUT) :: IRET
                    +
                    102  !
                    +
                    103  LOGICAL(KIND=1), INTENT(INOUT) :: BITMAP_THIN(NUMPTS_THIN,KM)
                    +
                    104  LOGICAL(KIND=1), INTENT(INOUT) :: BITMAP_FULL(NUMPTS_FULL,KM)
                    +
                    105  !
                    +
                    106  REAL, INTENT(INOUT) :: DATA_THIN(NUMPTS_THIN,KM)
                    +
                    107  REAL, INTENT(INOUT) :: DATA_FULL(NUMPTS_FULL,KM)
                    +
                    108  !
                    +
                    109  INTEGER, PARAMETER :: MISSING=-1
                    +
                    110  !
                    +
                    111  INTEGER :: SCAN_MODE, I, J, K, IDLAT, IDLON
                    +
                    112  INTEGER :: IA, IB, IM, IM1, IM2, NPWAFS(73)
                    +
                    113  INTEGER :: IS1, IS2, ISCAN, ISCALE
                    +
                    114  !
                    +
                    115  LOGICAL :: TEST1, TEST2
                    +
                    116  !
                    +
                    117  REAL :: DLON, HI
                    +
                    118  REAL :: RAT1, RAT2, RLON1, RLON2
                    +
                    119  REAL :: WA, WB, X1, X2
                    +
                    120  !
                    +
                    121  DATA npwafs/ &
                    +
                    122  73, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 71, 71, 71, 70,&
                    +
                    123  70, 69, 69, 68, 67, 67, 66, 65, 65, 64, 63, 62, 61, 60, 60,&
                    +
                    124  59, 58, 57, 56, 55, 54, 52, 51, 50, 49, 48, 47, 45, 44, 43,&
                    +
                    125  42, 40, 39, 38, 36, 35, 33, 32, 30, 29, 28, 26, 25, 23, 22,&
                    +
                    126  20, 19, 17, 16, 14, 12, 11, 9, 8, 6, 5, 3, 2/
                    +
                    127  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    128  ! TRANSFORM GDS
                    +
                    129  iret=0
                    +
                    130  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    131  ! REG LAT/LON GRIDS HAVE 19 GDT ELEMENTS.
                    +
                    132  IF (igdtlen /= 19 .OR. numpts_thin/=3447 .OR. numpts_full/=5329) THEN
                    +
                    133  iret=1
                    +
                    134  RETURN
                    +
                    135  ENDIF
                    +
                    136  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    137  ! EXPAND THINNED GDS TO FULL GDS
                    +
                    138  IF(idir.GT.0) THEN
                    +
                    139  scan_mode=igdtmpl_thin(19)
                    +
                    140  iscale=igdtmpl_thin(10)*igdtmpl_thin(11)
                    +
                    141  IF(iscale==0) iscale=10**6
                    +
                    142  idlat=nint(1.25*float(iscale))
                    +
                    143  test1=all(opt_pts==npwafs)
                    +
                    144  test2=all(opt_pts==npwafs(73:1:-1))
                    +
                    145  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    146  ! SOME CHECKS TO ENSURE THIS IS A WAFS GRID
                    +
                    147  IF(scan_mode==64 .AND. igdtmpl_thin(9)==73 .AND. &
                    +
                    148  idlat==igdtmpl_thin(18) .AND. (test1 .OR. test2) ) THEN
                    +
                    149  igdtmpl_full=igdtmpl_thin
                    +
                    150  im=73
                    +
                    151  igdtmpl_full(8)=im
                    +
                    152  rlon1=float(igdtmpl_full(13))/float(iscale)
                    +
                    153  rlon2=float(igdtmpl_full(16))/float(iscale)
                    +
                    154  iscan=mod(igdtmpl_full(19)/128,2)
                    +
                    155  hi=(-1.)**iscan
                    +
                    156  dlon=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(im-1)
                    +
                    157  igdtmpl_full(17)=nint(dlon*float(iscale))
                    +
                    158  ELSE
                    +
                    159  iret=1
                    +
                    160  ENDIF
                    +
                    161  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    162  ! CONTRACT FULL GDS TO THINNED GDS
                    +
                    163  ELSEIF(idir.LT.0) THEN
                    +
                    164  scan_mode=igdtmpl_full(19)
                    +
                    165  iscale=igdtmpl_full(10)*igdtmpl_full(11)
                    +
                    166  IF(iscale==0) iscale=10**6
                    +
                    167  idlat=nint(1.25*float(iscale))
                    +
                    168  idlon=idlat
                    +
                    169  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    170  ! SOME CHECKS TO ENSURE THIS IS A WAFS GRID
                    +
                    171  IF(scan_mode==64 .AND. igdtmpl_full(8)==73 .AND. igdtmpl_full(9)==73 .AND. &
                    +
                    172  num_opt==73 .AND. idlat==igdtmpl_full(18) .AND. idlon==igdtmpl_full(17))THEN
                    +
                    173  igdtmpl_thin=igdtmpl_full
                    +
                    174  igdtmpl_thin(8)=missing
                    +
                    175  igdtmpl_thin(17)=missing
                    +
                    176  IF(igdtmpl_thin(12)==0) THEN ! IS LATITUDE OF ROW 1 THE EQUATOR?
                    +
                    177  opt_pts=npwafs
                    +
                    178  ELSE
                    +
                    179  opt_pts=npwafs(73:1:-1)
                    +
                    180  ENDIF
                    +
                    181  ELSE
                    +
                    182  iret=1
                    +
                    183  ENDIF
                    +
                    184  ENDIF
                    +
                    185  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    186  ! TRANSFORM FIELDS
                    +
                    187  IF(iret.EQ.0) THEN
                    +
                    188  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    189  ! EXPAND THINNED FIELDS TO FULL FIELDS
                    +
                    190  IF(idir.EQ.1) THEN
                    +
                    191  DO k=1,km
                    +
                    192  is1=0
                    +
                    193  is2=0
                    +
                    194  ib_full(k)=0
                    +
                    195  DO j=1,igdtmpl_full(9)
                    +
                    196  im1=opt_pts(j)
                    +
                    197  im2=igdtmpl_full(8)
                    +
                    198  rat1=float(im1-1)/float(im2-1)
                    +
                    199  DO i=1,im2
                    +
                    200  x1=(i-1)*rat1+1
                    +
                    201  ia=int(x1)
                    +
                    202  ia=min(max(ia,1),im1-1)
                    +
                    203  ib=ia+1
                    +
                    204  wa=ib-x1
                    +
                    205  wb=x1-ia
                    +
                    206  IF(ib_thin(k)==0.OR.(bitmap_thin(is1+ia,k).AND.bitmap_thin(is1+ib,k))) THEN
                    +
                    207  data_full(is2+i,k)=wa*data_thin(is1+ia,k)+wb*data_thin(is1+ib,k)
                    +
                    208  bitmap_full(is2+i,k)=.true.
                    +
                    209  ELSE
                    +
                    210  data_full(is2+i,k)=0.0
                    +
                    211  bitmap_full(is2+i,k)=.false.
                    +
                    212  ib_full(k)=1
                    +
                    213  ENDIF
                    +
                    214  ENDDO
                    +
                    215  is1=is1+im1
                    +
                    216  is2=is2+im2
                    +
                    217  ENDDO
                    +
                    218  ENDDO
                    +
                    219  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    220  ! CONTRACT FULL FIELDS TO THINNED FIELDS
                    +
                    221  ELSEIF(idir.EQ.-1) THEN
                    +
                    222  DO k=1,km
                    +
                    223  is1=0
                    +
                    224  is2=0
                    +
                    225  ib_thin(k)=0
                    +
                    226  DO j=1,igdtmpl_full(9)
                    +
                    227  im1=opt_pts(j)
                    +
                    228  im2=igdtmpl_full(8)
                    +
                    229  rat2=float(im2-1)/float(im1-1)
                    +
                    230  DO i=1,im1
                    +
                    231  x2=(i-1)*rat2+1
                    +
                    232  ia=int(x2)
                    +
                    233  ia=min(max(ia,1),im2-1)
                    +
                    234  ib=ia+1
                    +
                    235  wa=ib-x2
                    +
                    236  wb=x2-ia
                    +
                    237  IF(ib_full(k)==0.OR.(bitmap_full(is2+ia,k).AND.bitmap_full(is2+ib,k))) THEN
                    +
                    238  data_thin(is1+i,k)=wa*data_full(is2+ia,k)+wb*data_full(is2+ib,k)
                    +
                    239  bitmap_thin(is1+i,k)=.true.
                    +
                    240  ELSE
                    +
                    241  data_thin(is1+i,k)=0.0
                    +
                    242  bitmap_thin(is1+i,k)=.false.
                    +
                    243  ib_thin(k)=1
                    +
                    244  ENDIF
                    +
                    245  ENDDO
                    +
                    246  is1=is1+im1
                    +
                    247  is2=is2+im2
                    +
                    248  ENDDO
                    +
                    249  ENDDO
                    +
                    250  ENDIF
                    +
                    251  ENDIF
                    +
                    252  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    253 END SUBROUTINE ipxwafs2
                    +
                    subroutine ipxwafs2(IDIR, NUMPTS_THIN, NUMPTS_FULL, KM, NUM_OPT, OPT_PTS, IGDTLEN, IGDTMPL_THIN, DATA_THIN, IB_THIN, BITMAP_THIN, IGDTMPL_FULL, DATA_FULL, IB_FULL, BITMAP_FULL, IRET)
                    Expand or contract wafs grids using linear interpolation and account for bitmapped data.
                    Definition: ipxwafs2.F90:92
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipxwafs3_8F90.html b/ver-5.0.0/ipxwafs3_8F90.html new file mode 100644 index 00000000..ded1e329 --- /dev/null +++ b/ver-5.0.0/ipxwafs3_8F90.html @@ -0,0 +1,306 @@ + + + + + + + +NCEPLIBS-ip: ipxwafs3.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ipxwafs3.F90 File Reference
                    +
                    +
                    + +

                    Expand or contract wafs grids using neighbor interpolation and accout for bitmapped data. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine ipxwafs3 (IDIR, NUMPTS_THIN, NUMPTS_FULL, KM, NUM_OPT, OPT_PTS, IGDTLEN, IGDTMPL_THIN, DATA_THIN, IB_THIN, BITMAP_THIN, IGDTMPL_FULL, DATA_FULL, IB_FULL, BITMAP_FULL, IRET)
                     Expand or contract wafs grids using neighbor interpolation and accout for bitmapped data. More...
                     
                    +

                    Detailed Description

                    +

                    Expand or contract wafs grids using neighbor interpolation and accout for bitmapped data.

                    +
                    Author
                    Trojan
                    +
                    Date
                    7-7-13
                    + +

                    Definition in file ipxwafs3.F90.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ ipxwafs3()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipxwafs3 (integer, intent(in) IDIR,
                    integer, intent(in) NUMPTS_THIN,
                    integer, intent(in) NUMPTS_FULL,
                    integer, intent(in) KM,
                    integer, intent(in) NUM_OPT,
                    integer, dimension(num_opt), intent(inout) OPT_PTS,
                    integer, intent(in) IGDTLEN,
                    integer, dimension(igdtlen), intent(inout) IGDTMPL_THIN,
                    real, dimension(numpts_thin,km), intent(inout) DATA_THIN,
                    integer, dimension(km), intent(inout) IB_THIN,
                    logical(kind=1), dimension(numpts_thin,km), intent(inout) BITMAP_THIN,
                    integer, dimension(igdtlen), intent(inout) IGDTMPL_FULL,
                    real, dimension(numpts_full,km), intent(inout) DATA_FULL,
                    integer, dimension(km), intent(inout) IB_FULL,
                    logical(kind=1), dimension(numpts_full,km), intent(inout) BITMAP_FULL,
                    integer, intent(out) IRET 
                    )
                    +
                    + +

                    Expand or contract wafs grids using neighbor interpolation and accout for bitmapped data.

                    +

                    This subprogram transforms between the thinned wafs grids used for transmitting to the aviation community and their full expansion as used for general interpolation and graphics. The thinned wafs grids are latitude-longitude grids where the number of points in each row decrease toward the pole. This information is stored in the grib 2 grid definition template (section 3) starting at octet 73.

                    +

                    The full grid counterparts have an equal number of points per row.

                    +

                    The transform between the full and thinned wafs wafs grid is done by linear interpolation and is not reversible. This routine works with bitmapped data.

                    +

                    This subroutine is similar to:

                      +
                    • ipxwafs() which uses linear interpolation.
                    • +
                    • ipxwafs2() which uses linear interpolation and accounts for
                    • +
                    • bitmapped data.
                    • +
                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    07-07-13 Trojan initial version based on ipxwafs2
                    2015-jul gayno convert to grib 2
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]idirinteger transform option
                      +
                    • 1 to expand thinned fields to full fields
                    • +
                    • -1 to contract full fields to thinned fields
                    • +
                    +
                    [in]numpts_thininteger number of grid points - thinned grid. Must be 3447.
                    [in]numpts_fullinteger number of grid points - full grid. Must be 5329.
                    [in]kminteger number of fields to transform
                    [in]num_optinteger number of values to describe the thinned grid. must be 73. dimension of array opt_pts.
                    [in,out]opt_ptsinteger (num_opt) number of grid points per row - thinned grid - if idir=+1
                    [in]igdtleninteger grid defintion template array length. must be 19 for lat/lon grids. corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure. same for thin and full grids which are both lat/lon.
                    [in]igdtmpl_thininteger (igdtlen) grid definition template array - thinned grid - if idir=+1. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure (section 3 info):
                      +
                    • 1 shape of earth, octet 15
                    • +
                    • 2 scale factor of spherical earth radius, octet 16
                    • +
                    • 3 scaled value of radius of spherical earth, octets 17-20
                    • +
                    • 4 scale factor of major axis of elliptical earth, octet 21
                    • +
                    • 5 scaled value of major axis of elliptical earth, octets 22-25
                    • +
                    • 6 scale factor of minor axis of elliptical earth, octet 26
                    • +
                    • 7 scaled value of minor axis of elliptical earth, octets 27-30
                    • +
                    • 8 set to missing for thinned grid., octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42.
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 set to missing for thinned grid, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72
                    • +
                    +
                    [in,out]data_thinreal (numpts_thin,km) thinned grid fields if idir=+1
                    [in,out]ib_thininteger (km) bitmap flags thinned grid - if idir=+1
                    [in,out]bitmap_thinlogical (numpts_thin,km) bitmap fields thin grid - if idir=+1
                    [in,out]igdtmpl_fullinteger (igdtlen) grid definition template array - full grid - if idir=-1. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. same as igdtmpl_thin except: (8): number of points along a parallel, octs 31-34 (17): i-direction increment, octets 64-67
                    [in,out]data_fullreal (numpts_full,km) full grid fields if idir=-1
                    [in,out]ib_fullinteger (km) bitmap flags full grid - if idir=-1
                    [in,out]bitmap_fulllogical (numpts_full,km) bitmap fields full grid - if idir=-1
                    [out]iretinteger return code
                      +
                    • 0 successful transformation
                    • +
                    • 1 improper grid specification
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Trojan
                    +
                    Date
                    7-7-13
                    + +

                    Definition at line 88 of file ipxwafs3.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipxwafs3_8F90.js b/ver-5.0.0/ipxwafs3_8F90.js new file mode 100644 index 00000000..30094c7a --- /dev/null +++ b/ver-5.0.0/ipxwafs3_8F90.js @@ -0,0 +1,4 @@ +var ipxwafs3_8F90 = +[ + [ "ipxwafs3", "ipxwafs3_8F90.html#aae7be3c77cbe16d0219c86e443e6ec1d", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ipxwafs3_8F90_source.html b/ver-5.0.0/ipxwafs3_8F90_source.html new file mode 100644 index 00000000..87f85444 --- /dev/null +++ b/ver-5.0.0/ipxwafs3_8F90_source.html @@ -0,0 +1,289 @@ + + + + + + + +NCEPLIBS-ip: ipxwafs3.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ipxwafs3.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    5 
                    +
                    88 SUBROUTINE ipxwafs3(IDIR, NUMPTS_THIN, NUMPTS_FULL, KM, NUM_OPT, OPT_PTS, &
                    +
                    89  IGDTLEN, IGDTMPL_THIN, DATA_THIN, IB_THIN, BITMAP_THIN, &
                    +
                    90  IGDTMPL_FULL, DATA_FULL, IB_FULL, BITMAP_FULL, IRET)
                    +
                    91  IMPLICIT NONE
                    +
                    92 !
                    +
                    93  INTEGER, INTENT(IN ) :: NUM_OPT
                    +
                    94  INTEGER, INTENT(INOUT) :: OPT_PTS(NUM_OPT)
                    +
                    95  INTEGER, INTENT(IN ) :: IDIR, KM, NUMPTS_THIN, NUMPTS_FULL
                    +
                    96  INTEGER, INTENT(IN ) :: IGDTLEN
                    +
                    97  INTEGER, INTENT(INOUT) :: IGDTMPL_THIN(IGDTLEN)
                    +
                    98  INTEGER, INTENT(INOUT) :: IGDTMPL_FULL(IGDTLEN)
                    +
                    99  INTEGER, INTENT(INOUT) :: IB_THIN(KM), IB_FULL(KM)
                    +
                    100  INTEGER, INTENT( OUT) :: IRET
                    +
                    101 !
                    +
                    102  LOGICAL(KIND=1), INTENT(INOUT) :: BITMAP_THIN(NUMPTS_THIN,KM)
                    +
                    103  LOGICAL(KIND=1), INTENT(INOUT) :: BITMAP_FULL(NUMPTS_FULL,KM)
                    +
                    104 !
                    +
                    105  REAL, INTENT(INOUT) :: DATA_THIN(NUMPTS_THIN,KM)
                    +
                    106  REAL, INTENT(INOUT) :: DATA_FULL(NUMPTS_FULL,KM)
                    +
                    107 !
                    +
                    108  INTEGER, PARAMETER :: MISSING=-1
                    +
                    109 !
                    +
                    110  INTEGER :: SCAN_MODE, I, J, K, IDLAT, IDLON
                    +
                    111  INTEGER :: IA, IB, IM, IM1, IM2, NPWAFS(73)
                    +
                    112  INTEGER :: IS1, IS2, ISCAN, ISCALE
                    +
                    113 !
                    +
                    114  LOGICAL :: TEST1, TEST2
                    +
                    115 !
                    +
                    116  REAL :: DLON, HI
                    +
                    117  REAL :: RAT1, RAT2, RLON1, RLON2
                    +
                    118  REAL :: WA, WB, X1, X2
                    +
                    119 !
                    +
                    120  DATA npwafs/ &
                    +
                    121  73, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 71, 71, 71, 70,&
                    +
                    122  70, 69, 69, 68, 67, 67, 66, 65, 65, 64, 63, 62, 61, 60, 60,&
                    +
                    123  59, 58, 57, 56, 55, 54, 52, 51, 50, 49, 48, 47, 45, 44, 43,&
                    +
                    124  42, 40, 39, 38, 36, 35, 33, 32, 30, 29, 28, 26, 25, 23, 22,&
                    +
                    125  20, 19, 17, 16, 14, 12, 11, 9, 8, 6, 5, 3, 2/
                    +
                    126 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    127 ! TRANSFORM GDS
                    +
                    128  iret=0
                    +
                    129 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    130 ! REG LAT/LON GRIDS HAVE 19 GDT ELEMENTS.
                    +
                    131  IF (igdtlen /= 19 .OR. numpts_thin/=3447 .OR. numpts_full/=5329) THEN
                    +
                    132  iret=1
                    +
                    133  RETURN
                    +
                    134  ENDIF
                    +
                    135 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    136 ! EXPAND THINNED GDS TO FULL GDS
                    +
                    137  IF(idir.GT.0) THEN
                    +
                    138  scan_mode=igdtmpl_thin(19)
                    +
                    139  iscale=igdtmpl_thin(10)*igdtmpl_thin(11)
                    +
                    140  IF(iscale==0) iscale=10**6
                    +
                    141  idlat=nint(1.25*float(iscale))
                    +
                    142  test1=all(opt_pts==npwafs)
                    +
                    143  test2=all(opt_pts==npwafs(73:1:-1))
                    +
                    144 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    145 ! SOME CHECKS TO ENSURE THIS IS A WAFS GRID
                    +
                    146  IF(scan_mode==64 .AND. igdtmpl_thin(9)==73 .AND. &
                    +
                    147  idlat==igdtmpl_thin(18) .AND. (test1 .OR. test2) ) THEN
                    +
                    148  igdtmpl_full=igdtmpl_thin
                    +
                    149  im=73
                    +
                    150  igdtmpl_full(8)=im
                    +
                    151  rlon1=float(igdtmpl_full(13))/float(iscale)
                    +
                    152  rlon2=float(igdtmpl_full(16))/float(iscale)
                    +
                    153  iscan=mod(igdtmpl_full(19)/128,2)
                    +
                    154  hi=(-1.)**iscan
                    +
                    155  dlon=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(im-1)
                    +
                    156  igdtmpl_full(17)=nint(dlon*float(iscale))
                    +
                    157  ELSE
                    +
                    158  iret=1
                    +
                    159  ENDIF
                    +
                    160 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    161 ! CONTRACT FULL GDS TO THINNED GDS
                    +
                    162  ELSEIF(idir.LT.0) THEN
                    +
                    163  scan_mode=igdtmpl_full(19)
                    +
                    164  iscale=igdtmpl_full(10)*igdtmpl_full(11)
                    +
                    165  IF(iscale==0) iscale=10**6
                    +
                    166  idlat=nint(1.25*float(iscale))
                    +
                    167  idlon=idlat
                    +
                    168 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    169 ! SOME CHECKS TO ENSURE THIS IS A WAFS GRID
                    +
                    170  IF(scan_mode==64 .AND. igdtmpl_full(8)==73 .AND. igdtmpl_full(9)==73 .AND. &
                    +
                    171  num_opt==73 .AND. idlat==igdtmpl_full(18) .AND. idlon==igdtmpl_full(17))THEN
                    +
                    172  igdtmpl_thin=igdtmpl_full
                    +
                    173  igdtmpl_thin(8)=missing
                    +
                    174  igdtmpl_thin(17)=missing
                    +
                    175  IF(igdtmpl_thin(12)==0) THEN ! IS LATITUDE OF ROW 1 THE EQUATOR?
                    +
                    176  opt_pts=npwafs
                    +
                    177  ELSE
                    +
                    178  opt_pts=npwafs(73:1:-1)
                    +
                    179  ENDIF
                    +
                    180  ELSE
                    +
                    181  iret=1
                    +
                    182  ENDIF
                    +
                    183  ENDIF
                    +
                    184 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    185 ! TRANSFORM FIELDS
                    +
                    186  IF(iret.EQ.0) THEN
                    +
                    187 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    188 ! EXPAND THINNED FIELDS TO FULL FIELDS
                    +
                    189  IF(idir.EQ.1) THEN
                    +
                    190  DO k=1,km
                    +
                    191  is1=0
                    +
                    192  is2=0
                    +
                    193  ib_full(k)=0
                    +
                    194  DO j=1,igdtmpl_full(9)
                    +
                    195  im1=opt_pts(j)
                    +
                    196  im2=igdtmpl_full(8)
                    +
                    197  rat1=float(im1-1)/float(im2-1)
                    +
                    198  DO i=1,im2
                    +
                    199  x1=(i-1)*rat1+1
                    +
                    200  ia=int(x1)
                    +
                    201  ia=min(max(ia,1),im1-1)
                    +
                    202  ib=ia+1
                    +
                    203  wa=ib-x1
                    +
                    204  wb=x1-ia
                    +
                    205  IF(wa.GE.wb) THEN
                    +
                    206  IF(ib_thin(k).EQ.0.OR.bitmap_thin(is1+ia,k)) THEN
                    +
                    207  data_full(is2+i,k)=data_thin(is1+ia,k)
                    +
                    208  bitmap_full(is2+i,k)=.true.
                    +
                    209  ELSE
                    +
                    210  data_full(is2+i,k)=0.0
                    +
                    211  bitmap_full(is2+i,k)=.false.
                    +
                    212  ib_full(k)=1
                    +
                    213  ENDIF
                    +
                    214  ELSE
                    +
                    215  IF(ib_thin(k).EQ.0.OR.bitmap_thin(is1+ib,k)) THEN
                    +
                    216  data_full(is2+i,k)=data_thin(is1+ib,k)
                    +
                    217  bitmap_full(is2+i,k)=.true.
                    +
                    218  ELSE
                    +
                    219  data_full(is2+i,k)=0.0
                    +
                    220  bitmap_full(is2+i,k)=.false.
                    +
                    221  ib_full(k)=1
                    +
                    222  ENDIF
                    +
                    223  ENDIF
                    +
                    224  ENDDO
                    +
                    225  is1=is1+im1
                    +
                    226  is2=is2+im2
                    +
                    227  ENDDO
                    +
                    228  ENDDO
                    +
                    229 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    230 ! CONTRACT FULL FIELDS TO THINNED FIELDS
                    +
                    231  ELSEIF(idir.EQ.-1) THEN
                    +
                    232  DO k=1,km
                    +
                    233  is1=0
                    +
                    234  is2=0
                    +
                    235  ib_thin(k)=0
                    +
                    236  DO j=1,igdtmpl_full(9)
                    +
                    237  im1=opt_pts(j)
                    +
                    238  im2=igdtmpl_full(8)
                    +
                    239  rat2=float(im2-1)/float(im1-1)
                    +
                    240  DO i=1,im1
                    +
                    241  x2=(i-1)*rat2+1
                    +
                    242  ia=int(x2)
                    +
                    243  ia=min(max(ia,1),im2-1)
                    +
                    244  ib=ia+1
                    +
                    245  wa=ib-x2
                    +
                    246  wb=x2-ia
                    +
                    247  IF(wa.GE.wb) THEN
                    +
                    248  IF(ib_full(k).EQ.0.OR.bitmap_full(is2+ia,k)) THEN
                    +
                    249  data_thin(is1+i,k)=data_full(is2+ia,k)
                    +
                    250  bitmap_thin(is1+i,k)=.true.
                    +
                    251  ELSE
                    +
                    252  data_thin(is1+i,k)=0.0
                    +
                    253  bitmap_thin(is1+i,k)=.false.
                    +
                    254  ib_thin(k)=1
                    +
                    255  ENDIF
                    +
                    256  ELSE
                    +
                    257  IF(ib_full(k).EQ.0.OR.bitmap_full(is2+ib,k)) THEN
                    +
                    258  data_thin(is1+i,k)=data_full(is2+ib,k)
                    +
                    259  bitmap_thin(is1+i,k)=.true.
                    +
                    260  ELSE
                    +
                    261  data_thin(is1+i,k)=0.0
                    +
                    262  bitmap_thin(is1+i,k)=.false.
                    +
                    263  ib_thin(k)=1
                    +
                    264  ENDIF
                    +
                    265  ENDIF
                    +
                    266  ENDDO
                    +
                    267  is1=is1+im1
                    +
                    268  is2=is2+im2
                    +
                    269  ENDDO
                    +
                    270  ENDDO
                    +
                    271  ENDIF
                    +
                    272  ENDIF
                    +
                    273 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    274  END SUBROUTINE ipxwafs3
                    +
                    subroutine ipxwafs3(IDIR, NUMPTS_THIN, NUMPTS_FULL, KM, NUM_OPT, OPT_PTS, IGDTLEN, IGDTMPL_THIN, DATA_THIN, IB_THIN, BITMAP_THIN, IGDTMPL_FULL, DATA_FULL, IB_FULL, BITMAP_FULL, IRET)
                    Expand or contract wafs grids using neighbor interpolation and accout for bitmapped data.
                    Definition: ipxwafs3.F90:91
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipxwafs_8F90.html b/ver-5.0.0/ipxwafs_8F90.html new file mode 100644 index 00000000..bb470c0e --- /dev/null +++ b/ver-5.0.0/ipxwafs_8F90.html @@ -0,0 +1,278 @@ + + + + + + + +NCEPLIBS-ip: ipxwafs.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ipxwafs.F90 File Reference
                    +
                    +
                    + +

                    Expand or contract wafs grids. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine ipxwafs (IDIR, NUMPTS_THIN, NUMPTS_FULL, KM, NUM_OPT, OPT_PTS, IGDTLEN, IGDTMPL_THIN, DATA_THIN, IGDTMPL_FULL, DATA_FULL, IRET)
                     Expand or contract wafs grids. More...
                     
                    +

                    Detailed Description

                    +

                    Expand or contract wafs grids.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition in file ipxwafs.F90.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ ipxwafs()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipxwafs (integer, intent(in) IDIR,
                    integer, intent(in) NUMPTS_THIN,
                    integer, intent(in) NUMPTS_FULL,
                    integer, intent(in) KM,
                    integer, intent(in) NUM_OPT,
                    integer, dimension(num_opt), intent(inout) OPT_PTS,
                    integer, intent(in) IGDTLEN,
                    integer, dimension(igdtlen), intent(inout) IGDTMPL_THIN,
                    real, dimension(numpts_thin,km), intent(inout) DATA_THIN,
                    integer, dimension(igdtlen), intent(inout) IGDTMPL_FULL,
                    real, dimension(numpts_full,km), intent(inout) DATA_FULL,
                    integer, intent(out) IRET 
                    )
                    +
                    + +

                    Expand or contract wafs grids.

                    +

                    This subprogram transforms between the thinned wafs grids used for transmitting to the aviation community and their full expansion as used for general interpolation and graphics.

                    +

                    The thinned wafs grids are latitude-longitude grids where the number of points in each row decrease toward the pole.

                    +

                    This information is stored in the grib 2 grid definition template (section 3) starting at octet 73. The full grid counterparts have an equal number of points per row. The transform between the full and thinned wafs grid is done by linear interpolation and is not reversible.

                    +

                    This routine does not work for bitmapped data.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    96-04-10 iredell initial version
                    2015-july gayno convert to grib 2
                    +
                    Parameters
                    + + + + + + + + + + + + + +
                    [in]idirinteger transform option
                      +
                    • (+1 to expand thinned fields to full fields)
                    • +
                    • (-1 to contract full fields to thinned fields)
                    • +
                    +
                    [in]numpts_thininteger number of grid points - thinned grid. must be 3447.
                    [in]numpts_fullinteger number of grid points - full grid. must be 5329 (73^2).
                    [in]kminteger number of fields to transform
                    [in]num_optinteger number of values to describe the thinned grid. must be 73. dimension of array opt_pts.
                    [in,out]opt_ptsinteger (num_opt) number of grid points per row - thinned grid - if idir=+1
                    [in]igdtleninteger grid defintion template array length. must be 19 for lat/lon grids. corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure. same for thin and full grids which are both lat/lon.
                    [in,out]igdtmpl_thininteger (igdtlen) grid definition template array - thinned grid - if idir=+1. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure (section 3 info):
                      +
                    • 1 shape of earth, octet 15
                    • +
                    • 2 scale factor of spherical earth radius, octet 16
                    • +
                    • 3 scaled value of radius of spherical earth, octets 17-20
                    • +
                    • 4 scale factor of major axis of elliptical earth, octet 21
                    • +
                    • 5 scaled value of major axis of elliptical earth, octets 22-25
                    • +
                    • 6 scale factor of minor axis of elliptical earth, octet 26
                    • +
                    • 7 scaled value of minor axis of elliptical earth, octets 27-30
                    • +
                    • 8 set to missing for thinned grid., octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42.
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 set to missing for thinned grid, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72
                    • +
                    +
                    [in,out]data_thinreal (numpts_thin,km) thinned grid fields if idir=+1
                    [in,out]igdtmpl_fullinteger (igdtlen) grid definition template array - full grid - if idir=-1. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. same as igdtmpl_thin except:
                      +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    +
                    [in,out]data_fullreal (numpts_full,km) full grid fields if idir=-1
                    [out]iretinteger return code
                      +
                    • 0 successful transformation
                    • +
                    • 1 improper grid specification
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 81 of file ipxwafs.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ipxwafs_8F90.js b/ver-5.0.0/ipxwafs_8F90.js new file mode 100644 index 00000000..79c0b5e0 --- /dev/null +++ b/ver-5.0.0/ipxwafs_8F90.js @@ -0,0 +1,4 @@ +var ipxwafs_8F90 = +[ + [ "ipxwafs", "ipxwafs_8F90.html#a1465ea191950f7464bb3374abed94c12", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ipxwafs_8F90_source.html b/ver-5.0.0/ipxwafs_8F90_source.html new file mode 100644 index 00000000..1cea1bcd --- /dev/null +++ b/ver-5.0.0/ipxwafs_8F90_source.html @@ -0,0 +1,248 @@ + + + + + + + +NCEPLIBS-ip: ipxwafs.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ipxwafs.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    +
                    68 
                    +
                    81  SUBROUTINE ipxwafs(IDIR, NUMPTS_THIN, NUMPTS_FULL, KM, NUM_OPT, &
                    +
                    82  OPT_PTS, IGDTLEN, IGDTMPL_THIN, DATA_THIN, &
                    +
                    83  IGDTMPL_FULL, DATA_FULL, IRET)
                    +
                    84  IMPLICIT NONE
                    +
                    85 !
                    +
                    86  INTEGER, INTENT(IN ) :: NUM_OPT
                    +
                    87  INTEGER, INTENT(INOUT) :: OPT_PTS(NUM_OPT)
                    +
                    88  INTEGER, INTENT(IN ) :: IDIR, KM, NUMPTS_THIN, NUMPTS_FULL
                    +
                    89  INTEGER, INTENT(IN ) :: IGDTLEN
                    +
                    90  INTEGER, INTENT(INOUT) :: IGDTMPL_THIN(IGDTLEN)
                    +
                    91  INTEGER, INTENT(INOUT) :: IGDTMPL_FULL(IGDTLEN)
                    +
                    92  INTEGER, INTENT( OUT) :: IRET
                    +
                    93 !
                    +
                    94  REAL, INTENT(INOUT) :: DATA_THIN(NUMPTS_THIN,KM)
                    +
                    95  REAL, INTENT(INOUT) :: DATA_FULL(NUMPTS_FULL,KM)
                    +
                    96 !
                    +
                    97  INTEGER, PARAMETER :: MISSING=-1
                    +
                    98 !
                    +
                    99  INTEGER :: SCAN_MODE, I, J, K, IDLAT, IDLON
                    +
                    100  INTEGER :: IA, IB, IM, IM1, IM2, NPWAFS(73)
                    +
                    101  INTEGER :: IS1, IS2, ISCAN, ISCALE
                    +
                    102 !
                    +
                    103  LOGICAL :: TEST1, TEST2
                    +
                    104 !
                    +
                    105  REAL :: DLON, HI
                    +
                    106  REAL :: RAT1, RAT2, RLON1, RLON2
                    +
                    107  REAL :: WA, WB, X1, X2
                    +
                    108 !
                    +
                    109  DATA npwafs/ &
                    +
                    110  73, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 71, 71, 71, 70,&
                    +
                    111  70, 69, 69, 68, 67, 67, 66, 65, 65, 64, 63, 62, 61, 60, 60,&
                    +
                    112  59, 58, 57, 56, 55, 54, 52, 51, 50, 49, 48, 47, 45, 44, 43,&
                    +
                    113  42, 40, 39, 38, 36, 35, 33, 32, 30, 29, 28, 26, 25, 23, 22,&
                    +
                    114  20, 19, 17, 16, 14, 12, 11, 9, 8, 6, 5, 3, 2/
                    +
                    115 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    116 ! TRANSFORM GDS
                    +
                    117  iret=0
                    +
                    118 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    119 ! REG LAT/LON GRIDS HAVE 19 GDT ELEMENTS.
                    +
                    120  IF (igdtlen /= 19 .OR. numpts_thin/=3447 .OR. numpts_full/=5329) THEN
                    +
                    121  iret=1
                    +
                    122  RETURN
                    +
                    123  ENDIF
                    +
                    124 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    125 ! EXPAND THINNED GDS TO FULL GDS
                    +
                    126  IF(idir.GT.0) THEN
                    +
                    127  scan_mode=igdtmpl_thin(19)
                    +
                    128  iscale=igdtmpl_thin(10)*igdtmpl_thin(11)
                    +
                    129  IF(iscale==0) iscale=10**6
                    +
                    130  idlat=nint(1.25*float(iscale))
                    +
                    131  test1=all(opt_pts==npwafs)
                    +
                    132  test2=all(opt_pts==npwafs(73:1:-1))
                    +
                    133 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    134 ! SOME CHECKS TO ENSURE THIS IS A WAFS GRID
                    +
                    135  IF(scan_mode==64 .AND. igdtmpl_thin(9)==73 .AND. &
                    +
                    136  idlat==igdtmpl_thin(18) .AND. (test1 .OR. test2) ) THEN
                    +
                    137  igdtmpl_full=igdtmpl_thin
                    +
                    138  im=73
                    +
                    139  igdtmpl_full(8)=im
                    +
                    140  rlon1=float(igdtmpl_full(13))/float(iscale)
                    +
                    141  rlon2=float(igdtmpl_full(16))/float(iscale)
                    +
                    142  iscan=mod(igdtmpl_full(19)/128,2)
                    +
                    143  hi=(-1.)**iscan
                    +
                    144  dlon=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(im-1)
                    +
                    145  igdtmpl_full(17)=nint(dlon*float(iscale))
                    +
                    146  ELSE
                    +
                    147  iret=1
                    +
                    148  ENDIF
                    +
                    149 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    150 ! CONTRACT FULL GDS TO THINNED GDS
                    +
                    151  ELSEIF(idir.LT.0) THEN
                    +
                    152  scan_mode=igdtmpl_full(19)
                    +
                    153  iscale=igdtmpl_full(10)*igdtmpl_full(11)
                    +
                    154  IF(iscale==0) iscale=10**6
                    +
                    155  idlat=nint(1.25*float(iscale))
                    +
                    156  idlon=idlat
                    +
                    157 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    158 ! SOME CHECKS TO ENSURE THIS IS A WAFS GRID
                    +
                    159  IF(scan_mode==64 .AND. igdtmpl_full(8)==73 .AND. igdtmpl_full(9)==73 .AND. &
                    +
                    160  num_opt==73 .AND. idlat==igdtmpl_full(18) .AND. idlon==igdtmpl_full(17))THEN
                    +
                    161  igdtmpl_thin=igdtmpl_full
                    +
                    162  igdtmpl_thin(8)=missing
                    +
                    163  igdtmpl_thin(17)=missing
                    +
                    164  IF(igdtmpl_thin(12)==0) THEN ! IS LATITUDE OF ROW 1 THE EQUATOR?
                    +
                    165  opt_pts=npwafs
                    +
                    166  ELSE
                    +
                    167  opt_pts=npwafs(73:1:-1)
                    +
                    168  ENDIF
                    +
                    169  ELSE
                    +
                    170  iret=1
                    +
                    171  ENDIF
                    +
                    172  ENDIF
                    +
                    173 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    174 ! TRANSFORM FIELDS
                    +
                    175  IF(iret.EQ.0) THEN
                    +
                    176 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    177 ! EXPAND THINNED FIELDS TO FULL FIELDS
                    +
                    178  IF(idir.EQ.1) THEN
                    +
                    179  DO k=1,km
                    +
                    180  is1=0
                    +
                    181  is2=0
                    +
                    182  DO j=1,igdtmpl_full(9)
                    +
                    183  im1=opt_pts(j)
                    +
                    184  im2=igdtmpl_full(8)
                    +
                    185  rat1=float(im1-1)/float(im2-1)
                    +
                    186  DO i=1,im2
                    +
                    187  x1=(i-1)*rat1+1
                    +
                    188  ia=int(x1)
                    +
                    189  ia=min(max(ia,1),im1-1)
                    +
                    190  ib=ia+1
                    +
                    191  wa=ib-x1
                    +
                    192  wb=x1-ia
                    +
                    193  data_full(is2+i,k)=wa*data_thin(is1+ia,k)+wb*data_thin(is1+ib,k)
                    +
                    194  ENDDO
                    +
                    195  is1=is1+im1
                    +
                    196  is2=is2+im2
                    +
                    197  ENDDO
                    +
                    198  ENDDO
                    +
                    199 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    200 ! CONTRACT FULL FIELDS TO THINNED FIELDS
                    +
                    201  ELSEIF(idir.EQ.-1) THEN
                    +
                    202  DO k=1,km
                    +
                    203  is1=0
                    +
                    204  is2=0
                    +
                    205  DO j=1,igdtmpl_full(9)
                    +
                    206  im1=opt_pts(j)
                    +
                    207  im2=igdtmpl_full(8)
                    +
                    208  rat2=float(im2-1)/float(im1-1)
                    +
                    209  DO i=1,im1
                    +
                    210  x2=(i-1)*rat2+1
                    +
                    211  ia=int(x2)
                    +
                    212  ia=min(max(ia,1),im2-1)
                    +
                    213  ib=ia+1
                    +
                    214  wa=ib-x2
                    +
                    215  wb=x2-ia
                    +
                    216  data_thin(is1+i,k)=wa*data_full(is2+ia,k)+wb*data_full(is2+ib,k)
                    +
                    217  ENDDO
                    +
                    218  is1=is1+im1
                    +
                    219  is2=is2+im2
                    +
                    220  ENDDO
                    +
                    221  ENDDO
                    +
                    222  ENDIF
                    +
                    223  ENDIF
                    +
                    224 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    225  END SUBROUTINE ipxwafs
                    +
                    subroutine ipxwafs(IDIR, NUMPTS_THIN, NUMPTS_FULL, KM, NUM_OPT, OPT_PTS, IGDTLEN, IGDTMPL_THIN, DATA_THIN, IGDTMPL_FULL, DATA_FULL, IRET)
                    Expand or contract wafs grids.
                    Definition: ipxwafs.F90:84
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/jquery.js b/ver-5.0.0/jquery.js new file mode 100644 index 00000000..103c32d7 --- /dev/null +++ b/ver-5.0.0/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
                    "],col:[2,"","
                    "],tr:[2,"","
                    "],td:[3,"","
                    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
                    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
                    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
                    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
                    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
                    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
                    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
                    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/lapack__gen_8F.html b/ver-5.0.0/lapack__gen_8F.html similarity index 100% rename from lapack__gen_8F.html rename to ver-5.0.0/lapack__gen_8F.html diff --git a/lapack__gen_8F.js b/ver-5.0.0/lapack__gen_8F.js similarity index 100% rename from lapack__gen_8F.js rename to ver-5.0.0/lapack__gen_8F.js diff --git a/lapack__gen_8F_source.html b/ver-5.0.0/lapack__gen_8F_source.html similarity index 100% rename from lapack__gen_8F_source.html rename to ver-5.0.0/lapack__gen_8F_source.html diff --git a/ver-5.0.0/menu.js b/ver-5.0.0/menu.js new file mode 100644 index 00000000..2fe2214f --- /dev/null +++ b/ver-5.0.0/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
                  • '); + } else { + $('#main-menu').append('
                  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-5.0.0/menudata.js b/ver-5.0.0/menudata.js new file mode 100644 index 00000000..a7ca6073 --- /dev/null +++ b/ver-5.0.0/menudata.js @@ -0,0 +1,139 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Modules",url:"namespaces.html",children:[ +{text:"Modules List",url:"namespaces.html"}, +{text:"Module Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"b",url:"namespacemembers.html#index_b"}, +{text:"c",url:"namespacemembers.html#index_c"}, +{text:"d",url:"namespacemembers.html#index_d"}, +{text:"e",url:"namespacemembers.html#index_e"}, +{text:"f",url:"namespacemembers.html#index_f"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"h",url:"namespacemembers.html#index_h"}, +{text:"i",url:"namespacemembers.html#index_i"}, +{text:"j",url:"namespacemembers.html#index_j"}, +{text:"k",url:"namespacemembers.html#index_k"}, +{text:"l",url:"namespacemembers.html#index_l"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"n",url:"namespacemembers.html#index_n"}, +{text:"o",url:"namespacemembers.html#index_o"}, +{text:"p",url:"namespacemembers.html#index_p"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"y",url:"namespacemembers.html#index_y"}]}, +{text:"Functions/Subroutines",url:"namespacemembers_func.html",children:[ +{text:"e",url:"namespacemembers_func.html#index_e"}, +{text:"f",url:"namespacemembers_func.html#index_f"}, +{text:"g",url:"namespacemembers_func.html#index_g"}, +{text:"i",url:"namespacemembers_func.html#index_i"}, +{text:"l",url:"namespacemembers_func.html#index_l"}, +{text:"m",url:"namespacemembers_func.html#index_m"}, +{text:"p",url:"namespacemembers_func.html#index_p"}, +{text:"r",url:"namespacemembers_func.html#index_r"}]}, +{text:"Variables",url:"namespacemembers_vars.html",children:[ +{text:"a",url:"namespacemembers_vars.html#index_a"}, +{text:"b",url:"namespacemembers_vars.html#index_b"}, +{text:"c",url:"namespacemembers_vars.html#index_c"}, +{text:"d",url:"namespacemembers_vars.html#index_d"}, +{text:"e",url:"namespacemembers_vars.html#index_e"}, +{text:"g",url:"namespacemembers_vars.html#index_g"}, +{text:"h",url:"namespacemembers_vars.html#index_h"}, +{text:"i",url:"namespacemembers_vars.html#index_i"}, +{text:"j",url:"namespacemembers_vars.html#index_j"}, +{text:"k",url:"namespacemembers_vars.html#index_k"}, +{text:"l",url:"namespacemembers_vars.html#index_l"}, +{text:"m",url:"namespacemembers_vars.html#index_m"}, +{text:"n",url:"namespacemembers_vars.html#index_n"}, +{text:"o",url:"namespacemembers_vars.html#index_o"}, +{text:"p",url:"namespacemembers_vars.html#index_p"}, +{text:"r",url:"namespacemembers_vars.html#index_r"}, +{text:"s",url:"namespacemembers_vars.html#index_s"}, +{text:"y",url:"namespacemembers_vars.html#index_y"}]}]}]}, +{text:"Data Types List",url:"annotated.html",children:[ +{text:"Data Types List",url:"annotated.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"j",url:"functions.html#index_j"}, +{text:"k",url:"functions.html#index_k"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"w",url:"functions.html#index_w"}]}, +{text:"Functions/Subroutines",url:"functions_func.html",children:[ +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"p",url:"functions_func.html#index_p"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"g",url:"functions_vars.html#index_g"}, +{text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"j",url:"functions_vars.html#index_j"}, +{text:"k",url:"functions_vars.html#index_k"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"w",url:"functions_vars.html#index_w"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"c",url:"globals.html#index_c"}, +{text:"d",url:"globals.html#index_d"}, +{text:"g",url:"globals.html#index_g"}, +{text:"i",url:"globals.html#index_i"}, +{text:"l",url:"globals.html#index_l"}, +{text:"m",url:"globals.html#index_m"}, +{text:"n",url:"globals.html#index_n"}, +{text:"r",url:"globals.html#index_r"}, +{text:"s",url:"globals.html#index_s"}]}, +{text:"Functions/Subroutines",url:"globals_func.html",children:[ +{text:"c",url:"globals_func.html#index_c"}, +{text:"d",url:"globals_func.html#index_d"}, +{text:"g",url:"globals_func.html#index_g"}, +{text:"i",url:"globals_func.html#index_i"}, +{text:"l",url:"globals_func.html#index_l"}, +{text:"m",url:"globals_func.html#index_m"}, +{text:"n",url:"globals_func.html#index_n"}, +{text:"r",url:"globals_func.html#index_r"}, +{text:"s",url:"globals_func.html#index_s"}]}]}]}]} diff --git a/ver-5.0.0/movect_8F90.html b/ver-5.0.0/movect_8F90.html new file mode 100644 index 00000000..3a2082cf --- /dev/null +++ b/ver-5.0.0/movect_8F90.html @@ -0,0 +1,202 @@ + + + + + + + +NCEPLIBS-ip: movect.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    movect.F90 File Reference
                    +
                    +
                    + +

                    Move a vector along a great circle. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine movect (FLAT, FLON, TLAT, TLON, CROT, SROT)
                     This subprogram provides the rotation parameters to move a vector along a great circle from one position to another while conserving its orientation with respect to the great circle. More...
                     
                    +

                    Detailed Description

                    +

                    Move a vector along a great circle.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition in file movect.F90.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ movect()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine movect (real, intent(in) FLAT,
                    real, intent(in) FLON,
                    real, intent(in) TLAT,
                    real, intent(in) TLON,
                    real, intent(out) CROT,
                    real, intent(out) SROT 
                    )
                    +
                    + +

                    This subprogram provides the rotation parameters to move a vector along a great circle from one position to another while conserving its orientation with respect to the great circle.

                    +

                    These rotation parameters are useful for vector interpolation.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell Initial
                    1999-04-08 Iredell generalize precision
                    +
                    Parameters
                    + + + + + + + +
                    [in]flatreal latitude in degrees from which to move the vector.
                    [in]flonreal longitude in degrees from which to move the vector.
                    [in]tlatreal latitude in degrees to which to move the vector.
                    [in]tlonreal longitude in degrees to which to move the vector.
                    [out]crotreal clockwise vector rotation cosine.
                    [out]srotreal clockwise vector rotation sine. (uto=crot*ufrom-srot*vfrom; vto=srot*ufrom+crot*vfrom)
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 25 of file movect.F90.

                    + +

                    Referenced by bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_vector(), bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_vector(), budget_interp_mod::interpolate_budget::interpolate_budget_vector(), neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_vector(), and neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_vector().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/movect_8F90.js b/ver-5.0.0/movect_8F90.js new file mode 100644 index 00000000..033e8055 --- /dev/null +++ b/ver-5.0.0/movect_8F90.js @@ -0,0 +1,4 @@ +var movect_8F90 = +[ + [ "movect", "movect_8F90.html#a5974e32c0cf90a65b39c68460d761882", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/movect_8F90_source.html b/ver-5.0.0/movect_8F90_source.html new file mode 100644 index 00000000..2c97f142 --- /dev/null +++ b/ver-5.0.0/movect_8F90_source.html @@ -0,0 +1,146 @@ + + + + + + + +NCEPLIBS-ip: movect.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    movect.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    +
                    25  SUBROUTINE movect(FLAT,FLON,TLAT,TLON,CROT,SROT)
                    +
                    26  IMPLICIT NONE
                    +
                    27 !
                    +
                    28  INTEGER, PARAMETER :: KD=selected_real_kind(15,45)
                    +
                    29 !
                    +
                    30  REAL, INTENT(IN ) :: FLAT, FLON
                    +
                    31  REAL, INTENT(IN ) :: TLAT, TLON
                    +
                    32  REAL, INTENT( OUT) :: CROT, SROT
                    +
                    33 !
                    +
                    34  REAL(KIND=kd), PARAMETER :: crdlim=0.9999999
                    +
                    35  REAL(KIND=kd), PARAMETER :: pi=3.14159265358979
                    +
                    36  REAL(KIND=kd), PARAMETER :: dpr=180./pi
                    +
                    37 !
                    +
                    38  REAL(KIND=kd) :: ctlat,stlat,cflat,sflat
                    +
                    39  REAL(KIND=kd) :: cdlon,sdlon,crd
                    +
                    40  REAL(KIND=kd) :: srd2rn,str,ctr,sfr,cfr
                    +
                    41 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    42 ! COMPUTE COSINE OF THE RADIAL DISTANCE BETWEEN THE POINTS.
                    +
                    43  ctlat=cos(tlat/dpr)
                    +
                    44  stlat=sin(tlat/dpr)
                    +
                    45  cflat=cos(flat/dpr)
                    +
                    46  sflat=sin(flat/dpr)
                    +
                    47  cdlon=cos((flon-tlon)/dpr)
                    +
                    48  sdlon=sin((flon-tlon)/dpr)
                    +
                    49  crd=stlat*sflat+ctlat*cflat*cdlon
                    +
                    50 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    51 ! COMPUTE ROTATIONS AT BOTH POINTS WITH RESPECT TO THE GREAT CIRCLE
                    +
                    52 ! AND COMBINE THEM TO GIVE THE TOTAL VECTOR ROTATION PARAMETERS.
                    +
                    53  IF(abs(crd).LE.crdlim) THEN
                    +
                    54  srd2rn=-1/(1-crd**2)
                    +
                    55  str=cflat*sdlon
                    +
                    56  ctr=cflat*stlat*cdlon-sflat*ctlat
                    +
                    57  sfr=ctlat*sdlon
                    +
                    58  cfr=ctlat*sflat*cdlon-stlat*cflat
                    +
                    59  crot=real(srd2rn*(ctr*cfr-str*sfr))
                    +
                    60  srot=real(srd2rn*(ctr*sfr+str*cfr))
                    +
                    61 ! USE A DIFFERENT APPROXIMATION FOR NEARLY COINCIDENT POINTS.
                    +
                    62 ! MOVING VECTORS TO ANTIPODAL POINTS IS AMBIGUOUS ANYWAY.
                    +
                    63  ELSE
                    +
                    64  crot=real(cdlon)
                    +
                    65  srot=real(sdlon*stlat)
                    +
                    66  ENDIF
                    +
                    67 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    68  END SUBROUTINE movect
                    +
                    subroutine movect(FLAT, FLON, TLAT, TLON, CROT, SROT)
                    This subprogram provides the rotation parameters to move a vector along a great circle from one posit...
                    Definition: movect.F90:26
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespacebicubic__interp__mod.html b/ver-5.0.0/namespacebicubic__interp__mod.html new file mode 100644 index 00000000..ce6b0c0b --- /dev/null +++ b/ver-5.0.0/namespacebicubic__interp__mod.html @@ -0,0 +1,475 @@ + + + + + + + +NCEPLIBS-ip: bicubic_interp_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    bicubic_interp_mod Module Reference
                    +
                    +
                    + +

                    Bicubic interpolation routines for scalars and vectors. +More...

                    + + + + +

                    +Data Types

                    interface  interpolate_bicubic
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine interpolate_bicubic_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     This subprogram performs bicubic interpolation from any grid to any grid for scalar fields. More...
                     
                    subroutine interpolate_bicubic_vector (ipopt, grid_in, grid_out, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram performs bicubic interpolation from any grid to any grid for vector fields. More...
                     
                    +

                    Detailed Description

                    +

                    Bicubic interpolation routines for scalars and vectors.

                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ interpolate_bicubic_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine bicubic_interp_mod::interpolate_bicubic_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(inout) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram performs bicubic interpolation from any grid to any grid for scalar fields.

                    +

                    Bitmaps are now allowed even when invalid points are within the bicubic template provided the minimum weight is reached.

                    +

                    Options allow choices between straight bicubic (ipopt(1)=0) and constrained bicubic (ipopt(1)=1) where the value is confined within the range of the surrounding 16 points.

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(2)) which defaults to 50 (if ipopt(2)=-1).

                    +

                    Bilinear used within one grid length of boundaries. Only horizontal interpolation is performed.

                    +

                    The code recognizes the following projections, where for the input and output grids, respectively: as an added bonus the number of output grid points and their latitudes and longitudes are also returned. On the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input. output bitmaps will only be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]ipoptInterpolation options.
                      +
                    • ipopt(1)=0 For straight bicubic;
                    • +
                    • ipopt(1)=1 For constrained bicubic where value is confined within the range of the surrounding 4 points.
                    • +
                    • ipopt(2) Is minimum percentage for mask (defaults to 50 if ipopt(2)=-1)
                    • +
                    +
                    [in]grid_inInput grid.
                    [in]grid_outOutput grid.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [out]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if some ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [in,out]noNumber of output points (only if igdtnumo<0).
                    [in,out]rlatOutput latitudes in degrees (if igdtnumo<0).
                    [in,out]rlonOutput longitudes in degrees (if igdtnumo<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 successful interpolation,
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    + +

                    Definition at line 80 of file bicubic_interp_mod.F90.

                    + +
                    +
                    + +

                    ◆ interpolate_bicubic_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine bicubic_interp_mod::interpolate_bicubic_vector (integer, dimension(20), intent(in) ipopt,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) mi,
                    integer, intent(in) mo,
                    integer, intent(in) km,
                    integer, dimension(km), intent(in) ibi,
                    logical*1, dimension(mi,km), intent(in) li,
                    real, dimension(mi,km), intent(in) ui,
                    real, dimension(mi,km), intent(in) vi,
                    integer, intent(inout) no,
                    real, dimension(mo), intent(inout) rlat,
                    real, dimension(mo), intent(inout) rlon,
                    real, dimension(mo), intent(inout) crot,
                    real, dimension(mo), intent(inout) srot,
                    integer, dimension(km), intent(out) ibo,
                    logical*1, dimension(mo,km), intent(out) lo,
                    real, dimension(mo,km), intent(out) uo,
                    real, dimension(mo,km), intent(out) vo,
                    integer, intent(out) iret 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram performs bicubic interpolation from any grid to any grid for vector fields.

                    +

                    Bitmaps are now allowed even when invalid points are within the bicubic template provided the minimum weight is reached.

                    +

                    Options allow choices between straight bicubic (ipopt(1)=0) and constrained bicubic (ipopt(1)=1) where the value is confined within the range of the surrounding 16 points.

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(2)) which defaults to 50 (if ipopt(2)=-1).

                    +

                    Bilinear used within one grid length of boundaries. Only horizontal interpolation is performed.

                    +

                    The code recognizes the following projections, where for the input and output grids, respectively: as an added bonus the number of output grid points and their latitudes and longitudes are also returned. On the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input.

                    +

                    Output bitmaps will only be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipoptinteger (20) interpolation options
                      +
                    • ipopt(1)=0 for straight bicubic;
                    • +
                    • ipopt(1)=1 for constrained bicubic where value is confined within the range of the surrounding 4 points.
                    • +
                    • ipopt(2) is minimum percentage for mask (defaults to 50 if ipopt(2)=-1)
                    • +
                    +
                    [in]grid_inInput grid.
                    [in]grid_outOutput grid.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [out]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if some ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [in,out]noNumber of output points (only if igdtnumo<0).
                    [in,out]rlatOutput latitudes in degrees (if igdtnumo<0).
                    [in,out]rlonOutput longitudes in degrees (if igdtnumo<0).
                    [in,out]crotVector rotation cosines (if igdtnumo<0) ugrid=crot*uearth-srot*vearth.
                    [in,out]srotVector rotation sines (if igdtnumo<0) vgrid=srot*uearth+crot*vearth).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    + +

                    Definition at line 338 of file bicubic_interp_mod.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespacebicubic__interp__mod.js b/ver-5.0.0/namespacebicubic__interp__mod.js new file mode 100644 index 00000000..bd0e9a49 --- /dev/null +++ b/ver-5.0.0/namespacebicubic__interp__mod.js @@ -0,0 +1,6 @@ +var namespacebicubic__interp__mod = +[ + [ "interpolate_bicubic", "interfacebicubic__interp__mod_1_1interpolate__bicubic.html", "interfacebicubic__interp__mod_1_1interpolate__bicubic" ], + [ "interpolate_bicubic_scalar", "namespacebicubic__interp__mod.html#a54a442e47f1be9511c1684a337d7e2d1", null ], + [ "interpolate_bicubic_vector", "namespacebicubic__interp__mod.html#a9d27db7d350fc2699aaf5057c3b53d16", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespacebilinear__interp__mod.html b/ver-5.0.0/namespacebilinear__interp__mod.html new file mode 100644 index 00000000..fffc133a --- /dev/null +++ b/ver-5.0.0/namespacebilinear__interp__mod.html @@ -0,0 +1,465 @@ + + + + + + + +NCEPLIBS-ip: bilinear_interp_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    bilinear_interp_mod Module Reference
                    +
                    +
                    + +

                    Bilinear interpolation routines for scalars and vectors. +More...

                    + + + + +

                    +Data Types

                    interface  interpolate_bilinear
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine interpolate_bilinear_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     This subprogram performs bilinear interpolation from any grid to any grid for scalar fields. More...
                     
                    subroutine interpolate_bilinear_vector (ipopt, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     This subprogram performs bilinear interpolation from any grid to any grid for vector fields. More...
                     
                    +

                    Detailed Description

                    +

                    Bilinear interpolation routines for scalars and vectors.

                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ interpolate_bilinear_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine bilinear_interp_mod::interpolate_bilinear_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(inout) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram performs bilinear interpolation from any grid to any grid for scalar fields.

                    +

                    Options allow varying the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(1)) which defaults to 50 (if ipopt(1)=-1). only horizontal interpolation is performed. if no input data is found near the output point, a spiral search may be invoked by setting ipopt(2)> 0. no searching is done if output point is outside the input grid. as an added bonus the number of output grid points and their latitudes and longitudes are also returned. on the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input. input bitmaps will be interpolated to output bitmaps. output bitmaps will also be created when the output grid extends outside of the domain of the input grid.

                    +

                    The output field is set to 0 where the output bitmap is off.

                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]ipoptinterpolation options
                      +
                    • ipopt(1) is minimum percentage for mask (defaults to 50 if ipopt(1)=-1)
                    • +
                    • ipopt(2) is width of square to examine in spiral search (defaults to no search if ipopt(2)=-1)
                    • +
                    +
                    [in]grid_ininput grid
                    [in]grid_outoutput grid
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [out]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibiinput bitmap flags
                    [in]liinput bitmaps (if some ibi(k)=1)
                    [in]giinput fields to interpolate
                    [in,out]nonumber of output points (only if igdtnumo<0)
                    [in,out]rlatoutput latitudes in degrees (if igdtnumo<0)
                    [in,out]rlonoutput longitudes in degrees (if igdtnumo<0)
                    [out]ibooutput bitmap flags
                    [out]looutput bitmaps (always output)
                    [out]gooutput fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    + +

                    Definition at line 72 of file bilinear_interp_mod.F90.

                    + +
                    +
                    + +

                    ◆ interpolate_bilinear_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine bilinear_interp_mod::interpolate_bilinear_vector (integer, dimension(20), intent(in) ipopt,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(inout) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(inout) CROT,
                    real, dimension(mo), intent(inout) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram performs bilinear interpolation from any grid to any grid for vector fields.

                    +

                    Options allow varying the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(1)) which defaults to 50 (if ipopt(1)=-1).

                    +

                    Only horizontal interpolation is performed. the input and output vectors are rotated so that they are either resolved relative to the defined grid in the direction of increasing x and y coordinates or resolved relative to easterly and northerly directions, as designated by their respective grid description sections.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned along with their vector rotation parameters. on the other hand, the data may be interpolated to a set of station points if igdtnumo < 0, in which case the number of points and their latitudes and longitudes must be input along with their vector rotation parameters. input bitmaps will be interpolated to output bitmaps. output bitmaps will also be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipoptinterpolation options
                      +
                    • ipopt(1) is minimum percentage for mask (defaults to 50 if ipopt(1)=-1)
                    • +
                    +
                    [in]grid_inInput grid
                    [in]grid_outOutput grid
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [out]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibiinput bitmap flags
                    [in]liinput bitmaps (if some ibi(k)=1)
                    [in]uiinput u-component fields to interpolate
                    [in]viinput v-component fields to interpolate
                    [in,out]nonumber of output points (only if igdtnumo<0)
                    [in,out]rlatoutput latitudes in degrees (if igdtnumo<0)
                    [in,out]rlonoutput longitudes in degrees (if igdtnumo<0)
                    [in,out]crotvector rotation cosines (if igdtnumo<0) ugrid=crot*uearth-srot*vearth;
                    [in,out]srotvector rotation sines (if igdtnumo<0) vgrid=srot*uearth+crot*vearth)
                    [out]ibooutput bitmap flags
                    [out]looutput bitmaps (always output)
                    [out]uooutput u-component fields interpolated
                    [out]vooutput v-component fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    + +

                    Definition at line 329 of file bilinear_interp_mod.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespacebilinear__interp__mod.js b/ver-5.0.0/namespacebilinear__interp__mod.js new file mode 100644 index 00000000..b8f83c44 --- /dev/null +++ b/ver-5.0.0/namespacebilinear__interp__mod.js @@ -0,0 +1,6 @@ +var namespacebilinear__interp__mod = +[ + [ "interpolate_bilinear", "interfacebilinear__interp__mod_1_1interpolate__bilinear.html", "interfacebilinear__interp__mod_1_1interpolate__bilinear" ], + [ "interpolate_bilinear_scalar", "namespacebilinear__interp__mod.html#a34d2eea4682104097dccf3e7ab6a9398", null ], + [ "interpolate_bilinear_vector", "namespacebilinear__interp__mod.html#abc218f8774d2af09299eb299d6f38e04", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespacebudget__interp__mod.html b/ver-5.0.0/namespacebudget__interp__mod.html new file mode 100644 index 00000000..476df923 --- /dev/null +++ b/ver-5.0.0/namespacebudget__interp__mod.html @@ -0,0 +1,476 @@ + + + + + + + +NCEPLIBS-ip: budget_interp_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    budget_interp_mod Module Reference
                    +
                    +
                    + +

                    Budget interpolation routines for scalars and vectors. +More...

                    + + + + +

                    +Data Types

                    interface  interpolate_budget
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine interpolate_budget_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Performs budget interpolation from any grid to any grid (or to random station points) for scalar fields. More...
                     
                    subroutine interpolate_budget_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     This subprogram performs budget interpolation from any grid to any grid (or to random station points) for vector fields. More...
                     
                    +

                    Detailed Description

                    +

                    Budget interpolation routines for scalars and vectors.

                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser, Eric Engle
                    +
                    Date
                    July 2021
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ interpolate_budget_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine budget_interp_mod::interpolate_budget_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Performs budget interpolation from any grid to any grid (or to random station points) for scalar fields.

                    +

                    The algorithm simply computes (weighted) averages of bilinearly interpolated points arranged in a square box centered around each output grid point and stretching nearly halfway to each of the neighboring grid points.

                    +

                    Options allow choices of number of points in each radius from the center point (ipopt(1)) which defaults to 2 (if ipopt(1)=-1) meaning that 25 points will be averaged; further options are the respective weights for the radius points starting at the center point (ipopt(2:2+ipopt(1)) which defaults to all 1 (if ipopt(1)=-1 or ipopt(2)=-1).

                    +

                    A special interpolation is done if ipopt(2)=-2. in this case, the boxes stretch nearly all the way to each of the neighboring grid points and the weights are the adjoint of the bilinear interpolation weights. This case gives quasi-second-order budget interpolation.

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(3+ipopt(1)) which defaults to 50 (if -1).

                    +

                    In cases where there is no or insufficient valid input data, the user may choose to search for the nearest valid data. this is invoked by setting ipopt(20) to the width of the search square. The default is 1 (no search). Squares are searched for valid data in a spiral pattern starting from the center. No searching is done where the output grid is outside the input grid.

                    +

                    Only horizontal interpolation is performed.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]ipoptInterpolation options
                      +
                    • ipopt(1) is number of radius points (defaults to 2 if ipopt(1)=-1).
                    • +
                    • ipopt(2:2+ipopt(1)) are respective weights (defaults to all 1 if ipopt(1)=-1 or ipopt(2)=-1).
                    • +
                    • ipopt(3+ipopt(1)) is minimum percentage for mask (defaults to 50 if ipopt(3+ipopt(1)=-1).
                    • +
                    +
                    [in]grid_inInput grid
                    [in]grid_outOutput grid
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [out]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if some ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [in,out]noNumber of output points (only if igdtnumo<0).
                    [in,out]rlatOutput latitudes in degrees (if igdtnumo<0).
                    [in,out]rlonOutput longitudes in degrees (if igdtnumo<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 32 Invalid budget method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Marke Iredell, George Gayno, Kyle Gerheiser, Eric Engle
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 94 of file budget_interp_mod.F90.

                    + +
                    +
                    + +

                    ◆ interpolate_budget_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine budget_interp_mod::interpolate_budget_vector (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(out) CROT,
                    real, dimension(mo), intent(out) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    This subprogram performs budget interpolation from any grid to any grid (or to random station points) for vector fields.

                    +

                    The algorithm simply computes (weighted) averages of bilinearly interpolated points arranged in a square box centered around each output grid point and stretching nearly halfway to each of the neighboring grid points.

                    +

                    Options allow choices of number of points in each radius from the center point (ipopt(1)) which defaults to 2 (if ipopt(1)=-1) meaning that 25 points will be averaged; further options are the respective weights for the radius points starting at the center point (ipopt(2:2+ipopt(1)) which defaults to all 1 (if ipopt(1)=-1 or ipopt(2)=-1).

                    +

                    A special interpolation is done if ipopt(2)=-2. in this case, the boxes stretch nearly all the way to each of the neighboring grid points and the weights are the adjoint of the bilinear interpolation weights. This case gives quasi-second-order budget interpolation.

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(3+ipopt(1)) which defaults to 50 (if -1).

                    +

                    In cases where there is no or insufficient valid input data, the user may choose to search for the nearest valid data. this is invoked by setting ipopt(20) to the width of the search square. The default is 1 (no search). Squares are searched for valid data in a spiral pattern starting from the center. No searching is done where the output grid is outside the input grid.

                    +

                    Only horizontal interpolation is performed.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipoptinterpolation options ipopt(1) Number of radius points (defaults to 2 if ipopt(1)=-1); ipopt(2:2+ipopt(1)) Respective weights (defaults to all 1 if ipopt(1)=-1 or ipopt(2)=-1). ipopt(3+ipopt(1)) Minimum percentage for mask (defaults to 50 if ipopt(3+ipopt(1)=-1)
                    [in]grid_inInput grid.
                    [in]grid_outOutput grid.
                    [in]miskip Number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [out]moskip Number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if some ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [in,out]noNumber of output points (only if igdtnumo<0)
                    [in,out]rlatOutput latitudes in degrees (if igdtnumo<0)
                    [in,out]rlonOutput longitudes in degrees (if igdtnumo<0)
                    [in,out]crotVector rotation cosines. If interpolating subgrid ugrid=crot * uearth - srot * vearth.
                    [in,out]srotVector rotation sines. If interpolating subgrid vgrid = srot * uearth + crot * vearth.
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 32 Invalid budget method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Marke Iredell, George Gayno, Kyle Gerheiser, Eric Engle
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 423 of file budget_interp_mod.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespacebudget__interp__mod.js b/ver-5.0.0/namespacebudget__interp__mod.js new file mode 100644 index 00000000..7a866c1c --- /dev/null +++ b/ver-5.0.0/namespacebudget__interp__mod.js @@ -0,0 +1,6 @@ +var namespacebudget__interp__mod = +[ + [ "interpolate_budget", "interfacebudget__interp__mod_1_1interpolate__budget.html", "interfacebudget__interp__mod_1_1interpolate__budget" ], + [ "interpolate_budget_scalar", "namespacebudget__interp__mod.html#a09bd6535b0c2e1022cfde39c39d14466", null ], + [ "interpolate_budget_vector", "namespacebudget__interp__mod.html#abc99486ee9c0091c1514af6114d4e803", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceearth__radius__mod.html b/ver-5.0.0/namespaceearth__radius__mod.html new file mode 100644 index 00000000..b1bf98b5 --- /dev/null +++ b/ver-5.0.0/namespaceearth__radius__mod.html @@ -0,0 +1,183 @@ + + + + + + + +NCEPLIBS-ip: earth_radius_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    earth_radius_mod Module Reference
                    +
                    +
                    + +

                    Determine earth radius and shape. +More...

                    + + + + + +

                    +Functions/Subroutines

                    subroutine, public earth_radius (IGDTMPL, IGDTLEN, RADIUS, ECCEN_SQUARED)
                     Determine earth radius and shape. More...
                     
                    +

                    Detailed Description

                    +

                    Determine earth radius and shape.

                    +
                    Author
                    Gayno, Kyle Gerheiser
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ earth_radius()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public earth_radius_mod::earth_radius (integer, dimension(igdtlen), intent(in) IGDTMPL,
                    integer, intent(in) IGDTLEN,
                    real, intent(out) RADIUS,
                    real, intent(out) ECCEN_SQUARED 
                    )
                    +
                    + +

                    Determine earth radius and shape.

                    +

                    Determine the radius and shape of the earth from the grib 2 grid definition template array - section 3.

                    +
                    Parameters
                    + + + + + +
                    [in]igdtmplinteger (igdtlen) grid definition template array. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. For all map projections recognized by iplib, the entries use by this routine are:
                      +
                    • 1 shape of earth, section 3, octet 15
                    • +
                    • 2 scale factor of spherical earth radius, octet 16
                    • +
                    • 3 scaled value of radius of spherical earth, octets 17-20
                    • +
                    • 4 scale factor of major axis of elliptical earth, octet 21
                    • +
                    • 5 scaled value of major axis of elliptical earth, octets 22-25
                    • +
                    • 6 scale factor of minor axis of elliptical earth, octet 26
                    • +
                    • 7 scaled value of minor axis of elliptical earth, octets 27-30
                    • +
                    +
                    [in]igdtleninteger number of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [out]radiusreal earth radius in meters. For ellipitical earths, this is the semi major axis. See "map projectsions - a + working manual" by Snyder (1987) for details.
                    [out]eccen_squaredreal earth eccentricity squared
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-07-14
                    + +

                    Definition at line 40 of file earth_radius_mod.F90.

                    + +

                    Referenced by spectral_interp_mod::polates4::polates4_grib2(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespacegdswzd__c__mod.html b/ver-5.0.0/namespacegdswzd__c__mod.html new file mode 100644 index 00000000..390ab7c6 --- /dev/null +++ b/ver-5.0.0/namespacegdswzd__c__mod.html @@ -0,0 +1,556 @@ + + + + + + + +NCEPLIBS-ip: gdswzd_c_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    gdswzd_c_mod Module Reference
                    +
                    +
                    + +

                    Module that contains C wrapper for routine gdswzd(). +More...

                    + + + + + + + + +

                    +Functions/Subroutines

                    subroutine gdswzd_c (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     C wrapper for routine gdswzd(). More...
                     
                    subroutine gdswzd_c_grib1 (KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     C wrapper for routine gdswzd. More...
                     
                    +

                    Detailed Description

                    +

                    Module that contains C wrapper for routine gdswzd().

                    +
                    Author
                    JOVIC
                    +
                    Date
                    2016-04-10
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ gdswzd_c()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_c_mod::gdswzd_c (integer(kind=c_int), intent(in), value IGDTNUM,
                    integer(kind=c_int), dimension(igdtlen), intent(in) IGDTMPL,
                    integer(kind=c_int), intent(in), value IGDTLEN,
                    integer(kind=c_int), intent(in), value IOPT,
                    integer(kind=c_int), intent(in), value NPTS,
                    real(kind=c_double), intent(in), value FILL,
                    real(kind=c_double), dimension(npts), intent(inout) XPTS,
                    real(kind=c_double), dimension(npts), intent(inout) YPTS,
                    real(kind=c_double), dimension(npts), intent(inout) RLON,
                    real(kind=c_double), dimension(npts), intent(inout) RLAT,
                    integer(kind=c_int), intent(out) NRET,
                    real(kind=c_double), dimension(npts), intent(out) CROT,
                    real(kind=c_double), dimension(npts), intent(out) SROT,
                    real(kind=c_double), dimension(npts), intent(out) XLON,
                    real(kind=c_double), dimension(npts), intent(out) XLAT,
                    real(kind=c_double), dimension(npts), intent(out) YLON,
                    real(kind=c_double), dimension(npts), intent(out) YLAT,
                    real(kind=c_double), dimension(npts), intent(out) AREA 
                    )
                    +
                    + +

                    C wrapper for routine gdswzd().

                    +

                    Use this routine to call gdswzd() from a C or C++ program. Takes advantage of the fortran/c interoperability standard.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    2016-04-10 Jovic initial version.
                    2016-04-26 G. Gayno update for grib 2
                    +

                    +Example: Mixed precsion iplib call

                    +
                    include "iplib.h"
                    +
                    +
                    int *igdtmpl;
                    +
                    int igdtnum, igdtlen, iopt, npts, nret;
                    +
                    double fill;
                    +
                    double *xpts, *ypts, *rlon, *rlat;
                    +
                    double *crot, *srot, *xlon, *xlat, *ylon, *ylat, *area;
                    +
                    +
                    gdswzd(igdtnum, igdtmpl, igdtlen, iopt, npts,
                    +
                    fill, xpts, ypts, rlon, rlat,
                    +
                    &nret, crot, srot, xlon,
                    +
                    xlat, ylon, ylat, area);
                    +
                    void gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area)
                    gdswzd() interface for C for _4 build of library.
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + +
                    [in]igdtnumgrid definition template number. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure.
                      +
                    • 00 equidistant cylindrical
                    • +
                    • 01 rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 mercator cyclindrical
                    • +
                    • 20 polar stereographic azimuthal
                    • +
                    • 30 lambert conformal conical
                    • +
                    • 40 gaussian equidistant cyclindrical
                    • +
                    +
                    [in]igdtmpl(igdtlen) grid definition template array. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure for section three. all projections:
                      +
                    • 1 shape of earth, octet 15
                    • +
                    • 2 scale factor of spherical earth radius, octet 16
                    • +
                    • 3 scaled value of radius of spherical earth, octets 17-20
                    • +
                    • 4 scale factor of major axis of elliptical earth, octet 21
                    • +
                    • 5 scaled value of major axis of elliptical earth, octets 22-25
                    • +
                    • 6 scale factor of minor axis of elliptical earth, octet 26
                    • +
                    • 7 scaled value of minor axis of elliptical earth, octets 27-30 equidistant cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42.
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72 mercator cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 latitude of first point, octets 39-42
                    • +
                    • 11 longitude of first point, octets 43-46
                    • +
                    • 12 resolution and component flags, octet 47
                    • +
                    • 13 tangent latitude, octets 48-51
                    • +
                    • 14 latitude of last point, octets 52-55
                    • +
                    • 15 longitude of last point, octets 56-59
                    • +
                    • 16 scanning mode flags, octet 60
                    • +
                    • 17 orientation of grid, octets 61-64
                    • +
                    • 18 longitudinal grid length, octets 65-68
                    • +
                    • 19 latitudinal grid length, octets 69-72 Lambert conformal conical:
                    • +
                    • 8 number of points along x-axis, octs 31-34
                    • +
                    • 9 number of points along y-axis, octs 35-38
                    • +
                    • 10 latitude of first point, octets 39-42
                    • +
                    • 11 longitude of first point, octets 43-46
                    • +
                    • 12 resolution of component flag, octet 47
                    • +
                    • 13 latitude where grid lengths specified, octets 48-51
                    • +
                    • 14 longitude of meridian that is parallel to y-axis, octets 52-55
                    • +
                    • 15 x-direction grid length, octets 56-59
                    • +
                    • 16 y-direction grid length, octets 60-63
                    • +
                    • 17 projection center flag, octet 64
                    • +
                    • 18 scanning mode, octet 65
                    • +
                    • 19 first tangent latitude from pole, octets 66-69
                    • +
                    • 20 second tangent latitude from pole, octets 70-73
                    • +
                    • 21 latitude of south pole of projection, octets 74-77
                    • +
                    • 22 longitude of south pole of projection, octets 78-81 gaussian cylindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 number of parallels between pole and equator, octets 68-71
                    • +
                    • 19 scanning mode, octet 72 polar stereographic azimuthal:
                    • +
                    • 8 number of points along x-axis, octets 31-34
                    • +
                    • 9 number of points along y-axis, octets 35-38
                    • +
                    • 10 latitude of first grid point, octets 39-42
                    • +
                    • 11 longitude of first grid point, octets 43-46
                    • +
                    • 12 resolution and component flags, octet 47
                    • +
                    • 13 true latitude, octets 48-51
                    • +
                    • 14 orientation longitude, octets 52-55
                    • +
                    • 15 x-direction grid length, octets 56-59
                    • +
                    • 16 y-direction grid length, octets 60-63
                    • +
                    • 17 projection center flag, octet 64
                    • +
                    • 18 scanning mode flags, octet 65 rotated equidistant cyclindrical:
                    • +
                    • 8 number of points along a parallel, octs 31-34
                    • +
                    • 9 number of points along a meridian, octs 35-38
                    • +
                    • 10 basic angle of initial production domain, octets 39-42
                    • +
                    • 11 subdivisions of basic angle, octets 43-46
                    • +
                    • 12 latitude of first grid point, octets 47-50
                    • +
                    • 13 longitude of first grid point, octets 51-54
                    • +
                    • 14 resolution and component flags, octet 55
                    • +
                    • 15 latitude of last grid point, octets 56-59
                    • +
                    • 16 longitude of last grid point, octets 60-63
                    • +
                    • 17 i-direction increment, octets 64-67
                    • +
                    • 18 j-direction increment, octets 68-71
                    • +
                    • 19 scanning mode, octet 72
                    • +
                    • 20 latitude of southern pole of projection, octets 73-76
                    • +
                    • 21 longitude of southern pole of projection, octets 77-80
                    • +
                    • 22 angle of rotation of projection, octs 81-84
                    • +
                    +
                    [in]igdtlennumber of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]ioptoption flag
                      +
                    • 0 to compute earth coords of all the grid points
                    • +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    [in]nptsinteger maximum number of coordinates
                    [in]fillreal fill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    [in,out]xptsreal (npts) grid x point coordinates if iopt>0
                    [in,out]yptsreal (npts) grid y point coordinates if iopt>0
                    [in,out]rlonreal (npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    [in,out]rlatreal (npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    [out]nretnumber of valid points computed (-1 if projection unrecognized)
                    [out]crot(npts) clockwise vector rotation cosines
                    [out]srot(npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth, vgrid=srot*uearth+crot*vearth)
                    [out]xlon(npts) dx/dlon in 1/degrees
                    [out]xlat(npts) dx/dlat in 1/degrees
                    [out]ylon(npts) dy/dlon in 1/degrees
                    [out]ylat(npts) dy/dlat in 1/degrees
                    [out]AREA(npts) area weights in m**2 (Proportional to the square of the map factor in the case of conformal projections.)
                    +
                    +
                    +
                    Author
                    JOVIC
                    +
                    Date
                    2016-04-10
                    + +

                    Definition at line 173 of file gdswzd_c.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd_c_grib1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_c_mod::gdswzd_c_grib1 (integer(kind=c_int), dimension(200), intent(in) KGDS,
                    integer(kind=c_int), intent(in), value IOPT,
                    integer(kind=c_int), intent(in), value NPTS,
                    real(kind=c_double), intent(in), value FILL,
                    real(kind=c_double), dimension(npts), intent(inout) XPTS,
                    real(kind=c_double), dimension(npts), intent(inout) YPTS,
                    real(kind=c_double), dimension(npts), intent(inout) RLON,
                    real(kind=c_double), dimension(npts), intent(inout) RLAT,
                    integer(kind=c_int), intent(out) NRET,
                    real(kind=c_double), dimension(npts), intent(out) CROT,
                    real(kind=c_double), dimension(npts), intent(out) SROT,
                    real(kind=c_double), dimension(npts), intent(out) XLON,
                    real(kind=c_double), dimension(npts), intent(out) XLAT,
                    real(kind=c_double), dimension(npts), intent(out) YLON,
                    real(kind=c_double), dimension(npts), intent(out) YLAT,
                    real(kind=c_double), dimension(npts), intent(out) AREA 
                    )
                    +
                    + +

                    C wrapper for routine gdswzd.

                    +

                    Use this routine to call 'gdswzd' from a C or C++ program. Takes advantage of the fortran/c interoperability standard.

                    +

                    +Example: mixed precsion iplib call

                    +
                    include "iplib.h"
                    +
                    +
                    int kgds[200];
                    +
                    int iopt, npts, nret;
                    +
                    double fill;
                    +
                    double *xpts, *ypts, *rlon, *rlat;
                    +
                    double *crot, *srot, *xlon, *xlat, *ylon, *ylat, *area;
                    +
                    +
                    gdswzd(kgds, iopt, npts, fill,
                    +
                    xpts, ypts, rlon, rlat,
                    +
                    &nret, crot, srot, xlon,
                    +
                    xlat, ylon, ylat, area);
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    kgds(200) gds parameters as decoded by w3fi63.
                    ioptoption flag
                      +
                    • 0 to compute earth coords of all the grid points
                    • +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    nptsmaximum number of coordinates
                    fillfill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    xpts(npts) grid x point coordinates if iopt>0
                    ypts(npts) grid y point coordinates if iopt>0
                    [out]rlon(npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    [out]rlat(npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    [out]nretnumber of valid points computed (-1 if projection unrecognized)
                    [out]crot(npts) clockwise vector rotation cosines
                    [out]srot(npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlon(npts) dx/dlon in 1/degrees
                    [out]xlat(npts) dx/dlat in 1/degrees
                    [out]ylon(npts) dy/dlon in 1/degrees
                    [out]ylat(npts) dy/dlat in 1/degrees
                    [out]area(npts) area weights in m**2 (proportional to the square of the map factor in the case of conformal projections.)
                    +
                    +
                    +
                    Author
                    JOVIC
                    +
                    Date
                    2016-04-10
                    + +

                    Definition at line 259 of file gdswzd_c.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespacegdswzd__mod.html b/ver-5.0.0/namespacegdswzd__mod.html new file mode 100644 index 00000000..575bbdfa --- /dev/null +++ b/ver-5.0.0/namespacegdswzd__mod.html @@ -0,0 +1,1309 @@ + + + + + + + +NCEPLIBS-ip: gdswzd_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    gdswzd_mod Module Reference
                    +
                    +
                    + +

                    Driver module for gdswzd routines. +More...

                    + + + + +

                    +Data Types

                    interface  gdswzd
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine gdswzd_1d_array (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib 2 grid definition template and returns one of the following: More...
                     
                    subroutine gdswzd_2d_array (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib 2 grid definition template and returns one of the following (for 2d-arrays): More...
                     
                    subroutine, public gdswzd_2d_array_grib1 (KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib grid description section and returns one of the following (for 2-d arrays): More...
                     
                    subroutine, public gdswzd_grib1 (KGDS, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib grid description section and returns one of the following (for 1-d arrays): More...
                     
                    subroutine gdswzd_grid (grid, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Returns one of the following for a grid object: More...
                     
                    subroutine gdswzd_scalar (IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Decodes the grib 2 grid definition template and returns one of the following (for scalars): More...
                     
                    +

                    Detailed Description

                    +

                    Driver module for gdswzd routines.

                    +

                    These routines do the following for several map projections:

                      +
                    • Convert from earth to grid coordinates or vice versa.
                    • +
                    • Compute vector rotation sines and cosines.
                    • +
                    • Compute map jacobians.
                    • +
                    • Compute grid box area.
                    • +
                    +

                    Map projections include:

                      +
                    • Equidistant Cyclindrical
                    • +
                    • Mercator Cylindrical
                    • +
                    • Gaussian Cylindrical
                    • +
                    • Polar stereographic
                    • +
                    • Lambert Conformal Conic
                    • +
                    • Rotated Equidistant Cyclindrical ("E" and non-"E" staggers)
                    • +
                    +
                    Author
                    Mark Iredell, George Gayno, Kyle Gerheiser
                    +
                    Date
                    Jan 2015
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ gdswzd_1d_array()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_mod::gdswzd_1d_array (integer, intent(in) IGDTNUM,
                    integer, dimension(igdtlen), intent(in) IGDTMPL,
                    integer, intent(in) IGDTLEN,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Decodes the grib 2 grid definition template and returns one of the following:

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    The current code recognizes the following projections, where "igdtnum" is the grid definition template number:

                      +
                    • igdtnum=00 Equidistant Cylindrical
                    • +
                    • igdtnum=01 Rotated Equidistant Cylindrical. "E" and non-"E" staggered
                    • +
                    • igdtnum=10 Mercator Cyclindrical
                    • +
                    • igdtnum=20 Polar Stereographic Azimuthal
                    • +
                    • igdtnum=30 Lambert Conformal Conical
                    • +
                    • igdtnum=40 Gaussian Equidistant Cyclindrical
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + +
                    [in]igdtnumGrid definition template number. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 - Equidistant Cylindrical
                    • +
                    • 01 - Rotated Equidistant Cylindrical. "E" and non-"E" staggered
                    • +
                    • 10 - Mercator Cyclindrical
                    • +
                    • 20 - Polar Stereographic Azimuthal
                    • +
                    • 30 - Lambert Conformal Conical
                    • +
                    • 40 - Gaussian Equidistant Cyclindrical
                    • +
                    +
                    [in]igdtmplGrid definition template array. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure
                    +
                    +
                    +

                    Section 3 Info:

                    +

                    All Map Projections:

                      +
                    • 1: Shape of earth, octet 15.
                    • +
                    • 2: Scale factor of spherical earth radius, octet 16.
                    • +
                    • 3: Scaled value of radius of spherical earth, octets 17-20.
                    • +
                    • 4: Scale factor of major axis of elliptical earth, octet 21.
                    • +
                    • 5: Scaled value of major axis of elliptical earth, octets 22-25.
                    • +
                    • 6: Scale factor of minor axis of elliptical earth, octet 26.
                    • +
                    • 7: Scaled value of minor axis of elliptical earth, octets 27-30.
                    • +
                    +

                    Equidistant Cyclindrical:

                      +
                    • 8: Number of points along a parallel, octs 31-34.
                    • +
                    • 9: Number of points along a meridian, octs 35-38.
                    • +
                    • 10: Basic angle of initial production domain, octets 39-42.
                    • +
                    • 11: Subdivisions of basic angle, octets 43-46.
                    • +
                    • 12: Latitude of first grid point, octets 47-50.
                    • +
                    • 13: Longitude of first grid point, octets 51-54.
                    • +
                    • 14: Resolution and component flags, octet 55.
                    • +
                    • 15: Latitude of last grid point, octets 56-59.
                    • +
                    • 16: Longitude of last grid point, octets 60-63.
                    • +
                    • 17: i-direction increment, octets 64-67.
                    • +
                    • 18: j-direction increment, octets 68-71.
                    • +
                    • 19: Scanning mode, octet 72.
                    • +
                    +

                    Mercator Cyclindrical:

                      +
                    • 8: Number of points along a parallel, octs 31-34.
                    • +
                    • 9: Number of points along a meridian, octs 35-38.
                    • +
                    • 10: Latitude of first point, octets 39-42.
                    • +
                    • 11: Longitude of first point, octets 43-46.
                    • +
                    • 12: Resolution and component flags, octet 47.
                    • +
                    • 13: Tangent latitude, octets 48-51.
                    • +
                    • 14: Latitude of last point, octets 52-55.
                    • +
                    • 15: Longitude of last point, octets 56-59.
                    • +
                    • 16: Scanning mode flags, octet 60.
                    • +
                    • 17: Orientation of grid, octets 61-64.
                    • +
                    • 18: Longitudinal grid length, octets 65-68.
                    • +
                    • 19: Latitudinal grid length, octets 69-72.
                    • +
                    +

                    Lambert Conformal Conical:

                      +
                    • 8: Number of points along x-axis, octs 31-34.
                    • +
                    • 9: Number of points along y-axis, octs 35-38.
                    • +
                    • 10: Latitude of first point, octets 39-42.
                    • +
                    • 11: Longitude of first point, octets 43-46.
                    • +
                    • 12: Resolution of component flag, octet 47.
                    • +
                    • 13: Latitude where grid lengths specified,octets 48-51.
                    • +
                    • 14: Longitude of meridian that is parallel to y-axis, octets 52-55.
                    • +
                    • 15: x-direction grid length, octets 56-59.
                    • +
                    • 16: y-direction grid length, octets 60-63.
                    • +
                    • 17: Projection center flag, octet 64.
                    • +
                    • 18: Scanning mode, octet 65.
                    • +
                    • 19: First tangent latitude from pole, octets 66-69.
                    • +
                    • 20: Second tangent latitude from pole, octets 70-73.
                    • +
                    • 21: Latitude of south pole of projection, octets 74-77.
                    • +
                    • 22: Longitude of south pole of projection, octets 78-81.
                    • +
                    +

                    Gaussian Cylindrical:

                      +
                    • 8: Number of points along a parallel, octs 31-34.
                    • +
                    • 9: Number of points along a meridian, octs 35-38.
                    • +
                    • 10: Basic angle of initial production domain, octets 39-42.
                    • +
                    • 11: Subdivisions of basic angle, octets 43-46.
                    • +
                    • 12: Latitude of first grid point, octets 47-50.
                    • +
                    • 13: Longitude of first grid point, octets 51-54.
                    • +
                    • 14: Resolution and component flags, octet 55.
                    • +
                    • 15: Latitude of last grid point, octets 56-59.
                    • +
                    • 16: Longitude of last grid point, octets 60-63.
                    • +
                    • 17: i-direction increment, octets 64-67.
                    • +
                    • 18: Number of parallels between pole and equator, octets 68-71.
                    • +
                    • 19: Scanning mode, octet 72.
                    • +
                    +

                    Polar Stereographic Azimuthal:

                      +
                    • 8: Number of points along x-axis, octets 31-34.
                    • +
                    • 9: Number of points along y-axis, octets 35-38.
                    • +
                    • 10: Latitude of first grid point, octets 39-42.
                    • +
                    • 11: Longitude of first grid point, octets 43-46.
                    • +
                    • 12: Resolution and component flags, octet 47.
                    • +
                    • 13: True latitude, octets 48-51.
                    • +
                    • 14: Orientation longitude, octets 52-55.
                    • +
                    • 15: x-direction grid length, octets 56-59.
                    • +
                    • 16: y-direction grid length, octets 60-63.
                    • +
                    • 17: Projection center flag, octet 64.
                    • +
                    • 18: Scanning mode flags, octet 65.
                    • +
                    +

                    Rotated Equidistant Cyclindrical:

                      +
                    • 8: Number of points along a parallel, octs 31-34.
                    • +
                    • 9: Number of points along a meridian, octs 35-38.
                    • +
                    • 10: Basic angle of initial production domain, octets 39-42.
                    • +
                    • 11: Subdivisions of basic angle, octets 43-46.
                    • +
                    • 12: Latitude of first grid point, octets 47-50.
                    • +
                    • 13: Longitude of first grid point, octets 51-54.
                    • +
                    • 14: Resolution and component flags, octet 55.
                    • +
                    • 15: Latitude of last grid point, octets 56-59.
                    • +
                    • 16: Longitude of last grid point, octets 60-63.
                    • +
                    • 17: i-direction increment, octets 64-67.
                    • +
                    • 18: j-direction increment, octets 68-71.
                    • +
                    • 19: Scanning mode, octet 72.
                    • +
                    • 20: Latitude of southern pole of projection, octets 73-76.
                    • +
                    • 21: Longitude of southern pole of projection, octets 77-80.
                    • +
                    • 22: Angle of rotation of projection, octs 81-84.
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]igdtlenNumber of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell
                    +
                    Date
                    Jan 2015
                    + +

                    Definition at line 665 of file gdswzd_mod.F90.

                    + +

                    Referenced by gdswzd_mod::gdswzd::gdswzd_2d_array(), and gdswzd_mod::gdswzd::gdswzd_scalar().

                    + +
                    +
                    + +

                    ◆ gdswzd_2d_array()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_mod::gdswzd_2d_array (integer, intent(in) IGDTNUM,
                    integer, dimension(igdtlen), intent(in) IGDTMPL,
                    integer, intent(in) IGDTLEN,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(:,:), intent(inout) XPTS,
                    real, dimension(:,:), intent(inout) YPTS,
                    real, dimension(:,:), intent(inout) RLON,
                    real, dimension(:,:), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(:,:), intent(out), optional CROT,
                    real, dimension(:,:), intent(out), optional SROT,
                    real, dimension(:,:), intent(out), optional XLON,
                    real, dimension(:,:), intent(out), optional XLAT,
                    real, dimension(:,:), intent(out), optional YLON,
                    real, dimension(:,:), intent(out), optional YLAT,
                    real, dimension(:,:), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Decodes the grib 2 grid definition template and returns one of the following (for 2d-arrays):

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    The current code recognizes the following projections, where "igdtnum" is the grid definition template number:

                      +
                    • igdtnum=00 Equidistant Cylindrical
                    • +
                    • igdtnum=01 Rotated Equidistant Cylindrical. "E" and non-"E" staggered
                    • +
                    • igdtnum=10 Mercator Cyclindrical
                    • +
                    • igdtnum=20 Polar Stereographic Azimuthal
                    • +
                    • igdtnum=30 Lambert Conformal Conical
                    • +
                    • igdtnum=40 Gaussian Equidistant Cyclindrical
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + +
                    [in]igdtnumGrid definition template number.
                    [in]igdtmplGrid definition template array. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure. See igdtmpl definition in gdswzd_1d_array() for full details.
                    [in]igdtlenNumber of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell
                    +
                    Date
                    Jan 2015
                    + +

                    Definition at line 459 of file gdswzd_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd_2d_array_grib1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public gdswzd_mod::gdswzd_2d_array_grib1 (integer, dimension(200), intent(in) KGDS,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(:,:), intent(inout) XPTS,
                    real, dimension(:,:), intent(inout) YPTS,
                    real, dimension(:,:), intent(inout) RLON,
                    real, dimension(:,:), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(:,:), intent(out), optional CROT,
                    real, dimension(:,:), intent(out), optional SROT,
                    real, dimension(:,:), intent(out), optional XLON,
                    real, dimension(:,:), intent(out), optional XLAT,
                    real, dimension(:,:), intent(out), optional YLON,
                    real, dimension(:,:), intent(out), optional YLAT,
                    real, dimension(:,:), intent(out), optional AREA 
                    )
                    +
                    + +

                    Decodes the grib grid description section and returns one of the following (for 2-d arrays):

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +

                    The current code recognizes the following projections:

                      +
                    • kgds(1)=000 Equidistant Cylindrical
                    • +
                    • kgds(1)=001 Mercator Cylindrical
                    • +
                    • kgds(1)=003 lambert Conformal Conical
                    • +
                    • kgds(1)=004 Gaussian Cylindrical
                    • +
                    • kgds(1)=005 Polar Stereographic azimuthal
                    • +
                    • kgds(1)=203 E-staggered Rotated Equidistant Cylindrical
                    • +
                    • kgds(1)=205 B-staggered Rotated Equidistant Cylindrical
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]kgdsGDS parameters as decoded by w3fi63.
                    +
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell
                    +
                    Date
                    April 1996
                    + +

                    Definition at line 850 of file gdswzd_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd_grib1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public gdswzd_mod::gdswzd_grib1 (integer, dimension(200), intent(in) KGDS,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    + +

                    Decodes the grib grid description section and returns one of the following (for 1-d arrays):

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +

                    The current code recognizes the following projections:

                      +
                    • kgds(1)=000 Equidistant Cylindrical
                    • +
                    • kgds(1)=001 Mercator Cylindrical
                    • +
                    • kgds(1)=003 lambert Conformal Conical
                    • +
                    • kgds(1)=004 Gaussian Cylindrical
                    • +
                    • kgds(1)=005 Polar Stereographic azimuthal
                    • +
                    • kgds(1)=203 E-staggered Rotated Equidistant Cylindrical
                    • +
                    • kgds(1)=205 B-staggered Rotated Equidistant Cylindrical
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]kgdsGDS parameters as decoded by w3fi63.
                    +
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell
                    +
                    Date
                    April 1996
                    + +

                    Definition at line 758 of file gdswzd_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd_grid()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_mod::gdswzd_grid (class(ip_grid), intent(in) grid,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Returns one of the following for a grid object:

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]gridGrid to call gdswzd on.
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 105 of file gdswzd_mod.F90.

                    + +

                    Referenced by gdswzd_mod::gdswzd::gdswzd_1d_array(), gdswzd_mod::gdswzd::gdswzd_2d_array_grib1(), and gdswzd_mod::gdswzd::gdswzd_grib1().

                    + +
                    +
                    + +

                    ◆ gdswzd_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine gdswzd_mod::gdswzd_scalar (integer, intent(in) IGDTNUM,
                    integer, dimension(igdtlen), intent(in) IGDTMPL,
                    integer, intent(in) IGDTLEN,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, intent(inout) XPTS,
                    real, intent(inout) YPTS,
                    real, intent(inout) RLON,
                    real, intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, intent(out), optional CROT,
                    real, intent(out), optional SROT,
                    real, intent(out), optional XLON,
                    real, intent(out), optional XLAT,
                    real, intent(out), optional YLON,
                    real, intent(out), optional YLAT,
                    real, intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Decodes the grib 2 grid definition template and returns one of the following (for scalars):

                    +
                      +
                    • iopt=0 Grid and earth coordinates of all grid points.
                    • +
                    • iopt=+1 Earth coordinates of selected grid coordinates.
                    • +
                    • iopt=-1 Grid coordinates of selected earth coordinates.
                    • +
                    +

                    The current code recognizes the following projections, where "igdtnum" is the grid definition template number:

                      +
                    • igdtnum=00 Equidistant Cylindrical
                    • +
                    • igdtnum=01 Rotated Equidistant Cylindrical. "E" and non-"E" staggered
                    • +
                    • igdtnum=10 Mercator Cyclindrical
                    • +
                    • igdtnum=20 Polar Stereographic Azimuthal
                    • +
                    • igdtnum=30 Lambert Conformal Conical
                    • +
                    • igdtnum=40 Gaussian Equidistant Cyclindrical
                    • +
                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. Also if iopt=0, if the number of grid points exceeds the number allotted, then all the output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas may be returned.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + +
                    [in]igdtnumGrid definition template number.
                    [in]igdtmplGrid definition template array. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure See igdtmpl definition in gdswzd_1d_array() for full details.
                    [in]igdtlenNumber of elements of the grid definition template array. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]ioptOption flag.
                      +
                    • 0 Earth coords of all the grid points.
                    • +
                    • 1 Earth coords of selected grid coords.
                    • +
                    • -1 Grid coords of selected earth coords
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates.
                    [in,out]yptsGrid y point coordinates.
                    [in,out]rlonEarth longitudes in degrees E. (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees N. (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines. ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlondx/dlat in 1/degrees
                    [out]xlatdy/dlon in 1/degrees
                    [out]ylondy/dlon in 1/degrees
                    [out]ylatdy/dlat in 1/degrees
                    [out]areaArea weights in m^2. Proportional to the square of the map factor in the case of conformal projections
                    +
                    +
                    +
                    Author
                    George Gayno, Mark Iredell
                    +
                    Date
                    Jan 2015
                    + +

                    Definition at line 278 of file gdswzd_mod.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespacegdswzd__mod.js b/ver-5.0.0/namespacegdswzd__mod.js new file mode 100644 index 00000000..23d8b304 --- /dev/null +++ b/ver-5.0.0/namespacegdswzd__mod.js @@ -0,0 +1,10 @@ +var namespacegdswzd__mod = +[ + [ "gdswzd", "interfacegdswzd__mod_1_1gdswzd.html", "interfacegdswzd__mod_1_1gdswzd" ], + [ "gdswzd_1d_array", "namespacegdswzd__mod.html#ac304e2b046eccc701e24827c81107e76", null ], + [ "gdswzd_2d_array", "namespacegdswzd__mod.html#acdf970e498e9317522fbdfb690b86e25", null ], + [ "gdswzd_2d_array_grib1", "namespacegdswzd__mod.html#aa032a55281b18e208630a730679958f4", null ], + [ "gdswzd_grib1", "namespacegdswzd__mod.html#a133e040fac8dd56e607b8e3fb6a58c37", null ], + [ "gdswzd_grid", "namespacegdswzd__mod.html#a584d2bddbc6d857b80cfac5e3b288d45", null ], + [ "gdswzd_scalar", "namespacegdswzd__mod.html#aba3235c5bc5797e72b9a6a8a587b8861", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__constants__mod.html b/ver-5.0.0/namespaceip__constants__mod.html new file mode 100644 index 00000000..79a4a28d --- /dev/null +++ b/ver-5.0.0/namespaceip__constants__mod.html @@ -0,0 +1,244 @@ + + + + + + + +NCEPLIBS-ip: ip_constants_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_constants_mod Module Reference
                    +
                    +
                    + +

                    Module containing common constants. +More...

                    + + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real, parameter dpr =180.0/pi
                     Radians to degrees. More...
                     
                    real, parameter e2_wgs84 = 0.00669437999013
                     Eccentricity squared of Earth defined by WGS-84. More...
                     
                    real, parameter pi =3.14159265358979
                     PI. More...
                     
                    real, parameter pi2 =pi/2.0
                     PI / 2.0. More...
                     
                    real, parameter pi4 =pi/4.0
                     PI / 4.0. More...
                     
                    real, parameter rerth_wgs84 =6.378137E6
                     Radius of the Earth defined by WGS-84. More...
                     
                    +

                    Detailed Description

                    +

                    Module containing common constants.

                    +
                    Author
                    Kyle Gerheiser, George Gayno, Alex Richert
                    +

                    Variable Documentation

                    + +

                    ◆ dpr

                    + +
                    +
                    + + + + +
                    real, parameter ip_constants_mod::dpr =180.0/pi
                    +
                    +
                    + +

                    ◆ e2_wgs84

                    + +
                    +
                    + + + + +
                    real, parameter ip_constants_mod::e2_wgs84 = 0.00669437999013
                    +
                    + +

                    Eccentricity squared of Earth defined by WGS-84.

                    + +

                    Definition at line 19 of file ip_constants_mod.F90.

                    + +

                    Referenced by ip_polar_stereo_grid_mod::init_grib1().

                    + +
                    +
                    + +

                    ◆ pi

                    + +
                    +
                    + + + + +
                    real, parameter ip_constants_mod::pi =3.14159265358979
                    +
                    + +

                    PI.

                    + +

                    Definition at line 14 of file ip_constants_mod.F90.

                    + +
                    +
                    + +

                    ◆ pi2

                    + +
                    +
                    + + + + +
                    real, parameter ip_constants_mod::pi2 =pi/2.0
                    +
                    + +

                    PI / 2.0.

                    + +

                    Definition at line 16 of file ip_constants_mod.F90.

                    + +
                    +
                    + +

                    ◆ pi4

                    + +
                    +
                    + + + + +
                    real, parameter ip_constants_mod::pi4 =pi/4.0
                    +
                    + +

                    PI / 4.0.

                    + +

                    Definition at line 17 of file ip_constants_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth_wgs84

                    + +
                    +
                    + + + + +
                    real, parameter ip_constants_mod::rerth_wgs84 =6.378137E6
                    +
                    + +

                    Radius of the Earth defined by WGS-84.

                    + +

                    Definition at line 18 of file ip_constants_mod.F90.

                    + +

                    Referenced by ip_polar_stereo_grid_mod::init_grib1().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__equid__cylind__grid__mod.html b/ver-5.0.0/namespaceip__equid__cylind__grid__mod.html new file mode 100644 index 00000000..e6594ba1 --- /dev/null +++ b/ver-5.0.0/namespaceip__equid__cylind__grid__mod.html @@ -0,0 +1,668 @@ + + + + + + + +NCEPLIBS-ip: ip_equid_cylind_grid_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_equid_cylind_grid_mod Module Reference
                    +
                    +
                    + +

                    Equidistant cylindrical grib decoder and grid coordinate transformations. +More...

                    + + + + +

                    +Data Types

                    type  ip_equid_cylind_grid
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine equid_cylind_grid_area (RLAT, AREA)
                     Computes the grid box area for a equidistant cylindrical grid. More...
                     
                    subroutine equid_cylind_map_jacob (XLON, XLAT, YLON, YLAT)
                     Computes the map jacobians for a equidistant cylindrical grid. More...
                     
                    subroutine equid_cylind_vect_rot (CROT, SROT)
                     Computes the vector rotation sines and cosines for a equidistant cylindrical grid. More...
                     
                    subroutine gdswzd_equid_cylind (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for equidistant cylindrical grids. More...
                     
                    subroutine init_grib1 (self, g1_desc)
                     Initializes an equidistant cylindrical grid given a grib1_descriptor object. More...
                     
                    subroutine init_grib2 (self, g2_desc)
                     Initializes an equidistant cylindrical grid given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + +

                    +Variables

                    real dlat
                     Grid resolution in degrees n/s direction. More...
                     
                    real dlon
                     Grid resolution in degrees e/w direction. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    +

                    Detailed Description

                    +

                    Equidistant cylindrical grib decoder and grid coordinate transformations.

                    +

                    Octet numbers refer to [GRIB2 - GRID DEFINITION TEMPLATE 3.0 Latitude/Longitude or equidistant cylindrical, or Plate Carree](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp3-0.shtml).

                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ equid_cylind_grid_area()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_equid_cylind_grid_mod::equid_cylind_grid_area (real, intent(in) RLAT,
                    real, intent(out) AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Computes the grid box area for a equidistant cylindrical grid.

                    +
                    Parameters
                    + + + +
                    [in]rlatLatitude of grid point in degrees.
                    [out]areaArea weights in m^2.
                    +
                    +
                    +
                    Author
                    Mark Iredell, George Gayno
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 363 of file ip_equid_cylind_grid_mod.F90.

                    + +

                    References dlat, dlon, and rerth.

                    + +

                    Referenced by gdswzd_equid_cylind().

                    + +
                    +
                    + +

                    ◆ equid_cylind_map_jacob()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_equid_cylind_grid_mod::equid_cylind_map_jacob (real, intent(out) XLON,
                    real, intent(out) XLAT,
                    real, intent(out) YLON,
                    real, intent(out) YLAT 
                    )
                    +
                    +private
                    +
                    + +

                    Computes the map jacobians for a equidistant cylindrical grid.

                    +
                    Parameters
                    + + + + + +
                    [out]xlondx/dlon in 1/degrees.
                    [out]xlatdx/dlat in 1/degrees.
                    [out]ylondy/dlon in 1/degrees.
                    [out]ylatdy/dlat in 1/degrees.
                    +
                    +
                    +
                    Author
                    George Gayno
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 346 of file ip_equid_cylind_grid_mod.F90.

                    + +

                    References dlat, and dlon.

                    + +

                    Referenced by gdswzd_equid_cylind().

                    + +
                    +
                    + +

                    ◆ equid_cylind_vect_rot()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_equid_cylind_grid_mod::equid_cylind_vect_rot (real, intent(out) CROT,
                    real, intent(out) SROT 
                    )
                    +
                    +private
                    +
                    + +

                    Computes the vector rotation sines and cosines for a equidistant cylindrical grid.

                    +
                    Parameters
                    + + + +
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines.
                    +
                    +
                    +
                    Note
                      +
                    • ugrid=crot*uearth-srot*vearth;
                    • +
                    • vgrid=srot*uearth+crot*vearth
                    • +
                    +
                    +
                    Author
                    George Gayno
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 327 of file ip_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by gdswzd_equid_cylind().

                    + +
                    +
                    + +

                    ◆ gdswzd_equid_cylind()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_equid_cylind_grid_mod::gdswzd_equid_cylind (class(ip_equid_cylind_grid), intent(in) self,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for equidistant cylindrical grids.

                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too. Optionally, the vector rotations, the map jacobians and the grid box areas may be returned as well.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present.

                    +

                    To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]selfThe grid object gdswzd was called on.
                    [in]ioptoption flag
                      +
                    • +1 to compute earth coords of selected grid coords.
                    • +
                    • -1 o compute grid coords of selected earth coords.
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates if iopt>0.
                    [in,out]yptsGrid y point coordinates if iopt>0.
                    [in,out]rlonEarth longitudes in degrees e if iopt<0 (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees n if iopt<0 (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotOptional clockwise vector rotation cosines.
                    [out]srotOptional clockwise vector rotation sines.
                    [out]xlonOptional dx/dlon in 1/degrees.
                    [out]xlatOptional dx/dlat in 1/degrees.
                    [out]ylonOptional dy/dlon in 1/degrees.
                    [out]ylatOptional dy/dlat in 1/degrees.
                    [out]areaOptional area weights in m**2.
                    +
                    +
                    +
                    Author
                    Mark Iredell, George Gayno, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 203 of file ip_equid_cylind_grid_mod.F90.

                    + +

                    References dlat, dlon, equid_cylind_grid_area(), equid_cylind_map_jacob(), equid_cylind_vect_rot(), and rerth.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_equid_cylind_grid_mod::init_grib1 (class(ip_equid_cylind_grid), intent(inout) self,
                    type(grib1_descriptor), intent(in) g1_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes an equidistant cylindrical grid given a grib1_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g1_descA grib1_descriptor
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 53 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_equid_cylind_grid_mod::init_grib2 (class(ip_equid_cylind_grid), intent(inout) self,
                    type(grib2_descriptor), intent(in) g2_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes an equidistant cylindrical grid given a grib2_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g2_descA grib2_descriptor
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 109 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    +

                    Variable Documentation

                    + +

                    ◆ dlat

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_equid_cylind_grid_mod::dlat
                    +
                    +private
                    +
                    + +

                    Grid resolution in degrees n/s direction.

                    + +

                    Definition at line 40 of file ip_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by equid_cylind_grid_area(), equid_cylind_map_jacob(), and gdswzd_equid_cylind().

                    + +
                    +
                    + +

                    ◆ dlon

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_equid_cylind_grid_mod::dlon
                    +
                    +private
                    +
                    + +

                    Grid resolution in degrees e/w direction.

                    + +

                    Definition at line 41 of file ip_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by equid_cylind_grid_area(), equid_cylind_map_jacob(), and gdswzd_equid_cylind().

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_equid_cylind_grid_mod::rerth
                    +
                    +private
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 42 of file ip_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by equid_cylind_grid_area(), and gdswzd_equid_cylind().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__equid__cylind__grid__mod.js b/ver-5.0.0/namespaceip__equid__cylind__grid__mod.js new file mode 100644 index 00000000..56328f48 --- /dev/null +++ b/ver-5.0.0/namespaceip__equid__cylind__grid__mod.js @@ -0,0 +1,13 @@ +var namespaceip__equid__cylind__grid__mod = +[ + [ "ip_equid_cylind_grid", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid" ], + [ "equid_cylind_grid_area", "namespaceip__equid__cylind__grid__mod.html#a5a70b82abdce76bef22cdeaa96a986c2", null ], + [ "equid_cylind_map_jacob", "namespaceip__equid__cylind__grid__mod.html#a039501b44cd3ad4409983e193d509afd", null ], + [ "equid_cylind_vect_rot", "namespaceip__equid__cylind__grid__mod.html#ade88ecea1c0bb4b4d5b0d08f8482268d", null ], + [ "gdswzd_equid_cylind", "namespaceip__equid__cylind__grid__mod.html#af20f6f308b5a33211c677b894e41b727", null ], + [ "init_grib1", "namespaceip__equid__cylind__grid__mod.html#a3d0132823d27b60835ebb59ead173477", null ], + [ "init_grib2", "namespaceip__equid__cylind__grid__mod.html#a39d24c9468ecb7effd16972fd72e088a", null ], + [ "dlat", "namespaceip__equid__cylind__grid__mod.html#a30cb127d26d74d2de6ab3cbfd63183fb", null ], + [ "dlon", "namespaceip__equid__cylind__grid__mod.html#a46335f95ac343f7751bd519aec0a160f", null ], + [ "rerth", "namespaceip__equid__cylind__grid__mod.html#ab5b84516fab9cee3316c07450f49746c", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__gaussian__grid__mod.html b/ver-5.0.0/namespaceip__gaussian__grid__mod.html new file mode 100644 index 00000000..e20fd909 --- /dev/null +++ b/ver-5.0.0/namespaceip__gaussian__grid__mod.html @@ -0,0 +1,767 @@ + + + + + + + +NCEPLIBS-ip: ip_gaussian_grid_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_gaussian_grid_mod Module Reference
                    +
                    +
                    + +

                    Gaussian grid coordinate transformations. +More...

                    + + + + +

                    +Data Types

                    type  ip_gaussian_grid
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine gaussian_grid_area (YPTS, AREA)
                     Computes the grid box area for a gaussian cylindrical grid. More...
                     
                    subroutine gaussian_map_jacob (YPTS, XLON, XLAT, YLON, YLAT)
                     Computes the map jacobians for a gaussian cylindrical grid. More...
                     
                    subroutine gaussian_vect_rot (CROT, SROT)
                     Computes the vector rotation sines and cosines for a gaussian cylindrical grid. More...
                     
                    subroutine gdswzd_gaussian (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids. More...
                     
                    subroutine init_grib1 (self, g1_desc)
                     Initializes a gaussian grid given a grib1_descriptor object. More...
                     
                    subroutine init_grib2 (self, g2_desc)
                     Initializes a gaussian grid given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real, dimension(:), allocatable blat
                     Gaussian latitude for each parallel. More...
                     
                    real dlon
                     "i"-direction increment. More...
                     
                    integer j1
                     'j' index of first grid point within the global array of latitudes. More...
                     
                    integer jh
                     Scan mode flag in 'j' direction. More...
                     
                    real rerth
                     Radius of the earth. More...
                     
                    real, dimension(:), allocatable ylat_row
                     dy/dlat for each row in 1/degrees. More...
                     
                    +

                    Detailed Description

                    +

                    Gaussian grid coordinate transformations.

                    +

                    Octet numbers refer to [GRIB2 - GRID DEFINITION TEMPLATE 3.40 Gaussian Latitude/Longitude](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp3-40.shtml).

                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ gaussian_grid_area()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_gaussian_grid_mod::gaussian_grid_area (real, intent(in) YPTS,
                    real, intent(out) AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Computes the grid box area for a gaussian cylindrical grid.

                    +
                    Parameters
                    + + + +
                    [in]yptsy-index of grid point.
                    [out]areaArea weights in m^2
                    +
                    +
                    +
                    Author
                    Mark Iredell, George Gayno
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 416 of file ip_gaussian_grid_mod.F90.

                    + +

                    References blat, dlon, j1, jh, and rerth.

                    + +

                    Referenced by gdswzd_gaussian().

                    + +
                    +
                    + +

                    ◆ gaussian_map_jacob()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_gaussian_grid_mod::gaussian_map_jacob (real, intent(in) YPTS,
                    real, intent(out) XLON,
                    real, intent(out) XLAT,
                    real, intent(out) YLON,
                    real, intent(out) YLAT 
                    )
                    +
                    +private
                    +
                    + +

                    Computes the map jacobians for a gaussian cylindrical grid.

                    +
                    Parameters
                    + + + + + + +
                    [in]yptsy-index of grid point.
                    [out]xlondx/dlon in 1/degrees.
                    [out]xlatdx/dlat in 1/degrees.
                    [out]ylondy/dlon in 1/degrees.
                    [out]ylatdy/dlat in 1/degrees.
                    +
                    +
                    +
                    Author
                    George Gayno
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 396 of file ip_gaussian_grid_mod.F90.

                    + +

                    References dlon, and ylat_row.

                    + +

                    Referenced by gdswzd_gaussian().

                    + +
                    +
                    + +

                    ◆ gaussian_vect_rot()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_gaussian_grid_mod::gaussian_vect_rot (real, intent(out) CROT,
                    real, intent(out) SROT 
                    )
                    +
                    +private
                    +
                    + +

                    Computes the vector rotation sines and cosines for a gaussian cylindrical grid.

                    +
                    Parameters
                    + + + +
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines.
                    +
                    +
                    +
                    Note
                    ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    +
                    Author
                    George Gayno
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 376 of file ip_gaussian_grid_mod.F90.

                    + +

                    Referenced by gdswzd_gaussian().

                    + +
                    +
                    + +

                    ◆ gdswzd_gaussian()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_gaussian_grid_mod::gdswzd_gaussian (class(ip_gaussian_grid), intent(in) self,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids.

                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too. Optionally, the vector rotations, the map jacobians and the grid box areas may be returned as well.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present.

                    +

                    To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]selfThe grid object gdswzd was called on.
                    [in]ioptoption flag
                      +
                    • +1 to compute earth coords of selected grid coords.
                    • +
                    • -1 o compute grid coords of selected earth coords.
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates if iopt>0.
                    [in,out]yptsGrid y point coordinates if iopt>0.
                    [in,out]rlonEarth longitudes in degrees e if iopt<0 (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees n if iopt<0 (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotOptional clockwise vector rotation cosines.
                    [out]srotOptional clockwise vector rotation sines.
                    [out]xlonOptional dx/dlon in 1/degrees.
                    [out]xlatOptional dx/dlat in 1/degrees.
                    [out]ylonOptional dy/dlon in 1/degrees.
                    [out]ylatOptional dy/dlat in 1/degrees.
                    [out]areaOptional area weights in m**2.
                    +
                    +
                    +
                    Author
                    Mark Iredell, George Gayno, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 194 of file ip_gaussian_grid_mod.F90.

                    + +

                    References blat, dlon, gaussian_grid_area(), gaussian_map_jacob(), gaussian_vect_rot(), j1, jh, rerth, splat(), and ylat_row.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_gaussian_grid_mod::init_grib1 (class(ip_gaussian_grid), intent(inout) self,
                    type(grib1_descriptor), intent(in) g1_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a gaussian grid given a grib1_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g1_descA grib1_descriptor
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 59 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_gaussian_grid_mod::init_grib2 (class(ip_gaussian_grid), intent(inout) self,
                    type(grib2_descriptor), intent(in) g2_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a gaussian grid given a grib2_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g2_descA grib2_descriptor
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 108 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    +

                    Variable Documentation

                    + +

                    ◆ blat

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real, dimension(:), allocatable ip_gaussian_grid_mod::blat
                    +
                    +private
                    +
                    + +

                    Gaussian latitude for each parallel.

                    + +

                    Definition at line 45 of file ip_gaussian_grid_mod.F90.

                    + +

                    Referenced by gaussian_grid_area(), and gdswzd_gaussian().

                    + +
                    +
                    + +

                    ◆ dlon

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_gaussian_grid_mod::dlon
                    +
                    +private
                    +
                    + +

                    "i"-direction increment.

                    +

                    GRIB2 Section 3, octets 64-67.

                    + +

                    Definition at line 46 of file ip_gaussian_grid_mod.F90.

                    + +

                    Referenced by gaussian_grid_area(), gaussian_map_jacob(), and gdswzd_gaussian().

                    + +
                    +
                    + +

                    ◆ j1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_gaussian_grid_mod::j1
                    +
                    +private
                    +
                    + +

                    'j' index of first grid point within the global array of latitudes.

                    + +

                    Definition at line 43 of file ip_gaussian_grid_mod.F90.

                    + +

                    Referenced by gaussian_grid_area(), and gdswzd_gaussian().

                    + +
                    +
                    + +

                    ◆ jh

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_gaussian_grid_mod::jh
                    +
                    +private
                    +
                    + +

                    Scan mode flag in 'j' direction.

                    +

                    When '1' points scan from N to S. When "-1" points scan from S to N.

                    + +

                    Definition at line 44 of file ip_gaussian_grid_mod.F90.

                    + +

                    Referenced by gaussian_grid_area(), and gdswzd_gaussian().

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_gaussian_grid_mod::rerth
                    +
                    +private
                    +
                    + +

                    Radius of the earth.

                    +

                    GRIB2 Section 3, octets 15-30.

                    + +

                    Definition at line 47 of file ip_gaussian_grid_mod.F90.

                    + +

                    Referenced by gaussian_grid_area(), and gdswzd_gaussian().

                    + +
                    +
                    + +

                    ◆ ylat_row

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real, dimension(:), allocatable ip_gaussian_grid_mod::ylat_row
                    +
                    +private
                    +
                    + +

                    dy/dlat for each row in 1/degrees.

                    + +

                    Definition at line 48 of file ip_gaussian_grid_mod.F90.

                    + +

                    Referenced by gaussian_map_jacob(), and gdswzd_gaussian().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__gaussian__grid__mod.js b/ver-5.0.0/namespaceip__gaussian__grid__mod.js new file mode 100644 index 00000000..1413b539 --- /dev/null +++ b/ver-5.0.0/namespaceip__gaussian__grid__mod.js @@ -0,0 +1,16 @@ +var namespaceip__gaussian__grid__mod = +[ + [ "ip_gaussian_grid", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html", "structip__gaussian__grid__mod_1_1ip__gaussian__grid" ], + [ "gaussian_grid_area", "namespaceip__gaussian__grid__mod.html#ab602a870a477c7ab77438700af4e7780", null ], + [ "gaussian_map_jacob", "namespaceip__gaussian__grid__mod.html#adca7b03877c6a7048ff1716a95e0bd9d", null ], + [ "gaussian_vect_rot", "namespaceip__gaussian__grid__mod.html#ac72eec96d0012fbe0f0ec7c520f40dad", null ], + [ "gdswzd_gaussian", "namespaceip__gaussian__grid__mod.html#a6eefd9270b3f9bb2c59a77bea4ecf1b9", null ], + [ "init_grib1", "namespaceip__gaussian__grid__mod.html#a8fe2ee732a3a2db4891a6431787a0b01", null ], + [ "init_grib2", "namespaceip__gaussian__grid__mod.html#ae048ac033628515113b11b8c7364e0c2", null ], + [ "blat", "namespaceip__gaussian__grid__mod.html#ae2697b9c4dbe4945276633d1951e79fc", null ], + [ "dlon", "namespaceip__gaussian__grid__mod.html#a8852b7cfb7b99318140c66b0c551dc6d", null ], + [ "j1", "namespaceip__gaussian__grid__mod.html#af5c4024263aa3eaef5801849ae32c15a", null ], + [ "jh", "namespaceip__gaussian__grid__mod.html#a67d6cd6d188a8bded8bdf64927617028", null ], + [ "rerth", "namespaceip__gaussian__grid__mod.html#a8213e02ccf4325ad5db14f2e48990da2", null ], + [ "ylat_row", "namespaceip__gaussian__grid__mod.html#a3591b5701f3d03931c6a9d5278e161dc", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__grid__descriptor__mod.html b/ver-5.0.0/namespaceip__grid__descriptor__mod.html new file mode 100644 index 00000000..a4b1eb04 --- /dev/null +++ b/ver-5.0.0/namespaceip__grid__descriptor__mod.html @@ -0,0 +1,378 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_descriptor_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_descriptor_mod Module Reference
                    +
                    +
                    + +

                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions. +More...

                    + + + + + + + + + + + + + + + +

                    +Data Types

                    type  grib1_descriptor
                     Descriptor representing a grib1 grib descriptor section (GDS) with an integer array. More...
                     
                    type  grib2_descriptor
                     Grib-2 descriptor containing a grib2 GDT represented by an integer array. More...
                     
                    interface  init_descriptor
                     
                    type  ip_grid_descriptor
                     Abstract descriptor object which represents a grib1 or grib2 descriptor. More...
                     
                    interface  operator(==)
                     
                    + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    type(grib1_descriptor) function, public init_grib1_descriptor (gds)
                     Initialize grib-1 descriptor from integer grid definition section (GDS). More...
                     
                    type(grib2_descriptor) function, public init_grib2_descriptor (gdt_num, gdt_len, gdt_tmpl)
                     Initialize grib-2 descriptor from integer grid definition template (GDT). More...
                     
                    logical function is_same_grid (grid1, grid2)
                     Test whether two grid descriptors are the same. More...
                     
                    logical function is_same_grid_grib1 (self, grid_desc)
                     Test whether two grib1_descriptors are the same. More...
                     
                    logical function is_same_grid_grib2 (self, grid_desc)
                     Test whether two grib2_descriptors are the same. More...
                     
                    +

                    Detailed Description

                    +

                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.

                    +

                    An abstract ip_grid_descriptor class is subclassed by the GRIB1 and GRIB2 descriptor types which contain the raw integer grib arrays. A comparison operator to test whether two grid descriptors are the same is also included.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ init_grib1_descriptor()

                    + +
                    +
                    + + + + + + + + +
                    type(grib1_descriptor) function, public ip_grid_descriptor_mod::init_grib1_descriptor (integer, dimension(:), intent(in) gds)
                    +
                    + +

                    Initialize grib-1 descriptor from integer grid definition section (GDS).

                    +
                    Parameters
                    + + +
                    [in]gdsGrib-1 grid definition section.
                    +
                    +
                    +
                    Returns
                    Initialized Grib-1 descriptor.
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 74 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2_descriptor()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    type(grib2_descriptor) function, public ip_grid_descriptor_mod::init_grib2_descriptor (integer, intent(in) gdt_num,
                    integer, intent(in) gdt_len,
                    integer, dimension(:), intent(in) gdt_tmpl 
                    )
                    +
                    + +

                    Initialize grib-2 descriptor from integer grid definition template (GDT).

                    +
                    Parameters
                    + + + + +
                    [in]gdt_numGrib-2 grid number.
                    [in]gdt_lenLenght of the grid definition template.
                    [in]gdt_tmplGrib-2 grid definition template.
                    +
                    +
                    +
                    Returns
                    Initialized Grib-2 descriptor.
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 93 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    + +

                    ◆ is_same_grid()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    logical function ip_grid_descriptor_mod::is_same_grid (class(ip_grid_descriptor), intent(in) grid1,
                    class(ip_grid_descriptor), intent(in) grid2 
                    )
                    +
                    +private
                    +
                    + +

                    Test whether two grid descriptors are the same.

                    +
                    Parameters
                    + + + +
                    [in]grid1An ip_grid_descriptor.
                    [in]grid2Another ip_grid_descriptor.
                    +
                    +
                    +
                    Returns
                    True if the grids are the same, false if they are not.
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 115 of file ip_grid_descriptor_mod.F90.

                    + +

                    Referenced by ip_grid_descriptor_mod::operator(==)::is_same_grid(), and ip_grid_mod::operator(==)::is_same_grid().

                    + +
                    +
                    + +

                    ◆ is_same_grid_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    logical function ip_grid_descriptor_mod::is_same_grid_grib1 (class(grib1_descriptor), intent(in) self,
                    class(grib1_descriptor), intent(in) grid_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Test whether two grib1_descriptors are the same.

                    +
                    Parameters
                    + + + +
                    [in]selfThe grib1_descriptor which this routine was called on.
                    [in]grid_descA grib1_descriptor to compare.
                    +
                    +
                    +
                    Returns
                    True if the grids are the same, false if they are not.
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 145 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    + +

                    ◆ is_same_grid_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    logical function ip_grid_descriptor_mod::is_same_grid_grib2 (class(grib2_descriptor), intent(in) self,
                    class(grib2_descriptor), intent(in) grid_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Test whether two grib2_descriptors are the same.

                    +
                    Parameters
                    + + + +
                    [in]selfThe grib2_descriptor which this routine was called on.
                    [in]grid_descgrib2_descriptor to compare.
                    +
                    +
                    +
                    Returns
                    True if the grids are the same, false if they are not.
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 164 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__grid__descriptor__mod.js b/ver-5.0.0/namespaceip__grid__descriptor__mod.js new file mode 100644 index 00000000..06ef1ff6 --- /dev/null +++ b/ver-5.0.0/namespaceip__grid__descriptor__mod.js @@ -0,0 +1,13 @@ +var namespaceip__grid__descriptor__mod = +[ + [ "grib1_descriptor", "structip__grid__descriptor__mod_1_1grib1__descriptor.html", "structip__grid__descriptor__mod_1_1grib1__descriptor" ], + [ "grib2_descriptor", "structip__grid__descriptor__mod_1_1grib2__descriptor.html", "structip__grid__descriptor__mod_1_1grib2__descriptor" ], + [ "init_descriptor", "interfaceip__grid__descriptor__mod_1_1init__descriptor.html", "interfaceip__grid__descriptor__mod_1_1init__descriptor" ], + [ "ip_grid_descriptor", "structip__grid__descriptor__mod_1_1ip__grid__descriptor.html", "structip__grid__descriptor__mod_1_1ip__grid__descriptor" ], + [ "operator(==)", "interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html", "interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08" ], + [ "init_grib1_descriptor", "namespaceip__grid__descriptor__mod.html#aa00884a7fca018535eaf0c2ebe26bc98", null ], + [ "init_grib2_descriptor", "namespaceip__grid__descriptor__mod.html#a143ac06a2a20697d01606a259213b451", null ], + [ "is_same_grid", "namespaceip__grid__descriptor__mod.html#a202219f9c5c84fa04d3eb1c2208358ec", null ], + [ "is_same_grid_grib1", "namespaceip__grid__descriptor__mod.html#a5bb3c5230b88012bddc3922bfa1cb019", null ], + [ "is_same_grid_grib2", "namespaceip__grid__descriptor__mod.html#a75ac34ea9372afaa29b0df2ce8919988", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__grid__factory__mod.html b/ver-5.0.0/namespaceip__grid__factory__mod.html new file mode 100644 index 00000000..2e7a0f3f --- /dev/null +++ b/ver-5.0.0/namespaceip__grid__factory__mod.html @@ -0,0 +1,285 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_factory_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_factory_mod Module Reference
                    +
                    +
                    + +

                    Routines for creating an ip_grid given a Grib descriptor. +More...

                    + + + + +

                    +Data Types

                    interface  init_grid
                     
                    + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine init_grid_generic (grid, grid_desc)
                     Initializes a polymorphic ip_grid object from an ip_grid_descriptor. More...
                     
                    subroutine init_grid_grib1 (grid, g1_desc)
                     Initializes a polymorphic ip_grid from a grib1_descriptor. More...
                     
                    subroutine init_grid_grib2 (grid, g2_desc)
                     Initializes a polymorphic ip_grid from a grib2_descriptor. More...
                     
                    +

                    Detailed Description

                    +

                    Routines for creating an ip_grid given a Grib descriptor.

                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ init_grid_generic()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_grid_factory_mod::init_grid_generic (class(ip_grid), intent(out), allocatable grid,
                    class(ip_grid_descriptor), intent(in) grid_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a polymorphic ip_grid object from an ip_grid_descriptor.

                    +
                    Parameters
                    + + + +
                    [out]gridGrid to initialize
                    [in]grid_descGrid descriptor created from a grib1/grib2 template.
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 33 of file ip_grid_factory_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grid_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_grid_factory_mod::init_grid_grib1 (class(ip_grid), intent(out), allocatable grid,
                    type(grib1_descriptor), intent(in) g1_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a polymorphic ip_grid from a grib1_descriptor.

                    +

                    The concrete grid type is chosen based on the grid number in the descriptor.

                    +
                    Parameters
                    + + + +
                    [out]gridGrid to initialize
                    [in]g1_desc
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 53 of file ip_grid_factory_mod.F90.

                    + +

                    References ip_grid_mod::equid_cylind_grid_id_grib1, ip_grid_mod::gaussian_grid_id_grib1, ip_grid_mod::lambert_conf_grid_id_grib1, ip_grid_mod::mercator_grid_id_grib1, ip_grid_mod::polar_stereo_grid_id_grib1, ip_grid_mod::rot_equid_cylind_b_grid_id_grib1, and ip_grid_mod::rot_equid_cylind_e_grid_id_grib1.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid::init_grid_generic().

                    + +
                    +
                    + +

                    ◆ init_grid_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_grid_factory_mod::init_grid_grib2 (class(ip_grid), intent(out), allocatable grid,
                    type(grib2_descriptor), intent(in) g2_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a polymorphic ip_grid from a grib2_descriptor.

                    +

                    The concrete grid type is chosen based on the grid number in the descriptor.

                    +
                    Parameters
                    + + + +
                    [out]gridGrid to initialize
                    [in]g2_descGrib2 descriptor
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 89 of file ip_grid_factory_mod.F90.

                    + +

                    References ip_grid_mod::equid_cylind_grid_id_grib2, ip_grid_mod::gaussian_grid_id_grib2, ip_grid_mod::lambert_conf_grid_id_grib2, ip_grid_mod::mercator_grid_id_grib2, ip_grid_mod::polar_stereo_grid_id_grib2, and ip_grid_mod::rot_equid_cylind_grid_id_grib2.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid::init_grid_generic().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__grid__factory__mod.js b/ver-5.0.0/namespaceip__grid__factory__mod.js new file mode 100644 index 00000000..162fc99b --- /dev/null +++ b/ver-5.0.0/namespaceip__grid__factory__mod.js @@ -0,0 +1,7 @@ +var namespaceip__grid__factory__mod = +[ + [ "init_grid", "interfaceip__grid__factory__mod_1_1init__grid.html", "interfaceip__grid__factory__mod_1_1init__grid" ], + [ "init_grid_generic", "namespaceip__grid__factory__mod.html#a2d2ea07d353bae8b057471aa99b58e46", null ], + [ "init_grid_grib1", "namespaceip__grid__factory__mod.html#ad8906ed6fe52c2426c0ff09ce50b6fc5", null ], + [ "init_grid_grib2", "namespaceip__grid__factory__mod.html#aa187dc8dbd1d004a51cc0e9826ffa225", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__grid__mod.html b/ver-5.0.0/namespaceip__grid__mod.html new file mode 100644 index 00000000..a6e82a46 --- /dev/null +++ b/ver-5.0.0/namespaceip__grid__mod.html @@ -0,0 +1,546 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_mod Module Reference
                    +
                    +
                    + +

                    Abstract ip_grid type. +More...

                    + + + + + + + + + + + + + + +

                    +Data Types

                    interface  gdswzd_interface
                     
                    interface  init_grib1_interface
                     
                    interface  init_grib2_interface
                     
                    type  ip_grid
                     Abstract grid that holds fields and methods common to all grids. More...
                     
                    interface  operator(==)
                     Check equality. More...
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    integer function field_pos (self, i, j)
                     Returns the field position for a given grid point. More...
                     
                    logical function is_same_grid (grid1, grid2)
                     Compares two grids. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    integer, parameter, public equid_cylind_grid_id_grib1 = 0
                     Integer grid number for equidistant cylindrical grid in grib1. More...
                     
                    integer, parameter, public equid_cylind_grid_id_grib2 = 0
                     Integer grid number for equidistant cylindrical grid in grib2. More...
                     
                    integer, parameter, public gaussian_grid_id_grib1 = 4
                     Integer grid number for Gaussian grid in grib1. More...
                     
                    integer, parameter, public gaussian_grid_id_grib2 = 40
                     Integer grid number for Gaussian grid in grib2. More...
                     
                    integer, parameter, public lambert_conf_grid_id_grib1 = 3
                     Integer grid number for Lambert Conformal grid in grib1. More...
                     
                    integer, parameter, public lambert_conf_grid_id_grib2 = 30
                     Integer grid number for Lambert conformal grid in grib2. More...
                     
                    integer, parameter, public mercator_grid_id_grib1 = 1
                     Integer grid number for Mercator grid in grib1. More...
                     
                    integer, parameter, public mercator_grid_id_grib2 = 10
                     Integer grid number for Mercator grid in grib2. More...
                     
                    integer, parameter, public polar_stereo_grid_id_grib1 = 5
                     Integer grid number for polar stereo grid in grib1. More...
                     
                    integer, parameter, public polar_stereo_grid_id_grib2 = 20
                     Integer grid number for polar stereo grid in grib2. More...
                     
                    integer, parameter, public rot_equid_cylind_b_grid_id_grib1 = 205
                     Integer grid number for rotated equidistant cylindrical B-stagger grid. More...
                     
                    integer, parameter, public rot_equid_cylind_e_grid_id_grib1 = 203
                     Integer grid number for rotated equidistant cylindrical E-stagger grid. More...
                     
                    integer, parameter, public rot_equid_cylind_grid_id_grib2 = 1
                     Integer grid number for rotated equidistant cylindrical grid in grib2. More...
                     
                    +

                    Detailed Description

                    +

                    Abstract ip_grid type.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ field_pos()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    integer function ip_grid_mod::field_pos (class(ip_grid), intent(in) self,
                    integer, intent(in) i,
                    integer, intent(in) j 
                    )
                    +
                    +private
                    +
                    + +

                    Returns the field position for a given grid point.

                    +
                    Parameters
                    + + + + +
                    [in]self
                    [in]i
                    [in]j
                    +
                    +
                    +
                    Returns
                    Integer position in grib field to locate grid point.
                    +
                    Author
                    Mark Iredell, George Gayno, Kyle Gerheiser
                    +
                    Date
                    April 1996
                    + +

                    Definition at line 197 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ is_same_grid()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    logical function ip_grid_mod::is_same_grid (class(ip_grid), intent(in) grid1,
                    class(ip_grid), intent(in) grid2 
                    )
                    +
                    +private
                    +
                    + +

                    Compares two grids.

                    +
                    Parameters
                    + + + +
                    [in]grid1An ip_grid
                    [in]grid2Another ip_grid
                    +
                    +
                    +
                    Returns
                    True if the grids are the same, false if not.
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 182 of file ip_grid_mod.F90.

                    + +
                    +
                    +

                    Variable Documentation

                    + +

                    ◆ equid_cylind_grid_id_grib1

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::equid_cylind_grid_id_grib1 = 0
                    +
                    + +

                    Integer grid number for equidistant cylindrical grid in grib1.

                    + +

                    Definition at line 14 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib1().

                    + +
                    +
                    + +

                    ◆ equid_cylind_grid_id_grib2

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::equid_cylind_grid_id_grib2 = 0
                    +
                    + +

                    Integer grid number for equidistant cylindrical grid in grib2.

                    + +

                    Definition at line 22 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib2().

                    + +
                    +
                    + +

                    ◆ gaussian_grid_id_grib1

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::gaussian_grid_id_grib1 = 4
                    +
                    + +

                    Integer grid number for Gaussian grid in grib1.

                    + +

                    Definition at line 17 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib1().

                    + +
                    +
                    + +

                    ◆ gaussian_grid_id_grib2

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::gaussian_grid_id_grib2 = 40
                    +
                    + +

                    Integer grid number for Gaussian grid in grib2.

                    + +

                    Definition at line 27 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib2().

                    + +
                    +
                    + +

                    ◆ lambert_conf_grid_id_grib1

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::lambert_conf_grid_id_grib1 = 3
                    +
                    + +

                    Integer grid number for Lambert Conformal grid in grib1.

                    + +

                    Definition at line 16 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib1().

                    + +
                    +
                    + +

                    ◆ lambert_conf_grid_id_grib2

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::lambert_conf_grid_id_grib2 = 30
                    +
                    + +

                    Integer grid number for Lambert conformal grid in grib2.

                    + +

                    Definition at line 26 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib2().

                    + +
                    +
                    + +

                    ◆ mercator_grid_id_grib1

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::mercator_grid_id_grib1 = 1
                    +
                    + +

                    Integer grid number for Mercator grid in grib1.

                    + +

                    Definition at line 15 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib1().

                    + +
                    +
                    + +

                    ◆ mercator_grid_id_grib2

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::mercator_grid_id_grib2 = 10
                    +
                    + +

                    Integer grid number for Mercator grid in grib2.

                    + +

                    Definition at line 24 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib2().

                    + +
                    +
                    + +

                    ◆ polar_stereo_grid_id_grib1

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::polar_stereo_grid_id_grib1 = 5
                    +
                    + +

                    Integer grid number for polar stereo grid in grib1.

                    + +

                    Definition at line 18 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib1().

                    + +
                    +
                    + +

                    ◆ polar_stereo_grid_id_grib2

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::polar_stereo_grid_id_grib2 = 20
                    +
                    + +

                    Integer grid number for polar stereo grid in grib2.

                    + +

                    Definition at line 25 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib2().

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_b_grid_id_grib1

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::rot_equid_cylind_b_grid_id_grib1 = 205
                    +
                    + +

                    Integer grid number for rotated equidistant cylindrical B-stagger grid.

                    + +

                    Definition at line 20 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib1().

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_e_grid_id_grib1

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::rot_equid_cylind_e_grid_id_grib1 = 203
                    +
                    + +

                    Integer grid number for rotated equidistant cylindrical E-stagger grid.

                    + +

                    Definition at line 19 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib1().

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_grid_id_grib2

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_grid_mod::rot_equid_cylind_grid_id_grib2 = 1
                    +
                    + +

                    Integer grid number for rotated equidistant cylindrical grid in grib2.

                    + +

                    Definition at line 23 of file ip_grid_mod.F90.

                    + +

                    Referenced by ip_grid_factory_mod::init_grid_grib2().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__grid__mod.js b/ver-5.0.0/namespaceip__grid__mod.js new file mode 100644 index 00000000..47bec179 --- /dev/null +++ b/ver-5.0.0/namespaceip__grid__mod.js @@ -0,0 +1,23 @@ +var namespaceip__grid__mod = +[ + [ "gdswzd_interface", "interfaceip__grid__mod_1_1gdswzd__interface.html", "interfaceip__grid__mod_1_1gdswzd__interface" ], + [ "init_grib1_interface", "interfaceip__grid__mod_1_1init__grib1__interface.html", "interfaceip__grid__mod_1_1init__grib1__interface" ], + [ "init_grib2_interface", "interfaceip__grid__mod_1_1init__grib2__interface.html", "interfaceip__grid__mod_1_1init__grib2__interface" ], + [ "ip_grid", "structip__grid__mod_1_1ip__grid.html", "structip__grid__mod_1_1ip__grid" ], + [ "operator(==)", "interfaceip__grid__mod_1_1operator_07_0a_0a_08.html", "interfaceip__grid__mod_1_1operator_07_0a_0a_08" ], + [ "field_pos", "namespaceip__grid__mod.html#a63572318d74ec94c20c5ccd6ded2d442", null ], + [ "is_same_grid", "namespaceip__grid__mod.html#a663bda9af9dd991a09ba0f0de66dc045", null ], + [ "equid_cylind_grid_id_grib1", "namespaceip__grid__mod.html#ad96da95d40beceb1a1c405971e8130bb", null ], + [ "equid_cylind_grid_id_grib2", "namespaceip__grid__mod.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6", null ], + [ "gaussian_grid_id_grib1", "namespaceip__grid__mod.html#a45e8afad72b1b8856b3e44f2dd3123b3", null ], + [ "gaussian_grid_id_grib2", "namespaceip__grid__mod.html#a36a9a73ecd50353f892341ae8a5c8316", null ], + [ "lambert_conf_grid_id_grib1", "namespaceip__grid__mod.html#ab82b90d20f38ff39741f6890fa422d16", null ], + [ "lambert_conf_grid_id_grib2", "namespaceip__grid__mod.html#a2e49846c9122b1fe1fcdbb2913fc32fe", null ], + [ "mercator_grid_id_grib1", "namespaceip__grid__mod.html#ab9ff525eca4f053b04ec96a83cb06682", null ], + [ "mercator_grid_id_grib2", "namespaceip__grid__mod.html#af9c58af5162d96cb7d1ac5001139b856", null ], + [ "polar_stereo_grid_id_grib1", "namespaceip__grid__mod.html#afee73c2f09ea9de43c156dc594ae1df1", null ], + [ "polar_stereo_grid_id_grib2", "namespaceip__grid__mod.html#a5b3ad320b41791e65966e1bb498e9ae3", null ], + [ "rot_equid_cylind_b_grid_id_grib1", "namespaceip__grid__mod.html#adb7d7d18410aaae52d7eee2e97f04b14", null ], + [ "rot_equid_cylind_e_grid_id_grib1", "namespaceip__grid__mod.html#a4e11ce780c3d165c282684188890af1c", null ], + [ "rot_equid_cylind_grid_id_grib2", "namespaceip__grid__mod.html#adc7c650c524eb6425e77b2e0eac0979a", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__grids__mod.html b/ver-5.0.0/namespaceip__grids__mod.html new file mode 100644 index 00000000..3d5fb472 --- /dev/null +++ b/ver-5.0.0/namespaceip__grids__mod.html @@ -0,0 +1,106 @@ + + + + + + + +NCEPLIBS-ip: ip_grids_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_grids_mod Module Reference
                    +
                    +
                    + +

                    Re-export the individual grids. +More...

                    +

                    Detailed Description

                    +

                    Re-export the individual grids.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    7/21/21
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__interpolators__mod.html b/ver-5.0.0/namespaceip__interpolators__mod.html new file mode 100644 index 00000000..d841f0af --- /dev/null +++ b/ver-5.0.0/namespaceip__interpolators__mod.html @@ -0,0 +1,268 @@ + + + + + + + +NCEPLIBS-ip: ip_interpolators_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_interpolators_mod Module Reference
                    +
                    +
                    + +

                    Top-level module to export interpolation routines and constants. +More...

                    + + + + + + + + + + + + + + +

                    +Variables

                    integer, parameter, public bicubic_interp_id = 1
                     
                    integer, parameter, public bilinear_interp_id = 0
                     
                    integer, parameter, public budget_interp_id = 3
                     
                    integer, parameter, public neighbor_budget_interp_id = 6
                     
                    integer, parameter, public neighbor_interp_id = 2
                     
                    integer, parameter, public spectral_interp_id = 4
                     
                    +

                    Detailed Description

                    +

                    Top-level module to export interpolation routines and constants.

                    +
                    Author
                    Kyle Gerheiser
                    +

                    Variable Documentation

                    + +

                    ◆ bicubic_interp_id

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_interpolators_mod::bicubic_interp_id = 1
                    +
                    +
                    Parameters
                    + + +
                    Constantto choose BICUBIC interpolation method
                    +
                    +
                    + +

                    Definition at line 19 of file ip_interpolators_mod.F90.

                    + +

                    Referenced by ipolates_mod::ipolates_grid(), and ipolatev_mod::ipolatev_grid().

                    + +
                    +
                    + +

                    ◆ bilinear_interp_id

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_interpolators_mod::bilinear_interp_id = 0
                    +
                    +
                    Parameters
                    + + +
                    Constantto choose BILINEAR interpolation method
                    +
                    +
                    + +

                    Definition at line 17 of file ip_interpolators_mod.F90.

                    + +

                    Referenced by ipolates_mod::ipolates_grid(), and ipolatev_mod::ipolatev_grid().

                    + +
                    +
                    + +

                    ◆ budget_interp_id

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_interpolators_mod::budget_interp_id = 3
                    +
                    +
                    Parameters
                    + + +
                    Constantto choose BUDGET interpolation method
                    +
                    +
                    + +

                    Definition at line 23 of file ip_interpolators_mod.F90.

                    + +

                    Referenced by ipolates_mod::ipolates_grid(), and ipolatev_mod::ipolatev_grid().

                    + +
                    +
                    + +

                    ◆ neighbor_budget_interp_id

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_interpolators_mod::neighbor_budget_interp_id = 6
                    +
                    +
                    Parameters
                    + + +
                    Constantto choose NEIGBOR_BUDGET interpolation method
                    +
                    +
                    + +

                    Definition at line 27 of file ip_interpolators_mod.F90.

                    + +

                    Referenced by ipolates_mod::ipolates_grid(), and ipolatev_mod::ipolatev_grid().

                    + +
                    +
                    + +

                    ◆ neighbor_interp_id

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_interpolators_mod::neighbor_interp_id = 2
                    +
                    +
                    Parameters
                    + + +
                    Constantto choose NEIGBOR interpolation method
                    +
                    +
                    + +

                    Definition at line 21 of file ip_interpolators_mod.F90.

                    + +

                    Referenced by ipolates_mod::ipolates_grid(), and ipolatev_mod::ipolatev_grid().

                    + +
                    +
                    + +

                    ◆ spectral_interp_id

                    + +
                    +
                    + + + + +
                    integer, parameter, public ip_interpolators_mod::spectral_interp_id = 4
                    +
                    +
                    Parameters
                    + + +
                    Constantto choose SPECTRAL interpolation method
                    +
                    +
                    + +

                    Definition at line 25 of file ip_interpolators_mod.F90.

                    + +

                    Referenced by ipolates_mod::ipolates_grid(), and ipolatev_mod::ipolatev_grid().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__lambert__conf__grid__mod.html b/ver-5.0.0/namespaceip__lambert__conf__grid__mod.html new file mode 100644 index 00000000..ac6c941d --- /dev/null +++ b/ver-5.0.0/namespaceip__lambert__conf__grid__mod.html @@ -0,0 +1,880 @@ + + + + + + + +NCEPLIBS-ip: ip_lambert_conf_grid_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_lambert_conf_grid_mod Module Reference
                    +
                    +
                    + +

                    Lambert conformal grib decoder and grid coordinate transformations. +More...

                    + + + + +

                    +Data Types

                    type  ip_lambert_conf_grid
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine gdswzd_lambert_conf (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     GDS wizard for lambert conformal conical. More...
                     
                    subroutine init_grib1 (self, g1_desc)
                     Initializes a Lambert Conformal grid given a grib1_descriptor object. More...
                     
                    subroutine init_grib2 (self, g2_desc)
                     Initializes a Lambert Conformal grid given a grib2_descriptor object. More...
                     
                    subroutine lambert_conf_grid_area (RLAT, FILL, DR, AREA)
                     Grid box area for lambert conformal conical. More...
                     
                    subroutine lambert_conf_map_jacob (RLAT, FILL, DLON, DR, XLON, XLAT, YLON, YLAT)
                     Map jacobians for lambert conformal conical. More...
                     
                    subroutine lambert_conf_vect_rot (DLON, CROT, SROT)
                     Vector rotation fields for lambert conformal conical. More...
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real an
                     Cone factor. More...
                     
                    real dxs
                     x-direction grid length adjusted for scan mode. More...
                     
                    real dys
                     y-direction grid length adjusted for scan model. More...
                     
                    real h
                     Hemisphere flag. More...
                     
                    integer irot
                     vector rotation flag. More...
                     
                    real rerth
                     Radius of the earth. More...
                     
                    +

                    Detailed Description

                    +

                    Lambert conformal grib decoder and grid coordinate transformations.

                    +

                    Octet numbers refer to [GRIB2 - GRID DEFINITION TEMPLATE 3.30 Lambert conformal](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp3-30.shtml).

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ gdswzd_lambert_conf()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_lambert_conf_grid_mod::gdswzd_lambert_conf (class(ip_lambert_conf_grid), intent(in) self,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    GDS wizard for lambert conformal conical.

                    +

                    This subprogram decodes the grib 2 grid definition template (passed in integer form as decoded by the ncep g2 library) and returns one of the following:

                      +
                    • (iopt=+1) earth coordinates of selected grid coordinates
                    • +
                    • (iopt=-1) grid coordinates of selected earth coordinates
                    • +
                    +

                    Works for lambert conformal conical projections.

                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and grid box areas for this grid may be returned as well.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present. To compute the grid box areas the optional argument 'area' must be present.

                    +

                    +Program History Log

                    + + + + + + + + + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 iredell Initial.
                    96-10-01 iredell protected against unresolvable points
                    97-10-20 iredell include map options
                    1999-04-27 gilbert corrected minor error calculating variable an for the secant projection case (rlati1.ne.rlati2).
                    2012-08-14 gayno fix problem with sh grids. Ensure grid box area always positive.
                    2015-01-21 gayno merger of gdswiz03() and gdswzd03(). Make crot,sort,xlon,xlat,ylon,ylat and area optional arguments. Make part of a module. Move vector rotation, map jacobian and grid box area computations to separate subroutines.
                    2015-07-13 gayno Convert to grib 2. Replace grib 1 kgds array with grib 2 grid definition template array. Rename routine.
                    2018-07-20 wesley add threads.
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]selfip_lambert_conf_grid object.
                    [in]ioptoption flag
                      +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    [in]nptsmaximum number of coordinates
                    [in]fillfill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    [in,out]xpts(npts) grid x point coordinates if iopt>0
                    [in,out]ypts(npts) grid y point coordinates if iopt>0
                    [in,out]rlon(npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    [in,out]rlat(npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    [out]nretnumber of valid points computed
                    [out]crotoptional (npts) clockwise vector rotation cosines
                    [out]srotoptional (npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlonoptional (npts) dx/dlon in 1/degrees
                    [out]xlatoptional (npts) dx/dlat in 1/degrees
                    [out]ylonoptional (npts) dy/dlon in 1/degrees
                    [out]ylatoptional (npts) dy/dlat in 1/degrees
                    [out]areaoptional (npts) area weights in m**2 (proportional to the square of the map factor)
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    +
                    + +

                    Definition at line 219 of file ip_lambert_conf_grid_mod.F90.

                    + +

                    References an, dxs, dys, h, irot, lambert_conf_grid_area(), lambert_conf_map_jacob(), lambert_conf_vect_rot(), and rerth.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_lambert_conf_grid_mod::init_grib1 (class(ip_lambert_conf_grid), intent(inout) self,
                    type(grib1_descriptor), intent(in) g1_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a Lambert Conformal grid given a grib1_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g1_descA grib1_descriptor
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    +
                    + +

                    Definition at line 60 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_lambert_conf_grid_mod::init_grib2 (class(ip_lambert_conf_grid), intent(inout) self,
                    type(grib2_descriptor), intent(in) g2_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a Lambert Conformal grid given a grib2_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g2_descA grib2_descriptor
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    +
                    + +

                    Definition at line 112 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ lambert_conf_grid_area()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_lambert_conf_grid_mod::lambert_conf_grid_area (real, intent(in) RLAT,
                    real, intent(in) FILL,
                    real, intent(in) DR,
                    real, intent(out) AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Grid box area for lambert conformal conical.

                    +

                    This subprogram computes the grid box area for a lambert conformal conical grid.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 Gayno initial version
                    2015-09-17 Gayno rename as "lambert_conf_grid_area"
                    2018-07-20 Wesley pass in dr for threading.
                    +
                    Parameters
                    + + + + + +
                    [in]rlatlatitude of grid point in degrees (real)
                    [in]fillfill value for undefined points (real)
                    [in]drdistance from pole point (real)
                    [out]areaarea weights in m**2 (real)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 468 of file ip_lambert_conf_grid_mod.F90.

                    + +

                    References an, dxs, dys, and rerth.

                    + +

                    Referenced by gdswzd_lambert_conf().

                    + +
                    +
                    + +

                    ◆ lambert_conf_map_jacob()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_lambert_conf_grid_mod::lambert_conf_map_jacob (real, intent(in) RLAT,
                    real, intent(in) FILL,
                    real, intent(in) DLON,
                    real, intent(in) DR,
                    real, intent(out) XLON,
                    real, intent(out) XLAT,
                    real, intent(out) YLON,
                    real, intent(out) YLAT 
                    )
                    +
                    +private
                    +
                    + +

                    Map jacobians for lambert conformal conical.

                    +

                    This subprogram computes the map jacobians for a lambert conformal conical grid.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 Gayno initial version
                    2015-09-17 Gayno rename as "lambert_conf_map_jacob"
                    2018-07-20 Wesley pass dlon and dr for threading.
                    +
                    Parameters
                    + + + + + + + + + +
                    [in]rlatgrid point latitude in degrees (real)
                    [in]fillfill value for undefined points (real)
                    [in]dlondistance from orientation longitude (real)
                    [in]drdistance from pole point (real)
                    [out]xlondx/dlon in 1/degrees (real)
                    [out]xlatdx/dlat in 1/degrees (real)
                    [out]ylondy/dlon in 1/degrees (real)
                    [out]ylatdy/dlat in 1/degrees (real)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 427 of file ip_lambert_conf_grid_mod.F90.

                    + +

                    References an, dxs, dys, and h.

                    + +

                    Referenced by gdswzd_lambert_conf().

                    + +
                    +
                    + +

                    ◆ lambert_conf_vect_rot()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_lambert_conf_grid_mod::lambert_conf_vect_rot (real, intent(in) DLON,
                    real, intent(out) CROT,
                    real, intent(out) SROT 
                    )
                    +
                    +private
                    +
                    + +

                    Vector rotation fields for lambert conformal conical.

                    +

                    This subprogram computes the vector rotation sines and cosines for a lambert conformal conical grid.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 gayno initial version
                    2015-09-17 gayno rename as "lambert_conf_vect_rot"
                    2018-07-20 wesley pass in dlon for threading.
                    +
                    Parameters
                    + + + + +
                    [in]dlonfrom orientation longitude (real)
                    [out]crotvector rotation cosines (real)
                    [out]srotvector rotation sines (real) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 390 of file ip_lambert_conf_grid_mod.F90.

                    + +

                    References an, and irot.

                    + +

                    Referenced by gdswzd_lambert_conf().

                    + +
                    +
                    +

                    Variable Documentation

                    + +

                    ◆ an

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::an
                    +
                    +private
                    +
                    + +

                    Cone factor.

                    + +

                    Definition at line 45 of file ip_lambert_conf_grid_mod.F90.

                    + +

                    Referenced by gdswzd_lambert_conf(), lambert_conf_grid_area(), lambert_conf_map_jacob(), and lambert_conf_vect_rot().

                    + +
                    +
                    + +

                    ◆ dxs

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::dxs
                    +
                    +private
                    +
                    + +

                    x-direction grid length adjusted for scan mode.

                    +

                    GRIB2, Section 3, octets 56-59.

                    + +

                    Definition at line 46 of file ip_lambert_conf_grid_mod.F90.

                    + +

                    Referenced by gdswzd_lambert_conf(), lambert_conf_grid_area(), and lambert_conf_map_jacob().

                    + +
                    +
                    + +

                    ◆ dys

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::dys
                    +
                    +private
                    +
                    + +

                    y-direction grid length adjusted for scan model.

                    +

                    GRIB2, Section 3, octets 60-63.

                    + +

                    Definition at line 47 of file ip_lambert_conf_grid_mod.F90.

                    + +

                    Referenced by gdswzd_lambert_conf(), lambert_conf_grid_area(), and lambert_conf_map_jacob().

                    + +
                    +
                    + +

                    ◆ h

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::h
                    +
                    +private
                    +
                    + +

                    Hemisphere flag.

                    +

                    1-NH, minus 1-SH.

                    + +

                    Definition at line 48 of file ip_lambert_conf_grid_mod.F90.

                    + +

                    Referenced by gdswzd_lambert_conf(), and lambert_conf_map_jacob().

                    + +
                    +
                    + +

                    ◆ irot

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_lambert_conf_grid_mod::irot
                    +
                    +private
                    +
                    + +

                    vector rotation flag.

                    +

                    When "1", vectors are grid relative. When "0", vectors are earth relative. GRIB2, Section 3, octet 55.

                    + +

                    Definition at line 44 of file ip_lambert_conf_grid_mod.F90.

                    + +

                    Referenced by gdswzd_lambert_conf(), and lambert_conf_vect_rot().

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::rerth
                    +
                    +private
                    +
                    + +

                    Radius of the earth.

                    +

                    GRIB2, Section 3, octets 15-30.

                    + +

                    Definition at line 49 of file ip_lambert_conf_grid_mod.F90.

                    + +

                    Referenced by gdswzd_lambert_conf(), and lambert_conf_grid_area().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__lambert__conf__grid__mod.js b/ver-5.0.0/namespaceip__lambert__conf__grid__mod.js new file mode 100644 index 00000000..b1bbe278 --- /dev/null +++ b/ver-5.0.0/namespaceip__lambert__conf__grid__mod.js @@ -0,0 +1,16 @@ +var namespaceip__lambert__conf__grid__mod = +[ + [ "ip_lambert_conf_grid", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid" ], + [ "gdswzd_lambert_conf", "namespaceip__lambert__conf__grid__mod.html#a5ebb9e4f1bd58caa254771b305c94f71", null ], + [ "init_grib1", "namespaceip__lambert__conf__grid__mod.html#a5544708e893ffcfbe7d958fdec700eea", null ], + [ "init_grib2", "namespaceip__lambert__conf__grid__mod.html#acb0339a9fff4fff6c2017d37f8bed0cf", null ], + [ "lambert_conf_grid_area", "namespaceip__lambert__conf__grid__mod.html#a15c44b47172b926aea840caee9723b1c", null ], + [ "lambert_conf_map_jacob", "namespaceip__lambert__conf__grid__mod.html#a5e1d42f0027236f47467e25c525e66ae", null ], + [ "lambert_conf_vect_rot", "namespaceip__lambert__conf__grid__mod.html#a58187073914efa18eca897c6ec203b71", null ], + [ "an", "namespaceip__lambert__conf__grid__mod.html#a82b75fe2d8495aab75b225c6309e61c8", null ], + [ "dxs", "namespaceip__lambert__conf__grid__mod.html#a196e94b5a2add34133c87f845394fa81", null ], + [ "dys", "namespaceip__lambert__conf__grid__mod.html#aad8b04b77b0920dbf9ed3827e2e8cfd7", null ], + [ "h", "namespaceip__lambert__conf__grid__mod.html#aa91572e8b5ba3559c041f1750b6696c6", null ], + [ "irot", "namespaceip__lambert__conf__grid__mod.html#a7dea876ed4206c5ecc0444aadb7d6acd", null ], + [ "rerth", "namespaceip__lambert__conf__grid__mod.html#a9f0538d092cd7d2829a5b98247eb560d", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__mercator__grid__mod.html b/ver-5.0.0/namespaceip__mercator__grid__mod.html new file mode 100644 index 00000000..cc370ce9 --- /dev/null +++ b/ver-5.0.0/namespaceip__mercator__grid__mod.html @@ -0,0 +1,728 @@ + + + + + + + +NCEPLIBS-ip: ip_mercator_grid_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_mercator_grid_mod Module Reference
                    +
                    +
                    + +

                    GDS wizard for mercator cylindrical. +More...

                    + + + + +

                    +Data Types

                    type  ip_mercator_grid
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine gdswzd_mercator (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     GDS wizard for mercator cylindrical. More...
                     
                    subroutine init_grib1 (self, g1_desc)
                     Initializes a mercator grid given a grib1_descriptor object. More...
                     
                    subroutine init_grib2 (self, g2_desc)
                     Init GRIB2. More...
                     
                    subroutine mercator_grid_area (RLAT, AREA)
                     Grid box area for mercator cylindrical grids. More...
                     
                    subroutine mercator_map_jacob (RLAT, XLON, XLAT, YLON, YLAT)
                     Map jacobians for mercator cylindrical grids. More...
                     
                    subroutine mercator_vect_rot (CROT, SROT)
                     Vector rotation fields for mercator cylindrical grids. More...
                     
                    + + + + + + + + + + +

                    +Variables

                    real dlon
                     Longitudinal direction grid length. More...
                     
                    real dphi
                     Latitudinal direction grid length. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    +

                    Detailed Description

                    +

                    GDS wizard for mercator cylindrical.

                    +

                    Octet numbers refer to GRIB2 - GRID DEFINITION TEMPLATE 3.10 - Mercator.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ gdswzd_mercator()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_mercator_grid_mod::gdswzd_mercator (class(ip_mercator_grid), intent(in) self,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    GDS wizard for mercator cylindrical.

                    +

                    This routine decodes the grib 2 grid definition template (passed in integer form as decoded by the ncep g2 library) and returns one of the following:

                      +
                    • (iopt=+1) earth coordinates of selected grid coordinates
                    • +
                    • (iopt=-1) grid coordinates of selected earth coordinates
                    • +
                    +

                    Works for mercator cylindrical projections.

                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians and the grid box areas may be returned. To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present. to compute the grid box areas, the optional argument 'area' must be present.

                    +

                    +Program History Log

                    + + + + + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 iredell Initial
                    96-10-01 iredell protected against unresolvable points
                    97-10-20 iredell include map options
                    2015-01-21 gayno merger of gdswiz01() and gdswzd01(). Make crot,sort,xlon,xlat,ylon,ylat and area optional arguments. Make part of a module. move vector rotation, map jacobian and grid box area computations to separate subroutines.
                    2015-07-13 gayno convert to grib 2. replace grib 1 kgds array with grib 2 grid definition template array. Rename.
                    2018-07-20 wesley add threads.
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]selfgrid descriptor.
                    [in]ioptoption flag
                      +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    [in]nptsmaximum number of coordinates
                    [in]fillfill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    [in,out]xpts(npts) grid x point coordinates if iopt>0
                    [in,out]ypts(npts) grid y point coordinates if iopt>0
                    [in,out]rlon(npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    [in,out]rlat(npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    [out]nretnumber of valid points computed
                    [out]crotoptional (npts) clockwise vector rotation cosines
                    [out]srotoptional (npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlonoptional (npts) dx/dlon in 1/degrees
                    [out]xlatoptional (npts) dx/dlat in 1/degrees
                    [out]ylonoptional (npts) dy/dlon in 1/degrees
                    [out]ylatoptional (npts) dy/dlat in 1/degrees
                    [out]areaoptional (npts) area weights in m**2 (proportional to the square of the map factor)
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 198 of file ip_mercator_grid_mod.F90.

                    + +

                    References dlon, dphi, mercator_grid_area(), mercator_map_jacob(), mercator_vect_rot(), and rerth.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_mercator_grid_mod::init_grib1 (class(ip_mercator_grid), intent(inout) self,
                    type(grib1_descriptor), intent(in) g1_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a mercator grid given a grib1_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfip_mercator_grid object.
                    [in]g1_descGRIB1 descriptor.
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    +
                    + +

                    Definition at line 52 of file ip_mercator_grid_mod.F90.

                    + +

                    References ip_constants_mod::dpr.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_mercator_grid_mod::init_grib2 (class(ip_mercator_grid), intent(inout) self,
                    type(grib2_descriptor), intent(in) g2_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Init GRIB2.

                    +
                    Parameters
                    + + + +
                    [in,out]selfip_mercator_grid object.
                    [in]g2_descGRIB2 descriptor.
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    +
                    + +

                    Definition at line 100 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ mercator_grid_area()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_mercator_grid_mod::mercator_grid_area (real, intent(in) RLAT,
                    real, intent(out) AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Grid box area for mercator cylindrical grids.

                    +

                    This subprogram computes the grid box area for a mercator cylindrical grid.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 gayno initial version
                    2015-09-17 gayno rename as "mercator_grid_area"
                    +
                    Parameters
                    + + + +
                    [in]rlatlatitude of grid point in degrees (real)
                    [out]areaarea weights in m**2 (real)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 387 of file ip_mercator_grid_mod.F90.

                    + +

                    References dlon, dphi, and rerth.

                    + +

                    Referenced by gdswzd_mercator().

                    + +
                    +
                    + +

                    ◆ mercator_map_jacob()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_mercator_grid_mod::mercator_map_jacob (real, intent(in) RLAT,
                    real, intent(out) XLON,
                    real, intent(out) XLAT,
                    real, intent(out) YLON,
                    real, intent(out) YLAT 
                    )
                    +
                    +private
                    +
                    + +

                    Map jacobians for mercator cylindrical grids.

                    +

                    This subprogram computes the map jacobians for a mercator cylindrical grid.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 gayno initial version
                    2015-09-17 gayno rename as "mercator_map_jacob"
                    +
                    Parameters
                    + + + + + + +
                    [in]rlatlatitude in degrees (real)
                    [out]xlondx/dlon in 1/degrees (real)
                    [out]xlatdx/dlat in 1/degrees (real)
                    [out]ylondy/dlon in 1/degrees (real)
                    [out]ylatdy/dlat in 1/degrees (real)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 359 of file ip_mercator_grid_mod.F90.

                    + +

                    References dlon, and dphi.

                    + +

                    Referenced by gdswzd_mercator().

                    + +
                    +
                    + +

                    ◆ mercator_vect_rot()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_mercator_grid_mod::mercator_vect_rot (real, intent(out) CROT,
                    real, intent(out) SROT 
                    )
                    +
                    +private
                    +
                    + +

                    Vector rotation fields for mercator cylindrical grids.

                    +

                    This subprogram computes the vector rotation sines and cosines for a mercator cylindrical grid.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 gayno initial version
                    2015-09-17 gayno rename as "mercator_vect_rot".
                    +
                    Parameters
                    + + + +
                    [in]crotclockwise vector rotation cosines (real)
                    [in]srotclockwise vector rotation sines (real) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 331 of file ip_mercator_grid_mod.F90.

                    + +

                    Referenced by gdswzd_mercator().

                    + +
                    +
                    +

                    Variable Documentation

                    + +

                    ◆ dlon

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_mercator_grid_mod::dlon
                    +
                    +private
                    +
                    + +

                    Longitudinal direction grid length.

                    + +

                    Definition at line 40 of file ip_mercator_grid_mod.F90.

                    + +

                    Referenced by gdswzd_mercator(), mercator_grid_area(), and mercator_map_jacob().

                    + +
                    +
                    + +

                    ◆ dphi

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_mercator_grid_mod::dphi
                    +
                    +private
                    +
                    + +

                    Latitudinal direction grid length.

                    + +

                    Definition at line 41 of file ip_mercator_grid_mod.F90.

                    + +

                    Referenced by gdswzd_mercator(), mercator_grid_area(), and mercator_map_jacob().

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_mercator_grid_mod::rerth
                    +
                    +private
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 42 of file ip_mercator_grid_mod.F90.

                    + +

                    Referenced by gdswzd_mercator(), and mercator_grid_area().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__mercator__grid__mod.js b/ver-5.0.0/namespaceip__mercator__grid__mod.js new file mode 100644 index 00000000..c9942f70 --- /dev/null +++ b/ver-5.0.0/namespaceip__mercator__grid__mod.js @@ -0,0 +1,13 @@ +var namespaceip__mercator__grid__mod = +[ + [ "ip_mercator_grid", "structip__mercator__grid__mod_1_1ip__mercator__grid.html", "structip__mercator__grid__mod_1_1ip__mercator__grid" ], + [ "gdswzd_mercator", "namespaceip__mercator__grid__mod.html#acc39017fa51125972ab8e755e16d339e", null ], + [ "init_grib1", "namespaceip__mercator__grid__mod.html#a4125dba8b09e9b69933e224b00f4758d", null ], + [ "init_grib2", "namespaceip__mercator__grid__mod.html#aad3b6fef6ee74b8df984c0159ff29c82", null ], + [ "mercator_grid_area", "namespaceip__mercator__grid__mod.html#a952ab9add18587c4dbe54699feb8eafd", null ], + [ "mercator_map_jacob", "namespaceip__mercator__grid__mod.html#ab93a0a6ae8c5f5056abece1dcffdc57a", null ], + [ "mercator_vect_rot", "namespaceip__mercator__grid__mod.html#aea5e18faf7a18bf8d06c87ccb11f3e17", null ], + [ "dlon", "namespaceip__mercator__grid__mod.html#a14e1cb3f8c05d2de49d2aa8dc69d104f", null ], + [ "dphi", "namespaceip__mercator__grid__mod.html#a156e638e2d1b93e388d674462ac3f732", null ], + [ "rerth", "namespaceip__mercator__grid__mod.html#adaa27c5d41ee24185b6d020420ce9419", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__mod.html b/ver-5.0.0/namespaceip__mod.html new file mode 100644 index 00000000..3cb942a8 --- /dev/null +++ b/ver-5.0.0/namespaceip__mod.html @@ -0,0 +1,104 @@ + + + + + + + +NCEPLIBS-ip: ip_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ip_mod Module Reference
                    +
                    +
                    + +

                    Top-level module for the ip library which re-exports public routines such as ipolates, ipolatev, and gdswzd. +More...

                    +

                    Detailed Description

                    +

                    Top-level module for the ip library which re-exports public routines such as ipolates, ipolatev, and gdswzd.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__polar__stereo__grid__mod.html b/ver-5.0.0/namespaceip__polar__stereo__grid__mod.html new file mode 100644 index 00000000..a5fcef8b --- /dev/null +++ b/ver-5.0.0/namespaceip__polar__stereo__grid__mod.html @@ -0,0 +1,918 @@ + + + + + + + +NCEPLIBS-ip: ip_polar_stereo_grid_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_polar_stereo_grid_mod Module Reference
                    +
                    +
                    + +

                    GDS wizard for polar stereographic azimuthal. +More...

                    + + + + +

                    +Data Types

                    type  ip_polar_stereo_grid
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine gdswzd_polar_stereo (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     GDS wizard for polar stereographic azimuthal. More...
                     
                    subroutine init_grib1 (self, g1_desc)
                     Initializes a polar stereographic grid given a grib1_descriptor object. More...
                     
                    subroutine init_grib2 (self, g2_desc)
                     Initializes a polar stereographic grid given a grib2_descriptor object. More...
                     
                    subroutine polar_stereo_grid_area (RLAT, DR2, AREA)
                     Grid box area for polar stereographic grids. More...
                     
                    subroutine polar_stereo_map_jacob (RLON, RLAT, DR2, XLON, XLAT, YLON, YLAT)
                     Map jacobians for polar stereographic grids. More...
                     
                    subroutine polar_stereo_vect_rot (RLON, CROT, SROT)
                     Vector rotation fields for polar stereographic grids. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real de2
                     Square of DE. More...
                     
                    real dxs
                     Local copy of dxs. More...
                     
                    real dys
                     Local copy of dys. More...
                     
                    real e2
                     Eccentricity squared. More...
                     
                    real h
                     Local copy of h. More...
                     
                    integer irot
                     Local copy of irot. More...
                     
                    real orient
                     Local copy of orient. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    +

                    Detailed Description

                    +

                    GDS wizard for polar stereographic azimuthal.

                    +

                    Octet numbers refer to [GRIB2 - GRID DEFINITION TEMPLATE 3.20 Polar stereographic projection](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp3-20.shtml).

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ gdswzd_polar_stereo()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_polar_stereo_grid_mod::gdswzd_polar_stereo (class(ip_polar_stereo_grid), intent(in) self,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    GDS wizard for polar stereographic azimuthal.

                    +

                    This subprogram decodes the grib 2 grid definition template (passed in integer form as decoded by the ncep g2 library) and returns one of the following:

                      +
                    • (iopt=+1) earth coordinates of selected grid coordinates
                    • +
                    • (iopt=-1) grid coordinates of selected earth coordinates
                    • +
                    +

                    Works for polar stereographic azimuthal projections.

                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, map jacobians, and grid box areas may be returned as well. Routine works for both spherical and elliptical earths with the exception of the map jacobians and grid box areas, which are only computed for spherical earths.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present. to compute the grid box areas, the optional argument 'area' must be present.

                    +

                    +Program History Log

                    + + + + + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 iredell Initial
                    97-10-20 iredell include map options
                    09-05-13 gayno ensure area always positive
                    2015-01-21 gayno merger of gdswiz05 and gdswzd05. make crot,sort,xlon,xlat,ylon,ylat and area optional arguments. make part of a module. move vector rotation, map jacobian and grid box area computations to separate subroutines. include option for elliptical earths.
                    2015-07-13 gayno convert to grib 2. replace grib 1 kgds array with grib 2 grid definition template array. rename routine.
                    2018-07-20 wesley add threading.
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]selfgrid
                    [in]ioptoption flag
                      +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    [in]nptsmaximum number of coordinates
                    [in]fillfill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    [in,out]xpts(npts) grid x point coordinates if iopt>0
                    [in,out]ypts(npts) grid y point coordinates if iopt>0
                    [in,out]rlon(npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    [in,out]rlat(npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    [out]nretnumber of valid points computed
                    [out]crotoptional (npts) clockwise vector rotation cosines
                    [out]srotoptional (npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlonoptional (npts) dx/dlon in 1/degrees
                    [out]xlatoptional (npts) dx/dlat in 1/degrees
                    [out]ylonoptional (npts) dy/dlon in 1/degrees
                    [out]ylatoptional (npts) dy/dlat in 1/degrees
                    [out]areaoptional (npts) area weights in m**2 (proportional to the square of the map factor)
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 239 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    References de2, dxs, dys, e2, h, irot, orient, polar_stereo_grid_area(), polar_stereo_map_jacob(), polar_stereo_vect_rot(), and rerth.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_polar_stereo_grid_mod::init_grib1 (class(ip_polar_stereo_grid), intent(inout) self,
                    type(grib1_descriptor), intent(in) g1_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a polar stereographic grid given a grib1_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g1_descA grib1_descriptor
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    +
                    + +

                    Definition at line 63 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    References ip_constants_mod::dpr, ip_constants_mod::e2_wgs84, and ip_constants_mod::rerth_wgs84.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_polar_stereo_grid_mod::init_grib2 (class(ip_polar_stereo_grid), intent(inout) self,
                    type(grib2_descriptor), intent(in) g2_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a polar stereographic grid given a grib2_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g2_descA grib2_descriptor
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    +
                    + +

                    Definition at line 128 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ polar_stereo_grid_area()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_polar_stereo_grid_mod::polar_stereo_grid_area (real, intent(in) RLAT,
                    real, intent(in) DR2,
                    real, intent(out) AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Grid box area for polar stereographic grids.

                    +

                    This subprogram computes the grid box area for a polar stereographic azimuthal grid (spherical earth).

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 gayno initial version
                    2015-09-17 gayno rename as "polar_stereo_grid_area".
                    2018-07-20 wesley pass in dr2 for threading.
                    +
                    Parameters
                    + + + + +
                    [in]rlatlatitude of grid point in degrees (real)
                    [in]dr2squared distance from pole (real)
                    [out]areaarea weights in m**2 (real)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 563 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    References de2, dxs, dys, and rerth.

                    + +

                    Referenced by gdswzd_polar_stereo().

                    + +
                    +
                    + +

                    ◆ polar_stereo_map_jacob()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_polar_stereo_grid_mod::polar_stereo_map_jacob (real, intent(in) RLON,
                    real, intent(in) RLAT,
                    real, intent(in) DR2,
                    real, intent(out) XLON,
                    real, intent(out) XLAT,
                    real, intent(out) YLON,
                    real, intent(out) YLAT 
                    )
                    +
                    +private
                    +
                    + +

                    Map jacobians for polar stereographic grids.

                    +

                    This subprogram computes the map jacobians for a polar stereographic azimuthal grid (spherical earth).

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 gayno initial version
                    2015-09-17 gayno rename as "polar_stereo_map_jacob"
                    2018-07-20 wesley pass in dr2 for threading.
                    +
                    Parameters
                    + + + + + + + + +
                    [in]rlonlongitude in degrees (real)
                    [in]rlatlatitude in degrees (real)
                    [in]dr2squared distance from pole (real)
                    [out]xlondx/dlon in 1/degrees (real)
                    [out]xlatdx/dlat in 1/degrees (real)
                    [out]ylondy/dlon in 1/degrees (real)
                    [out]ylatdy/dlat in 1/degrees (real)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 520 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    References de2, dxs, dys, h, and orient.

                    + +

                    Referenced by gdswzd_polar_stereo().

                    + +
                    +
                    + +

                    ◆ polar_stereo_vect_rot()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_polar_stereo_grid_mod::polar_stereo_vect_rot (real, intent(in) RLON,
                    real, intent(out) CROT,
                    real, intent(out) SROT 
                    )
                    +
                    +private
                    +
                    + +

                    Vector rotation fields for polar stereographic grids.

                    +

                    This subprogram computes the vector rotation sines and cosines for a polar stereographic azimuthal grid.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 gayno initial version
                    2015-09-17 gayno rename as "polar_stereo_vect_rot"
                    +
                    Parameters
                    + + + + +
                    [in]rlongrid point longitude in degrees (real)
                    [in]crotclockwise vector rotation cosines (real)
                    [in]srotclockwise vector rotation sines (real) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 482 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    References h, irot, and orient.

                    + +

                    Referenced by gdswzd_polar_stereo().

                    + +
                    +
                    +

                    Variable Documentation

                    + +

                    ◆ de2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::de2
                    +
                    +private
                    +
                    + +

                    Square of DE.

                    + +

                    Definition at line 45 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    Referenced by gdswzd_polar_stereo(), polar_stereo_grid_area(), and polar_stereo_map_jacob().

                    + +
                    +
                    + +

                    ◆ dxs

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::dxs
                    +
                    +private
                    +
                    + +

                    Local copy of dxs.

                    + +

                    Definition at line 46 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    Referenced by gdswzd_polar_stereo(), polar_stereo_grid_area(), and polar_stereo_map_jacob().

                    + +
                    +
                    + +

                    ◆ dys

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::dys
                    +
                    +private
                    +
                    + +

                    Local copy of dys.

                    + +

                    Definition at line 47 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    Referenced by gdswzd_polar_stereo(), polar_stereo_grid_area(), and polar_stereo_map_jacob().

                    + +
                    +
                    + +

                    ◆ e2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::e2
                    +
                    +private
                    +
                    + +

                    Eccentricity squared.

                    + +

                    Definition at line 48 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    Referenced by gdswzd_polar_stereo().

                    + +
                    +
                    + +

                    ◆ h

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::h
                    +
                    +private
                    +
                    + +

                    Local copy of h.

                    + +

                    Definition at line 50 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    Referenced by gdswzd_polar_stereo(), polar_stereo_map_jacob(), and polar_stereo_vect_rot().

                    + +
                    +
                    + +

                    ◆ irot

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_polar_stereo_grid_mod::irot
                    +
                    +private
                    +
                    + +

                    Local copy of irot.

                    + +

                    Definition at line 44 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    Referenced by gdswzd_polar_stereo(), and polar_stereo_vect_rot().

                    + +
                    +
                    + +

                    ◆ orient

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::orient
                    +
                    +private
                    +
                    + +

                    Local copy of orient.

                    + +

                    Definition at line 51 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    Referenced by gdswzd_polar_stereo(), polar_stereo_map_jacob(), and polar_stereo_vect_rot().

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::rerth
                    +
                    +private
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 49 of file ip_polar_stereo_grid_mod.F90.

                    + +

                    Referenced by gdswzd_polar_stereo(), and polar_stereo_grid_area().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__polar__stereo__grid__mod.js b/ver-5.0.0/namespaceip__polar__stereo__grid__mod.js new file mode 100644 index 00000000..bef9f38c --- /dev/null +++ b/ver-5.0.0/namespaceip__polar__stereo__grid__mod.js @@ -0,0 +1,18 @@ +var namespaceip__polar__stereo__grid__mod = +[ + [ "ip_polar_stereo_grid", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid" ], + [ "gdswzd_polar_stereo", "namespaceip__polar__stereo__grid__mod.html#ae2694d90ab514a131e083dfba3b173c5", null ], + [ "init_grib1", "namespaceip__polar__stereo__grid__mod.html#a6ed76f58f30993cd7be84b7e03cf4d6f", null ], + [ "init_grib2", "namespaceip__polar__stereo__grid__mod.html#a5210b986366b503683ae966519d501e7", null ], + [ "polar_stereo_grid_area", "namespaceip__polar__stereo__grid__mod.html#a2a2e0854e5c129e320924a811cbd08e2", null ], + [ "polar_stereo_map_jacob", "namespaceip__polar__stereo__grid__mod.html#a386933f7e52c348b9d742df423e0e223", null ], + [ "polar_stereo_vect_rot", "namespaceip__polar__stereo__grid__mod.html#abe4d416201e986421a8e325a9b00e462", null ], + [ "de2", "namespaceip__polar__stereo__grid__mod.html#a605d287e34e60f553521a5de2da22962", null ], + [ "dxs", "namespaceip__polar__stereo__grid__mod.html#acf60181f89954e2ff31b08bb1b345354", null ], + [ "dys", "namespaceip__polar__stereo__grid__mod.html#aea7950530d06d9c59ff61bf706df0a0f", null ], + [ "e2", "namespaceip__polar__stereo__grid__mod.html#abf3a34d9bb00c39dac5225798aea4d5b", null ], + [ "h", "namespaceip__polar__stereo__grid__mod.html#a5a63da5168a1432a1af42c0b668f0645", null ], + [ "irot", "namespaceip__polar__stereo__grid__mod.html#a1269037aaecd12e75e17d8aac8e20c8c", null ], + [ "orient", "namespaceip__polar__stereo__grid__mod.html#aa4a88f48d7b78cfdfc54754882195d18", null ], + [ "rerth", "namespaceip__polar__stereo__grid__mod.html#a3315b2efb5cb9aebc0b2cb2773aa20b5", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__rot__equid__cylind__egrid__mod.html b/ver-5.0.0/namespaceip__rot__equid__cylind__egrid__mod.html new file mode 100644 index 00000000..d915781d --- /dev/null +++ b/ver-5.0.0/namespaceip__rot__equid__cylind__egrid__mod.html @@ -0,0 +1,1105 @@ + + + + + + + +NCEPLIBS-ip: ip_rot_equid_cylind_egrid_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_rot_equid_cylind_egrid_mod Module Reference
                    +
                    +
                    + +

                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E. +More...

                    + + + + +

                    +Data Types

                    type  ip_rot_equid_cylind_egrid
                     
                    + + + + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine gdswzd_rot_equid_cylind_egrid (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for rotated equidistant cylindrical grids. More...
                     
                    subroutine init_grib1 (self, g1_desc)
                     Initializes a rotated equidistant cylindrical grid given a grib1_descriptor object. More...
                     
                    subroutine init_grib2 (self, g2_desc)
                     Initializes a rotated equidistant cylindrical grid given a grib2_descriptor object. More...
                     
                    subroutine rot_equid_cylind_egrid_error (IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS)
                     Error handler. More...
                     
                    subroutine rot_equid_cylind_egrid_grid_area (FILL, AREA)
                     Computes the grid box area for a rotated equidistant cylindrical grid. More...
                     
                    subroutine rot_equid_cylind_egrid_map_jacob (FILL, RLON, XLON, XLAT, YLON, YLAT)
                     Computes the map jacobians for a rotated equidistant cylindrical grid. More...
                     
                    subroutine rot_equid_cylind_egrid_vect_rot (RLON, CROT, SROT)
                     Computes the vector rotation sines and cosines for a rotated equidistant cylindrical grid. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real(kind=kdclat
                     Cosine of the latitude. More...
                     
                    real(kind=kdclat0
                     Local copy of clat0. More...
                     
                    real(kind=kdclatr
                     Cosine of the rotated latitude. More...
                     
                    real(kind=kdclon
                     Cosine of the difference between rlon and rlon0. More...
                     
                    real(kind=kddlats
                     Local copy of dlats. More...
                     
                    real(kind=kddlons
                     Local copy of dlons. More...
                     
                    integer irot
                     Local copy of irot. More...
                     
                    integer, parameter kd = real64
                     Kind of reals. More...
                     
                    real(kind=kdrerth
                     Radius of the Earth. More...
                     
                    real(kind=kdrlon0
                     Local copy of rlon0. More...
                     
                    real(kind=kdslat
                     Sine of the latitude. More...
                     
                    real(kind=kdslat0
                     Local copy of slat0. More...
                     
                    real(kind=kdslatr
                     Sine of the rotated latitude. More...
                     
                    +

                    Detailed Description

                    +

                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E.

                    +

                    (To handle the A through D grids, see ip_rot_equid_cylind_grid_mod).

                    +

                    The E stagger is a bit odd because the 'wind' points shift by half a grid box in each row. That makes the logic tricky. So the routine does its computations by rotating the grid by 45 degrees.

                    +

                    See more info about Awakawa grids.

                    +

                    Octet numbers refer to GRIB2 - GRID DEFINITION TEMPLATE 3.1 Rotate Latitude/Longitude.

                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser
                    +
                    Date
                    July 2021
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ gdswzd_rot_equid_cylind_egrid()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_egrid_mod::gdswzd_rot_equid_cylind_egrid (class(ip_rot_equid_cylind_egrid), intent(in) self,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for rotated equidistant cylindrical grids.

                    +

                    Works for e-staggered rotated equidistant cylindrical projections. The scan mode determines whether this is an "h" or "v" grid.

                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values.

                    +

                    The actual number of valid points computed is returned too. Optionally, the vector rotations, the map jacobians and the grid box areas may be returned as well.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present.

                    +

                    To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present.

                    +

                    To compute the grid box areas, the optional argument 'area' must be present.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]selfThe grid object gdswzd was called on.
                    [in]ioptoption flag
                      +
                    • +1 to compute earth coords of selected grid coords.
                    • +
                    • -1 o compute grid coords of selected earth coords.
                    • +
                    +
                    [in]nptsMaximum number of coordinates.
                    [in]fillFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]xptsGrid x point coordinates if iopt>0.
                    [in,out]yptsGrid y point coordinates if iopt>0.
                    [in,out]rlonEarth longitudes in degrees e if iopt<0 (Acceptable range: -360. to 360.)
                    [in,out]rlatEarth latitudes in degrees n if iopt<0 (Acceptable range: -90. to 90.)
                    [out]nretNumber of valid points computed.
                    [out]crotOptional clockwise vector rotation cosines.
                    [out]srotOptional clockwise vector rotation sines.
                    [out]xlonOptional dx/dlon in 1/degrees.
                    [out]xlatOptional dx/dlat in 1/degrees.
                    [out]ylonOptional dy/dlon in 1/degrees.
                    [out]ylatOptional dy/dlat in 1/degrees.
                    [out]areaOptional area weights in m**2.
                    +
                    +
                    +
                    Author
                    Mark Iredell, George Gayno, Kyle Gerheiser
                    +
                    Date
                    Jan 2015
                    + +

                    Definition at line 267 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    References clat, clat0, clatr, clon, dlats, dlons, irot, rerth, rlon0, rot_equid_cylind_egrid_error(), rot_equid_cylind_egrid_grid_area(), rot_equid_cylind_egrid_map_jacob(), rot_equid_cylind_egrid_vect_rot(), slat, slat0, and slatr.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_egrid_mod::init_grib1 (class(ip_rot_equid_cylind_egrid), intent(inout) self,
                    type(grib1_descriptor), intent(in) g1_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a rotated equidistant cylindrical grid given a grib1_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g1_descA grib1_descriptor
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 86 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    References ip_constants_mod::dpr.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_egrid_mod::init_grib2 (class(ip_rot_equid_cylind_egrid), intent(inout) self,
                    type(grib2_descriptor), intent(in) g2_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a rotated equidistant cylindrical grid given a grib2_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g2_descA grib2_descriptor
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 163 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_egrid_error()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_egrid_mod::rot_equid_cylind_egrid_error (integer, intent(in) IOPT,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(out) RLAT,
                    real, dimension(npts), intent(out) RLON,
                    real, dimension(npts), intent(out) XPTS,
                    real, dimension(npts), intent(out) YPTS,
                    integer, intent(in) NPTS 
                    )
                    +
                    +private
                    +
                    + +

                    Error handler.

                    +

                    UPON AN ERROR, THIS SUBPROGRAM ASSIGNS A "FILL" VALUE TO THE OUTPUT FIELDS.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    2015-07-13 GAYNO Initial version
                    2015-09-17 GAYNO Rename as "rot_equid_cylind_egrid_error"
                    +
                    Parameters
                    + + + + + + + + +
                    [in]ioptoption flag
                      +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    [in]fillfill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    [out]rlat(npts) earth latitudes in degrees n if iopt<0
                    [out]rlon(npts) earth longitudes in degrees e if iopt<0
                    [out]xpts(npts) grid x point coordinates if iopt>0
                    [out]ypts(npts) grid y point coordinates if iopt>0
                    [in]nptsmaximum number of coordinates
                    +
                    +
                    +
                    Author
                    GAYNO
                    +
                    Date
                    2015-07-13
                    + +

                    Definition at line 482 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind_egrid().

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_egrid_grid_area()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_egrid_mod::rot_equid_cylind_egrid_grid_area (real, intent(in) FILL,
                    real, intent(out) AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Computes the grid box area for a rotated equidistant cylindrical grid.

                    +
                    Parameters
                    + + + +
                    [in]fillFill value for undefined points.
                    [out]areaArea weights in m^2.
                    +
                    +
                    +
                    Author
                    George Gayno
                    +
                    Date
                    Jan 2015
                    + +

                    Definition at line 587 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    References clatr, dlats, dlons, and rerth.

                    + +

                    Referenced by gdswzd_rot_equid_cylind_egrid().

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_egrid_map_jacob()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_egrid_mod::rot_equid_cylind_egrid_map_jacob (real, intent(in) FILL,
                    real, intent(in) RLON,
                    real, intent(out) XLON,
                    real, intent(out) XLAT,
                    real, intent(out) YLON,
                    real, intent(out) YLAT 
                    )
                    +
                    +private
                    +
                    + +

                    Computes the map jacobians for a rotated equidistant cylindrical grid.

                    +
                    Parameters
                    + + + + + + + +
                    [in]fillFill value for undefined points.
                    [in]rlonLongitude in degrees.
                    [out]xlondx/dlon in 1/degrees.
                    [out]xlatdx/dlat in 1/degrees.
                    [out]ylondy/dlon in 1/degrees.
                    [out]ylatdy/dlat in 1/degrees.
                    +
                    +
                    +
                    Author
                    George Gayno
                    +
                    Date
                    Jan 2015
                    + +

                    Definition at line 549 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    References clat, clat0, clatr, clon, dlats, dlons, rlon0, slat, and slat0.

                    + +

                    Referenced by gdswzd_rot_equid_cylind_egrid().

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_egrid_vect_rot()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_egrid_mod::rot_equid_cylind_egrid_vect_rot (real, intent(in) RLON,
                    real, intent(out) CROT,
                    real, intent(out) SROT 
                    )
                    +
                    +private
                    +
                    + +

                    Computes the vector rotation sines and cosines for a rotated equidistant cylindrical grid.

                    +
                    Parameters
                    + + + + +
                    [in]rlonLongitude in degrees.
                    [out]crotClockwise vector rotation cosines.
                    [out]srotClockwise vector rotation sines.
                    +
                    +
                    +
                    Note
                    ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    +
                    Author
                    George Gayno
                    +
                    Date
                    Jan 2015
                    + +

                    Definition at line 514 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    References clat, clat0, clatr, clon, irot, rlon0, slat, slat0, and slatr.

                    + +

                    Referenced by gdswzd_rot_equid_cylind_egrid().

                    + +
                    +
                    +

                    Variable Documentation

                    + +

                    ◆ clat

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::clat
                    +
                    +private
                    +
                    + +

                    Cosine of the latitude.

                    + +

                    Definition at line 64 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind_egrid(), rot_equid_cylind_egrid_map_jacob(), and rot_equid_cylind_egrid_vect_rot().

                    + +
                    +
                    + +

                    ◆ clat0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::clat0
                    +
                    +private
                    +
                    +
                    + +

                    ◆ clatr

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::clatr
                    +
                    +private
                    +
                    +
                    + +

                    ◆ clon

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::clon
                    +
                    +private
                    +
                    + +

                    Cosine of the difference between rlon and rlon0.

                    + +

                    Definition at line 67 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind_egrid(), rot_equid_cylind_egrid_map_jacob(), and rot_equid_cylind_egrid_vect_rot().

                    + +
                    +
                    + +

                    ◆ dlats

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::dlats
                    +
                    +private
                    +
                    +
                    + +

                    ◆ dlons

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::dlons
                    +
                    +private
                    +
                    +
                    + +

                    ◆ irot

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_rot_equid_cylind_egrid_mod::irot
                    +
                    +private
                    +
                    + +

                    Local copy of irot.

                    + +

                    Definition at line 62 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind_egrid(), and rot_equid_cylind_egrid_vect_rot().

                    + +
                    +
                    + +

                    ◆ kd

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer, parameter ip_rot_equid_cylind_egrid_mod::kd = real64
                    +
                    +private
                    +
                    + +

                    Kind of reals.

                    + +

                    Definition at line 35 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::rerth
                    +
                    +private
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 70 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind_egrid(), and rot_equid_cylind_egrid_grid_area().

                    + +
                    +
                    + +

                    ◆ rlon0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::rlon0
                    +
                    +private
                    +
                    +
                    + +

                    ◆ slat

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::slat
                    +
                    +private
                    +
                    + +

                    Sine of the latitude.

                    + +

                    Definition at line 72 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind_egrid(), rot_equid_cylind_egrid_map_jacob(), and rot_equid_cylind_egrid_vect_rot().

                    + +
                    +
                    + +

                    ◆ slat0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::slat0
                    +
                    +private
                    +
                    +
                    + +

                    ◆ slatr

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_egrid_mod::slatr
                    +
                    +private
                    +
                    + +

                    Sine of the rotated latitude.

                    + +

                    Definition at line 74 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind_egrid(), and rot_equid_cylind_egrid_vect_rot().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__rot__equid__cylind__egrid__mod.js b/ver-5.0.0/namespaceip__rot__equid__cylind__egrid__mod.js new file mode 100644 index 00000000..36361095 --- /dev/null +++ b/ver-5.0.0/namespaceip__rot__equid__cylind__egrid__mod.js @@ -0,0 +1,24 @@ +var namespaceip__rot__equid__cylind__egrid__mod = +[ + [ "ip_rot_equid_cylind_egrid", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid" ], + [ "gdswzd_rot_equid_cylind_egrid", "namespaceip__rot__equid__cylind__egrid__mod.html#a9ad11a599fc0bdc4a9ece86a3b1cc399", null ], + [ "init_grib1", "namespaceip__rot__equid__cylind__egrid__mod.html#aa65616b97df9c89893161ff802e16eab", null ], + [ "init_grib2", "namespaceip__rot__equid__cylind__egrid__mod.html#af3cbc17f27800bc67135feacb2c1c3e0", null ], + [ "rot_equid_cylind_egrid_error", "namespaceip__rot__equid__cylind__egrid__mod.html#a69d4e473a1a276b855d37518dc6f1d48", null ], + [ "rot_equid_cylind_egrid_grid_area", "namespaceip__rot__equid__cylind__egrid__mod.html#a4e6c3a758f9a6474d3e499fabeac0640", null ], + [ "rot_equid_cylind_egrid_map_jacob", "namespaceip__rot__equid__cylind__egrid__mod.html#a45b87f77888d428ca0f551edae8da94e", null ], + [ "rot_equid_cylind_egrid_vect_rot", "namespaceip__rot__equid__cylind__egrid__mod.html#a9ac1f76f515981c464e8391d8c941888", null ], + [ "clat", "namespaceip__rot__equid__cylind__egrid__mod.html#aac1018f3ca1b7ad4b5d33f245678d416", null ], + [ "clat0", "namespaceip__rot__equid__cylind__egrid__mod.html#a83649d02b55d6252d59514aec4eb3142", null ], + [ "clatr", "namespaceip__rot__equid__cylind__egrid__mod.html#aad4e673a94976b2b5a9bfad9de9e6e30", null ], + [ "clon", "namespaceip__rot__equid__cylind__egrid__mod.html#a557d49c609fc8c5c564a3a5f10174eec", null ], + [ "dlats", "namespaceip__rot__equid__cylind__egrid__mod.html#a0b2faca2325b413e1f3207778d4c4c68", null ], + [ "dlons", "namespaceip__rot__equid__cylind__egrid__mod.html#af04f8a1044f4d9a7e0d13d38887adcbc", null ], + [ "irot", "namespaceip__rot__equid__cylind__egrid__mod.html#a93ed996cf2dc9569e356256ec946b571", null ], + [ "kd", "namespaceip__rot__equid__cylind__egrid__mod.html#a50497d277c347a2991b0e34e85f1787e", null ], + [ "rerth", "namespaceip__rot__equid__cylind__egrid__mod.html#aed7a425f4d300fe14ac1b48d76378edb", null ], + [ "rlon0", "namespaceip__rot__equid__cylind__egrid__mod.html#a134acf8ab7f40ff49ce8e03daad900e6", null ], + [ "slat", "namespaceip__rot__equid__cylind__egrid__mod.html#ae1f8503816477fb685fbadc7a9e50f0b", null ], + [ "slat0", "namespaceip__rot__equid__cylind__egrid__mod.html#a72199c827ab3218b7f2aba35ad30b94d", null ], + [ "slatr", "namespaceip__rot__equid__cylind__egrid__mod.html#a4ccccb64d3e7236d8cac19c279aab900", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__rot__equid__cylind__grid__mod.html b/ver-5.0.0/namespaceip__rot__equid__cylind__grid__mod.html new file mode 100644 index 00000000..051956df --- /dev/null +++ b/ver-5.0.0/namespaceip__rot__equid__cylind__grid__mod.html @@ -0,0 +1,1063 @@ + + + + + + + +NCEPLIBS-ip: ip_rot_equid_cylind_grid_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_rot_equid_cylind_grid_mod Module Reference
                    +
                    +
                    + +

                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D. +More...

                    + + + + +

                    +Data Types

                    type  ip_rot_equid_cylind_grid
                     
                    + + + + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine gdswzd_rot_equid_cylind (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     GDS wizard for rotated equidistant cylindrical. More...
                     
                    subroutine init_grib1 (self, g1_desc)
                     Initializes a Rotated equidistant cylindrical grid given a grib1_descriptor object. More...
                     
                    subroutine init_grib2 (self, g2_desc)
                     Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object. More...
                     
                    subroutine rot_equid_cylind_error (IOPT, FILL, RLAT, RLON, XPTS, YPTS, NPTS)
                     Error handler. More...
                     
                    subroutine rot_equid_cylind_grid_area (CLATR, FILL, AREA)
                     Grid box area for rotated equidistant cylindrical grids - non "e" stagger. More...
                     
                    subroutine rot_equid_cylind_map_jacob (FILL, RLON, CLATR, CLAT, SLAT, CLON, XLON, XLAT, YLON, YLAT)
                     Map jacobians for rotated equidistant cylindrical grids - non "e" stagger. More...
                     
                    subroutine rot_equid_cylind_vect_rot (RLON, CLATR, SLATR, CLAT, SLAT, CLON, CROT, SROT)
                     Vector rotation fields for rotated equidistant cylindrical grids - non "e" stagger. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Variables

                    real(kind=kdclat0
                     Local copy of clat0. More...
                     
                    real(kind=kddlats
                     Local copy of dlats. More...
                     
                    real(kind=kddlons
                     Local copy of dlons. More...
                     
                    integer irot
                     Local copy of irot. More...
                     
                    integer, parameter kd = real64
                     Fortran kind for reals. More...
                     
                    real(kind=kdrerth
                     Radius of the Earth. More...
                     
                    real(kind=kdrlon0
                     Local copy of rlon0. More...
                     
                    real(kind=kdslat0
                     Local copy of slat0. More...
                     
                    +

                    Detailed Description

                    +

                    Rotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D.

                    +

                    (To handle the E grid, see ip_rot_equid_cylind_egrid_mod).

                    +

                    See more info about Awakawa grids.

                    +

                    Octet numbers refer to GRIB2 - GRID DEFINITION TEMPLATE 3.1 Rotate Latitude/Longitude.

                    +
                    Author
                    Gayno
                    +
                    Date
                    2007-NOV-15
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ gdswzd_rot_equid_cylind()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_grid_mod::gdswzd_rot_equid_cylind (class(ip_rot_equid_cylind_grid), intent(in) self,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    GDS wizard for rotated equidistant cylindrical.

                    +

                    This subprogram decodes the grib 2 grid definition template (passed in integer form as decoded by the ncep g2 library) and returns one of the following:

                      +
                    • (iopt=+1) earth coordinates of selected grid coordinates
                    • +
                    • (iopt=-1) grid coordinates of selected earth coordinates
                    • +
                    +

                    Works for non-"e" staggered rotated equidistant cylindrical projections. the scan mode (section 3, octet 72, bits 5-6) determine whether this is an "h" or "v" grid.

                    +

                    If the selected coordinates are more than one gridpoint beyond the the edges of the grid domain, then the relevant output elements are set to fill values. The actual number of valid points computed is returned too.

                    +

                    Optionally, the vector rotations, the map jacobians and the grid box areas may be returned as well.

                    +

                    To compute the vector rotations, the optional arguments 'srot' and 'crot' must be present. To compute the map jacobians, the optional arguments 'xlon', 'xlat', 'ylon', 'ylat' must be present. To compute the grid box areas, the optional argument 'area' must be present.

                    +

                    +Program History Log

                    + + + + + + + + + + + +
                    Date Programmer Comments
                    2010-jan-15 gayno based on routines gdswzdcb and gdswzdca
                    2015-jan-21 gayno merger of gdswizcd and gdswzdcd. make crot,sort,xlon,xlat,ylon,ylat and area optional arguments. make part of a module. move vector rotation, map jacobian and grid box area computations to separate subroutines.
                    2015-jul-13 gayno convert to grib 2. replace grib 1 kgds array with grib 2 grid definition template array. rename as "gdswzd_rot_equid_cylind."
                    2018-07-20 wesley add threads.
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]selfModule reference.
                    [in]ioptinteger option flag
                      +
                    • 1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    [in]nptsinteger maximum number of coordinates
                    [in]fillreal fill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    [in,out]xptsreal (npts) grid x point coordinates if iopt>0
                    [in,out]yptsreal (npts) grid y point coordinates if iopt>0
                    [in,out]rlonreal (npts) earth longitudes in degrees e if iopt<0 (acceptable range: -360. to 360.)
                    [in,out]rlatreal (npts) earth latitudes in degrees n if iopt<0 (acceptable range: -90. to 90.)
                    [out]nretinteger number of valid points computed
                    [out]crotreal, optional (npts) clockwise vector rotation cosines
                    [out]srotreal, optional (npts) clockwise vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]xlonreal, optional (npts) dx/dlon in 1/degrees
                    [out]xlatreal, optional (npts) dx/dlat in 1/degrees
                    [out]ylonreal, optional (npts) dy/dlon in 1/degrees
                    [out]ylatreal, optional (npts) dy/dlat in 1/degrees
                    [out]areareal, optional (npts) area weights in m**2
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2007-NOV-15
                    + +

                    Definition at line 256 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    References clat0, dlats, dlons, irot, rerth, rlon0, rot_equid_cylind_error(), rot_equid_cylind_grid_area(), rot_equid_cylind_map_jacob(), rot_equid_cylind_vect_rot(), and slat0.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_grid_mod::init_grib1 (class(ip_rot_equid_cylind_grid), intent(inout) self,
                    type(grib1_descriptor), intent(in) g1_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a Rotated equidistant cylindrical grid given a grib1_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g1_descA grib1_descriptor
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2007-NOV-15
                    + +

                    Definition at line 73 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    References ip_constants_mod::dpr.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_grid_mod::init_grib2 (class(ip_rot_equid_cylind_grid), intent(inout) self,
                    type(grib2_descriptor), intent(in) g2_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes a Rotated equidistant cylindrical grid given a grib2_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g2_descA grib2_descriptor
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2007-NOV-15
                    + +

                    Definition at line 139 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_error()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_grid_mod::rot_equid_cylind_error (integer, intent(in) IOPT,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(out) RLAT,
                    real, dimension(npts), intent(out) RLON,
                    real, dimension(npts), intent(out) XPTS,
                    real, dimension(npts), intent(out) YPTS,
                    integer, intent(in) NPTS 
                    )
                    +
                    +private
                    +
                    + +

                    Error handler.

                    +

                    Upon an error, this subprogram assigns a "fill" value to the output fields.

                    +
                    Parameters
                    + + + + + + + + +
                    [in]ioptinteger option flag
                      +
                    • +1 to compute earth coords of selected grid coords
                    • +
                    • -1 to compute grid coords of selected earth coords
                    • +
                    +
                    [in]fillreal fill value to set invalid output data (must be impossible value; suggested value: -9999.)
                    [out]rlatreal (npts) earth latitudes in degrees n if iopt<0
                    [out]rlonreal (npts) earth longitudes in degrees e if iopt<0
                    [out]xptsreal (npts) grid x point coordinates if iopt>0
                    [out]yptsreal (npts) grid y point coordinates if iopt>0
                    [in]nptsinteger maximum number of coordinates
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-07-13
                    + +

                    Definition at line 462 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind().

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_grid_area()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_grid_mod::rot_equid_cylind_grid_area (real(kind=kd), intent(in) CLATR,
                    real, intent(in) FILL,
                    real, intent(out) AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Grid box area for rotated equidistant cylindrical grids - non "e" stagger.

                    +

                    This subprogram computes the grid box area for a rotated equidistant cylindrical grid - non "e" stagger.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 Gayno initial version
                    2015-07-19 gayno rename as "rot_equid_cylind_grid_area."
                    2018-07-20 wesley pass in clatr for threading
                    +
                    Parameters
                    + + + + +
                    [in]clatrcosine of unrotated latitude (real)
                    [in]fillfill value for undefined points (real)
                    [out]areaarea weights in m**2 (real)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 603 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    References dlats, dlons, and rerth.

                    + +

                    Referenced by gdswzd_rot_equid_cylind().

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_map_jacob()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_grid_mod::rot_equid_cylind_map_jacob (real, intent(in) FILL,
                    real, intent(in) RLON,
                    real(kind=kd), intent(in) CLATR,
                    real(kind=kd), intent(in) CLAT,
                    real(kind=kd), intent(in) SLAT,
                    real(kind=kd), intent(in) CLON,
                    real, intent(out) XLON,
                    real, intent(out) XLAT,
                    real, intent(out) YLON,
                    real, intent(out) YLAT 
                    )
                    +
                    +private
                    +
                    + +

                    Map jacobians for rotated equidistant cylindrical grids - non "e" stagger.

                    +

                    This subprogram computes the map jacobians for a rotated equidistant cylindrical grid - non "e" stagger.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 gayno initial version
                    2015-09-17 gayno rename as "rot_equid_cylind_map_jacob".
                    2018-07-20 wesley pass in clatr, clat, slat, clon to allow threading.
                    +
                    Parameters
                    + + + + + + + + + + + +
                    [in]fillfill value for undefined points (real)
                    [in]rlonlongitude in degrees (real)
                    [in]clatrcosine of unrotated latitude (real)
                    [in]clatcosine of latitude (real)
                    [in]slatsine of latitude (real)
                    [in]cloncosine of latitude (real)
                    [out]xlondx/dlon in 1/degrees (real)
                    [out]xlatdx/dlat in 1/degrees (real)
                    [out]ylondy/dlon in 1/degrees (real)
                    [out]ylatdy/dlat in 1/degrees (real)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 558 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    References clat0, dlats, dlons, rlon0, and slat0.

                    + +

                    Referenced by gdswzd_rot_equid_cylind().

                    + +
                    +
                    + +

                    ◆ rot_equid_cylind_vect_rot()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_rot_equid_cylind_grid_mod::rot_equid_cylind_vect_rot (real, intent(in) RLON,
                    real(kind=kd), intent(in) CLATR,
                    real(kind=kd), intent(in) SLATR,
                    real(kind=kd), intent(in) CLAT,
                    real(kind=kd), intent(in) SLAT,
                    real(kind=kd), intent(in) CLON,
                    real, intent(out) CROT,
                    real, intent(out) SROT 
                    )
                    +
                    +private
                    +
                    + +

                    Vector rotation fields for rotated equidistant cylindrical grids - non "e" stagger.

                    +

                    This subprogram computes the vector rotation sines and cosines for a rotated equidistant cylindrical grid - non "e" stagger.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    2015-01-21 gayno initial version
                    2015-07-19 gayno rename as "rot_equid_cylind_vect_rot."
                    2018-07-20 wesley pass in clatr, slatr, clat, slat, clon for threading.
                    +
                    Parameters
                    + + + + + + + + + +
                    [in]rlonlongitude in degrees (real)
                    [in]clatrcosine of rotated latitude (real)
                    [in]slatrsine of rotated latitude (real)
                    [in]clatcosine of latitude (real)
                    [in]slatsine of latitude (real)
                    [in]cloncosine of longitude (real)
                    [out]crotclockwise vector rotation cosines (real)
                    [out]srotclockwise vector rotation sines (real) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    +
                    +
                    +
                    Author
                    Gayno
                    +
                    Date
                    2015-01-21
                    + +

                    Definition at line 507 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    References clat0, irot, rlon0, and slat0.

                    + +

                    Referenced by gdswzd_rot_equid_cylind().

                    + +
                    +
                    +

                    Variable Documentation

                    + +

                    ◆ clat0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::clat0
                    +
                    +private
                    +
                    + +

                    Local copy of clat0.

                    + +

                    Definition at line 58 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().

                    + +
                    +
                    + +

                    ◆ dlats

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::dlats
                    +
                    +private
                    +
                    + +

                    Local copy of dlats.

                    + +

                    Definition at line 59 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_grid_area(), and rot_equid_cylind_map_jacob().

                    + +
                    +
                    + +

                    ◆ dlons

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::dlons
                    +
                    +private
                    +
                    + +

                    Local copy of dlons.

                    + +

                    Definition at line 60 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_grid_area(), and rot_equid_cylind_map_jacob().

                    + +
                    +
                    + +

                    ◆ irot

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_rot_equid_cylind_grid_mod::irot
                    +
                    +private
                    +
                    + +

                    Local copy of irot.

                    + +

                    Definition at line 56 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind(), and rot_equid_cylind_vect_rot().

                    + +
                    +
                    + +

                    ◆ kd

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer, parameter ip_rot_equid_cylind_grid_mod::kd = real64
                    +
                    +private
                    +
                    + +

                    Fortran kind for reals.

                    + +

                    Definition at line 30 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::rerth
                    +
                    +private
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 57 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind(), and rot_equid_cylind_grid_area().

                    + +
                    +
                    + +

                    ◆ rlon0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::rlon0
                    +
                    +private
                    +
                    + +

                    Local copy of rlon0.

                    + +

                    Definition at line 61 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().

                    + +
                    +
                    + +

                    ◆ slat0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kind=kd) ip_rot_equid_cylind_grid_mod::slat0
                    +
                    +private
                    +
                    + +

                    Local copy of slat0.

                    + +

                    Definition at line 62 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +

                    Referenced by gdswzd_rot_equid_cylind(), rot_equid_cylind_map_jacob(), and rot_equid_cylind_vect_rot().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__rot__equid__cylind__grid__mod.js b/ver-5.0.0/namespaceip__rot__equid__cylind__grid__mod.js new file mode 100644 index 00000000..a86a9373 --- /dev/null +++ b/ver-5.0.0/namespaceip__rot__equid__cylind__grid__mod.js @@ -0,0 +1,19 @@ +var namespaceip__rot__equid__cylind__grid__mod = +[ + [ "ip_rot_equid_cylind_grid", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid" ], + [ "gdswzd_rot_equid_cylind", "namespaceip__rot__equid__cylind__grid__mod.html#a55c153201e15205d3f75e4ffb717cc0b", null ], + [ "init_grib1", "namespaceip__rot__equid__cylind__grid__mod.html#acb27dfdc6f03dea897d509910365afee", null ], + [ "init_grib2", "namespaceip__rot__equid__cylind__grid__mod.html#add3c6c1dad5748b452d291df6619867d", null ], + [ "rot_equid_cylind_error", "namespaceip__rot__equid__cylind__grid__mod.html#a1cc09c83f9a3815d8c5f8ed2f239f53f", null ], + [ "rot_equid_cylind_grid_area", "namespaceip__rot__equid__cylind__grid__mod.html#ad8f1133eb6809705c15337134eafe9fd", null ], + [ "rot_equid_cylind_map_jacob", "namespaceip__rot__equid__cylind__grid__mod.html#a985f1dc1a20444cef706d4bb20e0841b", null ], + [ "rot_equid_cylind_vect_rot", "namespaceip__rot__equid__cylind__grid__mod.html#a3de472bfc18740a7d985f560f3541c10", null ], + [ "clat0", "namespaceip__rot__equid__cylind__grid__mod.html#afeb699d0eaa8d157277e93fe8e8c5852", null ], + [ "dlats", "namespaceip__rot__equid__cylind__grid__mod.html#ab43075e39d4e2dde4110e608931a392d", null ], + [ "dlons", "namespaceip__rot__equid__cylind__grid__mod.html#aa0cf7bb2dd8be1239ae38c7220d29702", null ], + [ "irot", "namespaceip__rot__equid__cylind__grid__mod.html#abb0c2acdbd71f0c07ffaf9db54ce06c1", null ], + [ "kd", "namespaceip__rot__equid__cylind__grid__mod.html#af5dea0592cccce2de1c5c6a92d42cfd6", null ], + [ "rerth", "namespaceip__rot__equid__cylind__grid__mod.html#ae08318392106d174ab36cf7dc05c570b", null ], + [ "rlon0", "namespaceip__rot__equid__cylind__grid__mod.html#a620a55069afd33b301240533915387df", null ], + [ "slat0", "namespaceip__rot__equid__cylind__grid__mod.html#a64831f92d5306513987a98e97a32aea1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceip__station__points__grid__mod.html b/ver-5.0.0/namespaceip__station__points__grid__mod.html new file mode 100644 index 00000000..23293523 --- /dev/null +++ b/ver-5.0.0/namespaceip__station__points__grid__mod.html @@ -0,0 +1,375 @@ + + + + + + + +NCEPLIBS-ip: ip_station_points_grid_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_station_points_grid_mod Module Reference
                    +
                    +
                    + +

                    Interpolate gridded data to a series of station points. +More...

                    + + + + +

                    +Data Types

                    type  ip_station_points_grid
                     
                    + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine gdswzd_station_points (self, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)
                     Interpolate gridded data to a series of station points. More...
                     
                    subroutine init_grib1 (self, g1_desc)
                     Initializes an IP Station grid given a grib1_descriptor object. More...
                     
                    subroutine init_grib2 (self, g2_desc)
                     Initializes an IP Station grid given a grib2_descriptor object. More...
                     
                    +

                    Detailed Description

                    +

                    Interpolate gridded data to a series of station points.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    7/21/21
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ gdswzd_station_points()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ip_station_points_grid_mod::gdswzd_station_points (class(ip_station_points_grid), intent(in) self,
                    integer, intent(in) IOPT,
                    integer, intent(in) NPTS,
                    real, intent(in) FILL,
                    real, dimension(npts), intent(inout) XPTS,
                    real, dimension(npts), intent(inout) YPTS,
                    real, dimension(npts), intent(inout) RLON,
                    real, dimension(npts), intent(inout) RLAT,
                    integer, intent(out) NRET,
                    real, dimension(npts), intent(out), optional CROT,
                    real, dimension(npts), intent(out), optional SROT,
                    real, dimension(npts), intent(out), optional XLON,
                    real, dimension(npts), intent(out), optional XLAT,
                    real, dimension(npts), intent(out), optional YLON,
                    real, dimension(npts), intent(out), optional YLAT,
                    real, dimension(npts), intent(out), optional AREA 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate gridded data to a series of station points.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]selfThe grid.
                    [in]IOPTmust be minus 1 (return grid coordinates for selected earth coordinates).
                    [in]NPTSMaximum number of points.
                    [in]FILLFill value to set invalid output data. Must be impossible value; suggested value: -9999.
                    [in,out]XPTSX point coordinates. Always output.
                    [in,out]YPTSY point coordinates. Always output.
                    [in,out]RLONPoint longitudes. Always input.
                    [in,out]RLATPoint latitudes. Always input.
                    [out]NRETNumber of valid points computed.
                    [out]CROTNot used.
                    [out]SROTNot used.
                    [out]XLONNot used.
                    [out]XLATNot used.
                    [out]YLONNot used.
                    [out]YLATNot used.
                    [out]AREANot used.
                    +
                    +
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    7/21/21
                    +
                    Author
                    Eric Engle
                    +
                    Date
                    5/4/23
                    + +

                    Definition at line 75 of file ip_station_points_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_station_points_grid_mod::init_grib1 (class(ip_station_points_grid), intent(inout) self,
                    type(grib1_descriptor), intent(in) g1_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes an IP Station grid given a grib1_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g1_descA grib1_descriptor
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 37 of file ip_station_points_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + +
                    subroutine ip_station_points_grid_mod::init_grib2 (class(ip_station_points_grid), intent(inout) self,
                    type(grib2_descriptor), intent(in) g2_desc 
                    )
                    +
                    +private
                    +
                    + +

                    Initializes an IP Station grid given a grib2_descriptor object.

                    +
                    Parameters
                    + + + +
                    [in,out]selfThe grid to initialize
                    [in]g2_descA grib2_descriptor
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 48 of file ip_station_points_grid_mod.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceip__station__points__grid__mod.js b/ver-5.0.0/namespaceip__station__points__grid__mod.js new file mode 100644 index 00000000..3db1fca4 --- /dev/null +++ b/ver-5.0.0/namespaceip__station__points__grid__mod.js @@ -0,0 +1,7 @@ +var namespaceip__station__points__grid__mod = +[ + [ "ip_station_points_grid", "structip__station__points__grid__mod_1_1ip__station__points__grid.html", "structip__station__points__grid__mod_1_1ip__station__points__grid" ], + [ "gdswzd_station_points", "namespaceip__station__points__grid__mod.html#a8da297b45242279a497dbd7062a33197", null ], + [ "init_grib1", "namespaceip__station__points__grid__mod.html#a4b28ebf2b4fe826c96af69db28e0a1ff", null ], + [ "init_grib2", "namespaceip__station__points__grid__mod.html#ad17e6d245295803b62b146be984f874d", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceipolates__mod.html b/ver-5.0.0/namespaceipolates__mod.html new file mode 100644 index 00000000..6dba49f4 --- /dev/null +++ b/ver-5.0.0/namespaceipolates__mod.html @@ -0,0 +1,1358 @@ + + + + + + + +NCEPLIBS-ip: ipolates_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ipolates_mod Module Reference
                    +
                    +
                    + +

                    Top-level driver for scalar interpolation interpolation routine ipolates(). +More...

                    + + + + +

                    +Data Types

                    interface  ipolates
                     
                    + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine, public ipolates_grib1 (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                     This subprogram interpolates scalar field from any grid to any grid given a grib1 Grid Descriptor Section. More...
                     
                    subroutine, public ipolates_grib1_single_field (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                     Special case of ipolates_grib1 when interpolating a single field. More...
                     
                    subroutine, public ipolates_grib2 (IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     This subprogram interpolates scalar field from any grid to any grid given a grib2 descriptor. More...
                     
                    subroutine, public ipolates_grib2_single_field (IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Special case of ipolates_grib2 when interpolating a single field. More...
                     
                    subroutine ipolates_grid (ip, ipopt, grid_in, grid_out, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
                     Interpolates scalar fields between grids given ip_grid objects. More...
                     
                    +

                    Detailed Description

                    +

                    Top-level driver for scalar interpolation interpolation routine ipolates().

                    +

                    ipolates() is overloaded with interfaces for GRIB1 and GRIB2 descriptors.

                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ ipolates_grib1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public ipolates_mod::ipolates_grib1 (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), dimension(200), intent(in) kgdsi,
                    integer(c_int), dimension(200), intent(in) kgdso,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), dimension(km), intent(in) ibi,
                    logical(c_bool), dimension(mi,km), intent(in) li,
                    real(c_double), dimension(mi,km), intent(in) gi,
                    integer(c_int), intent(inout) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    integer(c_int), dimension(km), intent(out) ibo,
                    logical(c_bool), dimension(mo,km), intent(out) lo,
                    real(c_double), dimension(mo,km), intent(out) go,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    + +

                    This subprogram interpolates scalar field from any grid to any grid given a grib1 Grid Descriptor Section.

                    +

                    Only horizontal interpolation is performed. The following interpolation methods are possible:

                      +
                    • (ip=0) bilinear
                    • +
                    • (ip=1) bicubic
                    • +
                    • (ip=2) neighbor
                    • +
                    • (ip=3) budget
                    • +
                    • (ip=4) spectral
                    • +
                    • (ip=6) neighbor-budget
                    • +
                    +

                    Some of these methods have interpolation options and/or restrictions on the input or output grids, both of which are documented more fully in their respective subprograms.

                    +

                    The grids are defined by their grid description sections (passed in integer form as decoded by subprogram w3fi63).

                    +

                    The current code recognizes the following projections:

                      +
                    • (kgds(1)=000) equidistant cylindrical
                    • +
                    • (kgds(1)=001) mercator cylindrical
                    • +
                    • (kgds(1)=003) lambert conformal conical
                    • +
                    • (kgds(1)=004) gaussian cylindrical
                    • +
                    • (kgds(1)=005) polar stereographic azimuthal
                    • +
                    • (kgds(1)=203) rotated equidistant cylindrical - e-stagger
                    • +
                    • (kgds(1)=205) rotated equidistant cylindrical - b-stagger
                    • +
                    +

                    Where kgds could be either input kgdsi or output kgdso.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned.

                    +

                    On the other hand, the output can be a set of station points if kgdso(1)<0, in which case the number of points and their latitudes and longitudes must be input. for the budget approach, a subsection of the grid may be output by subtracting kgdso(1) from 255 and passing in the latitudes and longitudes of the points. Input bitmaps will be interpolated to output bitmaps.

                    +

                    Output bitmaps will also be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    ipInterpolation method
                      +
                    • ip = BILINEAR_INTERP_ID = 0 for bilinear
                    • +
                    • ip = BICUBIC_INTERP_ID = 1 for bicubic
                    • +
                    • ip = NEIGHBOR_INTERP_ID = 2 for neighbor;
                    • +
                    • ip = BUDGET_INTERP_ID = 3 for budget;
                    • +
                    • ip = SPECTRAL_INTERP_ID = 4 for spectral;
                    • +
                    • ip = NEIGHBOR_BUDGET_INTERP_ID = 6 for neighbor-budget
                    • +
                    +
                    ipoptInterpolation options
                      +
                    • ip=0 (bilinear): (No options)
                    • +
                    • ip=1 Cbicubic): constraint option
                    • +
                    • ip=2 (neighbor): (No options)
                    • +
                    • ip=3 (budget): Number in radius, radius weights, search radius
                    • +
                    • ip=4 (spectral): Spectral shape, spectral truncation
                    • +
                    • ip=6 (neighbor-budget): Number in radius, radius weights ...)
                    • +
                    +
                    [in]kgdsiInput gds parameters as decoded by w3fi63.
                    [in]kgdsoOutput gds parameters.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell, Kyle Gerheiser
                    + +

                    Definition at line 293 of file ipolates.F90.

                    + +
                    +
                    + +

                    ◆ ipolates_grib1_single_field()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public ipolates_mod::ipolates_grib1_single_field (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), dimension(200), intent(in) kgdsi,
                    integer(c_int), dimension(200), intent(in) kgdso,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), intent(in) ibi,
                    logical(c_bool), dimension(mi), intent(in) li,
                    real(c_double), dimension(mi), intent(in) gi,
                    integer(c_int), intent(inout) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    integer(c_int), intent(out) ibo,
                    logical(c_bool), dimension(mo), intent(out) lo,
                    real(c_double), dimension(mo), intent(out) go,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    + +

                    Special case of ipolates_grib1 when interpolating a single field.

                    +

                    Removes the km dimension of input arrays so scalars can be passed to ibi/ibo.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    ipInterpolation method
                      +
                    • ip = BILINEAR_INTERP_ID = 0 for bilinear
                    • +
                    • ip = BICUBIC_INTERP_ID = 1 for bicubic
                    • +
                    • ip = NEIGHBOR_INTERP_ID = 2 for neighbor;
                    • +
                    • ip = BUDGET_INTERP_ID = 3 for budget;
                    • +
                    • ip = SPECTRAL_INTERP_ID = 4 for spectral;
                    • +
                    • ip = NEIGHBOR_BUDGET_INTERP_ID = 6 for neighbor-budget
                    • +
                    +
                    ipoptInterpolation options
                      +
                    • ip=0 (bilinear): (No options)
                    • +
                    • ip=1 Cbicubic): constraint option
                    • +
                    • ip=2 (neighbor): (No options)
                    • +
                    • ip=3 (budget): Number in radius, radius weights, search radius
                    • +
                    • ip=4 (spectral): Spectral shape, spectral truncation
                    • +
                    • ip=6 (neighbor-budget): Number in radius, radius weights ...)
                    • +
                    +
                    [in]kgdsiInput gds parameters as decoded by w3fi63.
                    [in]kgdsoOutput gds parameters.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Date
                    Jan 2022
                    +
                    Author
                    Kyle Gerheiser
                    + +

                    Definition at line 158 of file ipolates.F90.

                    + +
                    +
                    + +

                    ◆ ipolates_grib2()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public ipolates_mod::ipolates_grib2 (integer(c_int), intent(in) IP,
                    integer(c_int), dimension(20), intent(in) IPOPT,
                    integer(c_int), intent(in) IGDTNUMI,
                    integer(c_int), dimension(igdtleni), intent(in) IGDTMPLI,
                    integer(c_int), intent(in) IGDTLENI,
                    integer(c_int), intent(in) IGDTNUMO,
                    integer(c_int), dimension(igdtleno), intent(in) IGDTMPLO,
                    integer(c_int), intent(in) IGDTLENO,
                    integer(c_int), intent(in) MI,
                    integer(c_int), intent(in) MO,
                    integer(c_int), intent(in) KM,
                    integer(c_int), dimension(km), intent(in) IBI,
                    logical(c_bool), dimension(mi,km), intent(in) LI,
                    real(c_double), dimension(mi,km), intent(in) GI,
                    integer(c_int), intent(out) NO,
                    real(c_double), dimension(mo), intent(inout) RLAT,
                    real(c_double), dimension(mo), intent(inout) RLON,
                    integer(c_int), dimension(km), intent(out) IBO,
                    logical(c_bool), dimension(mo,km), intent(out) LO,
                    real(c_double), dimension(mo,km), intent(out) GO,
                    integer(c_int), intent(out) IRET 
                    )
                    +
                    + +

                    This subprogram interpolates scalar field from any grid to any grid given a grib2 descriptor.

                    +

                    Wrapper for ipolates_grid which converts a grib1 descriptor into an ip_grid_descriptor, which is used to create an ip_grid. Only horizontal interpolation is performed.

                    +

                    The following interpolation methods are possible:

                      +
                    • (ip=0) bilinear
                    • +
                    • (ip=1) bicubic
                    • +
                    • (ip=2) neighbor
                    • +
                    • (ip=3) budget
                    • +
                    • (ip=4) spectral
                    • +
                    • (ip=6) neighbor-budget
                    • +
                    +

                    Some of these methods have interpolation options and/or restrictions on the input or output grids, both of which are documented more fully in their respective subprograms.

                    +

                    Input and output grids are defined by their grib 2 grid definition template as decoded by the ncep g2 library. The current code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned.

                    +

                    On the other hand, data may be interpolated to a set of station points if "igdtnumo"<0 (or subtracted from 255 for the budget option), in which case the number of points and their latitudes and longitudes must be input.

                    +

                    Input bitmaps will be interpolated to output bitmaps. Output bitmaps will also be created when the output grid extends outside of the domain of the input grid.

                    +

                    The output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + +
                    [in]ipInterpolation method
                      +
                    • ip=0 for bilinear
                    • +
                    • ip=1 for bicubic
                    • +
                    • ip=2 for neighbor;
                    • +
                    • ip=3 for budget;
                    • +
                    • ip=4 for spectral;
                    • +
                    • ip=6 for neighbor-budget
                    • +
                    +
                    [in]ipoptInterpolation options
                      +
                    • ip=0: (No options)
                    • +
                    • ip=1: Constraint option
                    • +
                    • ip=2: (No options)
                    • +
                    • ip=3: Number in radius, radius weights, search radius
                    • +
                    • ip=4: Spectral shape, spectral truncation
                    • +
                    • ip=6: Number in radius, radius weights ...)
                    • +
                    +
                    [in]igdtnumiGrid definition template number for the input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 - EQUIDISTANT CYLINDRICAL
                    • +
                    • 01 - Rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 - MERCATOR CYCLINDRICAL
                    • +
                    • 20 - POLAR STEREOGRAPHIC AZIMUTHAL
                    • +
                    • 30 - LAMBERT CONFORMAL CONICAL
                    • +
                    • 40 - GAUSSIAN EQUIDISTANT CYCLINDRICAL
                    • +
                    +
                    [in]igdtmpliGrid definition template array input grid. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure
                    +
                    +
                    +

                    Section 3 Info:

                    +

                    All map projections:

                      +
                    • (1): SHAPE OF EARTH, OCTET 15
                    • +
                    • (2): SCALE FACTOR OF SPHERICAL EARTH RADIUS, OCTET 16
                    • +
                    • (3): SCALED VALUE OF RADIUS OF SPHERICAL EARTH, OCTETS 17-20
                    • +
                    • (4): SCALE FACTOR OF MAJOR AXIS OF ELLIPTICAL EARTH, OCTET 21
                    • +
                    • (5): SCALED VALUE OF MAJOR AXIS OF ELLIPTICAL EARTH, OCTETS 22-25
                    • +
                    • (6): SCALE FACTOR OF MINOR AXIS OF ELLIPTICAL EARTH, OCTET 26
                    • +
                    • (7): SCALED VALUE OF MINOR AXIS OF ELLIPTICAL EARTH, OCTETS 27-30
                    • +
                    +

                    Equidistant Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42.
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): J-DIRECTION INCREMENT, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    +

                    Mercator Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): LATITUDE OF FIRST POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION AND COMPONENT FLAGS, OCTET 47
                    • +
                    • (13): TANGENT LATITUDE, OCTETS 48-51
                    • +
                    • (14): LATITUDE OF LAST POINT, OCTETS 52-55
                    • +
                    • (15): LONGITUDE OF LAST POINT, OCTETS 56-59
                    • +
                    • (16): SCANNING MODE FLAGS, OCTET 60
                    • +
                    • (17): ORIENTATION OF GRID, OCTETS 61-64
                    • +
                    • (18): LONGITUDINAL GRID LENGTH, OCTETS 65-68
                    • +
                    • (19): LATITUDINAL GRID LENGTH, OCTETS 69-72
                    • +
                    +

                    Lambert Conformal Conical:

                      +
                    • (8): NUMBER OF POINTS ALONG X-AXIS, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG Y-AXIS, OCTS 35-38
                    • +
                    • (10): LATITUDE OF FIRST POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION OF COMPONENT FLAG, OCTET 47
                    • +
                    • (13): LATITUDE WHERE GRID LENGTHS SPECIFIED,OCTETS 48-51
                    • +
                    • (14): LONGITUDE OF MERIDIAN THAT IS PARALLEL TO Y-AXIS, OCTETS 52-55
                    • +
                    • (15): X-DIRECTION GRID LENGTH, OCTETS 56-59
                    • +
                    • (16): Y-DIRECTION GRID LENGTH, OCTETS 60-63
                    • +
                    • (17): PROJECTION CENTER FLAG, OCTET 64
                    • +
                    • (18): SCANNING MODE, OCTET 65
                    • +
                    • (19): FIRST TANGENT LATITUDE FROM POLE, OCTETS 66-69
                    • +
                    • (20): SECOND TANGENT LATITUDE FROM POLE, OCTETS 70-73
                    • +
                    • (21): LATITUDE OF SOUTH POLE OF PROJECTION, OCTETS 74-77
                    • +
                    • (22): LONGITUDE OF SOUTH POLE OF PROJECTION, OCTETS 78-81
                    • +
                    +

                    Gaussian Cylindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): NUMBER OF PARALLELS BETWEEN POLE AND EQUATOR, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    +

                    Polar Stereographic Azimuthal:

                      +
                    • (8): NUMBER OF POINTS ALONG X-AXIS, OCTETS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG Y-AXIS, OCTETS 35-38
                    • +
                    • (10): LATITUDE OF FIRST GRID POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST GRID POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION AND COMPONENT FLAGS, OCTET 47
                    • +
                    • (13): TRUE LATITUDE, OCTETS 48-51
                    • +
                    • (14): ORIENTATION LONGITUDE, OCTETS 52-55
                    • +
                    • (15): X-DIRECTION GRID LENGTH, OCTETS 56-59
                    • +
                    • (16): Y-DIRECTION GRID LENGTH, OCTETS 60-63
                    • +
                    • (17): PROJECTION CENTER FLAG, OCTET 64
                    • +
                    • (18): SCANNING MODE FLAGS, OCTET 65
                    • +
                    +

                    Rotated Equidistant Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): J-DIRECTION INCREMENT, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    • (20): LATITUDE OF SOUTHERN POLE OF PROJECTION, OCTETS 73-76
                    • +
                    • (21): LONGITUDE OF SOUTHERN POLE OF PROJECTION, OCTETS 77-80
                    • +
                    • (22): ANGLE OF ROTATION OF PROJECTION, OCTS 81-84
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    [in]igdtleniNumber of elements of the grid definition template array for the input grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumoGrid definition template number for the output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. See "igdtnumi" for specific template definitions. Note: igdtnumo<0 means interpolate to random station points.
                    [in]igdtmploGrid definition template array for the output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. See "igdtmpli" for definition of array elements.
                    [in]igdtlenoNumber of elements of the grid definition template array for the output grid. c Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Note
                    Examples demonstrating relative cpu costs. This example is interpolating 12 levels of temperatures from the 360 x 181 global grid (ncep grid 3) to the 93 x 68 hawaiian mercator grid (ncep grid 204).
                    +

                    The example times are for the c90. As a reference, the cp time for unpacking the global 12 temperature fields is 0.04 seconds.

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.03
                    BICUBIC 1 0 0.07
                    BICUBIC 1 1 0.07
                    NEIGHBOR 2 0.01
                    BUDGET 3 -1,-1 0.48
                    SPECTRAL 4 0,40 0.22
                    SPECTRAL 4 1,40 0.24
                    SPECTRAL 4 0,-1 0.42
                    N-BUDGET 6 -1,-1 0.15
                    +

                    The spectral interpolation is fast for the mercator grid. However, for some grids the spectral interpolation is slow.

                    +

                    The following example is interpolating 12 levels of temperatures from the 360 x 181 global grid (ncep grid 3) to the 93 x 65 conus lambert conformal grid (ncep grid 211).

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.03
                    BICUBIC 1 0 0.07
                    BICUBIC 1 1 0.07
                    NEIGHBOR 2 0.01
                    BUDGET 3 -1,-1 0.51
                    SPECTRAL 4 0,40 3.94
                    SPECTRAL 4 1,40 5.02
                    SPECTRAL 4 0,-1 11.36
                    N-BUDGET 6 -1,-1 0.18
                    +
                    Author
                    Mark Iredell, Kyle Gerheiser
                    + +

                    Definition at line 587 of file ipolates.F90.

                    + +
                    +
                    + +

                    ◆ ipolates_grib2_single_field()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public ipolates_mod::ipolates_grib2_single_field (integer(c_int), intent(in) IP,
                    integer(c_int), dimension(20), intent(in) IPOPT,
                    integer(c_int), intent(in) IGDTNUMI,
                    integer(c_int), dimension(igdtleni), intent(in) IGDTMPLI,
                    integer(c_int), intent(in) IGDTLENI,
                    integer(c_int), intent(in) IGDTNUMO,
                    integer(c_int), dimension(igdtleno), intent(in) IGDTMPLO,
                    integer(c_int), intent(in) IGDTLENO,
                    integer(c_int), intent(in) MI,
                    integer(c_int), intent(in) MO,
                    integer(c_int), intent(in) KM,
                    integer(c_int), intent(in) IBI,
                    logical(c_bool), dimension(mi), intent(in) LI,
                    real(c_double), dimension(mi), intent(in) GI,
                    integer(c_int), intent(out) NO,
                    real(c_double), dimension(mo), intent(inout) RLAT,
                    real(c_double), dimension(mo), intent(inout) RLON,
                    integer(c_int), intent(out) IBO,
                    logical(c_bool), dimension(mo), intent(out) LO,
                    real(c_double), dimension(mo), intent(out) GO,
                    integer(c_int), intent(out) IRET 
                    )
                    +
                    + +

                    Special case of ipolates_grib2 when interpolating a single field.

                    +

                    Removes the km dimension of input arrays so scalars can be passed to ibi/ibo.

                    +
                    Parameters
                    + + + + + +
                    [in]ipInterpolation method
                      +
                    • ip=0 for bilinear
                    • +
                    • ip=1 for bicubic
                    • +
                    • ip=2 for neighbor;
                    • +
                    • ip=3 for budget;
                    • +
                    • ip=4 for spectral;
                    • +
                    • ip=6 for neighbor-budget
                    • +
                    +
                    [in]ipoptInterpolation options
                      +
                    • ip=0: (No options)
                    • +
                    • ip=1: Constraint option
                    • +
                    • ip=2: (No options)
                    • +
                    • ip=3: Number in radius, radius weights, search radius
                    • +
                    • ip=4: Spectral shape, spectral truncation
                    • +
                    • ip=6: Number in radius, radius weights ...)
                    • +
                    +
                    [in]igdtnumiGrid definition template number for the input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 - EQUIDISTANT CYLINDRICAL
                    • +
                    • 01 - Rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 - MERCATOR CYCLINDRICAL
                    • +
                    • 20 - POLAR STEREOGRAPHIC AZIMUTHAL
                    • +
                    • 30 - LAMBERT CONFORMAL CONICAL
                    • +
                    • 40 - GAUSSIAN EQUIDISTANT CYCLINDRICAL
                    • +
                    +
                    [in]igdtmpliGrid definition template array input grid. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure
                    +
                    +
                    +

                    Section 3 Info:

                    +

                    All map projections:

                      +
                    • (1): SHAPE OF EARTH, OCTET 15
                    • +
                    • (2): SCALE FACTOR OF SPHERICAL EARTH RADIUS, OCTET 16
                    • +
                    • (3): SCALED VALUE OF RADIUS OF SPHERICAL EARTH, OCTETS 17-20
                    • +
                    • (4): SCALE FACTOR OF MAJOR AXIS OF ELLIPTICAL EARTH, OCTET 21
                    • +
                    • (5): SCALED VALUE OF MAJOR AXIS OF ELLIPTICAL EARTH, OCTETS 22-25
                    • +
                    • (6): SCALE FACTOR OF MINOR AXIS OF ELLIPTICAL EARTH, OCTET 26
                    • +
                    • (7): SCALED VALUE OF MINOR AXIS OF ELLIPTICAL EARTH, OCTETS 27-30
                    • +
                    +

                    Equidistant Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42.
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): J-DIRECTION INCREMENT, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    +

                    Mercator Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): LATITUDE OF FIRST POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION AND COMPONENT FLAGS, OCTET 47
                    • +
                    • (13): TANGENT LATITUDE, OCTETS 48-51
                    • +
                    • (14): LATITUDE OF LAST POINT, OCTETS 52-55
                    • +
                    • (15): LONGITUDE OF LAST POINT, OCTETS 56-59
                    • +
                    • (16): SCANNING MODE FLAGS, OCTET 60
                    • +
                    • (17): ORIENTATION OF GRID, OCTETS 61-64
                    • +
                    • (18): LONGITUDINAL GRID LENGTH, OCTETS 65-68
                    • +
                    • (19): LATITUDINAL GRID LENGTH, OCTETS 69-72
                    • +
                    +

                    Lambert Conformal Conical:

                      +
                    • (8): NUMBER OF POINTS ALONG X-AXIS, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG Y-AXIS, OCTS 35-38
                    • +
                    • (10): LATITUDE OF FIRST POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION OF COMPONENT FLAG, OCTET 47
                    • +
                    • (13): LATITUDE WHERE GRID LENGTHS SPECIFIED,OCTETS 48-51
                    • +
                    • (14): LONGITUDE OF MERIDIAN THAT IS PARALLEL TO Y-AXIS, OCTETS 52-55
                    • +
                    • (15): X-DIRECTION GRID LENGTH, OCTETS 56-59
                    • +
                    • (16): Y-DIRECTION GRID LENGTH, OCTETS 60-63
                    • +
                    • (17): PROJECTION CENTER FLAG, OCTET 64
                    • +
                    • (18): SCANNING MODE, OCTET 65
                    • +
                    • (19): FIRST TANGENT LATITUDE FROM POLE, OCTETS 66-69
                    • +
                    • (20): SECOND TANGENT LATITUDE FROM POLE, OCTETS 70-73
                    • +
                    • (21): LATITUDE OF SOUTH POLE OF PROJECTION, OCTETS 74-77
                    • +
                    • (22): LONGITUDE OF SOUTH POLE OF PROJECTION, OCTETS 78-81
                    • +
                    +

                    Gaussian Cylindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): NUMBER OF PARALLELS BETWEEN POLE AND EQUATOR, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    +

                    Polar Stereographic Azimuthal:

                      +
                    • (8): NUMBER OF POINTS ALONG X-AXIS, OCTETS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG Y-AXIS, OCTETS 35-38
                    • +
                    • (10): LATITUDE OF FIRST GRID POINT, OCTETS 39-42
                    • +
                    • (11): LONGITUDE OF FIRST GRID POINT, OCTETS 43-46
                    • +
                    • (12): RESOLUTION AND COMPONENT FLAGS, OCTET 47
                    • +
                    • (13): TRUE LATITUDE, OCTETS 48-51
                    • +
                    • (14): ORIENTATION LONGITUDE, OCTETS 52-55
                    • +
                    • (15): X-DIRECTION GRID LENGTH, OCTETS 56-59
                    • +
                    • (16): Y-DIRECTION GRID LENGTH, OCTETS 60-63
                    • +
                    • (17): PROJECTION CENTER FLAG, OCTET 64
                    • +
                    • (18): SCANNING MODE FLAGS, OCTET 65
                    • +
                    +

                    Rotated Equidistant Cyclindrical:

                      +
                    • (8): NUMBER OF POINTS ALONG A PARALLEL, OCTS 31-34
                    • +
                    • (9): NUMBER OF POINTS ALONG A MERIDIAN, OCTS 35-38
                    • +
                    • (10): BASIC ANGLE OF INITIAL PRODUCTION DOMAIN, OCTETS 39-42
                    • +
                    • (11): SUBDIVISIONS OF BASIC ANGLE, OCTETS 43-46
                    • +
                    • (12): LATITUDE OF FIRST GRID POINT, OCTETS 47-50
                    • +
                    • (13): LONGITUDE OF FIRST GRID POINT, OCTETS 51-54
                    • +
                    • (14): RESOLUTION AND COMPONENT FLAGS, OCTET 55
                    • +
                    • (15): LATITUDE OF LAST GRID POINT, OCTETS 56-59
                    • +
                    • (16): LONGITUDE OF LAST GRID POINT, OCTETS 60-63
                    • +
                    • (17): I-DIRECTION INCREMENT, OCTETS 64-67
                    • +
                    • (18): J-DIRECTION INCREMENT, OCTETS 68-71
                    • +
                    • (19): SCANNING MODE, OCTET 72
                    • +
                    • (20): LATITUDE OF SOUTHERN POLE OF PROJECTION, OCTETS 73-76
                    • +
                    • (21): LONGITUDE OF SOUTHERN POLE OF PROJECTION, OCTETS 77-80
                    • +
                    • (22): ANGLE OF ROTATION OF PROJECTION, OCTS 81-84
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    [in]igdtleniNumber of elements of the grid definition template array for the input grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumoGrid definition template number for the output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. See "igdtnumi" for specific template definitions. Note: igdtnumo<0 means interpolate to random station points.
                    [in]igdtmploGrid definition template array for the output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. See "igdtmpli" for definition of array elements.
                    [in]igdtlenoNumber of elements of the grid definition template array for the output grid. c Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Eric Engle
                    +
                    Date
                    November 2022
                    + +

                    Definition at line 808 of file ipolates.F90.

                    + +
                    +
                    + +

                    ◆ ipolates_grid()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipolates_mod::ipolates_grid (integer, intent(in) ip,
                    integer, dimension(20), intent(in) ipopt,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) mi,
                    integer, intent(in) mo,
                    integer, intent(in) km,
                    integer, dimension(km), intent(in) ibi,
                    logical*1, dimension(mi,km), intent(in) li,
                    real, dimension(mi,km), intent(in) gi,
                    integer, intent(inout) no,
                    real, dimension(mo), intent(inout) rlat,
                    real, dimension(mo), intent(inout) rlon,
                    integer, dimension(km), intent(out) ibo,
                    logical*1, dimension(mo,km), intent(out) lo,
                    real, dimension(mo,km), intent(out) go,
                    integer, intent(out) iret 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolates scalar fields between grids given ip_grid objects.

                    +

                    Calls the specific interpolation routines on the generic ip_grids created from a grib1/grib2 descriptor.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    [in]ipInterpolation method.
                    [in]ipoptInterpolation options.
                    [in]grid_inInput grid.
                    [in]grid_outOutput grid object created.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]giInput fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]goOutput fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell, Kyle Gerheiser
                    + +

                    Definition at line 63 of file ipolates.F90.

                    + +

                    References ip_interpolators_mod::bicubic_interp_id, ip_interpolators_mod::bilinear_interp_id, ip_interpolators_mod::budget_interp_id, ip_interpolators_mod::neighbor_budget_interp_id, ip_interpolators_mod::neighbor_interp_id, and ip_interpolators_mod::spectral_interp_id.

                    + +

                    Referenced by ipolates_mod::ipolates::ipolates_grib1(), ipolates_mod::ipolates::ipolates_grib1_single_field(), ipolates_mod::ipolates::ipolates_grib2(), and ipolates_mod::ipolates::ipolates_grib2_single_field().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceipolates__mod.js b/ver-5.0.0/namespaceipolates__mod.js new file mode 100644 index 00000000..4197e28d --- /dev/null +++ b/ver-5.0.0/namespaceipolates__mod.js @@ -0,0 +1,9 @@ +var namespaceipolates__mod = +[ + [ "ipolates", "interfaceipolates__mod_1_1ipolates.html", "interfaceipolates__mod_1_1ipolates" ], + [ "ipolates_grib1", "namespaceipolates__mod.html#acb5408cf5c3a0f50326edc183f9bd269", null ], + [ "ipolates_grib1_single_field", "namespaceipolates__mod.html#ae70a9ca9871bb33e038782b036b7b53d", null ], + [ "ipolates_grib2", "namespaceipolates__mod.html#a6b2ea6d5b04d2a68baad261e7a409fac", null ], + [ "ipolates_grib2_single_field", "namespaceipolates__mod.html#a49541b2af75b7c037a863a4785726856", null ], + [ "ipolates_grid", "namespaceipolates__mod.html#a2761e20fab898e7fd9963f3e0eb5d104", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceipolatev__mod.html b/ver-5.0.0/namespaceipolatev__mod.html new file mode 100644 index 00000000..44c15be2 --- /dev/null +++ b/ver-5.0.0/namespaceipolatev__mod.html @@ -0,0 +1,1443 @@ + + + + + + + +NCEPLIBS-ip: ipolatev_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ipolatev_mod Module Reference
                    +
                    +
                    + +

                    Top-level driver for vector interpolation interpolation routine ipolatev(). +More...

                    + + + + +

                    +Data Types

                    interface  ipolatev
                     
                    + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine, public ipolatev_grib1 (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram interpolates vector field from any grid to any grid given a grib1 Grid Descriptor Section. More...
                     
                    subroutine, public ipolatev_grib1_single_field (ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     Special case of ipolatev_grib1 when interpolating a single field. More...
                     
                    subroutine, public ipolatev_grib2 (ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor. More...
                     
                    subroutine, public ipolatev_grib2_single_field (ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
                     This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor. More...
                     
                    subroutine ipolatev_grid (IP, IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolates vector fields between grids given ip_grid objects. More...
                     
                    +

                    Detailed Description

                    +

                    Top-level driver for vector interpolation interpolation routine ipolatev().

                    +

                    The ipolatev() subprogram is overloaded with interfaces for GRIB1 and GRIB2 descriptors.

                    +
                    Author
                    George Gayno, Mark Iredell, Kyle Gerheiser
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ ipolatev_grib1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public ipolatev_mod::ipolatev_grib1 (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), dimension(200), intent(inout) kgdsi,
                    integer(c_int), dimension(200), intent(inout) kgdso,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), dimension(km), intent(in) ibi,
                    logical(c_bool), dimension(mi,km), intent(in) li,
                    real(c_double), dimension(mi,km), intent(in) ui,
                    real(c_double), dimension(mi,km), intent(in) vi,
                    integer(c_int), intent(out) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    real(c_double), dimension(mo), intent(inout) crot,
                    real(c_double), dimension(mo), intent(inout) srot,
                    integer(c_int), dimension(km), intent(out) ibo,
                    logical(c_bool), dimension(mo,km), intent(out) lo,
                    real(c_double), dimension(mo,km), intent(out) uo,
                    real(c_double), dimension(mo,km), intent(out) vo,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    + +

                    This subprogram interpolates vector field from any grid to any grid given a grib1 Grid Descriptor Section.

                    +

                    Only horizontal interpolation is performed. The following interpolation methods are possible:

                      +
                    • (ip=0) bilinear
                    • +
                    • (ip=1) bicubic
                    • +
                    • (ip=2) neighbor
                    • +
                    • (ip=3) budget
                    • +
                    • (ip=4) spectral
                    • +
                    • (ip=6) neighbor-budget
                    • +
                    +

                    Some of these methods have interpolation options and/or restrictions on the input or output grids, both of which are documented more fully in their respective subprograms.

                    +

                    The grids are defined by their grid description sections (passed in integer form as decoded by subprogram w3fi63).

                    +

                    The current code recognizes the following projections:

                      +
                    • (kgds(1)=000) equidistant cylindrical
                    • +
                    • (kgds(1)=001) mercator cylindrical
                    • +
                    • (kgds(1)=003) lambert conformal conical
                    • +
                    • (kgds(1)=004) gaussian cylindrical
                    • +
                    • (kgds(1)=005) polar stereographic azimuthal
                    • +
                    • (kgds(1)=203) rotated equidistant cylindrical - e-stagger
                    • +
                    • (kgds(1)=205) rotated equidistant cylindrical - b-stagger
                    • +
                    +

                    Where kgds could be either input kgdsi or output kgdso.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned.

                    +

                    On the other hand, the output can be a set of station points if kgdso(1)<0, in which case the number of points and their latitudes and longitudes must be input. for the budget approach, a subsection of the grid may be output by subtracting kgdso(1) from 255 and passing in the latitudes and longitudes of the points. Input bitmaps will be interpolated to output bitmaps.

                    +

                    Output bitmaps will also be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + +
                    ipInterpolation method
                      +
                    • ip = BILINEAR_INTERP_ID = 0 for bilinear
                    • +
                    • ip = BICUBIC_INTERP_ID = 1 for bicubic
                    • +
                    • ip = NEIGHBOR_INTERP_ID = 2 for neighbor;
                    • +
                    • ip = BUDGET_INTERP_ID = 3 for budget;
                    • +
                    • ip = SPECTRAL_INTERP_ID = 4 for spectral;
                    • +
                    • ip = NEIGHBOR_BUDGET_INTERP_ID = 6 for neighbor-budget
                    • +
                    +
                    ipoptInterpolation options
                      +
                    • ip=0 (bilinear): (No options)
                    • +
                    • ip=1 Cbicubic): constraint option
                    • +
                    • ip=2 (neighbor): (No options)
                    • +
                    • ip=3 (budget): Number in radius, radius weights, search radius
                    • +
                    • ip=4 (spectral): Spectral shape, spectral truncation
                    • +
                    • ip=6 (neighbor-budget): Number in radius, radius weights ...)
                    • +
                    +
                    [in]kgdsiInput gds parameters as decoded by w3fi63.
                    [in]kgdsoOutput gds parameters.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [in,out]crotVector rotation cosines (if igdtnumo>=0).
                    [in,out]srotVector rotation sines (if igdtnumo>=0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Note
                    Examples demonstrating relative cpu costs. This example is interpolating 12 levels of winds from the 360 x 181 global grid (ncep grid 3) to the 93 x 68 hawaiian mercator grid (ncep grid 204).
                    +

                    The example times are for the c90. As a reference, the cp time for unpacking the global 12 temperature fields is 0.07 seconds.

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.05
                    BICUBIC 1 0 0.16
                    BICUBIC 1 1 0.17
                    NEIGHBOR 2 0.02
                    BUDGET 3 -1,-1 0.94
                    SPECTRAL 4 0,40 0.31
                    SPECTRAL 4 1,40 0.33
                    SPECTRAL 4 0,-1 0.59
                    N-BUDGET 6 -1,-1 0.31
                    +

                    The spectral interpolation is fast for the mercator grid. However, for some grids the spectral interpolation is slow.

                    +

                    The following example is interpolating 12 levels of temperatures from the 360 x 181 global grid (ncep grid 3) to the 93 x 65 conus lambert conformal grid (ncep grid 211).

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.05
                    BICUBIC 1 0 0.15
                    BICUBIC 1 1 0.16
                    NEIGHBOR 2 0.02
                    BUDGET 3 -1,-1 0.92
                    SPECTRAL 4 0,40 4.51
                    SPECTRAL 4 1,40 5.77
                    SPECTRAL 4 0,-1 12.60
                    N-BUDGET 6 -1,-1 0.33
                    +
                    Date
                    July 2021
                    +
                    Author
                    Kyle Gerheiser
                    + +

                    Definition at line 565 of file ipolatev.F90.

                    + +
                    +
                    + +

                    ◆ ipolatev_grib1_single_field()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public ipolatev_mod::ipolatev_grib1_single_field (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), dimension(200), intent(inout) kgdsi,
                    integer(c_int), dimension(200), intent(inout) kgdso,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), intent(in) ibi,
                    logical(c_bool), dimension(mi), intent(in) li,
                    real(c_double), dimension(mi), intent(in) ui,
                    real(c_double), dimension(mi), intent(in) vi,
                    integer(c_int), intent(out) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    real(c_double), dimension(mo), intent(inout) crot,
                    real(c_double), dimension(mo), intent(inout) srot,
                    integer(c_int), intent(out) ibo,
                    logical(c_bool), dimension(mo), intent(out) lo,
                    real(c_double), dimension(mo), intent(out) uo,
                    real(c_double), dimension(mo), intent(out) vo,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    + +

                    Special case of ipolatev_grib1 when interpolating a single field.

                    +

                    Removes the km dimension of input arrays so vectors can be passed to ibi/ibo.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + +
                    ipInterpolation method
                      +
                    • ip = BILINEAR_INTERP_ID = 0 for bilinear
                    • +
                    • ip = BICUBIC_INTERP_ID = 1 for bicubic
                    • +
                    • ip = NEIGHBOR_INTERP_ID = 2 for neighbor;
                    • +
                    • ip = BUDGET_INTERP_ID = 3 for budget;
                    • +
                    • ip = SPECTRAL_INTERP_ID = 4 for spectral;
                    • +
                    • ip = NEIGHBOR_BUDGET_INTERP_ID = 6 for neighbor-budget
                    • +
                    +
                    ipoptInterpolation options
                      +
                    • ip=0 (bilinear): (No options)
                    • +
                    • ip=1 Cbicubic): constraint option
                    • +
                    • ip=2 (neighbor): (No options)
                    • +
                    • ip=3 (budget): Number in radius, radius weights, search radius
                    • +
                    • ip=4 (spectral): Spectral shape, spectral truncation
                    • +
                    • ip=6 (neighbor-budget): Number in radius, radius weights ...)
                    • +
                    +
                    [in]kgdsiInput gds parameters as decoded by w3fi63.
                    [in]kgdsoOutput gds parameters.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [in,out]crotVector rotation cosines (if igdtnumo>=0).
                    [in,out]srotVector rotation sines (if igdtnumo>=0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Date
                    Jan 2022
                    +
                    Author
                    Kyle Gerheiser
                    + +

                    Definition at line 680 of file ipolatev.F90.

                    + +
                    +
                    + +

                    ◆ ipolatev_grib2()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public ipolatev_mod::ipolatev_grib2 (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), intent(in) igdtnumi,
                    integer(c_int), dimension(igdtleni), intent(in) igdtmpli,
                    integer(c_int), intent(in) igdtleni,
                    integer(c_int), intent(in) igdtnumo,
                    integer(c_int), dimension(igdtleno), intent(in) igdtmplo,
                    integer(c_int), intent(in) igdtleno,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), dimension(km), intent(in) ibi,
                    logical(c_bool), dimension(mi,km), intent(in) li,
                    real(c_double), dimension(mi,km), intent(in) ui,
                    real(c_double), dimension(mi,km), intent(in) vi,
                    integer(c_int), intent(out) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    real(c_double), dimension(mo), intent(inout) crot,
                    real(c_double), dimension(mo), intent(inout) srot,
                    integer(c_int), dimension(km), intent(out) ibo,
                    logical(c_bool), dimension(mo,km), intent(out) lo,
                    real(c_double), dimension(mo,km), intent(out) uo,
                    real(c_double), dimension(mo,km), intent(out) vo,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    + +

                    This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor.

                    +

                    This is a wrapper for ipolates_grid which converts a grib1 descriptor into an ip_grid_descriptor, which is used to create an ip_grid. Only horizontal interpolation is performed.

                    +

                    The following interpolation methods are possible:

                      +
                    • (ip=0) bilinear
                    • +
                    • (ip=1) bicubic
                    • +
                    • (ip=2) neighbor
                    • +
                    • (ip=3) budget
                    • +
                    • (ip=4) spectral
                    • +
                    • (ip=6) neighbor-budget
                    • +
                    +

                    Some of these methods have interpolation options and/or restrictions on the input or output grids, both of which are documented more fully in their respective subprograms.

                    +

                    Input and output grids are defined by their grib 2 grid definition template as decoded by the ncep g2 library. The current code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned.

                    +

                    On the other hand, data may be interpolated to a set of station points if "igdtnumo"<0 (or subtracted from 255 for the budget option), in which case the number of points and their latitudes and longitudes must be input.

                    +

                    Input bitmaps will be interpolated to output bitmaps. Output bitmaps will also be created when the output grid extends outside of the domain of the input grid.

                    +

                    The output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + +
                    [in]ipInterpolation method
                      +
                    • ip=0 for bilinear
                    • +
                    • ip=1 for bicubic
                    • +
                    • ip=2 for neighbor;
                    • +
                    • ip=3 for budget;
                    • +
                    • ip=4 for spectral;
                    • +
                    • ip=6 for neighbor-budget
                    • +
                    +
                    [in]ipoptInterpolation options
                      +
                    • ip=0: (No options)
                    • +
                    • ip=1: Constraint option
                    • +
                    • ip=2: (No options)
                    • +
                    • ip=3: Number in radius, radius weights, search radius
                    • +
                    • ip=4: Spectral shape, spectral truncation
                    • +
                    • ip=6: Number in radius, radius weights ...)
                    • +
                    +
                    [in]igdtnumiGrid definition template number for the input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 - Equidistant Cylindrical
                    • +
                    • 01 - Rotated Equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 - Mercator Cyclindrical
                    • +
                    • 20 - Polar Stereographic azimuthal
                    • +
                    • 30 - Lambert Conformal Conical
                    • +
                    • 40 - Gaussian Equidistant Cyclindrical
                    • +
                    +
                    [in]igdtmpliGrid definition template array input grid. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure
                    +
                    +
                    +

                    Section 3 Info:

                    +

                    All map projections:

                      +
                    1. Shape of earth, octet 15.
                    2. +
                    3. Scale factor of spherical earth radius, octet 16.
                    4. +
                    5. Scaled value of radius of spherical earth, octets 17-20.
                    6. +
                    7. Scale factor of major axis of elliptical earth, octet 21.
                    8. +
                    9. Scaled value of major axis of elliptical earth, octets 22-25.
                    10. +
                    11. Scale factor of minor axis of elliptical earth, octet 26. 7: Scaled value of minor axis of elliptical earth, octets 27-30.
                    12. +
                    +

                    Equidistant Cyclindrical:

                      +
                    1. Number of points along a parallel, octs 31-34.
                    2. +
                    3. Number of points along a meridian, octs 35-38.
                    4. +
                    5. Basic angle of initial production domain, octets 39-42.
                    6. +
                    7. Subdivisions of basic angle, octets 43-46.
                    8. +
                    9. Latitude of first grid point, octets 47-50.
                    10. +
                    11. Longitude of first grid point, octets 51-54.
                    12. +
                    13. Resolution and component flags, octet 55.
                    14. +
                    15. Latitude of last grid point, octets 56-59.
                    16. +
                    17. Longitude of last grid point, octets 60-63.
                    18. +
                    19. i-direction increment, octets 64-67.
                    20. +
                    21. j-direction increment, octets 68-71.
                    22. +
                    23. Scanning mode, octet 72.
                    24. +
                    +

                    Mercator Cyclindrical:

                      +
                    1. Number of points along a parallel, octs 31-34.
                    2. +
                    3. Number of points along a meridian, octs 35-38.
                    4. +
                    5. Latitude of first point, octets 39-42.
                    6. +
                    7. Longitude of first point, octets 43-46.
                    8. +
                    9. Resolution and component flags, octet 47.
                    10. +
                    11. Tangent latitude, octets 48-51.
                    12. +
                    13. Latitude of last point, octets 52-55.
                    14. +
                    15. Longitude of last point, octets 56-59.
                    16. +
                    17. Scanning mode flags, octet 60.
                    18. +
                    19. Orientation of grid, octets 61-64.
                    20. +
                    21. Longitudinal grid length, octets 65-68.
                    22. +
                    23. Latitudinal grid length, octets 69-72.
                    24. +
                    +

                    Lambert Conformal Conical:

                      +
                    1. Number of points along x-axis, octs 31-34.
                    2. +
                    3. Number of points along y-axis, octs 35-38.
                    4. +
                    5. Latitude of first point, octets 39-42.
                    6. +
                    7. Longitude of first point, octets 43-46.
                    8. +
                    9. Resolution of component flag, octet 47.
                    10. +
                    11. Latitude where grid lengths specified,octets 48-51.
                    12. +
                    13. Longitude of meridian that is parallel to y-axis, octets 52-55.
                    14. +
                    15. x-direction grid length, octets 56-59.
                    16. +
                    17. y-direction grid length, octets 60-63.
                    18. +
                    19. Projection center flag, octet 64.
                    20. +
                    21. Scanning mode, octet 65.
                    22. +
                    23. First tangent latitude from pole, octets 66-69.
                    24. +
                    25. Second tangent latitude from pole, octets 70-73.
                    26. +
                    27. Latitude of south pole of projection, octets 74-77.
                    28. +
                    29. Longitude of south pole of projection, octets 78-81.
                    30. +
                    +

                    Gaussian Cylindrical:

                      +
                    1. Number of points along a parallel, octs 31-34.
                    2. +
                    3. Number of points along a meridian, octs 35-38.
                    4. +
                    5. Basic angle of initial production domain, octets 39-42.
                    6. +
                    7. Subdivisions of basic angle, octets 43-46.
                    8. +
                    9. Latitude of first grid point, octets 47-50.
                    10. +
                    11. Longitude of first grid point, octets 51-54.
                    12. +
                    13. Resolution and component flags, octet 55.
                    14. +
                    15. Latitude of last grid point, octets 56-59.
                    16. +
                    17. Longitude of last grid point, octets 60-63.
                    18. +
                    19. i-direction increment, octets 64-67.
                    20. +
                    21. Number of parallels between pole and equator, octets 68-71.
                    22. +
                    23. Scanning mode, octet 72.
                    24. +
                    +

                    Polar Stereographic Azimuthal:

                      +
                    1. Number of points along x-axis, octets 31-34.
                    2. +
                    3. Number of points along y-axis, octets 35-38.
                    4. +
                    5. Latitude of first grid point, octets 39-42.
                    6. +
                    7. Longitude of first grid point, octets 43-46.
                    8. +
                    9. Resolution and component flags, octet 47.
                    10. +
                    11. True latitude, octets 48-51.
                    12. +
                    13. Orientation longitude, octets 52-55.
                    14. +
                    15. x-direction grid length, octets 56-59.
                    16. +
                    17. y-direction grid length, octets 60-63.
                    18. +
                    19. Projection center flag, octet 64.
                    20. +
                    21. Scanning mode flags, octet 65.
                    22. +
                    +

                    Rotated Equidistant Cyclindrical:

                      +
                    1. Number of points along a parallel, octs 31-34.
                    2. +
                    3. Number of points along a meridian, octs 35-38.
                    4. +
                    5. Basic angle of initial production domain, octets 39-42.
                    6. +
                    7. Subdivisions of basic angle, octets 43-46.
                    8. +
                    9. Latitude of first grid point, octets 47-50.
                    10. +
                    11. Longitude of first grid point, octets 51-54.
                    12. +
                    13. Resolution and component flags, octet 55.
                    14. +
                    15. Latitude of last grid point, octets 56-59.
                    16. +
                    17. Longitude of last grid point, octets 60-63.
                    18. +
                    19. i-direction increment, octets 64-67.
                    20. +
                    21. j-direction increment, octets 68-71.
                    22. +
                    23. Scanning mode, octet 72.
                    24. +
                    25. Latitude of southern pole of projection, octets 73-76.
                    26. +
                    27. Longitude of southern pole of projection, octets 77-80.
                    28. +
                    29. Angle of rotation of projection, octs 81-84.
                    30. +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + +
                    [in]igdtleniNumber of elements of the grid definition template array for the input grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumoGrid definition template number for the output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. See "igdtnumi" for specific template definitions. Note: igdtnumo<0 means interpolate to random station points.
                    [in]igdtmploGrid definition template array for the output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. See "igdtmpli" for definition of array elements.
                    [in]igdtlenoNumber of elements of the grid definition template array for the output grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [in,out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [in,out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [in,out]crotVector rotation cosines (if igdtnumo>=0).
                    [in,out]srotVector rotation sines (if igdtnumo>=0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Note
                    Examples demonstrating relative cpu costs. This example is interpolating 12 levels of winds from the 360 x 181 global grid (ncep grid 3) to the 93 x 68 hawaiian mercator grid (ncep grid 204).
                    +

                    The example times are for the c90. As a reference, the cp time for unpacking the global 12 wind fields is 0.07 seconds.

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.05
                    BICUBIC 1 0 0.16
                    BICUBIC 1 1 0.17
                    NEIGHBOR 2 0.02
                    BUDGET 3 -1,-1 0.94
                    SPECTRAL 4 0,40 0.31
                    SPECTRAL 4 1,40 0.33
                    SPECTRAL 4 0,-1 0.59
                    N-BUDGET 6 -1,-1 0.31
                    +

                    The spectral interpolation is fast for the mercator grid. However, for some grids the spectral interpolation is slow.

                    +

                    The following example is interpolating 12 levels of winds from the 360 x 181 global grid (ncep grid 3) to the 93 x 65 conus lambert conformal grid (ncep grid 211).

                    + + + + + + + + + + + + + + + + + + + + + +
                    METHOD IP IPOPT CP SECONDS
                    BILINEAR 0 0.05
                    BICUBIC 1 0 0.15
                    BICUBIC 1 1 0.16
                    NEIGHBOR 2 0.02
                    BUDGET 3 -1,-1 0.92
                    SPECTRAL 4 0,40 4.51
                    SPECTRAL 4 1,40 5.77
                    SPECTRAL 4 0,-1 12.60
                    N-BUDGET 6 -1,-1 0.33
                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 382 of file ipolatev.F90.

                    + +
                    +
                    + +

                    ◆ ipolatev_grib2_single_field()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public ipolatev_mod::ipolatev_grib2_single_field (integer(c_int), intent(in) ip,
                    integer(c_int), dimension(20), intent(in) ipopt,
                    integer(c_int), intent(in) igdtnumi,
                    integer(c_int), dimension(igdtleni), intent(in) igdtmpli,
                    integer(c_int), intent(in) igdtleni,
                    integer(c_int), intent(in) igdtnumo,
                    integer(c_int), dimension(igdtleno), intent(in) igdtmplo,
                    integer(c_int), intent(in) igdtleno,
                    integer(c_int), intent(in) mi,
                    integer(c_int), intent(in) mo,
                    integer(c_int), intent(in) km,
                    integer(c_int), intent(in) ibi,
                    logical(c_bool), dimension(mi), intent(in) li,
                    real(c_double), dimension(mi), intent(in) ui,
                    real(c_double), dimension(mi), intent(in) vi,
                    integer(c_int), intent(out) no,
                    real(c_double), dimension(mo), intent(inout) rlat,
                    real(c_double), dimension(mo), intent(inout) rlon,
                    real(c_double), dimension(mo), intent(inout) crot,
                    real(c_double), dimension(mo), intent(inout) srot,
                    integer(c_int), intent(out) ibo,
                    logical(c_bool), dimension(mo), intent(out) lo,
                    real(c_double), dimension(mo), intent(out) uo,
                    real(c_double), dimension(mo), intent(out) vo,
                    integer(c_int), intent(out) iret 
                    )
                    +
                    + +

                    This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipInterpolation method
                      +
                    • ip=0 for bilinear
                    • +
                    • ip=1 for bicubic
                    • +
                    • ip=2 for neighbor;
                    • +
                    • ip=3 for budget;
                    • +
                    • ip=4 for spectral;
                    • +
                    • ip=6 for neighbor-budget
                    • +
                    +
                    [in]ipoptInterpolation options
                      +
                    • ip=0: (No options)
                    • +
                    • ip=1: Constraint option
                    • +
                    • ip=2: (No options)
                    • +
                    • ip=3: Number in radius, radius weights, search radius
                    • +
                    • ip=4: Spectral shape, spectral truncation
                    • +
                    • ip=6: Number in radius, radius weights ...)
                    • +
                    +
                    [in]igdtnumiGrid definition template number for the input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 - Equidistant Cylindrical
                    • +
                    • 01 - Rotated Equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 - Mercator Cyclindrical
                    • +
                    • 20 - Polar Stereographic azimuthal
                    • +
                    • 30 - Lambert Conformal Conical
                    • +
                    • 40 - Gaussian Equidistant Cyclindrical
                    • +
                    +
                    [in]igdtmpliGrid definition template array input grid. Corresponds to the gfldigdtmpl component of the NCEPLIBS-g2 gridmod data structure
                    [in]igdtleniNumber of elements of the grid definition template array for the input grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumoGrid definition template number for the output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. See "igdtnumi" for specific template definitions. Note: igdtnumo<0 means interpolate to random station points.
                    [in]igdtmploGrid definition template array for the output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure. See "igdtmpli" for definition of array elements.
                    [in]igdtlenoNumber of elements of the grid definition template array for the output grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [in,out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [in,out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [in,out]crotVector rotation cosines (if igdtnumo>=0).
                    [in,out]srotVector rotation sines (if igdtnumo>=0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Eric Engle
                    +
                    Date
                    November 2022
                    + +

                    Definition at line 832 of file ipolatev.F90.

                    + +
                    +
                    + +

                    ◆ ipolatev_grid()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine ipolatev_mod::ipolatev_grid (integer, intent(in) IP,
                    integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(inout) CROT,
                    real, dimension(mo), intent(inout) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolates vector fields between grids given ip_grid objects.

                    +

                    Calls the specific interpolation routines on the generic ip_grids created from a GRIB1 or GRIB2 descriptor.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipInterpolation method.
                    [in]ipoptInterpolation options.
                    [in]grid_inInput grid.
                    [in]grid_outOutput grid object created.
                    [in]miSkip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moSkip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmNumber of fields to interpolate.
                    [in]ibiInput bitmap flags.
                    [in]liInput bitmaps (if respective ibi(k)=1).
                    [in]uiInput u-component fields to interpolate.
                    [in]viInput v-component fields to interpolate.
                    [out]noNumber of output points (only if kgdso(1)<0).
                    [out]rlatOutput latitudes in degrees (if kgdso(1)<0).
                    [out]rlonOutput longitudes in degrees (if kgdso(1)<0).
                    [in,out]crotVector rotation cosines (if igdtnumo>=0).
                    [in,out]srotVector rotation sines (if igdtnumo>=0).
                    [out]iboOutput bitmap flags.
                    [out]loOutput bitmaps (always output).
                    [out]uoOutput u-component fields interpolated.
                    [out]voOutput v-component fields interpolated.
                    [out]iretReturn code.
                      +
                    • 0 Successful interpolation.
                    • +
                    • 1 Unrecognized interpolation method.
                    • +
                    • 2 Unrecognized input grid or no grid overlap.
                    • +
                    • 3 Unrecognized output grid.
                    • +
                    • 1x Invalid bicubic method parameters.
                    • +
                    • 3x Invalid budget method parameters.
                    • +
                    • 4x Invalid spectral method parameters.
                    • +
                    +
                    +
                    +
                    +
                    Date
                    July 2021
                    +
                    Author
                    Kyle Gerheiser
                    + +

                    Definition at line 67 of file ipolatev.F90.

                    + +

                    References ip_interpolators_mod::bicubic_interp_id, ip_interpolators_mod::bilinear_interp_id, ip_interpolators_mod::budget_interp_id, ip_interpolators_mod::neighbor_budget_interp_id, ip_interpolators_mod::neighbor_interp_id, and ip_interpolators_mod::spectral_interp_id.

                    + +

                    Referenced by ipolatev_mod::ipolatev::ipolatev_grib1(), ipolatev_mod::ipolatev::ipolatev_grib1_single_field(), ipolatev_mod::ipolatev::ipolatev_grib2(), and ipolatev_mod::ipolatev::ipolatev_grib2_single_field().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceipolatev__mod.js b/ver-5.0.0/namespaceipolatev__mod.js new file mode 100644 index 00000000..89b5018f --- /dev/null +++ b/ver-5.0.0/namespaceipolatev__mod.js @@ -0,0 +1,9 @@ +var namespaceipolatev__mod = +[ + [ "ipolatev", "interfaceipolatev__mod_1_1ipolatev.html", "interfaceipolatev__mod_1_1ipolatev" ], + [ "ipolatev_grib1", "namespaceipolatev__mod.html#abddc4a9b00133b358443b118f1352d1f", null ], + [ "ipolatev_grib1_single_field", "namespaceipolatev__mod.html#ad535ffd159c46e770effd774aabede58", null ], + [ "ipolatev_grib2", "namespaceipolatev__mod.html#a00fed53dd867a802b3adbc1141e8d272", null ], + [ "ipolatev_grib2_single_field", "namespaceipolatev__mod.html#a71d7507e8f89e1229caaaacb37e0c9c7", null ], + [ "ipolatev_grid", "namespaceipolatev__mod.html#a8f3bfec7495e13b75b2035e8e1f081a1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespacemembers.html b/ver-5.0.0/namespacemembers.html new file mode 100644 index 00000000..99518c42 --- /dev/null +++ b/ver-5.0.0/namespacemembers.html @@ -0,0 +1,598 @@ + + + + + + + +NCEPLIBS-ip: Module Members + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    Here is a list of all documented module members with links to the modules they belong to:
                    + +

                    - a -

                    + + +

                    - b -

                    + + +

                    - c -

                    + + +

                    - d -

                    + + +

                    - e -

                    + + +

                    - f -

                    + + +

                    - g -

                    + + +

                    - h -

                    + + +

                    - i -

                    + + +

                    - j -

                    + + +

                    - k -

                    + + +

                    - l -

                    + + +

                    - m -

                    + + +

                    - n -

                    + + +

                    - o -

                    + + +

                    - p -

                    + + +

                    - r -

                    + + +

                    - s -

                    + + +

                    - y -

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespacemembers_func.html b/ver-5.0.0/namespacemembers_func.html new file mode 100644 index 00000000..0e260cab --- /dev/null +++ b/ver-5.0.0/namespacemembers_func.html @@ -0,0 +1,378 @@ + + + + + + + +NCEPLIBS-ip: Module Members + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +  + +

                    - e -

                    + + +

                    - f -

                    + + +

                    - g -

                    + + +

                    - i -

                    + + +

                    - l -

                    + + +

                    - m -

                    + + +

                    - p -

                    + + +

                    - r -

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespacemembers_vars.html b/ver-5.0.0/namespacemembers_vars.html new file mode 100644 index 00000000..9cca1272 --- /dev/null +++ b/ver-5.0.0/namespacemembers_vars.html @@ -0,0 +1,342 @@ + + + + + + + +NCEPLIBS-ip: Module Members + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +  + +

                    - a -

                    + + +

                    - b -

                    + + +

                    - c -

                    + + +

                    - d -

                    + + +

                    - e -

                    + + +

                    - g -

                    + + +

                    - h -

                    + + +

                    - i -

                    + + +

                    - j -

                    + + +

                    - k -

                    + + +

                    - l -

                    + + +

                    - m -

                    + + +

                    - n -

                    + + +

                    - o -

                    + + +

                    - p -

                    + + +

                    - r -

                    + + +

                    - s -

                    + + +

                    - y -

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceneighbor__budget__interp__mod.html b/ver-5.0.0/namespaceneighbor__budget__interp__mod.html new file mode 100644 index 00000000..2e5f041b --- /dev/null +++ b/ver-5.0.0/namespaceneighbor__budget__interp__mod.html @@ -0,0 +1,532 @@ + + + + + + + +NCEPLIBS-ip: neighbor_budget_interp_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    neighbor_budget_interp_mod Module Reference
                    +
                    +
                    + +

                    Interpolate scalar fields (neighbor). +More...

                    + + + + +

                    +Data Types

                    interface  interpolate_neighbor_budget
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine interpolate_neighbor_budget_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (budget). More...
                     
                    subroutine interpolate_neighbor_budget_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (budget). More...
                     
                    +

                    Detailed Description

                    +

                    Interpolate scalar fields (neighbor).

                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ interpolate_neighbor_budget_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine neighbor_budget_interp_mod::interpolate_neighbor_budget_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(out) RLAT,
                    real, dimension(mo), intent(out) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate scalar fields (budget).

                    +

                    This subprogram performs budget interpolation from any grid to any grid for scalar fields.

                    +

                    The algorithm simply computes (weighted) averages of neighbor points arranged in a square box centered around each output grid point and stretching nearly halfway to each of the neighboring grid points.

                    +

                    Options allow choices of number of points in each radius from the center point (ipopt(1)) which defaults to 2 (if ipopt(1)=-1) meaning that 25 points will be averaged; further options are the respective weights for the radius points starting at the center point (ipopt(2:2+ipopt(1)) which defaults to all 1 (if ipopt(1)=-1 or ipopt(2)=-1).

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(3+ipopt(1)) which defaults to 50 (if -1).

                    +

                    Only horizontal interpolation is performed.

                    +

                    The code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned. Input bitmaps will be interpolated to output bitmaps. Output bitmaps will also be created when the output grid extends outside of the domain of the input grid. The output field is set to 0 where the output bitmap is off.

                    +

                    +Program History Log

                    + + + + + + + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell Initial
                    96-10-04 Iredell neighbor points not bilinear interpolation
                    1999-04-08 Iredell split ijkgds into two pieces
                    2001-06-18 Iredell include minimum mask percentage option
                    2015-01-27 Gayno replace calls to gdswiz with new merged version of gdswzd.
                    2015-07-13 Gayno replace grib 1 kgds arrays with grib 2 grid definition template arrays.
                    2023-05-04 Engle allow calls to GDSWZD for station points
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1) is number of radius points (defaults to 2 if ipopt(1)=-1); ipopt(2:2+ipopt(1)) are respective weights (defaults to all 1 if ipopt(1)=-1 or ipopt(2)=-1). ipopt(3+ipopt(1)) is minimum percentage for mask (defaults to 50 if ipopt(3+ipopt(1)=-1)
                    [in]grid_inThe input grid.
                    [in]grid_outThe output grid.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags
                    [in]li(mi,km) input bitmaps (if some ibi(k)=1)
                    [in]gi(mi,km) input fields to interpolate
                    [out]nonumber of output points
                    [out]rlat(mo) output latitudes in degrees
                    [out]rlon(mo) output longitudes in degrees
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]go(mo,km) output fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 31 invalid undefined output grid
                    • +
                    • 32 invalid budget method parameters
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 107 of file neighbor_budget_interp_mod.F90.

                    + +
                    +
                    + +

                    ◆ interpolate_neighbor_budget_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine neighbor_budget_interp_mod::interpolate_neighbor_budget_vector (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(out) CROT,
                    real, dimension(mo), intent(out) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate vector fields (budget).

                    +

                    This subprogram performs budget interpolation from any grid to any grid for vector fields.

                    +

                    The algorithm simply computes (weighted) averages of neighbor points arranged in a square box centered around each output grid point and stretching nearly halfway to each of the neighboring grid points.

                    +

                    Options allow choices of number of points in each radius from the center point (ipopt(1)) which defaults to 2 (if ipopt(1)=-1) meaning that 25 points will be averaged; further options are the respective weights for the radius points starting at the center point (ipopt(2:2+ipopt(1)) which defaults to all 1 (if ipopt(1)=-1 or ipopt(2)=-1).

                    +

                    Another option is the minimum percentage for mask, i.e. percent valid input data required to make output data, (ipopt(3+ipopt(1)) which defaults to 50 (if -1).

                    +

                    Only horizontal interpolation is performed.

                    +

                    The input and output grids are defined by their grib 2 grid definition template as decoded by the ncep g2 library. the code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    The input and output vectors are rotated so that they are either resolved relative to the defined grid in the direction of increasing x and y coordinates or resolved relative to easterly and northerly directions, as designated by their respective grid description sections.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned along with their vector rotation parameters. Input bitmaps will be interpolated to output bitmaps.

                    +

                    Output bitmaps will also be created when the output grid extends outside of the domain of the input grid. The output field is set to 0 where the output bitmap is off.

                    +

                    +Program History Log

                    + + + + + + + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell Initial
                    1999-04-08 Iredell split ijkgds into two pieces
                    2001-06-18 Iredell include minimum mask percentage option
                    2002-01-17 Iredell save data from last call for optimization
                    2015-01-27 Gayno replace calls to gdswiz with new merged routine gdswzd.
                    2015-07-13 Gayno replace grib 1 kgds arrays with grib 2 grid definition template arrays.
                    2023-05-04 Engle allow calls to GDSWZD for station points
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1) is number of radius points (defaults to 2 if ipopt(1)=-1); ipopt(2:2+ipopt(1)) are respective weights (defaults to all 1 if ipopt(1)=-1 or ipopt(2)=-1). ipopt(3+ipopt(1)) is minimum percentage for mask (defaults to 50 if ipopt(3+ipopt(1)=-1)
                    [in]grid_inThe input grid.
                    [in]grid_outThe output grid.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags
                    [in]li(mi,km) input bitmaps (if some ibi(k)=1)
                    [in]ui(mi,km) input u-component fields to interpolate
                    [in]vi(mi,km) input v-component fields to interpolate
                    [out]nonumber of output points
                    [out]rlat(mo) output latitudes in degrees
                    [out]rlon(mo) output longitudes in degrees
                    [out]crot(mo) vector rotation cosines
                    [out]srot(mo) vector rotation sines (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]uo(mo,km) output u-component fields interpolated
                    [out]vo(mo,km) output v-component fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 31 invalid undefined output grid
                    • +
                    • 32 invalid budget method parameters
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    +
                    + +

                    Definition at line 351 of file neighbor_budget_interp_mod.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceneighbor__budget__interp__mod.js b/ver-5.0.0/namespaceneighbor__budget__interp__mod.js new file mode 100644 index 00000000..86fa793e --- /dev/null +++ b/ver-5.0.0/namespaceneighbor__budget__interp__mod.js @@ -0,0 +1,6 @@ +var namespaceneighbor__budget__interp__mod = +[ + [ "interpolate_neighbor_budget", "interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html", "interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget" ], + [ "interpolate_neighbor_budget_scalar", "namespaceneighbor__budget__interp__mod.html#a6d5110a9e9facf8c3132ec27d6857817", null ], + [ "interpolate_neighbor_budget_vector", "namespaceneighbor__budget__interp__mod.html#a4309c1e6b7fc60ded40657fe6c72297e", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespaceneighbor__interp__mod.html b/ver-5.0.0/namespaceneighbor__interp__mod.html new file mode 100644 index 00000000..9df3b95f --- /dev/null +++ b/ver-5.0.0/namespaceneighbor__interp__mod.html @@ -0,0 +1,511 @@ + + + + + + + +NCEPLIBS-ip: neighbor_interp_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    neighbor_interp_mod Module Reference
                    +
                    +
                    + +

                    Interpolate scalar fields (neighbor). +More...

                    + + + + +

                    +Data Types

                    interface  interpolate_neighbor
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine interpolate_neighbor_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (neighbor). More...
                     
                    subroutine interpolate_neighbor_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (neighbor). More...
                     
                    +

                    Detailed Description

                    +

                    Interpolate scalar fields (neighbor).

                    +

                    +Program History Log

                    + + + + + + + + + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell initial
                    1999-04-08 Iredell split ijkgds into two pieces
                    2001-06-18 Iredell include spiral search option
                    2006-01-04 Gayno minor bug fix
                    2007-10-30 Iredell save weights and thread for performance
                    2012-06-26 Gayno fix out-of-bounds error. see nceplibs ticket #9.
                    2015-01-27 Gayno replace calls to gdswiz() with new merged version of gdswzd().
                    2015-07-13 Gayno replace grib 1 kgds arrays with grib 2 grid definition template arrays.
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ interpolate_neighbor_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine neighbor_interp_mod::interpolate_neighbor_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(inout) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate scalar fields (neighbor).

                    +

                    This subprogram performs neighbor interpolation from any grid to any grid for scalar fields.

                    +

                    Options allow choosing the width of the grid square (ipopt(1)) to search for valid data, which defaults to 1 (if ipopt(1)=-1). Odd width squares are centered on the nearest input grid point; even width squares are centered on the nearest four input grid points. Squares are searched for valid data in a spiral pattern starting from the center. No searching is done where the output grid is outside the input grid. Only horizontal interpolation is performed.

                    +

                    The code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned. On the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input.

                    +

                    Input bitmaps will be interpolated to output bitmaps.

                    +

                    Output bitmaps will also be created when the output grid extends outside of the domain of the input grid. The output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1) is width of square to examine in spiral search (defaults to 1 if ipopt(1)=-1)
                    [in]grid_inThe input grid.
                    [in]grid_outThe output grid.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags
                    [in]li(mi,km) input bitmaps (if some ibi(k)=1)
                    [in]gi(mi,km) input fields to interpolate
                    [in,out]nonumber of output points (only if igdtnumo<0)
                    [in,out]rlat(no) output latitudes in degrees (if igdtnumo<0)
                    [in,out]rlon(no) output longitudes in degrees (if igdtnumo<0)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]go(mo,km) output fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    +
                    Author
                    Eric Engle
                    +
                    Date
                    23-05-04
                    + +

                    Definition at line 100 of file neighbor_interp_mod.F90.

                    + +
                    +
                    + +

                    ◆ interpolate_neighbor_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine neighbor_interp_mod::interpolate_neighbor_vector (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    logical*1, dimension(mi,km), intent(in) LI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(inout) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(inout) CROT,
                    real, dimension(mo), intent(inout) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate vector fields (neighbor).

                    +

                    This subprogram performs neighbor interpolation from any grid to any grid for vector fields.

                    +

                    Options allow choosing the width of the grid square (ipopt(1)) to search for valid data, which defaults to 1 (IF IPOPT(1)=-1). Odd width squares are centered on the nearest input grid point; even width squares are centered on the nearest four input grid points.

                    +

                    Squares are searched for valid data in a spiral pattern starting from the center. no searching is done where the output grid is outside the input grid. Only horizontal interpolation is performed.

                    +

                    The input and output grids are defined by their grib 2 grid definition template as decoded by the ncep g2 library.

                    +

                    The code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • (igdtnumi/o=00) equidistant cylindrical
                    • +
                    • (igdtnumi/o=01) rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • (igdtnumi/o=10) mercator cylindrical
                    • +
                    • (igdtnumi/o=20) polar stereographic azimuthal
                    • +
                    • (igdtnumi/o=30) lambert conformal conical
                    • +
                    • (igdtnumi/o=40) gaussian cylindrical
                    • +
                    +

                    The input and output vectors are rotated so that they are either resolved relative to the defined grid in the direction of increasing x and y coordinates or resolved relative to easterly and northerly directions, as designated by their respective grid definition sections.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned along with their vector rotation parameters. On the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input along with their vector rotation parameters.

                    +

                    Input bitmaps will be interpolated to output bitmaps. output bitmaps will also be created when the output grid extends outside of the domain of the input grid. The output field is set to 0 where the output bitmap is off.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1) is width of square to examine in spiral search (defaults to 1 if ipopt(1)=-1)
                    [in]grid_inThe input grid.
                    [in]grid_outThe output grid.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags
                    [in]li(mi,km) input bitmaps (if some ibi(k)=1)
                    [in]ui(mi,km) input u-component fields to interpolate
                    [in]vi(mi,km) input v-component fields to interpolate
                    [in,out]nonumber of output points (only if igdtnumo>=0)
                    [in,out]rlat(mo) output latitudes in degrees (if igdtnumo<0)
                    [in,out]rlon(mo) output longitudes in degrees (if igdtnumo<0)
                    [in,out]crot(mo) vector rotation cosines (if igdtnumo<0)
                    [in,out]srot(mo) vector rotation sines (if igdtnumo<0) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]uo(mo,km) output u-component fields interpolated
                    [out]vo(mo,km) output v-component fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    +
                    Author
                    Eric Engle
                    +
                    Date
                    23-05-04
                    + +

                    Definition at line 352 of file neighbor_interp_mod.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaceneighbor__interp__mod.js b/ver-5.0.0/namespaceneighbor__interp__mod.js new file mode 100644 index 00000000..2e4123af --- /dev/null +++ b/ver-5.0.0/namespaceneighbor__interp__mod.js @@ -0,0 +1,6 @@ +var namespaceneighbor__interp__mod = +[ + [ "interpolate_neighbor", "interfaceneighbor__interp__mod_1_1interpolate__neighbor.html", "interfaceneighbor__interp__mod_1_1interpolate__neighbor" ], + [ "interpolate_neighbor_scalar", "namespaceneighbor__interp__mod.html#a78452d1527c6974ad54091f0318e4b1f", null ], + [ "interpolate_neighbor_vector", "namespaceneighbor__interp__mod.html#a744ccffd8cd6c13d360e634db4851756", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespacepolfix__mod.html b/ver-5.0.0/namespacepolfix__mod.html new file mode 100644 index 00000000..e024eb14 --- /dev/null +++ b/ver-5.0.0/namespacepolfix__mod.html @@ -0,0 +1,290 @@ + + + + + + + +NCEPLIBS-ip: polfix_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    polfix_mod Module Reference
                    +
                    +
                    + +

                    Make multiple pole scalar values consistent. +More...

                    + + + + + + + + +

                    +Functions/Subroutines

                    subroutine, public polfixs (NM, NX, KM, RLAT, IB, LO, GO)
                     Make multiple pole scalar values consistent. More...
                     
                    subroutine, public polfixv (NM, NX, KM, RLAT, RLON, IB, LO, UO, VO)
                     Make multiple pole vector values consistent,. More...
                     
                    +

                    Detailed Description

                    +

                    Make multiple pole scalar values consistent.

                    +
                    Author
                    Iredell, Kyle Gerheiser
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ polfixs()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public polfix_mod::polfixs (integer, intent(in) NM,
                    integer, intent(in) NX,
                    integer, intent(in) KM,
                    real, dimension(nm), intent(in) RLAT,
                    integer, dimension(km), intent(in) IB,
                    logical*1, dimension(nx,km), intent(inout) LO,
                    real, dimension(nx,km), intent(inout) GO 
                    )
                    +
                    + +

                    Make multiple pole scalar values consistent.

                    +

                    This subprogram averages multiple pole scalar values on a latitude/longitude grid. Bitmaps may be averaged too.

                    +
                    Parameters
                    + + + + + + + + +
                    [in]nminteger number of grid points
                    [in]nxinteger leading dimension of fields
                    [in]kminteger number of fields
                    [in]rlatreal (no) latitudes in degrees
                    [in]ibinteger (km) bitmap flags
                    [out]lological*1 (nx,km) bitmaps (if some ib(k)=1)
                    [out]goreal (nx,km) fields
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 29 of file polfix_mod.F90.

                    + +

                    Referenced by bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_scalar(), bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_scalar(), budget_interp_mod::interpolate_budget::interpolate_budget_scalar(), neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_scalar(), and neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_scalar().

                    + +
                    +
                    + +

                    ◆ polfixv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine, public polfix_mod::polfixv (integer, intent(in) NM,
                    integer, intent(in) NX,
                    integer, intent(in) KM,
                    real, dimension(nm), intent(in) RLAT,
                    real, dimension(nm), intent(in) RLON,
                    integer, dimension(km), intent(in) IB,
                    logical*1, dimension(nx,km), intent(inout) LO,
                    real, dimension(nx,km), intent(inout) UO,
                    real, dimension(nx,km), intent(inout) VO 
                    )
                    +
                    + +

                    Make multiple pole vector values consistent,.

                    +

                    This subprogram averages multiple pole vector values on a latitude/longitude grid. Bitmaps may be averaged too. Vectors are rotated with respect to their longitude.

                    +
                    Parameters
                    + + + + + + + + + + +
                    [in]nminteger number of grid points
                    [in]nxinteger leading dimension of fields
                    [in]kminteger number of fields
                    [in]rlatreal (nm) latitudes in degrees
                    [in]rlonreal (nm) longitudes in degrees
                    [in]ibinteger (km) bitmap flags
                    [in,out]lological*1 (nx,km) bitmaps (if some ib(k)=1)
                    [in,out]uoreal (nx,km) u-winds
                    [in,out]voreal (nx,km) v-winds
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 124 of file polfix_mod.F90.

                    + +

                    Referenced by bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_vector(), bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_vector(), budget_interp_mod::interpolate_budget::interpolate_budget_vector(), neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_vector(), and neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_vector().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaces.html b/ver-5.0.0/namespaces.html new file mode 100644 index 00000000..8a405406 --- /dev/null +++ b/ver-5.0.0/namespaces.html @@ -0,0 +1,159 @@ + + + + + + + +NCEPLIBS-ip: Modules List + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    Modules List
                    +
                    +
                    +
                    Here is a list of all documented modules with brief descriptions:
                    +
                    [detail level 12]
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                     Nbicubic_interp_modBicubic interpolation routines for scalars and vectors
                     Cinterpolate_bicubic
                     Nbilinear_interp_modBilinear interpolation routines for scalars and vectors
                     Cinterpolate_bilinear
                     Nbudget_interp_modBudget interpolation routines for scalars and vectors
                     Cinterpolate_budget
                     Nearth_radius_modDetermine earth radius and shape
                     Ngdswzd_c_modModule that contains C wrapper for routine gdswzd()
                     Ngdswzd_modDriver module for gdswzd routines
                     Cgdswzd
                     Nip_constants_modModule containing common constants
                     Nip_equid_cylind_grid_modEquidistant cylindrical grib decoder and grid coordinate transformations
                     Cip_equid_cylind_grid
                     Nip_gaussian_grid_modGaussian grid coordinate transformations
                     Cip_gaussian_grid
                     Nip_grid_descriptor_modUsers derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions
                     Cgrib1_descriptorDescriptor representing a grib1 grib descriptor section (GDS) with an integer array
                     Cgrib2_descriptorGrib-2 descriptor containing a grib2 GDT represented by an integer array
                     Cinit_descriptor
                     Cip_grid_descriptorAbstract descriptor object which represents a grib1 or grib2 descriptor
                     Coperator(==)
                     Nip_grid_factory_modRoutines for creating an ip_grid given a Grib descriptor
                     Cinit_grid
                     Nip_grid_modAbstract ip_grid type
                     Cgdswzd_interface
                     Cinit_grib1_interface
                     Cinit_grib2_interface
                     Cip_gridAbstract grid that holds fields and methods common to all grids
                     Coperator(==)Check equality
                     Nip_grids_modRe-export the individual grids
                     Nip_interpolators_modTop-level module to export interpolation routines and constants
                     Nip_lambert_conf_grid_modLambert conformal grib decoder and grid coordinate transformations
                     Cip_lambert_conf_grid
                     Nip_mercator_grid_modGDS wizard for mercator cylindrical
                     Cip_mercator_grid
                     Nip_modTop-level module for the ip library which re-exports public routines such as ipolates, ipolatev, and gdswzd
                     Nip_polar_stereo_grid_modGDS wizard for polar stereographic azimuthal
                     Cip_polar_stereo_grid
                     Nip_rot_equid_cylind_egrid_modRotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grid E
                     Cip_rot_equid_cylind_egrid
                     Nip_rot_equid_cylind_grid_modRotated equidistant cylindrical GRIB decoder and grid coordinate transformations for Arakawa grids A through D
                     Cip_rot_equid_cylind_grid
                     Nip_station_points_grid_modInterpolate gridded data to a series of station points
                     Cip_station_points_grid
                     Nipolates_modTop-level driver for scalar interpolation interpolation routine ipolates()
                     Cipolates
                     Nipolatev_modTop-level driver for vector interpolation interpolation routine ipolatev()
                     Cipolatev
                     Nneighbor_budget_interp_modInterpolate scalar fields (neighbor)
                     Cinterpolate_neighbor_budget
                     Nneighbor_interp_modInterpolate scalar fields (neighbor)
                     Cinterpolate_neighbor
                     Npolfix_modMake multiple pole scalar values consistent
                     Nspectral_interp_modInterpolate spectral
                     Cinterpolate_spectral
                     Cpolates4
                     Cpolatev4
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespaces_dup.js b/ver-5.0.0/namespaces_dup.js new file mode 100644 index 00000000..703939f4 --- /dev/null +++ b/ver-5.0.0/namespaces_dup.js @@ -0,0 +1,52 @@ +var namespaces_dup = +[ + [ "bicubic_interp_mod", "namespacebicubic__interp__mod.html", "namespacebicubic__interp__mod" ], + [ "bilinear_interp_mod", "namespacebilinear__interp__mod.html", "namespacebilinear__interp__mod" ], + [ "budget_interp_mod", "namespacebudget__interp__mod.html", "namespacebudget__interp__mod" ], + [ "earth_radius_mod", "namespaceearth__radius__mod.html", [ + [ "earth_radius", "namespaceearth__radius__mod.html#a810f60db1a1faff0d6f59937a8207a54", null ] + ] ], + [ "gdswzd_c_mod", "namespacegdswzd__c__mod.html", [ + [ "gdswzd_c", "namespacegdswzd__c__mod.html#ae3026381f7f41561507c97c9125d24e4", null ], + [ "gdswzd_c_grib1", "namespacegdswzd__c__mod.html#a06861f1403edf106bb3b399c39981504", null ] + ] ], + [ "gdswzd_mod", "namespacegdswzd__mod.html", "namespacegdswzd__mod" ], + [ "ip_constants_mod", "namespaceip__constants__mod.html", [ + [ "dpr", "namespaceip__constants__mod.html#ae6b74489db06341b78c3088b3f207011", null ], + [ "e2_wgs84", "namespaceip__constants__mod.html#af7783a977fa10c54d85282dc6ac5f545", null ], + [ "pi", "namespaceip__constants__mod.html#a47f83a2267da693170054c958c401cd4", null ], + [ "pi2", "namespaceip__constants__mod.html#a309f7e3b1f83b6b272b12ce4fff501c5", null ], + [ "pi4", "namespaceip__constants__mod.html#a5fe7cdd86b44487666dc37f655d9ff15", null ], + [ "rerth_wgs84", "namespaceip__constants__mod.html#ac6a501512f426673f064edbecd7a62fb", null ] + ] ], + [ "ip_equid_cylind_grid_mod", "namespaceip__equid__cylind__grid__mod.html", "namespaceip__equid__cylind__grid__mod" ], + [ "ip_gaussian_grid_mod", "namespaceip__gaussian__grid__mod.html", "namespaceip__gaussian__grid__mod" ], + [ "ip_grid_descriptor_mod", "namespaceip__grid__descriptor__mod.html", "namespaceip__grid__descriptor__mod" ], + [ "ip_grid_factory_mod", "namespaceip__grid__factory__mod.html", "namespaceip__grid__factory__mod" ], + [ "ip_grid_mod", "namespaceip__grid__mod.html", "namespaceip__grid__mod" ], + [ "ip_grids_mod", "namespaceip__grids__mod.html", null ], + [ "ip_interpolators_mod", "namespaceip__interpolators__mod.html", [ + [ "bicubic_interp_id", "namespaceip__interpolators__mod.html#adfdc7760718083d85618df85320c495e", null ], + [ "bilinear_interp_id", "namespaceip__interpolators__mod.html#a753e4b6c113a9a8b226c3c834786f3e1", null ], + [ "budget_interp_id", "namespaceip__interpolators__mod.html#a7df843ca4a64e3178f448aebf7dad359", null ], + [ "neighbor_budget_interp_id", "namespaceip__interpolators__mod.html#ae77a1da241f5de94f1874004ee8e715c", null ], + [ "neighbor_interp_id", "namespaceip__interpolators__mod.html#a35e5fe3a2dd79d205c0503f550388258", null ], + [ "spectral_interp_id", "namespaceip__interpolators__mod.html#a83ba2963a0b686c6ae67b53f9c385851", null ] + ] ], + [ "ip_lambert_conf_grid_mod", "namespaceip__lambert__conf__grid__mod.html", "namespaceip__lambert__conf__grid__mod" ], + [ "ip_mercator_grid_mod", "namespaceip__mercator__grid__mod.html", "namespaceip__mercator__grid__mod" ], + [ "ip_mod", "namespaceip__mod.html", null ], + [ "ip_polar_stereo_grid_mod", "namespaceip__polar__stereo__grid__mod.html", "namespaceip__polar__stereo__grid__mod" ], + [ "ip_rot_equid_cylind_egrid_mod", "namespaceip__rot__equid__cylind__egrid__mod.html", "namespaceip__rot__equid__cylind__egrid__mod" ], + [ "ip_rot_equid_cylind_grid_mod", "namespaceip__rot__equid__cylind__grid__mod.html", "namespaceip__rot__equid__cylind__grid__mod" ], + [ "ip_station_points_grid_mod", "namespaceip__station__points__grid__mod.html", "namespaceip__station__points__grid__mod" ], + [ "ipolates_mod", "namespaceipolates__mod.html", "namespaceipolates__mod" ], + [ "ipolatev_mod", "namespaceipolatev__mod.html", "namespaceipolatev__mod" ], + [ "neighbor_budget_interp_mod", "namespaceneighbor__budget__interp__mod.html", "namespaceneighbor__budget__interp__mod" ], + [ "neighbor_interp_mod", "namespaceneighbor__interp__mod.html", "namespaceneighbor__interp__mod" ], + [ "polfix_mod", "namespacepolfix__mod.html", [ + [ "polfixs", "namespacepolfix__mod.html#a15df1ba2e1fcad1e9465c4aa3a2ba0d6", null ], + [ "polfixv", "namespacepolfix__mod.html#aeefc8f045777f6d962d9ec539ef6007d", null ] + ] ], + [ "spectral_interp_mod", "namespacespectral__interp__mod.html", "namespacespectral__interp__mod" ] +]; \ No newline at end of file diff --git a/ver-5.0.0/namespacespectral__interp__mod.html b/ver-5.0.0/namespacespectral__interp__mod.html new file mode 100644 index 00000000..62bdfd7a --- /dev/null +++ b/ver-5.0.0/namespacespectral__interp__mod.html @@ -0,0 +1,1273 @@ + + + + + + + +NCEPLIBS-ip: spectral_interp_mod Module Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spectral_interp_mod Module Reference
                    +
                    +
                    + +

                    Interpolate spectral. +More...

                    + + + + + + + + +

                    +Data Types

                    interface  interpolate_spectral
                     
                    interface  polates4
                     
                    interface  polatev4
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine interpolate_spectral_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate spectral scalar. More...
                     
                    subroutine interpolate_spectral_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate spectral vector. More...
                     
                    subroutine polates4_grib1 (IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (spectral). More...
                     
                    subroutine polates4_grib2 (IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (spectral). More...
                     
                    subroutine polatev4_grib1 (IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (spectral). More...
                     
                    subroutine polatev4_grib2 (IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (spectral). More...
                     
                    +

                    Detailed Description

                    +

                    Interpolate spectral.

                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ interpolate_spectral_scalar()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::interpolate_spectral_scalar (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate spectral scalar.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + +
                    [in]ipoptinterpolation options; ipopt(1)=0 for triangular; ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to a sensible truncation if ipopt(2)=-1).
                    [in]grid_ininput grid descriptor.
                    [in]grid_outoutput grid descriptor.
                    [in]MIskip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]MOskip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]KMnumber of fields to interpolate.
                    [in]IBIinput bitmap flags (Must be all 0. Routine does not do bitmapped interpolation.)
                    [in]GIinput fields to interpolate.
                    [out]NOnumber of output points.
                    [in,out]RLAToutput latitudes in degrees.
                    [in,out]RLONoutput longitudes in degrees.
                    [out]IBOoutput bitmap flags.
                    [out]LOoutput bitmaps.
                    [out]GOoutput fields interpolated.
                    [out]IRETreturn code. 0/non-0 - successful/not successful.
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 60 of file spectral_interp_mod.F90.

                    + +
                    +
                    + +

                    ◆ interpolate_spectral_vector()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::interpolate_spectral_vector (integer, dimension(20), intent(in) IPOPT,
                    class(ip_grid), intent(in) grid_in,
                    class(ip_grid), intent(in) grid_out,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(out) CROT,
                    real, dimension(mo), intent(out) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate spectral vector.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    ipoptinterpolation options; ipopt(1)=0 for triangular; ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to a sensible truncation if ipopt(2)=-1).
                    grid_ininput grid descriptor.
                    grid_outoutput grid descriptor.
                    MIskip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    MOskip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    KMnumber of fields to interpolate.
                    IBIinput bitmap flags (Must be all 0. Routine does not do bitmapped interpolation.)
                    UIinput u-component fields to interpolate.
                    VIinput v-component fields to interpolate.
                    NOnumber of output points.
                    RLAToutput latitudes in degrees.
                    RLONoutput longitudes in degrees.
                    CROTvector rotation cosines.
                    SROTvector rotation sines.
                    IBOoutput bitmap flags.
                    LOoutput bitmaps.
                    UOoutput u-component fields interpolated.
                    VOoutput v-component fields interpolated.
                    IRETreturn code. 0/non-0 - successful/not successful.
                    +
                    +
                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 121 of file spectral_interp_mod.F90.

                    + +
                    +
                    + +

                    ◆ polates4_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::polates4_grib1 (integer, dimension(20), intent(in) IPOPT,
                    integer, dimension(200), intent(in) KGDSI,
                    integer, dimension(200), intent(in) KGDSO,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) GI,
                    integer NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate scalar fields (spectral).

                    +

                    This subprogram performs spectral interpolation from any grid to any grid for scalar fields. It requires that the input fields be uniformly global.

                    +

                    Options allow choices between triangular shape (ipopt(1)=0) and rhomboidal shape (ipopt(1)=1) which has no default; a second option is the truncation (ipopt(2)) which defaults to a sensible truncation for the input grid (if opt(2)=-1).

                    +
                    Note
                    If the output grid is not found in a special list, then the transform back to grid is not very fast. This special list contains global cylindrical grids, polar stereographic grids centered at the pole and mercator grids.
                    +

                    Only horizontal interpolation is performed. The grids are defined by their grid description sections (passed in integer form as decoded by subprogram w3fi63()).

                    +

                    The current code recognizes the following projections:

                      +
                    • kgds(1) = 000 equidistant cylindrical
                    • +
                    • kgds(1) = 001 mercator cylindrical
                    • +
                    • kgds(1) = 003 lambert conformal conical
                    • +
                    • kgds(1) = 004 gaussian cylindrical (spectral native)
                    • +
                    • kgds(1) = 005 polar stereographic azimuthal
                    • +
                    • kgds(1) = 203 rotated equidistant cylindrical (e-stagger)
                    • +
                    • kgds(1) = 205 rotated equidistant cylindrical (b-stagger)
                    • +
                    +

                    Where kgds could be either input kgdsi or output kgdso. As an added bonus the number of output grid points and their latitudes and longitudes are also returned. On the other hand, the output can be a set of station points if kgdso(1)<0, in which case the number of points and their latitudes and longitudes must be input. Output bitmaps will not be created.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell Initial
                    2001-06-18 Iredell improve detection of special fast transform
                    2015-01-27 Gayno replace calls to gdswiz() with new merged version of gdswzd().
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1)=0 for triangular, ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to sensible if ipopt(2)=-1).
                    [in]kgdsi(200) input gds parameters as decoded by w3fi63
                    [in]kgdso(200) output gds parameters (kgdso(1)<0 implies random station points)
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags (must be all 0)
                    [in]gi(mi,km) input fields to interpolate
                    [out]nonumber of output points (only if kgdso(1)<0)
                    [out]rlat(no) output latitudes in degrees (if kgdso(1)<0)
                    [out]rlon(no) output longitudes in degrees (if kgdso(1)<0)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]go(mo,km) output fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 41 invalid nonglobal input grid
                    • +
                    • 42 invalid spectral method parameters
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 559 of file spectral_interp_mod.F90.

                    + +
                    +
                    + +

                    ◆ polates4_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::polates4_grib2 (integer, dimension(20), intent(in) IPOPT,
                    integer, intent(in) IGDTNUMI,
                    integer, dimension(igdtleni), intent(in) IGDTMPLI,
                    integer, intent(in) IGDTLENI,
                    integer, intent(in) IGDTNUMO,
                    integer, dimension(igdtleno), intent(in) IGDTMPLO,
                    integer, intent(in) IGDTLENO,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) GI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) GO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate scalar fields (spectral).

                    +

                    This subprogram performs spectral interpolation from any grid to any grid for scalar fields. It requires that the input fields be uniformly global. Options allow choices between triangular shape (ipopt(1)=0) and rhomboidal shape (ipopt(1)=1) which has no default; a second option is the truncation (ipopt(2)) which defaults to a sensible truncation for the input grid (if opt(2)=-1).

                    +
                    Note
                    If the output grid is not found in a special list, then the transform back to grid is not very fast. This special list contains global cylindrical grids, polar stereographic grids centered at the pole and mercator grids.
                    +

                    Only horizontal interpolation is performed.

                    +

                    The code recognizes the following projections, where "igdtnumi/o" is the GRIB2 grid defintion template number for the input and onutput grids, respectively:

                      +
                    • igdtnumi/o = 00 equidistant cylindrical
                    • +
                    • igdtnumo = 01 rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • igdtnumo = 10 mercator cylindrical
                    • +
                    • igdtnumo = 20 polar stereographic azimuthal
                    • +
                    • igdtnumo = 30 lambert conformal conical
                    • +
                    • igdtnumi/o = 40 gaussian cylindrical
                    • +
                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned. On the other hand, the output can be a set of station points if igdtnumo < 0, in which case the number of points and their latitudes and longitudes must be input. Output bitmaps will not be created.

                    +

                    +Program History Log

                    + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 Iredell initial
                    2001-06-18 Iredell improve detection of special fast transform
                    2015-01-27 Gayno replace calls to gdswiz with new merged version of gdswzd.
                    2015-07-13 Gayno convert to grib 2. replace grib 1 kgds arrays with grib 2 grid definition template arrays.
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options; ipopt(1)=0 for triangular, ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to sensible if ipopt(2)=-1).
                    [in]igdtnumigrid definition template number - input grid. Corresponds to the gfldigdtnum component of the NCEPLIBS-g2 library gridmod data structure.
                      +
                    • 00 - equidistant cylindrical
                    • +
                    • 01 - rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 - mercator cyclindrical
                    • +
                    • 20 - polar stereographic azimuthal
                    • +
                    • 30 - lambert conformal conical
                    • +
                    • 40 - gaussian equidistant cyclindrical
                    • +
                    +
                    [in]igdtmpli(igdtleni) grid definition template array - input grid. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure: (section 3 info). See comments in routine ipolates() for complete definition.
                    [in]igdtleninumber of elements of the grid definition template array - input grid. corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumogrid definition template number - output grid. Corresponds to the gfldigdtnum component of the NCEPLIBS-g2 library gridmod data structure. igdtnumo<0 means interpolate to random station points. Otherwise, same definition as igdtnumi.
                    [in]igdtmplo(igdtleno) grid definition template array - output grid. Corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure (section 3 info). See comments in routine ipolates() for complete definition.
                    [in]igdtlenonumber of elements of the grid definition template array - output grid. Corresponds to the gfldigdtlen component of the [NCEPLIBS-g2](https://github.com/NOAA-EMC/NCEPLIBS-g2) library gridmod data structure.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1
                    [out]kmnumber of fields to interpolate
                    [out]ibi(km) input bitmap flags (must be all 0)
                    [out]gi(mi,km) input fields to interpolate
                    [out]nonumber of output points (only if igdtnumo>=0)
                    [out]rlat(mo) output latitudes in degrees (if igdtnumo<0)
                    [out]rlon(mo) output longitudes in degrees (if igdtnumo<0)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]go(mo,km) output fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 41 invalid nonglobal input grid
                    • +
                    • 42 invalid spectral method parameters
                    • +
                    +
                    +
                    +
                    +

                    !

                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 254 of file spectral_interp_mod.F90.

                    + +
                    +
                    + +

                    ◆ polatev4_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::polatev4_grib1 (integer, dimension(20), intent(in) IPOPT,
                    integer, dimension(200), intent(in) KGDSI,
                    integer, dimension(200), intent(in) KGDSO,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(out) CROT,
                    real, dimension(mo), intent(out) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate vector fields (spectral).

                    +

                    This subprogram performs spectral interpolation from any grid to any grid for vector fields. It requires that the input fields be uniformly global. Options allow choices between triangular shape (ipopt(1)=0) and rhomboidal shape (ipopt(1)=1) which has no default; a second option is the truncation (ipopt(2)) which defaults to a sensible truncation for the input grid (if opt(2)=-1).

                    +
                    Note
                    If the output grid is not found in a special list, then the transform back to grid is not very fast. This special list contains global cylindrical grids, polar stereographic grids centered at the pole and mercator grids.
                    +

                    Only horizontal interpolation is performed. The grids are defined by their grid description sections (passed in integer form as decoded by subprogram w3fi63).

                    +

                    The current code recognizes the following projections:

                      +
                    • (KGDS(1)=000) EQUIDISTANT CYLINDRICAL
                    • +
                    • (KGDS(1)=001) MERCATOR CYLINDRICAL
                    • +
                    • (KGDS(1)=003) LAMBERT CONFORMAL CONICAL
                    • +
                    • (KGDS(1)=004) GAUSSIAN CYLINDRICAL (SPECTRAL NATIVE)
                    • +
                    • (KGDS(1)=005) POLAR STEREOGRAPHIC AZIMUTHAL
                    • +
                    • (KGDS(1)=203) ROTATED EQUIDISTANT CYLINDRICAL (E-STAGGER)
                    • +
                    • (KGDS(1)=205) ROTATED EQUIDISTANT CYLINDRICAL (B-STAGGER)
                    • +
                    +

                    Where kgds could be either input kgdsi or output kgdso.

                    +

                    The input and output vectors are rotated so that they are either resolved relative to the defined grid in the direction of increasing x and y coordinates or resolved relative to easterly and northerly directions, as designated by their respective grid description sections. As an added bonus the number of output grid points and their latitudes and longitudes are also returned along with their vector rotation parameters. On the other hand, the output can be a set of station points if kgdso(1)<0, in which case the number of points and their latitudes and longitudes must be input along with their vector rotation parameters.

                    +

                    Output bitmaps will only be created when the output grid extends outside of the domain of the input grid. The output field is set to 0 where the output bitmap is off.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 iredell initial.
                    2001-06-18 iredell improve detection of special fast transform
                    2015-01-27 gayno replace calls to gdswiz() with new merged routine gdswzd().
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1)=0 for triangular, ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to sensible if ipopt(2)=-1).
                    [in]kgdsi(200) input gds parameters as decoded by w3fi63.
                    [in]kgdso(200) output gds parameters (kgdso(1)<0 implies random station points).
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags (must be all 0)
                    [in]ui(mi,km) input u-component fields to interpolate
                    [in]vi(mi,km) input v-component fields to interpolate
                    [out]nonumber of output points (only if kgdso(1)<0)
                    [out]rlat(no) output latitudes in degrees (if kgdso(1)<0)
                    [out]rlon(no) output longitudes in degrees (if kgdso(1)<0)
                    [out]crot(no) vector rotation cosines (if kgdso(1)<0)
                    [out]srot(no) vector rotation sines (if kgdso(1)<0) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]uo(mo,km) output u-component fields interpolated
                    [out]vo(mo,km) output v-component fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 41 invalid nonglobal input grid
                    • +
                    • 42 invalid spectral method parameters
                    • +
                    +
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 1221 of file spectral_interp_mod.F90.

                    + +

                    Referenced by spectral_interp_mod::interpolate_spectral::interpolate_spectral_vector().

                    + +
                    +
                    + +

                    ◆ polatev4_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spectral_interp_mod::polatev4_grib2 (integer, dimension(20), intent(in) IPOPT,
                    integer, intent(in) IGDTNUMI,
                    integer, dimension(igdtleni), intent(in) IGDTMPLI,
                    integer, intent(in) IGDTLENI,
                    integer, intent(in) IGDTNUMO,
                    integer, dimension(igdtleno), intent(in) IGDTMPLO,
                    integer, intent(in) IGDTLENO,
                    integer, intent(in) MI,
                    integer, intent(in) MO,
                    integer, intent(in) KM,
                    integer, dimension(km), intent(in) IBI,
                    real, dimension(mi,km), intent(in) UI,
                    real, dimension(mi,km), intent(in) VI,
                    integer, intent(out) NO,
                    real, dimension(mo), intent(inout) RLAT,
                    real, dimension(mo), intent(inout) RLON,
                    real, dimension(mo), intent(out) CROT,
                    real, dimension(mo), intent(out) SROT,
                    integer, dimension(km), intent(out) IBO,
                    logical*1, dimension(mo,km), intent(out) LO,
                    real, dimension(mo,km), intent(out) UO,
                    real, dimension(mo,km), intent(out) VO,
                    integer, intent(out) IRET 
                    )
                    +
                    +private
                    +
                    + +

                    Interpolate vector fields (spectral).

                    +

                    This subprogram performs spectral interpolation from any grid to any grid for vector fields. It requires that the input fields be uniformly global. Options allow choices between triangular shape (ipopt(1)=0) and rhomboidal shape (ipopt(1)=1) which has no default; a second option is the truncation (ipopt(2)) which defaults to a sensible truncation for the input grid (if opt(2)=-1).

                    +
                    Note
                    If the output grid is not found in a special list, then the transform back to grid is not very fast. This special list contains global cylindrical grids, polar stereographic grids centered at the pole and mercator grids. Only horizontal interpolation is performed.
                    +

                    The input and output grids are defined by their grib 2 grid definition template as decoded by the ncep g2 library. The code recognizes the following projections, where "igdtnumi/o" is the grib 2 grid defintion template number for the input and output grids, respectively:

                      +
                    • igdtnumi/o=00 equidistant cylindrical
                    • +
                    • igdtnumo =01 rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • igdtnumo =10 mercator cylindrical
                    • +
                    • igdtnumo =20 polar stereographic azimuthal
                    • +
                    • igdtnumo =30 lambert conformal conical
                    • +
                    • igdtnumi/o=40 gaussian cylindrical
                    • +
                    +

                    The input and output vectors are rotated so that they are either resolved relative to the defined grid in the direction of increasing x and y coordinates or resolved relative to easterly and northerly directions, as designated by their respective grid description sections.

                    +

                    As an added bonus the number of output grid points and their latitudes and longitudes are also returned along with their vector rotation parameters. On the other hand, the output can be a set of station points if igdtnumo<0, in which case the number of points and their latitudes and longitudes must be input along with their vector rotation parameters.

                    +

                    Output bitmaps will only be created when the output grid extends outside of the domain of the input grid. the output field is set to 0 where the output bitmap is off.

                    +

                    +Program History Log

                    + + + + + + + + + + + +
                    Date Programmer Comments
                    96-04-10 iredell initial
                    2001-06-18 iredell improve detection of special fast transform
                    2015-01-27 gayno replace calls to gdswiz() with new merged routine gdswzd().
                    2015-07-13 gayno convert to grib 2. replace grib 1 kgds arrays with grib 2 grid definition template arrays.
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + + +
                    [in]ipopt(20) interpolation options ipopt(1)=0 for triangular, ipopt(1)=1 for rhomboidal; ipopt(2) is truncation number (defaults to sensible if ipopt(2)=-1).
                    [in]igdtnumigrid definition template number - input grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure:
                      +
                    • 00 equidistant cylindrical
                    • +
                    • 01 rotated equidistant cylindrical. "e" and non-"e" staggered
                    • +
                    • 10 mercator cyclindrical
                    • +
                    • 20 polar stereographic azimuthal
                    • +
                    • 30 lambert conformal conical
                    • +
                    • 40 gaussian equidistant cyclindrical
                    • +
                    +
                    [in]igdtmpli(igdtleni) grid definition template array - input grid. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure (section 3 info). see comments in routine ipolatev for complete definition.
                    [in]igdtleninumber of elements of the grid definition template array - input grid. corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]igdtnumogrid definition template number - output grid. Corresponds to the gfldigdtnum component of the ncep g2 library gridmod data structure. igdtnumo<0 means interpolate to random station points. Otherwise, same definition as "igdtnumi".
                    [in]igdtmplo(igdtleno) grid definition template array - output grid. corresponds to the gfldigdtmpl component of the ncep g2 library gridmod data structure (section 3 info). see comments in routine ipolatev() for complete definition.
                    [in]igdtlenonumber of elements of the grid definition template array - output grid. Corresponds to the gfldigdtlen component of the ncep g2 library gridmod data structure.
                    [in]miskip number between input grid fields if km>1 or dimension of input grid fields if km=1.
                    [in]moskip number between output grid fields if km>1 or dimension of output grid fields if km=1.
                    [in]kmnumber of fields to interpolate
                    [in]ibi(km) input bitmap flags (must be all 0)
                    [in]ui(mi,km) input u-component fields to interpolate
                    [in]vi(mi,km) input v-component fields to interpolate
                    [out]nonumber of output points (only if igdtnumo>=0)
                    [in,out]rlat(mo) output latitudes in degrees (if igdtnumo<0)
                    [in,out]rlon(mo) output longitudes in degrees (if igdtnumo<0)
                    [in,out]crot(mo) vector rotation cosines (if igdtnumo<0)
                    [in,out]srot(mo) vector rotation sines (if igdtnumo<0) (ugrid=crot*uearth-srot*vearth; vgrid=srot*uearth+crot*vearth)
                    [out]ibo(km) output bitmap flags
                    [out]lo(mo,km) output bitmaps (always output)
                    [out]uo(mo,km) output u-component fields interpolated
                    [out]vo(mo,km) output v-component fields interpolated
                    [out]iretreturn code
                      +
                    • 0 successful interpolation
                    • +
                    • 2 unrecognized input grid or no grid overlap
                    • +
                    • 3 unrecognized output grid
                    • +
                    • 41 invalid nonglobal input grid
                    • +
                    • 42 invalid spectral method parameters
                    • +
                    +
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-04-10
                    + +

                    Definition at line 887 of file spectral_interp_mod.F90.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/namespacespectral__interp__mod.js b/ver-5.0.0/namespacespectral__interp__mod.js new file mode 100644 index 00000000..05dbff31 --- /dev/null +++ b/ver-5.0.0/namespacespectral__interp__mod.js @@ -0,0 +1,12 @@ +var namespacespectral__interp__mod = +[ + [ "interpolate_spectral", "interfacespectral__interp__mod_1_1interpolate__spectral.html", "interfacespectral__interp__mod_1_1interpolate__spectral" ], + [ "polates4", "interfacespectral__interp__mod_1_1polates4.html", "interfacespectral__interp__mod_1_1polates4" ], + [ "polatev4", "interfacespectral__interp__mod_1_1polatev4.html", "interfacespectral__interp__mod_1_1polatev4" ], + [ "interpolate_spectral_scalar", "namespacespectral__interp__mod.html#a438646d69e941def0ada00d5ca19f618", null ], + [ "interpolate_spectral_vector", "namespacespectral__interp__mod.html#acb61ad529b7decc2a6ff58dd12fbadd0", null ], + [ "polates4_grib1", "namespacespectral__interp__mod.html#ab9fb87d87f2f9d578a5ade6b512ff366", null ], + [ "polates4_grib2", "namespacespectral__interp__mod.html#a54dfd0ea8368242a1053d64770bd295a", null ], + [ "polatev4_grib1", "namespacespectral__interp__mod.html#af4ce7638750e787dd69c7fe3ff2335cc", null ], + [ "polatev4_grib2", "namespacespectral__interp__mod.html#a2f76e9900554d90753ca788c2ddf9ac3", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/nav_f.png b/ver-5.0.0/nav_f.png new file mode 100644 index 00000000..72a58a52 Binary files /dev/null and b/ver-5.0.0/nav_f.png differ diff --git a/ver-5.0.0/nav_g.png b/ver-5.0.0/nav_g.png new file mode 100644 index 00000000..2093a237 Binary files /dev/null and b/ver-5.0.0/nav_g.png differ diff --git a/ver-5.0.0/nav_h.png b/ver-5.0.0/nav_h.png new file mode 100644 index 00000000..33389b10 Binary files /dev/null and b/ver-5.0.0/nav_h.png differ diff --git a/ver-5.0.0/navtree.css b/ver-5.0.0/navtree.css new file mode 100644 index 00000000..33341a67 --- /dev/null +++ b/ver-5.0.0/navtree.css @@ -0,0 +1,146 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url("splitbar.png"); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/ver-5.0.0/navtree.js b/ver-5.0.0/navtree.js new file mode 100644 index 00000000..1e272d31 --- /dev/null +++ b/ver-5.0.0/navtree.js @@ -0,0 +1,546 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +NCEPLIBS-ip: ncpus.F File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ncpus.F File Reference
                    +
                    +
                    + +

                    Set number of cpus. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    function ncpus ()
                     Set number of CPUs - the number of processors over which to parallelize. More...
                     
                    +

                    Detailed Description

                    +

                    Set number of cpus.

                    +

                    +Program History Log

                    + + + + + + + + + + + + + +
                    Date Programmer Comments
                    94-08-19 Iredell Initial.
                    98-11-09 Vuong Add doc>block and remove cray references.
                    1998-12-18 Iredell IBM SMP version.
                    2010-11-16 Slovacek Linux must have different call.
                    2012-11-01 Mirvis Multi-threading on LINUX-IBM/TIDE.
                    +
                    Author
                    Iredell
                    +
                    Date
                    94-08-19
                    + +

                    Definition in file ncpus.F.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ ncpus()

                    + +
                    +
                    + + + + +
                    function ncpus
                    +
                    + +

                    Set number of CPUs - the number of processors over which to parallelize.

                    +
                    Parameters
                    + + +
                    [out]ncpusnumber of CPUs.
                    +
                    +
                    +
                    Returns
                    Number of CPUs assigned.
                    +
                    Author
                    Iredell
                    +
                    Date
                    94-08-19
                    + +

                    Definition at line 23 of file ncpus.F.

                    + +

                    Referenced by sptez(), sptezd(), sptezm(), sptezmd(), sptezmv(), sptezv(), sptran(), sptranv(), sptrun(), sptrund(), sptrung(), sptrungv(), sptrunl(), sptrunm(), sptrunmv(), sptruns(), sptrunsv(), and sptrunv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/ncpus_8F.js b/ver-5.0.0/ncpus_8F.js new file mode 100644 index 00000000..16d02677 --- /dev/null +++ b/ver-5.0.0/ncpus_8F.js @@ -0,0 +1,4 @@ +var ncpus_8F = +[ + [ "ncpus", "ncpus_8F.html#a821a75ee067ea31758a038c0327bd3bd", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/ncpus_8F_source.html b/ver-5.0.0/ncpus_8F_source.html new file mode 100644 index 00000000..81572070 --- /dev/null +++ b/ver-5.0.0/ncpus_8F_source.html @@ -0,0 +1,140 @@ + + + + + + + +NCEPLIBS-ip: ncpus.F Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    ncpus.F
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> Set number of cpus.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 94-08-19 | Iredell | Initial.
                    +
                    8 C> 98-11-09 | Vuong | Add doc>block and remove cray references.
                    +
                    9 C> 1998-12-18 | Iredell | IBM SMP version.
                    +
                    10 C> 2010-11-16 | Slovacek | Linux must have different call.
                    +
                    11 C> 2012-11-01 | Mirvis | Multi-threading on LINUX-IBM/TIDE.
                    +
                    12 C>
                    +
                    13 C> @author Iredell @date 94-08-19
                    +
                    14 
                    +
                    15 C> Set number of CPUs - the number of processors over which
                    +
                    16 C> to parallelize.
                    +
                    17 C>
                    +
                    18 C> @param[out] ncpus number of CPUs.
                    +
                    19 C>
                    +
                    20 C> @return Number of CPUs assigned.
                    +
                    21 C>
                    +
                    22 C> @author Iredell @date 94-08-19
                    +
                    23  FUNCTION ncpus()
                    +
                    24  INTEGER nthreads, tid, omp_get_num_threads,omp_get_thread_num
                    +
                    25 C Obtain thread number
                    +
                    26 #ifdef openmp
                    +
                    27 !$OMP PARALLEL PRIVATE(TID)
                    +
                    28  tid = omp_get_thread_num()
                    +
                    29 ! PRINT *, '...............thread # ', TID
                    +
                    30  if (tid. eq. 0) then
                    +
                    31  ncpus=omp_get_num_threads()
                    +
                    32 ! PRINT *, 'totaly #------------------- of threads = ',NCPUS
                    +
                    33  endif
                    +
                    34 !$OMP END PARALLEL
                    +
                    35 #else
                    +
                    36  tid = 0
                    +
                    37  ncpus = 1
                    +
                    38 #endif
                    +
                    39  RETURN
                    +
                    40  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/neighbor__budget__interp__mod_8F90.html b/ver-5.0.0/neighbor__budget__interp__mod_8F90.html new file mode 100644 index 00000000..2eac8795 --- /dev/null +++ b/ver-5.0.0/neighbor__budget__interp__mod_8F90.html @@ -0,0 +1,135 @@ + + + + + + + +NCEPLIBS-ip: neighbor_budget_interp_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    neighbor_budget_interp_mod.F90 File Reference
                    +
                    +
                    + +

                    Interpolate scalar and vector fields with neighbor budget interpolation. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    interface  neighbor_budget_interp_mod::interpolate_neighbor_budget
                     
                    + + + + +

                    +Modules

                    module  neighbor_budget_interp_mod
                     Interpolate scalar fields (neighbor).
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine neighbor_budget_interp_mod::interpolate_neighbor_budget_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (budget). More...
                     
                    subroutine neighbor_budget_interp_mod::interpolate_neighbor_budget_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (budget). More...
                     
                    +

                    Detailed Description

                    +

                    Interpolate scalar and vector fields with neighbor budget interpolation.

                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition in file neighbor_budget_interp_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/neighbor__budget__interp__mod_8F90.js b/ver-5.0.0/neighbor__budget__interp__mod_8F90.js new file mode 100644 index 00000000..15ede1c0 --- /dev/null +++ b/ver-5.0.0/neighbor__budget__interp__mod_8F90.js @@ -0,0 +1,6 @@ +var neighbor__budget__interp__mod_8F90 = +[ + [ "interpolate_neighbor_budget", "interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html", "interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget" ], + [ "interpolate_neighbor_budget_scalar", "neighbor__budget__interp__mod_8F90.html#a6d5110a9e9facf8c3132ec27d6857817", null ], + [ "interpolate_neighbor_budget_vector", "neighbor__budget__interp__mod_8F90.html#a4309c1e6b7fc60ded40657fe6c72297e", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/neighbor__budget__interp__mod_8F90_source.html b/ver-5.0.0/neighbor__budget__interp__mod_8F90_source.html new file mode 100644 index 00000000..f6bf4505 --- /dev/null +++ b/ver-5.0.0/neighbor__budget__interp__mod_8F90_source.html @@ -0,0 +1,481 @@ + + + + + + + +NCEPLIBS-ip: neighbor_budget_interp_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    neighbor_budget_interp_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + +
                    9  use gdswzd_mod
                    +
                    10  use polfix_mod
                    +
                    11  use ip_grids_mod
                    +
                    12  implicit none
                    +
                    13 
                    +
                    14  private
                    + +
                    16 
                    + +
                    18  module procedure interpolate_neighbor_budget_scalar
                    +
                    19  module procedure interpolate_neighbor_budget_vector
                    +
                    20  end interface interpolate_neighbor_budget
                    +
                    21 
                    +
                    22  ! Smallest positive real value (use for equality comparisons)
                    +
                    23  REAL :: TINYREAL=tiny(1.0)
                    +
                    24 
                    +
                    25 contains
                    +
                    26 
                    +
                    107  SUBROUTINE interpolate_neighbor_budget_scalar(IPOPT,grid_in,grid_out, &
                    +
                    108  MI,MO,KM,IBI,LI,GI, &
                    +
                    109  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    110  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    111 
                    +
                    112  INTEGER, INTENT(IN ) :: IBI(KM), IPOPT(20), KM, MI, MO
                    +
                    113  INTEGER, INTENT( OUT) :: IBO(KM), IRET, NO
                    +
                    114  !
                    +
                    115  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    116  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    117  !
                    +
                    118  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    119  REAL, INTENT( OUT) :: GO(MO,KM), RLAT(MO), RLON(MO)
                    +
                    120  !
                    +
                    121  REAL, PARAMETER :: FILL=-9999.
                    +
                    122  !
                    +
                    123  INTEGER :: IB, I1
                    +
                    124  INTEGER :: JB, J1, K, LB, LSW, MP, N
                    +
                    125  INTEGER :: N11(MO), NB, NB1, NB2, NB3, NB4, NV
                    +
                    126  !
                    +
                    127  REAL :: PMP,RLOB(MO),RLAB(MO)
                    +
                    128  REAL :: WB, WO(MO,KM), XI, YI
                    +
                    129  REAL :: XPTB(MO),YPTB(MO),XPTS(MO),YPTS(MO)
                    +
                    130 
                    +
                    131  logical :: to_station_points
                    +
                    132 
                    +
                    133  select type(grid_out)
                    +
                    134  type is(ip_station_points_grid)
                    +
                    135  to_station_points = .true.
                    +
                    136  class default
                    +
                    137  to_station_points = .false.
                    +
                    138  end select
                    +
                    139 
                    +
                    140  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    141  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    142  iret=0
                    +
                    143  if(to_station_points) then
                    +
                    144  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    145  IF(no.EQ.0) iret=3
                    +
                    146  CALL gdswzd(grid_in,-1,no,fill,xpts,ypts,rlon,rlat,nv)
                    +
                    147  IF(nv.EQ.0) iret=2
                    +
                    148  else
                    +
                    149  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    150  IF(no.EQ.0) iret=3
                    +
                    151  endif
                    +
                    152  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    153  ! SET PARAMETERS
                    +
                    154  nb1=ipopt(1)
                    +
                    155  IF(nb1.EQ.-1) nb1=2
                    +
                    156  IF(iret.EQ.0.AND.nb1.LT.0) iret=32
                    +
                    157  lsw=1
                    +
                    158  IF(ipopt(1).EQ.-1.OR.ipopt(2).EQ.-1) lsw=0
                    +
                    159  IF(iret.EQ.0.AND.lsw.EQ.1.AND.nb1.GT.15) iret=32
                    +
                    160  mp=ipopt(3+ipopt(1))
                    +
                    161  IF(mp.EQ.-1.OR.mp.EQ.0) mp=50
                    +
                    162  IF(mp.LT.0.OR.mp.GT.100) iret=32
                    +
                    163  pmp=mp*0.01
                    +
                    164  IF(iret.EQ.0) THEN
                    +
                    165  nb2=2*nb1+1
                    +
                    166  nb3=nb2*nb2
                    +
                    167  nb4=nb3
                    +
                    168  IF(lsw.EQ.1) THEN
                    +
                    169  nb4=ipopt(2)
                    +
                    170  DO ib=1,nb1
                    +
                    171  nb4=nb4+8*ib*ipopt(2+ib)
                    +
                    172  ENDDO
                    +
                    173  ENDIF
                    +
                    174  ELSE
                    +
                    175  nb2=0
                    +
                    176  nb3=0
                    +
                    177  nb4=0
                    +
                    178  ENDIF
                    +
                    179  DO k=1,km
                    +
                    180  DO n=1,no
                    +
                    181  go(n,k)=0.
                    +
                    182  wo(n,k)=0.
                    +
                    183  ENDDO
                    +
                    184  ENDDO
                    +
                    185  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    186  ! LOOP OVER SAMPLE POINTS IN OUTPUT GRID BOX
                    +
                    187 
                    +
                    188  DO nb=1,nb3
                    +
                    189  ! LOCATE INPUT POINTS AND COMPUTE THEIR WEIGHTS
                    +
                    190  jb=(nb-1)/nb2-nb1
                    +
                    191  ib=nb-(jb+nb1)*nb2-nb1-1
                    +
                    192  lb=max(abs(ib),abs(jb))
                    +
                    193  wb=1
                    +
                    194  IF(lsw.EQ.1) wb=ipopt(2+lb)
                    +
                    195  IF(abs(wb).GT.tinyreal) THEN
                    +
                    196  DO n=1,no
                    +
                    197  xptb(n)=xpts(n)+ib/real(nb2)
                    +
                    198  yptb(n)=ypts(n)+jb/real(nb2)
                    +
                    199  ENDDO
                    +
                    200  if(to_station_points)then
                    +
                    201  CALL gdswzd(grid_in, 1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    202  CALL gdswzd(grid_in,-1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    203  else
                    +
                    204  CALL gdswzd(grid_out, 1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    205  CALL gdswzd(grid_in,-1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    206  endif
                    +
                    207  IF(iret.EQ.0.AND.nv.EQ.0.AND.lb.EQ.0) iret=2
                    +
                    208  DO n=1,no
                    +
                    209  xi=xptb(n)
                    +
                    210  yi=yptb(n)
                    +
                    211  IF(abs(xi-fill).GT.tinyreal.AND.abs(yi-fill).GT.tinyreal) THEN
                    +
                    212  i1=nint(xi)
                    +
                    213  j1=nint(yi)
                    +
                    214  n11(n)=grid_in%field_pos(i1, j1)
                    +
                    215  ELSE
                    +
                    216  n11(n)=0
                    +
                    217  ENDIF
                    +
                    218  ENDDO
                    +
                    219  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    220  ! INTERPOLATE WITH OR WITHOUT BITMAPS
                    +
                    221  DO k=1,km
                    +
                    222  DO n=1,no
                    +
                    223  IF(n11(n).GT.0) THEN
                    +
                    224  IF(ibi(k).EQ.0.OR.li(n11(n),k)) THEN
                    +
                    225  go(n,k)=go(n,k)+wb*gi(n11(n),k)
                    +
                    226  wo(n,k)=wo(n,k)+wb
                    +
                    227  ENDIF
                    +
                    228  ENDIF
                    +
                    229  ENDDO
                    +
                    230  ENDDO
                    +
                    231  ENDIF
                    +
                    232  ENDDO
                    +
                    233  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    234  ! COMPUTE OUTPUT BITMAPS AND FIELDS
                    +
                    235  DO k=1,km
                    +
                    236  ibo(k)=ibi(k)
                    +
                    237  DO n=1,no
                    +
                    238  lo(n,k)=wo(n,k).GE.pmp*nb4
                    +
                    239  IF(lo(n,k)) THEN
                    +
                    240  go(n,k)=go(n,k)/wo(n,k)
                    +
                    241  ELSE
                    +
                    242  ibo(k)=1
                    +
                    243  go(n,k)=0.
                    +
                    244  ENDIF
                    +
                    245  ENDDO
                    +
                    246  ENDDO
                    +
                    247 
                    +
                    248  select type(grid_out)
                    +
                    249  type is(ip_equid_cylind_grid)
                    +
                    250  CALL polfixs(no,mo,km,rlat,ibo,lo,go)
                    +
                    251  end select
                    +
                    252 
                    + +
                    254 
                    +
                    255 
                    +
                    351  SUBROUTINE interpolate_neighbor_budget_vector(IPOPT,grid_in,grid_out, &
                    +
                    352  MI,MO,KM,IBI,LI,UI,VI, &
                    +
                    353  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    354  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    355 
                    +
                    356  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    +
                    357  INTEGER, INTENT(IN ) :: KM, MI, MO
                    +
                    358  INTEGER, INTENT( OUT) :: IRET, NO, IBO(KM)
                    +
                    359  !
                    +
                    360  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    361  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    362  !
                    +
                    363  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    364  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    365  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    366  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    +
                    367  !
                    +
                    368  REAL, PARAMETER :: FILL=-9999.
                    +
                    369  !
                    +
                    370  INTEGER :: N11(MO)
                    +
                    371  INTEGER :: IB, JB, I1, J1
                    +
                    372  INTEGER :: K, LB, LSW, MP, N, NV
                    +
                    373  INTEGER :: NB, NB1, NB2, NB3, NB4
                    +
                    374  !
                    +
                    375  LOGICAL :: SAME_GRID
                    +
                    376  !
                    +
                    377  REAL :: C11(MO),S11(MO)
                    +
                    378  REAL :: CM11, SM11, PMP
                    +
                    379  REAL :: U11, V11, UROT, VROT
                    +
                    380  REAL :: WB, WO(MO,KM), XI, YI
                    +
                    381  REAL :: RLOB(MO),RLAB(MO)
                    +
                    382  REAL :: XPTS(MO),YPTS(MO)
                    +
                    383  REAL :: XPTB(MO),YPTB(MO)
                    +
                    384 
                    +
                    385  logical :: to_station_points
                    +
                    386 
                    +
                    387  ! Save coeffecients between runs and only compute if grid has changed
                    +
                    388  INTEGER, SAVE :: MIX=-1
                    +
                    389  REAL, ALLOCATABLE,SAVE :: CROI(:),SROI(:)
                    +
                    390  REAL, ALLOCATABLE,SAVE :: XPTI(:),YPTI(:)
                    +
                    391  REAL, ALLOCATABLE,SAVE :: RLOI(:),RLAI(:)
                    +
                    392  class(ip_grid), allocatable, save :: prev_grid_in
                    +
                    393 
                    +
                    394  select type(grid_out)
                    +
                    395  type is(ip_station_points_grid)
                    +
                    396  to_station_points = .true.
                    +
                    397  class default
                    +
                    398  to_station_points = .false.
                    +
                    399  end select
                    +
                    400 
                    +
                    401  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    402  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    403  iret=0
                    +
                    404  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no,crot,srot)
                    +
                    405  IF(no.EQ.0) iret=3
                    +
                    406  if(to_station_points) then
                    +
                    407  CALL gdswzd(grid_in,-1,no,fill,xpts,ypts,rlon,rlat,nv,crot,srot)
                    +
                    408  IF(nv.EQ.0) iret=2
                    +
                    409  endif
                    +
                    410 
                    +
                    411  if (.not. allocated(prev_grid_in)) then
                    +
                    412  allocate(prev_grid_in, source = grid_in)
                    +
                    413 
                    +
                    414  same_grid = .false.
                    +
                    415  else
                    +
                    416  same_grid = grid_in == prev_grid_in
                    +
                    417 
                    +
                    418  if (.not. same_grid) then
                    +
                    419  deallocate(prev_grid_in)
                    +
                    420  allocate(prev_grid_in, source = grid_in)
                    +
                    421  end if
                    +
                    422  end if
                    +
                    423 
                    +
                    424  IF(.NOT.same_grid) THEN
                    +
                    425  IF(mix.NE.mi) THEN
                    +
                    426  IF(mix.GE.0) DEALLOCATE(xpti,ypti,rloi,rlai,croi,sroi)
                    +
                    427  ALLOCATE(xpti(mi),ypti(mi),rloi(mi),rlai(mi),croi(mi),sroi(mi))
                    +
                    428  mix=mi
                    +
                    429  ENDIF
                    +
                    430  CALL gdswzd(grid_in,0,mi,fill,xpti,ypti, &
                    +
                    431  rloi,rlai,nv,croi,sroi)
                    +
                    432  ENDIF
                    +
                    433  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    434  ! SET PARAMETERS
                    +
                    435  nb1=ipopt(1)
                    +
                    436  IF(nb1.EQ.-1) nb1=2
                    +
                    437  IF(iret.EQ.0.AND.nb1.LT.0) iret=32
                    +
                    438  lsw=1
                    +
                    439  IF(ipopt(1).EQ.-1.OR.ipopt(2).EQ.-1) lsw=0
                    +
                    440  IF(iret.EQ.0.AND.lsw.EQ.1.AND.nb1.GT.15) iret=32
                    +
                    441  mp=ipopt(3+ipopt(1))
                    +
                    442  IF(mp.EQ.-1.OR.mp.EQ.0) mp=50
                    +
                    443  IF(mp.LT.0.OR.mp.GT.100) iret=32
                    +
                    444  pmp=mp*0.01
                    +
                    445  IF(iret.EQ.0) THEN
                    +
                    446  nb2=2*nb1+1
                    +
                    447  nb3=nb2*nb2
                    +
                    448  nb4=nb3
                    +
                    449  IF(lsw.EQ.1) THEN
                    +
                    450  nb4=ipopt(2)
                    +
                    451  DO ib=1,nb1
                    +
                    452  nb4=nb4+8*ib*ipopt(2+ib)
                    +
                    453  ENDDO
                    +
                    454  ENDIF
                    +
                    455  ELSE
                    +
                    456  nb2=0
                    +
                    457  nb3=0
                    +
                    458  nb4=0
                    +
                    459  ENDIF
                    +
                    460  DO k=1,km
                    +
                    461  DO n=1,no
                    +
                    462  uo(n,k)=0
                    +
                    463  vo(n,k)=0
                    +
                    464  wo(n,k)=0.
                    +
                    465  ENDDO
                    +
                    466  ENDDO
                    +
                    467  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    468  ! LOOP OVER SAMPLE POINTS IN OUTPUT GRID BOX
                    +
                    469  DO nb=1,nb3
                    +
                    470  ! LOCATE INPUT POINTS AND COMPUTE THEIR WEIGHTS AND ROTATIONS
                    +
                    471  jb=(nb-1)/nb2-nb1
                    +
                    472  ib=nb-(jb+nb1)*nb2-nb1-1
                    +
                    473  lb=max(abs(ib),abs(jb))
                    +
                    474  wb=1
                    +
                    475  IF(lsw.EQ.1) wb=ipopt(2+lb)
                    +
                    476  IF(abs(wb).GT.tinyreal) THEN
                    +
                    477  DO n=1,no
                    +
                    478  xptb(n)=xpts(n)+ib/real(nb2)
                    +
                    479  yptb(n)=ypts(n)+jb/real(nb2)
                    +
                    480  ENDDO
                    +
                    481  if(to_station_points)then
                    +
                    482  CALL gdswzd(grid_in, 1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    483  CALL gdswzd(grid_in,-1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    484  else
                    +
                    485  CALL gdswzd(grid_out, 1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    486  CALL gdswzd(grid_in,-1,no,fill,xptb,yptb,rlob,rlab,nv)
                    +
                    487  endif
                    +
                    488  IF(iret.EQ.0.AND.nv.EQ.0.AND.lb.EQ.0) iret=2
                    +
                    489  DO n=1,no
                    +
                    490  xi=xptb(n)
                    +
                    491  yi=yptb(n)
                    +
                    492  IF(abs(xi-fill).GT.tinyreal.AND.abs(yi-fill).GT.tinyreal) THEN
                    +
                    493  i1=nint(xi)
                    +
                    494  j1=nint(yi)
                    +
                    495  n11(n)=grid_in%field_pos(i1, j1)
                    +
                    496  IF(n11(n).GT.0) THEN
                    +
                    497  CALL movect(rlai(n11(n)),rloi(n11(n)),rlat(n),rlon(n),cm11,sm11)
                    +
                    498  c11(n)=cm11*croi(n11(n))+sm11*sroi(n11(n))
                    +
                    499  s11(n)=sm11*croi(n11(n))-cm11*sroi(n11(n))
                    +
                    500  ENDIF
                    +
                    501  ELSE
                    +
                    502  n11(n)=0
                    +
                    503  ENDIF
                    +
                    504  ENDDO
                    +
                    505  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    506  ! INTERPOLATE WITH OR WITHOUT BITMAPS
                    +
                    507  DO k=1,km
                    +
                    508  DO n=1,no
                    +
                    509  IF(n11(n).GT.0) THEN
                    +
                    510  IF(ibi(k).EQ.0.OR.li(n11(n),k)) THEN
                    +
                    511  u11=c11(n)*ui(n11(n),k)-s11(n)*vi(n11(n),k)
                    +
                    512  v11=s11(n)*ui(n11(n),k)+c11(n)*vi(n11(n),k)
                    +
                    513  uo(n,k)=uo(n,k)+wb*u11
                    +
                    514  vo(n,k)=vo(n,k)+wb*v11
                    +
                    515  wo(n,k)=wo(n,k)+wb
                    +
                    516  ENDIF
                    +
                    517  ENDIF
                    +
                    518  ENDDO
                    +
                    519  ENDDO
                    +
                    520  ENDIF
                    +
                    521  ENDDO ! NB LOOP
                    +
                    522  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    523  ! COMPUTE OUTPUT BITMAPS AND FIELDS
                    +
                    524  DO k=1,km
                    +
                    525  ibo(k)=ibi(k)
                    +
                    526  DO n=1,no
                    +
                    527  lo(n,k)=wo(n,k).GE.pmp*nb4
                    +
                    528  IF(lo(n,k)) THEN
                    +
                    529  uo(n,k)=uo(n,k)/wo(n,k)
                    +
                    530  vo(n,k)=vo(n,k)/wo(n,k)
                    +
                    531  urot=crot(n)*uo(n,k)-srot(n)*vo(n,k)
                    +
                    532  vrot=srot(n)*uo(n,k)+crot(n)*vo(n,k)
                    +
                    533  uo(n,k)=urot
                    +
                    534  vo(n,k)=vrot
                    +
                    535  ELSE
                    +
                    536  ibo(k)=1
                    +
                    537  uo(n,k)=0.
                    +
                    538  vo(n,k)=0.
                    +
                    539  ENDIF
                    +
                    540  ENDDO
                    +
                    541  ENDDO
                    +
                    542 
                    +
                    543  select type(grid_out)
                    +
                    544  type is(ip_equid_cylind_grid)
                    +
                    545  CALL polfixv(no,mo,km,rlat,rlon,ibo,lo,uo,vo)
                    +
                    546  end select
                    +
                    547 
                    +
                    548  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    + +
                    550 
                    + + + +
                    subroutine movect(FLAT, FLON, TLAT, TLON, CROT, SROT)
                    This subprogram provides the rotation parameters to move a vector along a great circle from one posit...
                    Definition: movect.F90:26
                    +
                    Driver module for gdswzd routines.
                    Definition: gdswzd_mod.F90:25
                    +
                    Re-export the individual grids.
                    Definition: ip_grids_mod.F90:7
                    +
                    Interpolate scalar fields (neighbor).
                    +
                    subroutine interpolate_neighbor_budget_vector(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate vector fields (budget).
                    +
                    subroutine interpolate_neighbor_budget_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate scalar fields (budget).
                    +
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:7
                    +
                    subroutine, public polfixs(NM, NX, KM, RLAT, IB, LO, GO)
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:30
                    +
                    subroutine, public polfixv(NM, NX, KM, RLAT, RLON, IB, LO, UO, VO)
                    Make multiple pole vector values consistent,.
                    Definition: polfix_mod.F90:125
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/neighbor__interp__mod_8F90.html b/ver-5.0.0/neighbor__interp__mod_8F90.html new file mode 100644 index 00000000..24479a33 --- /dev/null +++ b/ver-5.0.0/neighbor__interp__mod_8F90.html @@ -0,0 +1,135 @@ + + + + + + + +NCEPLIBS-ip: neighbor_interp_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    neighbor_interp_mod.F90 File Reference
                    +
                    +
                    + +

                    Interpolate scalar and vector fields with neighbor interpolation. +More...

                    + +

                    Go to the source code of this file.

                    + + + + +

                    +Data Types

                    interface  neighbor_interp_mod::interpolate_neighbor
                     
                    + + + + +

                    +Modules

                    module  neighbor_interp_mod
                     Interpolate scalar fields (neighbor).
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine neighbor_interp_mod::interpolate_neighbor_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (neighbor). More...
                     
                    subroutine neighbor_interp_mod::interpolate_neighbor_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (neighbor). More...
                     
                    +

                    Detailed Description

                    +

                    Interpolate scalar and vector fields with neighbor interpolation.

                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition in file neighbor_interp_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/neighbor__interp__mod_8F90.js b/ver-5.0.0/neighbor__interp__mod_8F90.js new file mode 100644 index 00000000..90d45008 --- /dev/null +++ b/ver-5.0.0/neighbor__interp__mod_8F90.js @@ -0,0 +1,6 @@ +var neighbor__interp__mod_8F90 = +[ + [ "interpolate_neighbor", "interfaceneighbor__interp__mod_1_1interpolate__neighbor.html", "interfaceneighbor__interp__mod_1_1interpolate__neighbor" ], + [ "interpolate_neighbor_scalar", "neighbor__interp__mod_8F90.html#a78452d1527c6974ad54091f0318e4b1f", null ], + [ "interpolate_neighbor_vector", "neighbor__interp__mod_8F90.html#a744ccffd8cd6c13d360e634db4851756", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/neighbor__interp__mod_8F90_source.html b/ver-5.0.0/neighbor__interp__mod_8F90_source.html new file mode 100644 index 00000000..e874a80a --- /dev/null +++ b/ver-5.0.0/neighbor__interp__mod_8F90_source.html @@ -0,0 +1,515 @@ + + + + + + + +NCEPLIBS-ip: neighbor_interp_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    neighbor_interp_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + +
                    21  use gdswzd_mod
                    +
                    22  use polfix_mod
                    +
                    23  use ip_grids_mod
                    +
                    24  implicit none
                    +
                    25 
                    +
                    26  private
                    +
                    27  public :: interpolate_neighbor
                    +
                    28 
                    + +
                    30  module procedure interpolate_neighbor_scalar
                    +
                    31  module procedure interpolate_neighbor_vector
                    +
                    32  end interface interpolate_neighbor
                    +
                    33 
                    +
                    34  ! Smallest positive real value (use for equality comparisons)
                    +
                    35  REAL :: TINYREAL=tiny(1.0)
                    +
                    36 
                    +
                    37 contains
                    +
                    38 
                    +
                    100  SUBROUTINE interpolate_neighbor_scalar(IPOPT,grid_in,grid_out, &
                    +
                    101  MI,MO,KM,IBI,LI,GI, &
                    +
                    102  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    103  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    104  INTEGER, INTENT(IN ) :: IPOPT(20)
                    +
                    105  INTEGER, INTENT(IN ) :: MI,MO,KM
                    +
                    106  INTEGER, INTENT(IN ) :: IBI(KM)
                    +
                    107  INTEGER, INTENT(INOUT) :: NO
                    +
                    108  INTEGER, INTENT( OUT) :: IRET, IBO(KM)
                    +
                    109  !
                    +
                    110  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    111  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    112  !
                    +
                    113  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    114  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    115  REAL, INTENT( OUT) :: GO(MO,KM)
                    +
                    116  !
                    +
                    117  REAL, PARAMETER :: FILL=-9999.
                    +
                    118  !
                    +
                    119  INTEGER :: I1,J1,IXS,JXS
                    +
                    120  INTEGER :: MSPIRAL,N,K,NK
                    +
                    121  INTEGER :: NV
                    +
                    122  INTEGER :: MX,KXS,KXT,IX,JX,NX
                    +
                    123  !
                    +
                    124  LOGICAL :: SAME_GRIDI, SAME_GRIDO
                    +
                    125  !
                    +
                    126  REAL :: XPTS(MO),YPTS(MO)
                    +
                    127  logical :: to_station_points
                    +
                    128 
                    +
                    129  INTEGER, SAVE :: NOX=-1,iretx=-1
                    +
                    130  INTEGER, ALLOCATABLE, SAVE :: NXY(:)
                    +
                    131  REAL, ALLOCATABLE, SAVE :: RLATX(:),RLONX(:),XPTSX(:),YPTSX(:)
                    +
                    132  class(ip_grid), allocatable, save :: prev_grid_in, prev_grid_out
                    +
                    133  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    134  ! SET PARAMETERS
                    +
                    135  iret=0
                    +
                    136  mspiral=max(ipopt(1),1)
                    +
                    137  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    138  if (.not. allocated(prev_grid_in) .or. .not. allocated(prev_grid_out)) then
                    +
                    139  allocate(prev_grid_in, source = grid_in)
                    +
                    140  allocate(prev_grid_out, source = grid_out)
                    +
                    141 
                    +
                    142  same_gridi = .false.
                    +
                    143  same_grido = .false.
                    +
                    144  else
                    +
                    145  same_gridi = grid_in == prev_grid_in
                    +
                    146  same_grido = grid_out == prev_grid_out
                    +
                    147 
                    +
                    148  if (.not. same_gridi .or. .not. same_grido) then
                    +
                    149  deallocate(prev_grid_in)
                    +
                    150  deallocate(prev_grid_out)
                    +
                    151 
                    +
                    152  allocate(prev_grid_in, source = grid_in)
                    +
                    153  allocate(prev_grid_out, source = grid_out)
                    +
                    154  end if
                    +
                    155  end if
                    +
                    156 
                    +
                    157  select type(grid_out)
                    +
                    158  type is(ip_station_points_grid)
                    +
                    159  to_station_points = .true.
                    +
                    160  class default
                    +
                    161  to_station_points = .false.
                    +
                    162  end select
                    +
                    163  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    164  ! SAVE OR SKIP WEIGHT COMPUTATION
                    +
                    165  IF(iret.EQ.0.AND.(to_station_points.OR..NOT.same_gridi.OR..NOT.same_grido))THEN
                    +
                    166  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    167  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    168  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    169  IF(no.EQ.0) iret=3
                    +
                    170  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    171  ! LOCATE INPUT POINTS
                    +
                    172  CALL gdswzd(grid_in,-1,no,fill,xpts,ypts,rlon,rlat,nv)
                    +
                    173  IF(iret.EQ.0.AND.nv.EQ.0) iret=2
                    +
                    174  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    175  ! ALLOCATE AND SAVE GRID DATA
                    +
                    176  IF(nox.NE.no) THEN
                    +
                    177  IF(nox.GE.0) DEALLOCATE(rlatx,rlonx,xptsx,yptsx,nxy)
                    +
                    178  ALLOCATE(rlatx(no),rlonx(no),xptsx(no),yptsx(no),nxy(no))
                    +
                    179  nox=no
                    +
                    180  ENDIF
                    +
                    181  iretx=iret
                    +
                    182  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    183  ! COMPUTE WEIGHTS
                    +
                    184  IF(iret.EQ.0) THEN
                    +
                    185  !$OMP PARALLEL DO PRIVATE(N) SCHEDULE(STATIC)
                    +
                    186  DO n=1,no
                    +
                    187  rlonx(n)=rlon(n)
                    +
                    188  rlatx(n)=rlat(n)
                    +
                    189  xptsx(n)=xpts(n)
                    +
                    190  yptsx(n)=ypts(n)
                    +
                    191  IF(abs(xpts(n)-fill).GT.tinyreal.AND.abs(ypts(n)-fill).GT.tinyreal) THEN
                    +
                    192  nxy(n) = grid_in%field_pos(nint(xpts(n)), nint(ypts(n)))
                    +
                    193  ELSE
                    +
                    194  nxy(n)=0
                    +
                    195  ENDIF
                    +
                    196  ENDDO
                    +
                    197  ENDIF
                    +
                    198  ENDIF
                    +
                    199  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    200  ! INTERPOLATE OVER ALL FIELDS
                    +
                    201  IF(iret.EQ.0.AND.iretx.EQ.0) THEN
                    +
                    202  IF(.not. to_station_points) THEN
                    +
                    203  no=nox
                    +
                    204  DO n=1,no
                    +
                    205  rlon(n)=rlonx(n)
                    +
                    206  rlat(n)=rlatx(n)
                    +
                    207  ENDDO
                    +
                    208  ENDIF
                    +
                    209  DO n=1,no
                    +
                    210  xpts(n)=xptsx(n)
                    +
                    211  ypts(n)=yptsx(n)
                    +
                    212  ENDDO
                    +
                    213  !$OMP PARALLEL DO PRIVATE(NK,K,N,I1,J1,IXS,JXS,MX,KXS,KXT,IX,JX,NX) SCHEDULE(STATIC)
                    +
                    214  DO nk=1,no*km
                    +
                    215  k=(nk-1)/no+1
                    +
                    216  n=nk-no*(k-1)
                    +
                    217  go(n,k)=0
                    +
                    218  lo(n,k)=.false.
                    +
                    219  IF(nxy(n).GT.0) THEN
                    +
                    220  IF(ibi(k).EQ.0.OR.li(nxy(n),k)) THEN
                    +
                    221  go(n,k)=gi(nxy(n),k)
                    +
                    222  lo(n,k)=.true.
                    +
                    223  ! SPIRAL AROUND UNTIL VALID DATA IS FOUND.
                    +
                    224  ELSEIF(mspiral.GT.1) THEN
                    +
                    225  i1=nint(xpts(n))
                    +
                    226  j1=nint(ypts(n))
                    +
                    227  ixs=int(sign(1.,xpts(n)-i1))
                    +
                    228  jxs=int(sign(1.,ypts(n)-j1))
                    +
                    229  DO mx=2,mspiral**2
                    +
                    230  kxs=int(sqrt(4*mx-2.5))
                    +
                    231  kxt=mx-(kxs**2/4+1)
                    +
                    232  SELECT CASE(mod(kxs,4))
                    +
                    233  CASE(1)
                    +
                    234  ix=i1-ixs*(kxs/4-kxt)
                    +
                    235  jx=j1-jxs*kxs/4
                    +
                    236  CASE(2)
                    +
                    237  ix=i1+ixs*(1+kxs/4)
                    +
                    238  jx=j1-jxs*(kxs/4-kxt)
                    +
                    239  CASE(3)
                    +
                    240  ix=i1+ixs*(1+kxs/4-kxt)
                    +
                    241  jx=j1+jxs*(1+kxs/4)
                    +
                    242  CASE DEFAULT
                    +
                    243  ix=i1-ixs*kxs/4
                    +
                    244  jx=j1+jxs*(kxs/4-kxt)
                    +
                    245  END SELECT
                    +
                    246  nx = grid_in%field_pos(ix, jx)
                    +
                    247  IF(nx.GT.0) THEN
                    +
                    248  IF(li(nx,k)) THEN
                    +
                    249  go(n,k)=gi(nx,k)
                    +
                    250  lo(n,k)=.true.
                    +
                    251  EXIT
                    +
                    252  ENDIF
                    +
                    253  ENDIF
                    +
                    254  ENDDO
                    +
                    255  ENDIF
                    +
                    256  ENDIF
                    +
                    257  ENDDO
                    +
                    258 
                    +
                    259  DO k=1,km
                    +
                    260  ibo(k)=ibi(k)
                    +
                    261  IF(.NOT.all(lo(1:no,k))) ibo(k)=1
                    +
                    262  ENDDO
                    +
                    263 
                    +
                    264  select type(grid_out)
                    +
                    265  type is(ip_equid_cylind_grid)
                    +
                    266  CALL polfixs(no,mo,km,rlat,ibo,lo,go)
                    +
                    267  end select
                    +
                    268  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    269  ELSE
                    +
                    270  IF(iret.EQ.0) iret=iretx
                    +
                    271  IF(.not. to_station_points) no=0
                    +
                    272  ENDIF
                    +
                    273  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    274  END SUBROUTINE interpolate_neighbor_scalar
                    +
                    275 
                    +
                    352  SUBROUTINE interpolate_neighbor_vector(IPOPT,grid_in,grid_out, &
                    +
                    353  MI,MO,KM,IBI,LI,UI,VI, &
                    +
                    354  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    355 
                    +
                    356  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    357  INTEGER, INTENT(IN ) :: IPOPT(20)
                    +
                    358  INTEGER, INTENT(IN ) :: IBI(KM),MI,MO,KM
                    +
                    359  INTEGER, INTENT(INOUT) :: NO
                    +
                    360  INTEGER, INTENT( OUT) :: IRET, IBO(KM)
                    +
                    361  !
                    +
                    362  LOGICAL*1, INTENT(IN ) :: LI(MI,KM)
                    +
                    363  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    364  !
                    +
                    365  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    366  REAL, INTENT(INOUT) :: CROT(MO),SROT(MO)
                    +
                    367  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    368  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    369  !
                    +
                    370  REAL, PARAMETER :: FILL=-9999.
                    +
                    371  !
                    +
                    372  INTEGER :: I1,J1,IXS,JXS,MX
                    +
                    373  INTEGER :: KXS,KXT,IX,JX,NX
                    +
                    374  INTEGER :: MSPIRAL,N,K,NK,NV
                    +
                    375  !
                    +
                    376  LOGICAL :: SAME_GRIDI, SAME_GRIDO
                    +
                    377  !
                    +
                    378  REAL :: CX,SX,CM,SM,UROT,VROT
                    +
                    379  REAL :: XPTS(MO),YPTS(MO)
                    +
                    380  REAL :: CROI(MI),SROI(MI)
                    +
                    381  REAL :: XPTI(MI),YPTI(MI),RLOI(MI),RLAI(MI)
                    +
                    382 
                    +
                    383  logical :: to_station_points
                    +
                    384 
                    +
                    385  INTEGER, SAVE :: NOX=-1,iretx=-1
                    +
                    386  INTEGER, ALLOCATABLE, SAVE :: NXY(:)
                    +
                    387 
                    +
                    388  REAL, ALLOCATABLE, SAVE :: RLATX(:),RLONX(:),XPTSX(:),YPTSX(:)
                    +
                    389  REAL, ALLOCATABLE, SAVE :: CROTX(:),SROTX(:),CXY(:),SXY(:)
                    +
                    390  class(ip_grid), allocatable, save :: prev_grid_in, prev_grid_out
                    +
                    391  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    392  ! SET PARAMETERS
                    +
                    393  iret=0
                    +
                    394  mspiral=max(ipopt(1),1)
                    +
                    395  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    396 
                    +
                    397  if (.not. allocated(prev_grid_in) .or. .not. allocated(prev_grid_out)) then
                    +
                    398  allocate(prev_grid_in, source = grid_in)
                    +
                    399  allocate(prev_grid_out, source = grid_out)
                    +
                    400 
                    +
                    401  same_gridi = .false.
                    +
                    402  same_grido = .false.
                    +
                    403  else
                    +
                    404  same_gridi = grid_in == prev_grid_in
                    +
                    405  same_grido = grid_out == prev_grid_out
                    +
                    406 
                    +
                    407  if (.not. same_gridi .or. .not. same_grido) then
                    +
                    408  deallocate(prev_grid_in)
                    +
                    409  deallocate(prev_grid_out)
                    +
                    410 
                    +
                    411  allocate(prev_grid_in, source = grid_in)
                    +
                    412  allocate(prev_grid_out, source = grid_out)
                    +
                    413  end if
                    +
                    414  end if
                    +
                    415 
                    +
                    416  select type(grid_out)
                    +
                    417  type is(ip_station_points_grid)
                    +
                    418  to_station_points = .true.
                    +
                    419  class default
                    +
                    420  to_station_points = .false.
                    +
                    421  end select
                    +
                    422 
                    +
                    423  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    424  ! SAVE OR SKIP WEIGHT COMPUTATION
                    +
                    425  IF(iret.EQ.0.AND.(to_station_points.OR..NOT.same_gridi.OR..NOT.same_grido))THEN
                    +
                    426  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    427  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    428  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no,crot,srot)
                    +
                    429  IF(no.EQ.0) iret=3
                    +
                    430  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    431  ! LOCATE INPUT POINTS
                    +
                    432  CALL gdswzd(grid_in,-1,no,fill,xpts,ypts,rlon,rlat,nv)
                    +
                    433  IF(iret.EQ.0.AND.nv.EQ.0) iret=2
                    +
                    434  CALL gdswzd(grid_in, 0,mi,fill,xpti,ypti,rloi,rlai,nv,croi,sroi)
                    +
                    435  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    436  ! ALLOCATE AND SAVE GRID DATA
                    +
                    437  IF(nox.NE.no) THEN
                    +
                    438  IF(nox.GE.0) DEALLOCATE(rlatx,rlonx,xptsx,yptsx,crotx,srotx,nxy,cxy,sxy)
                    +
                    439  ALLOCATE(rlatx(no),rlonx(no),xptsx(no),yptsx(no), &
                    +
                    440  crotx(no),srotx(no),nxy(no),cxy(no),sxy(no))
                    +
                    441  nox=no
                    +
                    442  ENDIF
                    +
                    443  iretx=iret
                    +
                    444  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    445  ! COMPUTE WEIGHTS
                    +
                    446  IF(iret.EQ.0) THEN
                    +
                    447  !$OMP PARALLEL DO PRIVATE(N,CM,SM) SCHEDULE(STATIC)
                    +
                    448  DO n=1,no
                    +
                    449  rlonx(n)=rlon(n)
                    +
                    450  rlatx(n)=rlat(n)
                    +
                    451  xptsx(n)=xpts(n)
                    +
                    452  yptsx(n)=ypts(n)
                    +
                    453  crotx(n)=crot(n)
                    +
                    454  srotx(n)=srot(n)
                    +
                    455  IF(abs(xpts(n)-fill).GT.tinyreal.AND.abs(ypts(n)-fill).GT.tinyreal) THEN
                    +
                    456  nxy(n) = grid_in%field_pos(nint(xpts(n)),nint(ypts(n)))
                    +
                    457  IF(nxy(n).GT.0) THEN
                    +
                    458  CALL movect(rlai(nxy(n)),rloi(nxy(n)),rlat(n),rlon(n),cm,sm)
                    +
                    459  cxy(n)=cm*croi(nxy(n))+sm*sroi(nxy(n))
                    +
                    460  sxy(n)=sm*croi(nxy(n))-cm*sroi(nxy(n))
                    +
                    461  ENDIF
                    +
                    462  ELSE
                    +
                    463  nxy(n)=0
                    +
                    464  ENDIF
                    +
                    465  ENDDO
                    +
                    466  ENDIF
                    +
                    467  ENDIF
                    +
                    468  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    469  ! INTERPOLATE OVER ALL FIELDS
                    +
                    470  IF(iret.EQ.0.AND.iretx.EQ.0) THEN
                    +
                    471  IF(.not. to_station_points) THEN
                    +
                    472  no=nox
                    +
                    473  DO n=1,no
                    +
                    474  rlon(n)=rlonx(n)
                    +
                    475  rlat(n)=rlatx(n)
                    +
                    476  crot(n)=crotx(n)
                    +
                    477  srot(n)=srotx(n)
                    +
                    478  ENDDO
                    +
                    479  ENDIF
                    +
                    480  DO n=1,no
                    +
                    481  xpts(n)=xptsx(n)
                    +
                    482  ypts(n)=yptsx(n)
                    +
                    483  ENDDO
                    +
                    484  !$OMP PARALLEL DO &
                    +
                    485  !$OMP PRIVATE(NK,K,N,I1,J1,IXS,JXS,MX,KXS,KXT,IX,JX,NX) &
                    +
                    486  !$OMP PRIVATE(CM,SM,CX,SX,UROT,VROT) SCHEDULE(STATIC)
                    +
                    487  DO nk=1,no*km
                    +
                    488  k=(nk-1)/no+1
                    +
                    489  n=nk-no*(k-1)
                    +
                    490  uo(n,k)=0
                    +
                    491  vo(n,k)=0
                    +
                    492  lo(n,k)=.false.
                    +
                    493  IF(nxy(n).GT.0) THEN
                    +
                    494  IF(ibi(k).EQ.0.OR.li(nxy(n),k)) THEN
                    +
                    495  urot=cxy(n)*ui(nxy(n),k)-sxy(n)*vi(nxy(n),k)
                    +
                    496  vrot=sxy(n)*ui(nxy(n),k)+cxy(n)*vi(nxy(n),k)
                    +
                    497  uo(n,k)=crot(n)*urot-srot(n)*vrot
                    +
                    498  vo(n,k)=srot(n)*urot+crot(n)*vrot
                    +
                    499  lo(n,k)=.true.
                    +
                    500  ! SPIRAL AROUND UNTIL VALID DATA IS FOUND.
                    +
                    501  ELSEIF(mspiral.GT.1) THEN
                    +
                    502  i1=nint(xpts(n))
                    +
                    503  j1=nint(ypts(n))
                    +
                    504  ixs=int(sign(1.,xpts(n)-i1))
                    +
                    505  jxs=int(sign(1.,ypts(n)-j1))
                    +
                    506  DO mx=2,mspiral**2
                    +
                    507  kxs=int(sqrt(4*mx-2.5))
                    +
                    508  kxt=mx-(kxs**2/4+1)
                    +
                    509  SELECT CASE(mod(kxs,4))
                    +
                    510  CASE(1)
                    +
                    511  ix=i1-ixs*(kxs/4-kxt)
                    +
                    512  jx=j1-jxs*kxs/4
                    +
                    513  CASE(2)
                    +
                    514  ix=i1+ixs*(1+kxs/4)
                    +
                    515  jx=j1-jxs*(kxs/4-kxt)
                    +
                    516  CASE(3)
                    +
                    517  ix=i1+ixs*(1+kxs/4-kxt)
                    +
                    518  jx=j1+jxs*(1+kxs/4)
                    +
                    519  CASE DEFAULT
                    +
                    520  ix=i1-ixs*kxs/4
                    +
                    521  jx=j1+jxs*(kxs/4-kxt)
                    +
                    522  END SELECT
                    +
                    523  nx = grid_in%field_pos(ix, jx)
                    +
                    524  IF(nx.GT.0) THEN
                    +
                    525  IF(li(nx,k)) THEN
                    +
                    526  CALL movect(rlai(nx),rloi(nx),rlat(n),rlon(n),cm,sm)
                    +
                    527  cx=cm*croi(nx)+sm*sroi(nx)
                    +
                    528  sx=sm*croi(nx)-cm*sroi(nx)
                    +
                    529  urot=cx*ui(nx,k)-sx*vi(nx,k)
                    +
                    530  vrot=sx*ui(nx,k)+cx*vi(nx,k)
                    +
                    531  uo(n,k)=crot(n)*urot-srot(n)*vrot
                    +
                    532  vo(n,k)=srot(n)*urot+crot(n)*vrot
                    +
                    533  lo(n,k)=.true.
                    +
                    534  EXIT
                    +
                    535  ENDIF
                    +
                    536  ENDIF
                    +
                    537  ENDDO
                    +
                    538  ENDIF
                    +
                    539  ENDIF
                    +
                    540  ENDDO
                    +
                    541  DO k=1,km
                    +
                    542  ibo(k)=ibi(k)
                    +
                    543  IF(.NOT.all(lo(1:no,k))) ibo(k)=1
                    +
                    544  ENDDO
                    +
                    545 
                    +
                    546  select type(grid_out)
                    +
                    547  type is(ip_equid_cylind_grid)
                    +
                    548  CALL polfixv(no,mo,km,rlat,rlon,ibo,lo,uo,vo)
                    +
                    549  end select
                    +
                    550 
                    +
                    551  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    552  ELSE
                    +
                    553  IF(iret.EQ.0) iret=iretx
                    +
                    554  IF(.not. to_station_points) no=0
                    +
                    555  ENDIF
                    +
                    556  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    557  END SUBROUTINE interpolate_neighbor_vector
                    +
                    558 
                    +
                    559 end module neighbor_interp_mod
                    + + +
                    subroutine movect(FLAT, FLON, TLAT, TLON, CROT, SROT)
                    This subprogram provides the rotation parameters to move a vector along a great circle from one posit...
                    Definition: movect.F90:26
                    +
                    Driver module for gdswzd routines.
                    Definition: gdswzd_mod.F90:25
                    +
                    Re-export the individual grids.
                    Definition: ip_grids_mod.F90:7
                    +
                    Interpolate scalar fields (neighbor).
                    +
                    subroutine interpolate_neighbor_vector(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate vector fields (neighbor).
                    +
                    subroutine interpolate_neighbor_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate scalar fields (neighbor).
                    +
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:7
                    +
                    subroutine, public polfixs(NM, NX, KM, RLAT, IB, LO, GO)
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:30
                    +
                    subroutine, public polfixv(NM, NX, KM, RLAT, RLON, IB, LO, UO, VO)
                    Make multiple pole vector values consistent,.
                    Definition: polfix_mod.F90:125
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/open.png b/ver-5.0.0/open.png new file mode 100644 index 00000000..30f75c7e Binary files /dev/null and b/ver-5.0.0/open.png differ diff --git a/ver-5.0.0/polfix__mod_8F90.html b/ver-5.0.0/polfix__mod_8F90.html new file mode 100644 index 00000000..84087536 --- /dev/null +++ b/ver-5.0.0/polfix__mod_8F90.html @@ -0,0 +1,129 @@ + + + + + + + +NCEPLIBS-ip: polfix_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    polfix_mod.F90 File Reference
                    +
                    +
                    + +

                    Make multiple pole scalar values consistent. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Modules

                    module  polfix_mod
                     Make multiple pole scalar values consistent.
                     
                    + + + + + + + +

                    +Functions/Subroutines

                    subroutine, public polfix_mod::polfixs (NM, NX, KM, RLAT, IB, LO, GO)
                     Make multiple pole scalar values consistent. More...
                     
                    subroutine, public polfix_mod::polfixv (NM, NX, KM, RLAT, RLON, IB, LO, UO, VO)
                     Make multiple pole vector values consistent,. More...
                     
                    +

                    Detailed Description

                    +

                    Make multiple pole scalar values consistent.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    2021-07-21
                    + +

                    Definition in file polfix_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/polfix__mod_8F90.js b/ver-5.0.0/polfix__mod_8F90.js new file mode 100644 index 00000000..b8ccde41 --- /dev/null +++ b/ver-5.0.0/polfix__mod_8F90.js @@ -0,0 +1,5 @@ +var polfix__mod_8F90 = +[ + [ "polfixs", "polfix__mod_8F90.html#a15df1ba2e1fcad1e9465c4aa3a2ba0d6", null ], + [ "polfixv", "polfix__mod_8F90.html#aeefc8f045777f6d962d9ec539ef6007d", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/polfix__mod_8F90_source.html b/ver-5.0.0/polfix__mod_8F90_source.html new file mode 100644 index 00000000..8aec2a2f --- /dev/null +++ b/ver-5.0.0/polfix__mod_8F90_source.html @@ -0,0 +1,288 @@ + + + + + + + +NCEPLIBS-ip: polfix_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    polfix_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    +
                    7 module polfix_mod
                    +
                    8  implicit none
                    +
                    9 
                    +
                    10  private
                    +
                    11  public :: polfixs, polfixv
                    +
                    12 
                    +
                    13 contains
                    +
                    14 
                    +
                    29  SUBROUTINE polfixs(NM,NX,KM,RLAT,IB,LO,GO)
                    +
                    30  IMPLICIT NONE
                    +
                    31  !
                    +
                    32  INTEGER, INTENT(IN ) :: nm, nx, km
                    +
                    33  INTEGER, INTENT(IN ) :: ib(km)
                    +
                    34  !
                    +
                    35  LOGICAL*1, INTENT(INOUT) :: lo(nx,km)
                    +
                    36  !
                    +
                    37  REAL, INTENT(IN ) :: rlat(nm)
                    +
                    38  REAL, INTENT(INOUT) :: go(nx,km)
                    +
                    39  !
                    +
                    40  REAL, PARAMETER :: rlatnp=89.9995
                    +
                    41  REAL, PARAMETER :: rlatsp=-rlatnp
                    +
                    42  !
                    +
                    43  INTEGER :: k, n
                    +
                    44  !
                    +
                    45  REAL :: wnp, gnp, tnp, wsp, gsp, tsp
                    +
                    46  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    47  DO k=1,km
                    +
                    48  wnp=0.
                    +
                    49  gnp=0.
                    +
                    50  tnp=0.
                    +
                    51  wsp=0.
                    +
                    52  gsp=0.
                    +
                    53  tsp=0.
                    +
                    54  ! AVERAGE MULTIPLE POLE VALUES
                    +
                    55  !$OMP PARALLEL DO PRIVATE(N) REDUCTION(+:WNP,GNP,TNP,WSP,GSP,TSP) SCHEDULE(STATIC)
                    +
                    56  DO n=1,nm
                    +
                    57  IF(rlat(n).GE.rlatnp) THEN
                    +
                    58  wnp=wnp+1
                    +
                    59  IF(ib(k).EQ.0.OR.lo(n,k)) THEN
                    +
                    60  gnp=gnp+go(n,k)
                    +
                    61  tnp=tnp+1
                    +
                    62  ENDIF
                    +
                    63  ELSEIF(rlat(n).LE.rlatsp) THEN
                    +
                    64  wsp=wsp+1
                    +
                    65  IF(ib(k).EQ.0.OR.lo(n,k)) THEN
                    +
                    66  gsp=gsp+go(n,k)
                    +
                    67  tsp=tsp+1
                    +
                    68  ENDIF
                    +
                    69  ENDIF
                    +
                    70  ENDDO
                    +
                    71  !$OMP END PARALLEL DO
                    +
                    72  ! DISTRIBUTE AVERAGE VALUES BACK TO MULTIPLE POLES
                    +
                    73  IF(wnp.GT.1) THEN
                    +
                    74  IF(tnp.GE.wnp/2) THEN
                    +
                    75  gnp=gnp/tnp
                    +
                    76  ELSE
                    +
                    77  gnp=0.
                    +
                    78  ENDIF
                    +
                    79  !$OMP PARALLEL DO PRIVATE(N) SCHEDULE(STATIC)
                    +
                    80  DO n=1,nm
                    +
                    81  IF(rlat(n).GE.rlatnp) THEN
                    +
                    82  IF(ib(k).NE.0) lo(n,k)=tnp.GE.wnp/2
                    +
                    83  go(n,k)=gnp
                    +
                    84  ENDIF
                    +
                    85  ENDDO
                    +
                    86  !$OMP END PARALLEL DO
                    +
                    87  ENDIF
                    +
                    88  IF(wsp.GT.1) THEN
                    +
                    89  IF(tsp.GE.wsp/2) THEN
                    +
                    90  gsp=gsp/tsp
                    +
                    91  ELSE
                    +
                    92  gsp=0.
                    +
                    93  ENDIF
                    +
                    94  !$OMP PARALLEL DO PRIVATE(N) SCHEDULE(STATIC)
                    +
                    95  DO n=1,nm
                    +
                    96  IF(rlat(n).LE.rlatsp) THEN
                    +
                    97  IF(ib(k).NE.0) lo(n,k)=tsp.GE.wsp/2
                    +
                    98  go(n,k)=gsp
                    +
                    99  ENDIF
                    +
                    100  ENDDO
                    +
                    101  !$OMP END PARALLEL DO
                    +
                    102  ENDIF
                    +
                    103  ENDDO
                    +
                    104  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    105  END SUBROUTINE polfixs
                    +
                    106 
                    +
                    124  SUBROUTINE polfixv(NM,NX,KM,RLAT,RLON,IB,LO,UO,VO)
                    +
                    125  IMPLICIT NONE
                    +
                    126  !
                    +
                    127  INTEGER, INTENT(IN ) :: ib(km), nm, nx, km
                    +
                    128  !
                    +
                    129  LOGICAL*1, INTENT(INOUT) :: lo(nx,km)
                    +
                    130  !
                    +
                    131  REAL, INTENT(IN ) :: rlat(nm), rlon(nm)
                    +
                    132  REAL, INTENT(INOUT) :: uo(nx,km), vo(nx,km)
                    +
                    133  !
                    +
                    134  REAL, PARAMETER :: rlatnp=89.9995
                    +
                    135  REAL, PARAMETER :: rlatsp=-rlatnp
                    +
                    136  REAL, PARAMETER :: pi=3.14159265358979
                    +
                    137  REAL, PARAMETER :: dpr=180./pi
                    +
                    138  !
                    +
                    139  INTEGER :: k, n
                    +
                    140  !
                    +
                    141  REAL :: clon(nm),slon(nm)
                    +
                    142  REAL :: tnp, unp, vnp, wnp
                    +
                    143  REAL :: tsp, usp, vsp, wsp
                    +
                    144  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    145  !$OMP PARALLEL DO PRIVATE(N) SCHEDULE(STATIC)
                    +
                    146  DO n=1,nm
                    +
                    147  clon(n)=cos(rlon(n)/dpr)
                    +
                    148  slon(n)=sin(rlon(n)/dpr)
                    +
                    149  ENDDO
                    +
                    150  !$OMP END PARALLEL DO
                    +
                    151  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    152  DO k=1,km
                    +
                    153  wnp=0.
                    +
                    154  unp=0.
                    +
                    155  vnp=0.
                    +
                    156  tnp=0.
                    +
                    157  wsp=0.
                    +
                    158  usp=0.
                    +
                    159  vsp=0.
                    +
                    160  tsp=0.
                    +
                    161  ! AVERAGE MULTIPLE POLE VALUES
                    +
                    162  !$OMP PARALLEL DO PRIVATE(N) REDUCTION(+:WNP,UNP,VNP,TNP,WSP,USP,VSP,TSP) SCHEDULE(STATIC)
                    +
                    163  DO n=1,nm
                    +
                    164  IF(rlat(n).GE.rlatnp) THEN
                    +
                    165  wnp=wnp+1
                    +
                    166  IF(ib(k).EQ.0.OR.lo(n,k)) THEN
                    +
                    167  unp=unp+(clon(n)*uo(n,k)-slon(n)*vo(n,k))
                    +
                    168  vnp=vnp+(slon(n)*uo(n,k)+clon(n)*vo(n,k))
                    +
                    169  tnp=tnp+1
                    +
                    170  ENDIF
                    +
                    171  ELSEIF(rlat(n).LE.rlatsp) THEN
                    +
                    172  wsp=wsp+1
                    +
                    173  IF(ib(k).EQ.0.OR.lo(n,k)) THEN
                    +
                    174  usp=usp+(clon(n)*uo(n,k)+slon(n)*vo(n,k))
                    +
                    175  vsp=vsp+(-slon(n)*uo(n,k)+clon(n)*vo(n,k))
                    +
                    176  tsp=tsp+1
                    +
                    177  ENDIF
                    +
                    178  ENDIF
                    +
                    179  ENDDO
                    +
                    180  !$OMP END PARALLEL DO
                    +
                    181  ! DISTRIBUTE AVERAGE VALUES BACK TO MULTIPLE POLES
                    +
                    182  IF(wnp.GT.1) THEN
                    +
                    183  IF(tnp.GE.wnp/2) THEN
                    +
                    184  unp=unp/tnp
                    +
                    185  vnp=vnp/tnp
                    +
                    186  ELSE
                    +
                    187  unp=0.
                    +
                    188  vnp=0.
                    +
                    189  ENDIF
                    +
                    190  !$OMP PARALLEL DO PRIVATE(N) SCHEDULE(STATIC)
                    +
                    191  DO n=1,nm
                    +
                    192  IF(rlat(n).GE.rlatnp) THEN
                    +
                    193  IF(ib(k).NE.0) lo(n,k)=tnp.GE.wnp/2
                    +
                    194  uo(n,k)=clon(n)*unp+slon(n)*vnp
                    +
                    195  vo(n,k)=-slon(n)*unp+clon(n)*vnp
                    +
                    196  ENDIF
                    +
                    197  ENDDO
                    +
                    198  !$OMP END PARALLEL DO
                    +
                    199  ENDIF
                    +
                    200  IF(wsp.GT.1) THEN
                    +
                    201  IF(tsp.GE.wsp/2) THEN
                    +
                    202  usp=usp/wsp
                    +
                    203  vsp=vsp/wsp
                    +
                    204  ELSE
                    +
                    205  usp=0.
                    +
                    206  vsp=0.
                    +
                    207  ENDIF
                    +
                    208  !$OMP PARALLEL DO PRIVATE(N) SCHEDULE(STATIC)
                    +
                    209  DO n=1,nm
                    +
                    210  IF(rlat(n).LE.rlatsp) THEN
                    +
                    211  IF(ib(k).NE.0) lo(n,k)=tsp.GE.wsp/2
                    +
                    212  uo(n,k)=clon(n)*usp-slon(n)*vsp
                    +
                    213  vo(n,k)=slon(n)*usp+clon(n)*vsp
                    +
                    214  ENDIF
                    +
                    215  ENDDO
                    +
                    216  !$OMP END PARALLEL DO
                    +
                    217  ENDIF
                    +
                    218  ENDDO
                    +
                    219  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    220  END SUBROUTINE polfixv
                    +
                    221 end module polfix_mod
                    +
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:7
                    +
                    subroutine, public polfixs(NM, NX, KM, RLAT, IB, LO, GO)
                    Make multiple pole scalar values consistent.
                    Definition: polfix_mod.F90:30
                    +
                    subroutine, public polfixv(NM, NX, KM, RLAT, RLON, IB, LO, UO, VO)
                    Make multiple pole vector values consistent,.
                    Definition: polfix_mod.F90:125
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/resize.js b/ver-5.0.0/resize.js new file mode 100644 index 00000000..e1ad0fe3 --- /dev/null +++ b/ver-5.0.0/resize.js @@ -0,0 +1,140 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/ver-5.0.0/search/all_0.html b/ver-5.0.0/search/all_0.html new file mode 100644 index 00000000..1ec5b2d5 --- /dev/null +++ b/ver-5.0.0/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_0.js b/ver-5.0.0/search/all_0.js new file mode 100644 index 00000000..bba3ab42 --- /dev/null +++ b/ver-5.0.0/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['an_0',['an',['../namespaceip__lambert__conf__grid__mod.html#a82b75fe2d8495aab75b225c6309e61c8',1,'ip_lambert_conf_grid_mod']]] +]; diff --git a/ver-5.0.0/search/all_1.html b/ver-5.0.0/search/all_1.html new file mode 100644 index 00000000..9f80e904 --- /dev/null +++ b/ver-5.0.0/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_1.js b/ver-5.0.0/search/all_1.js new file mode 100644 index 00000000..ce0809b3 --- /dev/null +++ b/ver-5.0.0/search/all_1.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['bicubic_5finterp_5fid_1',['bicubic_interp_id',['../namespaceip__interpolators__mod.html#adfdc7760718083d85618df85320c495e',1,'ip_interpolators_mod']]], + ['bicubic_5finterp_5fmod_2',['bicubic_interp_mod',['../namespacebicubic__interp__mod.html',1,'']]], + ['bicubic_5finterp_5fmod_2ef90_3',['bicubic_interp_mod.F90',['../bicubic__interp__mod_8F90.html',1,'']]], + ['bilinear_5finterp_5fid_4',['bilinear_interp_id',['../namespaceip__interpolators__mod.html#a753e4b6c113a9a8b226c3c834786f3e1',1,'ip_interpolators_mod']]], + ['bilinear_5finterp_5fmod_5',['bilinear_interp_mod',['../namespacebilinear__interp__mod.html',1,'']]], + ['bilinear_5finterp_5fmod_2ef90_6',['bilinear_interp_mod.F90',['../bilinear__interp__mod_8F90.html',1,'']]], + ['blat_7',['blat',['../namespaceip__gaussian__grid__mod.html#ae2697b9c4dbe4945276633d1951e79fc',1,'ip_gaussian_grid_mod']]], + ['budget_5finterp_5fid_8',['budget_interp_id',['../namespaceip__interpolators__mod.html#a7df843ca4a64e3178f448aebf7dad359',1,'ip_interpolators_mod']]], + ['budget_5finterp_5fmod_9',['budget_interp_mod',['../namespacebudget__interp__mod.html',1,'']]], + ['budget_5finterp_5fmod_2ef90_10',['budget_interp_mod.F90',['../budget__interp__mod_8F90.html',1,'']]] +]; diff --git a/ver-5.0.0/search/all_10.html b/ver-5.0.0/search/all_10.html new file mode 100644 index 00000000..3bf11961 --- /dev/null +++ b/ver-5.0.0/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_10.js b/ver-5.0.0/search/all_10.js new file mode 100644 index 00000000..fc9c74b6 --- /dev/null +++ b/ver-5.0.0/search/all_10.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['radb2_237',['radb2',['../fftpack_8F.html#ae63abe3a02989ed4fbd60b50bc0c6dda',1,'fftpack.F']]], + ['radb3_238',['radb3',['../fftpack_8F.html#a6129001ac4cdf5d5a345edc2822d8014',1,'fftpack.F']]], + ['radb4_239',['radb4',['../fftpack_8F.html#a3b5aab129020968eaf92f2e6ca0785ef',1,'fftpack.F']]], + ['radb5_240',['radb5',['../fftpack_8F.html#a2b6492f922cbee03af5b89d52356abf1',1,'fftpack.F']]], + ['radbg_241',['radbg',['../fftpack_8F.html#af5a2521b66fece6cc768206c1df0d20b',1,'fftpack.F']]], + ['radf2_242',['radf2',['../fftpack_8F.html#a70e2420dd5bee9e41eb6c15bbad5eef6',1,'fftpack.F']]], + ['radf3_243',['radf3',['../fftpack_8F.html#a51374398f8edd5701987ce483c739592',1,'fftpack.F']]], + ['radf4_244',['radf4',['../fftpack_8F.html#ae9910ca606fd0cdb03b5b3b98533f486',1,'fftpack.F']]], + ['radf5_245',['radf5',['../fftpack_8F.html#a6d852c36924b038f77a24b8e22205add',1,'fftpack.F']]], + ['radfg_246',['radfg',['../fftpack_8F.html#ad5dbca6bb6ee7c0a86a1e140627de1b2',1,'fftpack.F']]], + ['rerth_247',['rerth',['../namespaceip__lambert__conf__grid__mod.html#a9f0538d092cd7d2829a5b98247eb560d',1,'ip_lambert_conf_grid_mod::rerth()'],['../namespaceip__equid__cylind__grid__mod.html#ab5b84516fab9cee3316c07450f49746c',1,'ip_equid_cylind_grid_mod::rerth()'],['../namespaceip__gaussian__grid__mod.html#a8213e02ccf4325ad5db14f2e48990da2',1,'ip_gaussian_grid_mod::rerth()'],['../namespaceip__mercator__grid__mod.html#adaa27c5d41ee24185b6d020420ce9419',1,'ip_mercator_grid_mod::rerth()'],['../namespaceip__polar__stereo__grid__mod.html#a3315b2efb5cb9aebc0b2cb2773aa20b5',1,'ip_polar_stereo_grid_mod::rerth()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#aed7a425f4d300fe14ac1b48d76378edb',1,'ip_rot_equid_cylind_egrid_mod::rerth()'],['../namespaceip__rot__equid__cylind__grid__mod.html#ae08318392106d174ab36cf7dc05c570b',1,'ip_rot_equid_cylind_grid_mod::rerth()'],['../structip__grid__mod_1_1ip__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8',1,'ip_grid_mod::ip_grid::rerth()']]], + ['rerth_5fwgs84_248',['rerth_wgs84',['../namespaceip__constants__mod.html#ac6a501512f426673f064edbecd7a62fb',1,'ip_constants_mod']]], + ['rfftb_249',['rfftb',['../fftpack_8F.html#a79ba25d1f342858b0faa3c3e3585ec88',1,'fftpack.F']]], + ['rfftb1_250',['rfftb1',['../fftpack_8F.html#afa735c298a72dd1c13ab1c45e737c066',1,'fftpack.F']]], + ['rfftf_251',['rfftf',['../fftpack_8F.html#afbb5dc9c70ebe24759d5ffec1d3e42e2',1,'fftpack.F']]], + ['rfftf1_252',['rfftf1',['../fftpack_8F.html#acdf9efa42dc73f90af444ee0da649a09',1,'fftpack.F']]], + ['rffti_253',['rffti',['../fftpack_8F.html#a50f1237ff5990436609962c0eae406db',1,'fftpack.F']]], + ['rffti1_254',['rffti1',['../fftpack_8F.html#ae3569ef7a371390f6bf38417865ef71b',1,'fftpack.F']]], + ['rlat1_255',['rlat1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a493e017343795e89f794bae5229eb6a7',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlat1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#acdf76c4b3444d0d85dbf9ee09b5f35fc',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlat1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a618bb61b83c39dd344264933e51fa932',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlat1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a1f98e5046c7c1eda30735e5919b79cc7',1,'ip_mercator_grid_mod::ip_mercator_grid::rlat1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a00565fd51d334324e9d68d1fc8c52640',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlat1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a884837892bf520ea7950f95d8c562a08',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlat1()']]], + ['rlat2_256',['rlat2',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#acfd62fa8199f9b57b555364bca920e42',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid']]], + ['rlati_257',['rlati',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3826e3e6b4f3264932c890a3c9804cef',1,'ip_mercator_grid_mod::ip_mercator_grid']]], + ['rlati1_258',['rlati1',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a7dcfaef2adc076604ad32d1ecd1f1cb4',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid']]], + ['rlati2_259',['rlati2',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ae8b2c54b8d00685e179fec7786422f3b',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid']]], + ['rlon0_260',['rlon0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a65579b8557bffeedb99f384048dea14e',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a7b111301b2fc41270869ee182512f13c',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::rlon0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a134acf8ab7f40ff49ce8e03daad900e6',1,'ip_rot_equid_cylind_egrid_mod::rlon0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#a620a55069afd33b301240533915387df',1,'ip_rot_equid_cylind_grid_mod::rlon0()']]], + ['rlon1_261',['rlon1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa927f5ecca3f2880ad88e60c8d4b8871',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a583517b74d3c1c1b354fefe0d6871c4d',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlon1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ab7e9e396d5eeb63c8079a901c2c8743f',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlon1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#adb673d1f9dbc7d7ee6f87513a2eed723',1,'ip_mercator_grid_mod::ip_mercator_grid::rlon1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a61650c9ce1a2ce44243bf491e5d93728',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlon1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a3684458139a165cd719b054637a7d121',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon1()']]], + ['rlon2_262',['rlon2',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3794a22c4866631c6b5bc6a8871e3e44',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlon2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a1e5b9f8ab3de743b5e392478694154ea',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon2()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a0b9bfef606985f5e682f4ddb84c99d2c',1,'ip_mercator_grid_mod::ip_mercator_grid::rlon2()']]], + ['rot_5fequid_5fcylind_5fb_5fgrid_5fid_5fgrib1_263',['rot_equid_cylind_b_grid_id_grib1',['../namespaceip__grid__mod.html#adb7d7d18410aaae52d7eee2e97f04b14',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fe_5fgrid_5fid_5fgrib1_264',['rot_equid_cylind_e_grid_id_grib1',['../namespaceip__grid__mod.html#a4e11ce780c3d165c282684188890af1c',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5ferror_265',['rot_equid_cylind_egrid_error',['../namespaceip__rot__equid__cylind__egrid__mod.html#a69d4e473a1a276b855d37518dc6f1d48',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fgrid_5farea_266',['rot_equid_cylind_egrid_grid_area',['../namespaceip__rot__equid__cylind__egrid__mod.html#a4e6c3a758f9a6474d3e499fabeac0640',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fmap_5fjacob_267',['rot_equid_cylind_egrid_map_jacob',['../namespaceip__rot__equid__cylind__egrid__mod.html#a45b87f77888d428ca0f551edae8da94e',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fvect_5frot_268',['rot_equid_cylind_egrid_vect_rot',['../namespaceip__rot__equid__cylind__egrid__mod.html#a9ac1f76f515981c464e8391d8c941888',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5ferror_269',['rot_equid_cylind_error',['../namespaceip__rot__equid__cylind__grid__mod.html#a1cc09c83f9a3815d8c5f8ed2f239f53f',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fgrid_5farea_270',['rot_equid_cylind_grid_area',['../namespaceip__rot__equid__cylind__grid__mod.html#ad8f1133eb6809705c15337134eafe9fd',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fgrid_5fid_5fgrib2_271',['rot_equid_cylind_grid_id_grib2',['../namespaceip__grid__mod.html#adc7c650c524eb6425e77b2e0eac0979a',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fmap_5fjacob_272',['rot_equid_cylind_map_jacob',['../namespaceip__rot__equid__cylind__grid__mod.html#a985f1dc1a20444cef706d4bb20e0841b',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fvect_5frot_273',['rot_equid_cylind_vect_rot',['../namespaceip__rot__equid__cylind__grid__mod.html#a3de472bfc18740a7d985f560f3541c10',1,'ip_rot_equid_cylind_grid_mod']]] +]; diff --git a/ver-5.0.0/search/all_11.html b/ver-5.0.0/search/all_11.html new file mode 100644 index 00000000..c9f79d28 --- /dev/null +++ b/ver-5.0.0/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_11.js b/ver-5.0.0/search/all_11.js new file mode 100644 index 00000000..b3911194 --- /dev/null +++ b/ver-5.0.0/search/all_11.js @@ -0,0 +1,117 @@ +var searchData= +[ + ['sbd_274',['sbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a246ec0afc422f6cfcc3758ff62c6017f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]], + ['scfft_275',['scfft',['../fftpack_8F.html#a369071ea2d380c9d91ba36d1bf375e33',1,'fftpack.F']]], + ['scrft_276',['scrft',['../fftpack_8F.html#ac69cbd64be972c20a4424f5327fb4b36',1,'fftpack.F']]], + ['slat_277',['slat',['../namespaceip__rot__equid__cylind__egrid__mod.html#ae1f8503816477fb685fbadc7a9e50f0b',1,'ip_rot_equid_cylind_egrid_mod']]], + ['slat0_278',['slat0',['../namespaceip__rot__equid__cylind__grid__mod.html#a64831f92d5306513987a98e97a32aea1',1,'ip_rot_equid_cylind_grid_mod::slat0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a72199c827ab3218b7f2aba35ad30b94d',1,'ip_rot_equid_cylind_egrid_mod::slat0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a8a02c6fc1ad38174e15679e69b5cbfdc',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::slat0()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#aca4b0ae69f756ef4854369bf88423d66',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::slat0()']]], + ['slatr_279',['slatr',['../namespaceip__rot__equid__cylind__egrid__mod.html#a4ccccb64d3e7236d8cac19c279aab900',1,'ip_rot_equid_cylind_egrid_mod::slatr()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aae4f801c95b7b61e2e6b1dd824d3688b',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::slatr()']]], + ['spanaly_280',['spanaly',['../spanaly_8f.html#a5cc846d796d393d7499cde0f3d1d6e6a',1,'spanaly.f']]], + ['spanaly_2ef_281',['spanaly.f',['../spanaly_8f.html',1,'']]], + ['spdz2uv_282',['spdz2uv',['../spdz2uv_8f.html#ae3a4a74c49f78a25425b610743dc0692',1,'spdz2uv.f']]], + ['spdz2uv_2ef_283',['spdz2uv.f',['../spdz2uv_8f.html',1,'']]], + ['spectral_5finterp_5fid_284',['spectral_interp_id',['../namespaceip__interpolators__mod.html#a83ba2963a0b686c6ae67b53f9c385851',1,'ip_interpolators_mod']]], + ['spectral_5finterp_5fmod_285',['spectral_interp_mod',['../namespacespectral__interp__mod.html',1,'']]], + ['spectral_5finterp_5fmod_2ef90_286',['spectral_interp_mod.F90',['../spectral__interp__mod_8F90.html',1,'']]], + ['speps_287',['speps',['../speps_8f.html#a0ab523ec5e1393ffca970897e63a9131',1,'speps.f']]], + ['speps_2ef_288',['speps.f',['../speps_8f.html',1,'']]], + ['spfft_289',['spfft',['../spfft_8f.html#a1041af8ac4f6a2407b5b7a799a13fb5d',1,'spfft.f']]], + ['spfft_2ef_290',['spfft.f',['../spfft_8f.html',1,'']]], + ['spfft1_291',['spfft1',['../spfft1_8f.html#ac63643472eda83948c0b249b611346d6',1,'spfft1.f']]], + ['spfft1_2ef_292',['spfft1.f',['../spfft1_8f.html',1,'']]], + ['spffte_293',['spffte',['../spffte_8f.html#af06489254bd3e99030b39744fce32233',1,'spffte.f']]], + ['spffte_2ef_294',['spffte.f',['../spffte_8f.html',1,'']]], + ['spfftpt_295',['spfftpt',['../spfftpt_8f.html#ad16e674ce87bd762a714853967f81356',1,'spfftpt.f']]], + ['spfftpt_2ef_296',['spfftpt.f',['../spfftpt_8f.html',1,'']]], + ['spgradq_297',['spgradq',['../spgradq_8f.html#a0bb358cf2a405ce9f17c6e5dfde65849',1,'spgradq.f']]], + ['spgradq_2ef_298',['spgradq.f',['../spgradq_8f.html',1,'']]], + ['spgradx_299',['spgradx',['../spgradx_8f.html#a749bc07e763e9cd44490fff2284d00b4',1,'spgradx.f']]], + ['spgradx_2ef_300',['spgradx.f',['../spgradx_8f.html',1,'']]], + ['spgrady_301',['spgrady',['../spgrady_8f.html#a1b3e38e56560de7d7dcf19ea3e931cf1',1,'spgrady.f']]], + ['spgrady_2ef_302',['spgrady.f',['../spgrady_8f.html',1,'']]], + ['splaplac_303',['splaplac',['../splaplac_8f.html#a64338955857a3cf58283146940e7ae42',1,'splaplac.f']]], + ['splaplac_2ef_304',['splaplac.f',['../splaplac_8f.html',1,'']]], + ['splat_305',['splat',['../splat_8F.html#aa6db21451bb67635e7e4426546140e11',1,'splat.F']]], + ['splat_2ef_306',['splat.F',['../splat_8F.html',1,'']]], + ['splegend_307',['splegend',['../splegend_8f.html#a9c68adc80e97c43ac983b955dd6cabac',1,'splegend.f']]], + ['splegend_2ef_308',['splegend.f',['../splegend_8f.html',1,'']]], + ['sppad_309',['sppad',['../sppad_8f.html#a4338b3ccd7844251bbdabf3da1d6476e',1,'sppad.f']]], + ['sppad_2ef_310',['sppad.f',['../sppad_8f.html',1,'']]], + ['spsynth_311',['spsynth',['../spsynth_8f.html#aa6a8113a459918728c876673520126bf',1,'spsynth.f']]], + ['spsynth_2ef_312',['spsynth.f',['../spsynth_8f.html',1,'']]], + ['sptez_313',['sptez',['../sptez_8f.html#a418a7d182834b2e2dafae2fe881ba9fc',1,'sptez.f']]], + ['sptez_2ef_314',['sptez.f',['../sptez_8f.html',1,'']]], + ['sptezd_315',['sptezd',['../sptezd_8f.html#a6c30b52dcb4da9e403eeeb307b9516d7',1,'sptezd.f']]], + ['sptezd_2ef_316',['sptezd.f',['../sptezd_8f.html',1,'']]], + ['sptezm_317',['sptezm',['../sptezm_8f.html#a1430a0df2cba7eefaf67c939684be2d1',1,'sptezm.f']]], + ['sptezm_2ef_318',['sptezm.f',['../sptezm_8f.html',1,'']]], + ['sptezmd_319',['sptezmd',['../sptezmd_8f.html#a2b9ead06893e51604bfb18928ddee996',1,'sptezmd.f']]], + ['sptezmd_2ef_320',['sptezmd.f',['../sptezmd_8f.html',1,'']]], + ['sptezmv_321',['sptezmv',['../sptezmv_8f.html#a22dc4fc10c5225ec8d3c12ed3cb4786e',1,'sptezmv.f']]], + ['sptezmv_2ef_322',['sptezmv.f',['../sptezmv_8f.html',1,'']]], + ['sptezv_323',['sptezv',['../sptezv_8f.html#a83e49d961c40a2621c3f2afe70846226',1,'sptezv.f']]], + ['sptezv_2ef_324',['sptezv.f',['../sptezv_8f.html',1,'']]], + ['sptgpm_325',['sptgpm',['../sptgpm_8f.html#a6cffaeaa602eaae5c03166f48065158d',1,'sptgpm.f']]], + ['sptgpm_2ef_326',['sptgpm.f',['../sptgpm_8f.html',1,'']]], + ['sptgpmd_327',['sptgpmd',['../sptgpmd_8f.html#af71718c75a2b24b74fa7e1e4318d0539',1,'sptgpmd.f']]], + ['sptgpmd_2ef_328',['sptgpmd.f',['../sptgpmd_8f.html',1,'']]], + ['sptgpmv_329',['sptgpmv',['../sptgpmv_8f.html#a15de3accfd448d116324872c8fb1bb17',1,'sptgpmv.f']]], + ['sptgpmv_2ef_330',['sptgpmv.f',['../sptgpmv_8f.html',1,'']]], + ['sptgps_331',['sptgps',['../sptgps_8f.html#af06a2dccfa311014fc9f671b14f247b2',1,'sptgps.f']]], + ['sptgps_2ef_332',['sptgps.f',['../sptgps_8f.html',1,'']]], + ['sptgpsd_333',['sptgpsd',['../sptgpsd_8f.html#ad6d10c3360c47558a8116b2f5666ed30',1,'sptgpsd.f']]], + ['sptgpsd_2ef_334',['sptgpsd.f',['../sptgpsd_8f.html',1,'']]], + ['sptgpsv_335',['sptgpsv',['../sptgpsv_8f.html#af2bf2335047ec277730564dbfa859079',1,'sptgpsv.f']]], + ['sptgpsv_2ef_336',['sptgpsv.f',['../sptgpsv_8f.html',1,'']]], + ['sptgpt_337',['sptgpt',['../sptgpt_8f.html#a1b8d333bcc601e5b7e8d3dd1369f54b1',1,'sptgpt.f']]], + ['sptgpt_2ef_338',['sptgpt.f',['../sptgpt_8f.html',1,'']]], + ['sptgptd_339',['sptgptd',['../sptgptd_8f.html#a64d1fe761662182ca3495531152d1cd3',1,'sptgptd.f']]], + ['sptgptd_2ef_340',['sptgptd.f',['../sptgptd_8f.html',1,'']]], + ['sptgptsd_341',['sptgptsd',['../sptgptsd_8f.html#ad3ab15089a57b493cc74443ea3b3d88f',1,'sptgptsd.f']]], + ['sptgptsd_2ef_342',['sptgptsd.f',['../sptgptsd_8f.html',1,'']]], + ['sptgptv_343',['sptgptv',['../sptgptv_8f.html#a9af8a22564d132a887a5237f30710f13',1,'sptgptv.f']]], + ['sptgptv_2ef_344',['sptgptv.f',['../sptgptv_8f.html',1,'']]], + ['sptgptvd_345',['sptgptvd',['../sptgptvd_8f.html#ae03c6c76cad685ae1ed32d74bcba6753',1,'sptgptvd.f']]], + ['sptgptvd_2ef_346',['sptgptvd.f',['../sptgptvd_8f.html',1,'']]], + ['sptran_347',['sptran',['../sptran_8f.html#af7610e42f0dcd199b8cf80f851dcfed0',1,'sptran.f']]], + ['sptran_2ef_348',['sptran.f',['../sptran_8f.html',1,'']]], + ['sptrand_349',['sptrand',['../sptrand_8f.html#ae810abad32bcbdfb8345a30e50bcc1ef',1,'sptrand.f']]], + ['sptrand_2ef_350',['sptrand.f',['../sptrand_8f.html',1,'']]], + ['sptranf_351',['sptranf',['../sptranf_8f.html#acf086b5141203e48bdb7250441a16c8c',1,'sptranf.f']]], + ['sptranf_2ef_352',['sptranf.f',['../sptranf_8f.html',1,'']]], + ['sptranf0_353',['sptranf0',['../sptranf0_8f.html#aaf9f9002ccd7074dc04dbc40a5aad9f0',1,'sptranf0.f']]], + ['sptranf0_2ef_354',['sptranf0.f',['../sptranf0_8f.html',1,'']]], + ['sptranf1_355',['sptranf1',['../sptranf1_8f.html#ad7cec2fd6729ca84b1fac3436f9730e6',1,'sptranf1.f']]], + ['sptranf1_2ef_356',['sptranf1.f',['../sptranf1_8f.html',1,'']]], + ['sptranfv_357',['sptranfv',['../sptranfv_8f.html#a1a7aabbd358d4fe984dac6813c98b106',1,'sptranfv.f']]], + ['sptranfv_2ef_358',['sptranfv.f',['../sptranfv_8f.html',1,'']]], + ['sptranv_359',['sptranv',['../sptranv_8f.html#a7d6aaa3ed70df1dfaf8dd4443b7190c1',1,'sptranv.f']]], + ['sptranv_2ef_360',['sptranv.f',['../sptranv_8f.html',1,'']]], + ['sptrun_361',['sptrun',['../sptrun_8f.html#a1f04574fbd5018f73b68bd2cd0ffc473',1,'sptrun.f']]], + ['sptrun_2ef_362',['sptrun.f',['../sptrun_8f.html',1,'']]], + ['sptrund_363',['sptrund',['../sptrund_8f.html#a2636d99e658dfabd4b85f15a76fca480',1,'sptrund.f']]], + ['sptrund_2ef_364',['sptrund.f',['../sptrund_8f.html',1,'']]], + ['sptrung_365',['sptrung',['../sptrung_8f.html#af41b64dad4789617a315515ef885912c',1,'sptrung.f']]], + ['sptrung_2ef_366',['sptrung.f',['../sptrung_8f.html',1,'']]], + ['sptrungv_367',['sptrungv',['../sptrungv_8f.html#ab7bbe6ecde57394b15e5d4925cb07164',1,'sptrungv.f']]], + ['sptrungv_2ef_368',['sptrungv.f',['../sptrungv_8f.html',1,'']]], + ['sptrunl_369',['sptrunl',['../sptrunl_8f.html#a52c4250d24e52304e49aa1d82a93bdb8',1,'sptrunl.f']]], + ['sptrunl_2ef_370',['sptrunl.f',['../sptrunl_8f.html',1,'']]], + ['sptrunm_371',['sptrunm',['../sptrunm_8f.html#a2a4e579890d3cf7f6a26091f544b6cb6',1,'sptrunm.f']]], + ['sptrunm_2ef_372',['sptrunm.f',['../sptrunm_8f.html',1,'']]], + ['sptrunmv_373',['sptrunmv',['../sptrunmv_8f.html#a8b405d0621112d6852a3bb99602ac2fd',1,'sptrunmv.f']]], + ['sptrunmv_2ef_374',['sptrunmv.f',['../sptrunmv_8f.html',1,'']]], + ['sptruns_375',['sptruns',['../sptruns_8f.html#a34f156e2049105d012e445f8aa215444',1,'sptruns.f']]], + ['sptruns_2ef_376',['sptruns.f',['../sptruns_8f.html',1,'']]], + ['sptrunsv_377',['sptrunsv',['../sptrunsv_8f.html#a1373b651b9dea586e33d3033aae68656',1,'sptrunsv.f']]], + ['sptrunsv_2ef_378',['sptrunsv.f',['../sptrunsv_8f.html',1,'']]], + ['sptrunv_379',['sptrunv',['../sptrunv_8f.html#a9aa39c13dd38585b3afb30cb2486817f',1,'sptrunv.f']]], + ['sptrunv_2ef_380',['sptrunv.f',['../sptrunv_8f.html',1,'']]], + ['spuv2dz_381',['spuv2dz',['../spuv2dz_8f.html#a27edc2d10e0a76a45e4aaae58bf018b9',1,'spuv2dz.f']]], + ['spuv2dz_2ef_382',['spuv2dz.f',['../spuv2dz_8f.html',1,'']]], + ['spvar_383',['spvar',['../spvar_8f.html#a840f95e09b8d930b38638a391933bee4',1,'spvar.f']]], + ['spvar_2ef_384',['spvar.f',['../spvar_8f.html',1,'']]], + ['spwget_385',['spwget',['../spwget_8f.html#a9b6ce78350f7adf2fed874a18312c7a6',1,'spwget.f']]], + ['spwget_2ef_386',['spwget.f',['../spwget_8f.html',1,'']]], + ['srcft_387',['srcft',['../fftpack_8F.html#acf248c4f27a9fa81cffdfded50eee742',1,'fftpack.F']]] +]; diff --git a/ver-5.0.0/search/all_12.html b/ver-5.0.0/search/all_12.html new file mode 100644 index 00000000..ab934722 --- /dev/null +++ b/ver-5.0.0/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_12.js b/ver-5.0.0/search/all_12.js new file mode 100644 index 00000000..c15dac75 --- /dev/null +++ b/ver-5.0.0/search/all_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wbd_388',['wbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a33ae1763c4f1267091bee36a9c92e46a',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]] +]; diff --git a/ver-5.0.0/search/all_13.html b/ver-5.0.0/search/all_13.html new file mode 100644 index 00000000..51172c2f --- /dev/null +++ b/ver-5.0.0/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_13.js b/ver-5.0.0/search/all_13.js new file mode 100644 index 00000000..b9f18bc0 --- /dev/null +++ b/ver-5.0.0/search/all_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ylat_5frow_389',['ylat_row',['../namespaceip__gaussian__grid__mod.html#a3591b5701f3d03931c6a9d5278e161dc',1,'ip_gaussian_grid_mod']]] +]; diff --git a/ver-5.0.0/search/all_2.html b/ver-5.0.0/search/all_2.html new file mode 100644 index 00000000..02cfffc2 --- /dev/null +++ b/ver-5.0.0/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_2.js b/ver-5.0.0/search/all_2.js new file mode 100644 index 00000000..d92ac7fb --- /dev/null +++ b/ver-5.0.0/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['clat_11',['clat',['../namespaceip__rot__equid__cylind__egrid__mod.html#aac1018f3ca1b7ad4b5d33f245678d416',1,'ip_rot_equid_cylind_egrid_mod']]], + ['clat0_12',['clat0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a7a1b97e05b77bb7563165bf3f3e97dda',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::clat0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a49835868e8c8b96e243a5992daee6ea5',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::clat0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a83649d02b55d6252d59514aec4eb3142',1,'ip_rot_equid_cylind_egrid_mod::clat0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#afeb699d0eaa8d157277e93fe8e8c5852',1,'ip_rot_equid_cylind_grid_mod::clat0()']]], + ['clatr_13',['clatr',['../namespaceip__rot__equid__cylind__egrid__mod.html#aad4e673a94976b2b5a9bfad9de9e6e30',1,'ip_rot_equid_cylind_egrid_mod']]], + ['clon_14',['clon',['../namespaceip__rot__equid__cylind__egrid__mod.html#a557d49c609fc8c5c564a3a5f10174eec',1,'ip_rot_equid_cylind_egrid_mod']]], + ['csfft_15',['csfft',['../fftpack_8F.html#ad261879c88a7f040e43f1549e65f36e5',1,'fftpack.F']]] +]; diff --git a/ver-5.0.0/search/all_3.html b/ver-5.0.0/search/all_3.html new file mode 100644 index 00000000..39767b85 --- /dev/null +++ b/ver-5.0.0/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_3.js b/ver-5.0.0/search/all_3.js new file mode 100644 index 00000000..a345b7ae --- /dev/null +++ b/ver-5.0.0/search/all_3.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['dcrft_16',['dcrft',['../fftpack_8F.html#a713ef445886ad8dc8b16692c6075d225',1,'fftpack.F']]], + ['de2_17',['de2',['../namespaceip__polar__stereo__grid__mod.html#a605d287e34e60f553521a5de2da22962',1,'ip_polar_stereo_grid_mod']]], + ['descriptor_18',['descriptor',['../structip__grid__mod_1_1ip__grid.html#a4a2a0dab09f05931d12615b0ac74bc51',1,'ip_grid_mod::ip_grid']]], + ['dlat_19',['dlat',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a6bd00527219fc596b2c2a7ba47fec719',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::dlat()'],['../namespaceip__equid__cylind__grid__mod.html#a30cb127d26d74d2de6ab3cbfd63183fb',1,'ip_equid_cylind_grid_mod::dlat()']]], + ['dlats_20',['dlats',['../namespaceip__rot__equid__cylind__grid__mod.html#ab43075e39d4e2dde4110e608931a392d',1,'ip_rot_equid_cylind_grid_mod::dlats()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a0b2faca2325b413e1f3207778d4c4c68',1,'ip_rot_equid_cylind_egrid_mod::dlats()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a00d41c3d43370d3f02bb92d59f66866c',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::dlats()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#affd9cfc7a0e1d8e74735eac35b2e03c6',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::dlats()']]], + ['dlon_21',['dlon',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a455057778c7f2ad677956bdef2d754ee',1,'ip_mercator_grid_mod::ip_mercator_grid::dlon()'],['../namespaceip__mercator__grid__mod.html#a14e1cb3f8c05d2de49d2aa8dc69d104f',1,'ip_mercator_grid_mod::dlon()'],['../namespaceip__gaussian__grid__mod.html#a8852b7cfb7b99318140c66b0c551dc6d',1,'ip_gaussian_grid_mod::dlon()'],['../namespaceip__equid__cylind__grid__mod.html#a46335f95ac343f7751bd519aec0a160f',1,'ip_equid_cylind_grid_mod::dlon()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ae675dc8c49e64700d941eadc31e8f4e7',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::dlon()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a35c454d320c59a6c71c4aebb881abcb8',1,'ip_gaussian_grid_mod::ip_gaussian_grid::dlon()']]], + ['dlons_22',['dlons',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a76222910f6c9fa0c5374bed672904c85',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::dlons()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a23a172ccd2e026746925e2029c0a9206',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::dlons()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#af04f8a1044f4d9a7e0d13d38887adcbc',1,'ip_rot_equid_cylind_egrid_mod::dlons()'],['../namespaceip__rot__equid__cylind__grid__mod.html#aa0cf7bb2dd8be1239ae38c7220d29702',1,'ip_rot_equid_cylind_grid_mod::dlons()']]], + ['dphi_23',['dphi',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a39168528a2c207b2e2c5373487d705c5',1,'ip_mercator_grid_mod::ip_mercator_grid::dphi()'],['../namespaceip__mercator__grid__mod.html#a156e638e2d1b93e388d674462ac3f732',1,'ip_mercator_grid_mod::dphi()']]], + ['dpr_24',['dpr',['../namespaceip__constants__mod.html#ae6b74489db06341b78c3088b3f207011',1,'ip_constants_mod']]], + ['drcft_25',['drcft',['../fftpack_8F.html#a55b05419c0d3bb0595b34c8cacf93be8',1,'fftpack.F']]], + ['dxs_26',['dxs',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ac009bce0c0c14b3e0970da6c032a11b1',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::dxs()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#aa3288a7fbf2db34946116c771e5bc7dc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::dxs()'],['../namespaceip__lambert__conf__grid__mod.html#a196e94b5a2add34133c87f845394fa81',1,'ip_lambert_conf_grid_mod::dxs()'],['../namespaceip__polar__stereo__grid__mod.html#acf60181f89954e2ff31b08bb1b345354',1,'ip_polar_stereo_grid_mod::dxs()']]], + ['dys_27',['dys',['../namespaceip__polar__stereo__grid__mod.html#aea7950530d06d9c59ff61bf706df0a0f',1,'ip_polar_stereo_grid_mod::dys()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a95e155383895ad3f56a3876877b5896b',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::dys()'],['../namespaceip__lambert__conf__grid__mod.html#aad8b04b77b0920dbf9ed3827e2e8cfd7',1,'ip_lambert_conf_grid_mod::dys()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a46fa89562e4dd23c765029d2d6c087bc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::dys()']]] +]; diff --git a/ver-5.0.0/search/all_4.html b/ver-5.0.0/search/all_4.html new file mode 100644 index 00000000..fc40463c --- /dev/null +++ b/ver-5.0.0/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_4.js b/ver-5.0.0/search/all_4.js new file mode 100644 index 00000000..254b4c31 --- /dev/null +++ b/ver-5.0.0/search/all_4.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['e2_28',['e2',['../namespaceip__polar__stereo__grid__mod.html#abf3a34d9bb00c39dac5225798aea4d5b',1,'ip_polar_stereo_grid_mod']]], + ['e2_5fwgs84_29',['e2_wgs84',['../namespaceip__constants__mod.html#af7783a977fa10c54d85282dc6ac5f545',1,'ip_constants_mod']]], + ['earth_5fradius_30',['earth_radius',['../namespaceearth__radius__mod.html#a810f60db1a1faff0d6f59937a8207a54',1,'earth_radius_mod']]], + ['earth_5fradius_5fmod_31',['earth_radius_mod',['../namespaceearth__radius__mod.html',1,'']]], + ['earth_5fradius_5fmod_2ef90_32',['earth_radius_mod.F90',['../earth__radius__mod_8F90.html',1,'']]], + ['eccen_5fsquared_33',['eccen_squared',['../structip__grid__mod_1_1ip__grid.html#a180a5da6c470fac34b8439d4c0a32d2a',1,'ip_grid_mod::ip_grid']]], + ['elliptical_34',['elliptical',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a1bac1023f8d8cd631760403b222a8c3f',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid']]], + ['equid_5fcylind_5fgrid_5farea_35',['equid_cylind_grid_area',['../namespaceip__equid__cylind__grid__mod.html#a5a70b82abdce76bef22cdeaa96a986c2',1,'ip_equid_cylind_grid_mod']]], + ['equid_5fcylind_5fgrid_5fid_5fgrib1_36',['equid_cylind_grid_id_grib1',['../namespaceip__grid__mod.html#ad96da95d40beceb1a1c405971e8130bb',1,'ip_grid_mod']]], + ['equid_5fcylind_5fgrid_5fid_5fgrib2_37',['equid_cylind_grid_id_grib2',['../namespaceip__grid__mod.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6',1,'ip_grid_mod']]], + ['equid_5fcylind_5fmap_5fjacob_38',['equid_cylind_map_jacob',['../namespaceip__equid__cylind__grid__mod.html#a039501b44cd3ad4409983e193d509afd',1,'ip_equid_cylind_grid_mod']]], + ['equid_5fcylind_5fvect_5frot_39',['equid_cylind_vect_rot',['../namespaceip__equid__cylind__grid__mod.html#ade88ecea1c0bb4b4d5b0d08f8482268d',1,'ip_equid_cylind_grid_mod']]] +]; diff --git a/ver-5.0.0/search/all_5.html b/ver-5.0.0/search/all_5.html new file mode 100644 index 00000000..9dd9344b --- /dev/null +++ b/ver-5.0.0/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_5.js b/ver-5.0.0/search/all_5.js new file mode 100644 index 00000000..cd3eac50 --- /dev/null +++ b/ver-5.0.0/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fftpack_2ef_40',['fftpack.F',['../fftpack_8F.html',1,'']]], + ['field_5fpos_41',['field_pos',['../structip__grid__mod_1_1ip__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179',1,'ip_grid_mod::ip_grid::field_pos()'],['../namespaceip__grid__mod.html#a63572318d74ec94c20c5ccd6ded2d442',1,'ip_grid_mod::field_pos()']]] +]; diff --git a/ver-5.0.0/search/all_6.html b/ver-5.0.0/search/all_6.html new file mode 100644 index 00000000..f1e516d7 --- /dev/null +++ b/ver-5.0.0/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_6.js b/ver-5.0.0/search/all_6.js new file mode 100644 index 00000000..c46a7671 --- /dev/null +++ b/ver-5.0.0/search/all_6.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['gaussian_5fgrid_5farea_42',['gaussian_grid_area',['../namespaceip__gaussian__grid__mod.html#ab602a870a477c7ab77438700af4e7780',1,'ip_gaussian_grid_mod']]], + ['gaussian_5fgrid_5fid_5fgrib1_43',['gaussian_grid_id_grib1',['../namespaceip__grid__mod.html#a45e8afad72b1b8856b3e44f2dd3123b3',1,'ip_grid_mod']]], + ['gaussian_5fgrid_5fid_5fgrib2_44',['gaussian_grid_id_grib2',['../namespaceip__grid__mod.html#a36a9a73ecd50353f892341ae8a5c8316',1,'ip_grid_mod']]], + ['gaussian_5fmap_5fjacob_45',['gaussian_map_jacob',['../namespaceip__gaussian__grid__mod.html#adca7b03877c6a7048ff1716a95e0bd9d',1,'ip_gaussian_grid_mod']]], + ['gaussian_5fvect_5frot_46',['gaussian_vect_rot',['../namespaceip__gaussian__grid__mod.html#ac72eec96d0012fbe0f0ec7c520f40dad',1,'ip_gaussian_grid_mod']]], + ['gds_47',['gds',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html#a08920c194e39d562fbf527939f0ac6c9',1,'ip_grid_descriptor_mod::grib1_descriptor']]], + ['gdswzd_48',['gdswzd',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a940420aa99e0fbe51a976f9d0c343f1a',1,'ip_mercator_grid_mod::ip_mercator_grid::gdswzd()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#a9fff8b24553d11177b8c1ee38bfbd91f',1,'ip_station_points_grid_mod::ip_station_points_grid::gdswzd()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a0f14a253b51bcb0633cd00d32d5130a4',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::gdswzd()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a62c8147f8845d75e8f52c7524a74c780',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::gdswzd()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9e97b7352e67dd629f622f292cf0ca21',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::gdswzd()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#aa69861340bc268b91a1076048ed489fc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::gdswzd()'],['../structip__grid__mod_1_1ip__grid.html#a5fb366fb577a90cc09f21269b90ac080',1,'ip_grid_mod::ip_grid::gdswzd()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a7ce52d987d2bd2442053042c03f96885',1,'ip_gaussian_grid_mod::ip_gaussian_grid::gdswzd()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa1023c3efed20a990b75f937bbcac6a3',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::gdswzd()'],['../iplib__4_8h.html#a44daefd49c37e9bc59933d98e56efa53',1,'gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area): iplib_4.h'],['../iplib__8_8h.html#af41ad9a4b34f78d182a68b3d72b9bdf4',1,'gdswzd(long igdtnum, long *igdtmpl, long igdtlen, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_8.h'],['../iplib__d_8h.html#ac919f31612096fd6a7547a425ab3d38e',1,'gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_d.h'],['../interfacegdswzd__mod_1_1gdswzd.html',1,'gdswzd_mod::gdswzd']]], + ['gdswzd_5f1d_5farray_49',['gdswzd_1d_array',['../interfacegdswzd__mod_1_1gdswzd.html#afaf35e3ce949dd2ce3d72dd3f06d4e3b',1,'gdswzd_mod::gdswzd::gdswzd_1d_array()'],['../namespacegdswzd__mod.html#ac304e2b046eccc701e24827c81107e76',1,'gdswzd_mod::gdswzd_1d_array()']]], + ['gdswzd_5f2d_5farray_50',['gdswzd_2d_array',['../interfacegdswzd__mod_1_1gdswzd.html#a8b60240eefdc297eacf90c348b529d31',1,'gdswzd_mod::gdswzd::gdswzd_2d_array()'],['../namespacegdswzd__mod.html#acdf970e498e9317522fbdfb690b86e25',1,'gdswzd_mod::gdswzd_2d_array()']]], + ['gdswzd_5f2d_5farray_5fgrib1_51',['gdswzd_2d_array_grib1',['../interfacegdswzd__mod_1_1gdswzd.html#a7c66a7ede2b644f7e366df9f70b9f0a5',1,'gdswzd_mod::gdswzd::gdswzd_2d_array_grib1()'],['../namespacegdswzd__mod.html#aa032a55281b18e208630a730679958f4',1,'gdswzd_mod::gdswzd_2d_array_grib1()']]], + ['gdswzd_5fc_52',['gdswzd_c',['../namespacegdswzd__c__mod.html#ae3026381f7f41561507c97c9125d24e4',1,'gdswzd_c_mod']]], + ['gdswzd_5fc_2ef90_53',['gdswzd_c.F90',['../gdswzd__c_8F90.html',1,'']]], + ['gdswzd_5fc_5fgrib1_54',['gdswzd_c_grib1',['../namespacegdswzd__c__mod.html#a06861f1403edf106bb3b399c39981504',1,'gdswzd_c_mod']]], + ['gdswzd_5fc_5fmod_55',['gdswzd_c_mod',['../namespacegdswzd__c__mod.html',1,'']]], + ['gdswzd_5fequid_5fcylind_56',['gdswzd_equid_cylind',['../namespaceip__equid__cylind__grid__mod.html#af20f6f308b5a33211c677b894e41b727',1,'ip_equid_cylind_grid_mod']]], + ['gdswzd_5fgaussian_57',['gdswzd_gaussian',['../namespaceip__gaussian__grid__mod.html#a6eefd9270b3f9bb2c59a77bea4ecf1b9',1,'ip_gaussian_grid_mod']]], + ['gdswzd_5fgrib1_58',['gdswzd_grib1',['../namespacegdswzd__mod.html#a133e040fac8dd56e607b8e3fb6a58c37',1,'gdswzd_mod::gdswzd_grib1()'],['../iplib__4_8h.html#a7f2f96041c0d42926e14cb0f40f336e1',1,'gdswzd_grib1(): iplib_4.h'],['../interfacegdswzd__mod_1_1gdswzd.html#a65b95791813ffd5afbfba9d4cb67676a',1,'gdswzd_mod::gdswzd::gdswzd_grib1()'],['../iplib__8_8h.html#ab8e46b623c66911913f66d314c15cc93',1,'gdswzd_grib1(long *kgds, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_8.h'],['../iplib__d_8h.html#ac33340cba2ac7b42dd9b9116fc28d691',1,'gdswzd_grib1(int *kgds, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_d.h']]], + ['gdswzd_5fgrid_59',['gdswzd_grid',['../interfacegdswzd__mod_1_1gdswzd.html#abfe059339c6c9f05fd4eadb5d70aec16',1,'gdswzd_mod::gdswzd::gdswzd_grid()'],['../namespacegdswzd__mod.html#a584d2bddbc6d857b80cfac5e3b288d45',1,'gdswzd_mod::gdswzd_grid()']]], + ['gdswzd_5finterface_60',['gdswzd_interface',['../interfaceip__grid__mod_1_1gdswzd__interface.html#af34c5d9da54a36322bb1a141217c6369',1,'ip_grid_mod::gdswzd_interface::gdswzd_interface()'],['../interfaceip__grid__mod_1_1gdswzd__interface.html',1,'ip_grid_mod::gdswzd_interface']]], + ['gdswzd_5flambert_5fconf_61',['gdswzd_lambert_conf',['../namespaceip__lambert__conf__grid__mod.html#a5ebb9e4f1bd58caa254771b305c94f71',1,'ip_lambert_conf_grid_mod']]], + ['gdswzd_5fmercator_62',['gdswzd_mercator',['../namespaceip__mercator__grid__mod.html#acc39017fa51125972ab8e755e16d339e',1,'ip_mercator_grid_mod']]], + ['gdswzd_5fmod_63',['gdswzd_mod',['../namespacegdswzd__mod.html',1,'']]], + ['gdswzd_5fmod_2ef90_64',['gdswzd_mod.F90',['../gdswzd__mod_8F90.html',1,'']]], + ['gdswzd_5fpolar_5fstereo_65',['gdswzd_polar_stereo',['../namespaceip__polar__stereo__grid__mod.html#ae2694d90ab514a131e083dfba3b173c5',1,'ip_polar_stereo_grid_mod']]], + ['gdswzd_5frot_5fequid_5fcylind_66',['gdswzd_rot_equid_cylind',['../namespaceip__rot__equid__cylind__grid__mod.html#a55c153201e15205d3f75e4ffb717cc0b',1,'ip_rot_equid_cylind_grid_mod']]], + ['gdswzd_5frot_5fequid_5fcylind_5fegrid_67',['gdswzd_rot_equid_cylind_egrid',['../namespaceip__rot__equid__cylind__egrid__mod.html#a9ad11a599fc0bdc4a9ece86a3b1cc399',1,'ip_rot_equid_cylind_egrid_mod']]], + ['gdswzd_5fscalar_68',['gdswzd_scalar',['../interfacegdswzd__mod_1_1gdswzd.html#a1fc841ec08d39463b3f5f36eac0068cd',1,'gdswzd_mod::gdswzd::gdswzd_scalar()'],['../namespacegdswzd__mod.html#aba3235c5bc5797e72b9a6a8a587b8861',1,'gdswzd_mod::gdswzd_scalar()']]], + ['gdswzd_5fstation_5fpoints_69',['gdswzd_station_points',['../namespaceip__station__points__grid__mod.html#a8da297b45242279a497dbd7062a33197',1,'ip_station_points_grid_mod']]], + ['gdt_5flen_70',['gdt_len',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#abf8e6d212308608a039e8e97c05c4a06',1,'ip_grid_descriptor_mod::grib2_descriptor']]], + ['gdt_5fnum_71',['gdt_num',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#aa5dd78817926e0246f93819ab7037e19',1,'ip_grid_descriptor_mod::grib2_descriptor']]], + ['gdt_5ftmpl_72',['gdt_tmpl',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#a3a90e1ef19332a1d8ec1f6a3193c6ebe',1,'ip_grid_descriptor_mod::grib2_descriptor']]], + ['grib1_5fdescriptor_73',['grib1_descriptor',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['grib2_5fdescriptor_74',['grib2_descriptor',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['grid_5fnum_75',['grid_num',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a6d4598dc4bbf46e059f636715cc390f1',1,'ip_grid_descriptor_mod::ip_grid_descriptor']]] +]; diff --git a/ver-5.0.0/search/all_7.html b/ver-5.0.0/search/all_7.html new file mode 100644 index 00000000..8ddbf6c8 --- /dev/null +++ b/ver-5.0.0/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_7.js b/ver-5.0.0/search/all_7.js new file mode 100644 index 00000000..028e2c11 --- /dev/null +++ b/ver-5.0.0/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['h_76',['h',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a733c8a9b6ed498aeec73fa8f11283c03',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::h()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a6df619b3050279d9d560e72a3e87168f',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::h()'],['../namespaceip__lambert__conf__grid__mod.html#aa91572e8b5ba3559c041f1750b6696c6',1,'ip_lambert_conf_grid_mod::h()'],['../namespaceip__polar__stereo__grid__mod.html#a5a63da5168a1432a1af42c0b668f0645',1,'ip_polar_stereo_grid_mod::h()']]], + ['hi_77',['hi',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#afb1ebcfab0d637688bcac84cbc8582fc',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::hi()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#ae71229713fc9322e23140541993459fc',1,'ip_gaussian_grid_mod::ip_gaussian_grid::hi()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a91b223ca51a556fa11b76b0c05e0d3f2',1,'ip_mercator_grid_mod::ip_mercator_grid::hi()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a970c2655cb03ad0927e03c1d550e3fe5',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::hi()']]] +]; diff --git a/ver-5.0.0/search/all_8.html b/ver-5.0.0/search/all_8.html new file mode 100644 index 00000000..83c55ae2 --- /dev/null +++ b/ver-5.0.0/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_8.js b/ver-5.0.0/search/all_8.js new file mode 100644 index 00000000..3d35463c --- /dev/null +++ b/ver-5.0.0/search/all_8.js @@ -0,0 +1,107 @@ +var searchData= +[ + ['im_78',['im',['../structip__grid__mod_1_1ip__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc',1,'ip_grid_mod::ip_grid']]], + ['init_79',['init',['../structip__grid__mod_1_1ip__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c',1,'ip_grid_mod::ip_grid']]], + ['init_5fdescriptor_80',['init_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['init_5fgrib1_81',['init_grib1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a68fb7543888cc76885560709184e7d70',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib1()'],['../namespaceip__equid__cylind__grid__mod.html#a3d0132823d27b60835ebb59ead173477',1,'ip_equid_cylind_grid_mod::init_grib1()'],['../namespaceip__gaussian__grid__mod.html#a8fe2ee732a3a2db4891a6431787a0b01',1,'ip_gaussian_grid_mod::init_grib1()'],['../namespaceip__lambert__conf__grid__mod.html#a5544708e893ffcfbe7d958fdec700eea',1,'ip_lambert_conf_grid_mod::init_grib1()'],['../namespaceip__mercator__grid__mod.html#a4125dba8b09e9b69933e224b00f4758d',1,'ip_mercator_grid_mod::init_grib1()'],['../namespaceip__polar__stereo__grid__mod.html#a6ed76f58f30993cd7be84b7e03cf4d6f',1,'ip_polar_stereo_grid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#aa65616b97df9c89893161ff802e16eab',1,'ip_rot_equid_cylind_egrid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__grid__mod.html#acb27dfdc6f03dea897d509910365afee',1,'ip_rot_equid_cylind_grid_mod::init_grib1()'],['../namespaceip__station__points__grid__mod.html#a4b28ebf2b4fe826c96af69db28e0a1ff',1,'ip_station_points_grid_mod::init_grib1()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#aa5ec2cbc9bf0dadf20a226e0afeb3d32',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib1()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a9942c787bda2e118f1355476670edfca',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#ab9a85830bfd06183a8df73726f62217a',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ae2a5a7c08e4578f3d0ff6b85e5a14cce',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3ae3bbb47f4c03c36404a2b35014d65c',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a35dd86b4a9017f5b03a0a6a01eb4d370',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib1()'],['../structip__grid__mod_1_1ip__grid.html#a5a2c16279eb73a0c54ae0a1586d5b806',1,'ip_grid_mod::ip_grid::init_grib1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#afd3658924783d5dbbd3fe5f07d5b60a7',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib1()']]], + ['init_5fgrib1_5fdescriptor_82',['init_grib1_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a3b5b267aa7a17a4615dcc0cb4e590f6e',1,'ip_grid_descriptor_mod::init_descriptor::init_grib1_descriptor()'],['../namespaceip__grid__descriptor__mod.html#aa00884a7fca018535eaf0c2ebe26bc98',1,'ip_grid_descriptor_mod::init_grib1_descriptor()']]], + ['init_5fgrib1_5finterface_83',['init_grib1_interface',['../interfaceip__grid__mod_1_1init__grib1__interface.html#a47e255b76f02fe58a1aebdadcc5894eb',1,'ip_grid_mod::init_grib1_interface::init_grib1_interface()'],['../interfaceip__grid__mod_1_1init__grib1__interface.html',1,'ip_grid_mod::init_grib1_interface']]], + ['init_5fgrib2_84',['init_grib2',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a378b72a1b6090acb90a36385ab9eda5a',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib2()'],['../namespaceip__station__points__grid__mod.html#ad17e6d245295803b62b146be984f874d',1,'ip_station_points_grid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__grid__mod.html#add3c6c1dad5748b452d291df6619867d',1,'ip_rot_equid_cylind_grid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#af3cbc17f27800bc67135feacb2c1c3e0',1,'ip_rot_equid_cylind_egrid_mod::init_grib2()'],['../namespaceip__polar__stereo__grid__mod.html#a5210b986366b503683ae966519d501e7',1,'ip_polar_stereo_grid_mod::init_grib2()'],['../namespaceip__mercator__grid__mod.html#aad3b6fef6ee74b8df984c0159ff29c82',1,'ip_mercator_grid_mod::init_grib2()'],['../namespaceip__lambert__conf__grid__mod.html#acb0339a9fff4fff6c2017d37f8bed0cf',1,'ip_lambert_conf_grid_mod::init_grib2()'],['../namespaceip__gaussian__grid__mod.html#ae048ac033628515113b11b8c7364e0c2',1,'ip_gaussian_grid_mod::init_grib2()'],['../namespaceip__equid__cylind__grid__mod.html#a39d24c9468ecb7effd16972fd72e088a',1,'ip_equid_cylind_grid_mod::init_grib2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a8dd212953e754964770fa1c3d4bcd3db',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib2()'],['../structip__grid__mod_1_1ip__grid.html#ad13e0ad8d616e1839ced388826fefee9',1,'ip_grid_mod::ip_grid::init_grib2()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a64129413df8ea478ab1360fd1a274e9a',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib2()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a505b0114c7ff5fbb58c4e7ce5ccde3f0',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib2()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9622ce9892084b52303f27722572b87c',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib2()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#adda32463a76ad97ac35b01f1ac693fa4',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib2()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a30ae580d169972e8d68c3d97ab3b2634',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib2()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#a69fac68e7a40d5c3106a47bf1851891e',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib2()']]], + ['init_5fgrib2_5fdescriptor_85',['init_grib2_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a6702c4bf3a3d914e5cd2fce8fba4f95c',1,'ip_grid_descriptor_mod::init_descriptor::init_grib2_descriptor()'],['../namespaceip__grid__descriptor__mod.html#a143ac06a2a20697d01606a259213b451',1,'ip_grid_descriptor_mod::init_grib2_descriptor()']]], + ['init_5fgrib2_5finterface_86',['init_grib2_interface',['../interfaceip__grid__mod_1_1init__grib2__interface.html#a25dcec4470effb9b20dfc7981c21ec6c',1,'ip_grid_mod::init_grib2_interface::init_grib2_interface()'],['../interfaceip__grid__mod_1_1init__grib2__interface.html',1,'ip_grid_mod::init_grib2_interface']]], + ['init_5fgrid_87',['init_grid',['../interfaceip__grid__factory__mod_1_1init__grid.html',1,'ip_grid_factory_mod']]], + ['init_5fgrid_5fgeneric_88',['init_grid_generic',['../namespaceip__grid__factory__mod.html#a2d2ea07d353bae8b057471aa99b58e46',1,'ip_grid_factory_mod::init_grid_generic()'],['../interfaceip__grid__factory__mod_1_1init__grid.html#a3fbbec3ddc7dfd918c2abc02e7a4cd72',1,'ip_grid_factory_mod::init_grid::init_grid_generic()']]], + ['init_5fgrid_5fgrib1_89',['init_grid_grib1',['../namespaceip__grid__factory__mod.html#ad8906ed6fe52c2426c0ff09ce50b6fc5',1,'ip_grid_factory_mod']]], + ['init_5fgrid_5fgrib2_90',['init_grid_grib2',['../namespaceip__grid__factory__mod.html#aa187dc8dbd1d004a51cc0e9826ffa225',1,'ip_grid_factory_mod']]], + ['interpolate_5fbicubic_91',['interpolate_bicubic',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html',1,'bicubic_interp_mod']]], + ['interpolate_5fbicubic_5fscalar_92',['interpolate_bicubic_scalar',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#acbfecc99184cf9ae71b2c9f79c7d4077',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_scalar()'],['../namespacebicubic__interp__mod.html#a54a442e47f1be9511c1684a337d7e2d1',1,'bicubic_interp_mod::interpolate_bicubic_scalar()']]], + ['interpolate_5fbicubic_5fvector_93',['interpolate_bicubic_vector',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#aac45c15e1c9d76158d72e62ccaca915b',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_vector()'],['../namespacebicubic__interp__mod.html#a9d27db7d350fc2699aaf5057c3b53d16',1,'bicubic_interp_mod::interpolate_bicubic_vector()']]], + ['interpolate_5fbilinear_94',['interpolate_bilinear',['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html',1,'bilinear_interp_mod']]], + ['interpolate_5fbilinear_5fscalar_95',['interpolate_bilinear_scalar',['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#a3493cf5bc04aa4551ffd4c314ef09a65',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_scalar()'],['../namespacebilinear__interp__mod.html#a34d2eea4682104097dccf3e7ab6a9398',1,'bilinear_interp_mod::interpolate_bilinear_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], + ['interpolate_5fbilinear_5fvector_96',['interpolate_bilinear_vector',['../namespacebilinear__interp__mod.html#abc218f8774d2af09299eb299d6f38e04',1,'bilinear_interp_mod::interpolate_bilinear_vector()'],['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#ab4692c5250b37325f764b38c570892dd',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_vector()']]], + ['interpolate_5fbudget_97',['interpolate_budget',['../interfacebudget__interp__mod_1_1interpolate__budget.html',1,'budget_interp_mod']]], + ['interpolate_5fbudget_5fscalar_98',['interpolate_budget_scalar',['../namespacebudget__interp__mod.html#a09bd6535b0c2e1022cfde39c39d14466',1,'budget_interp_mod::interpolate_budget_scalar()'],['../interfacebudget__interp__mod_1_1interpolate__budget.html#a4b96cbeedb86ef43b687f7ea55914ef0',1,'budget_interp_mod::interpolate_budget::interpolate_budget_scalar()']]], + ['interpolate_5fbudget_5fvector_99',['interpolate_budget_vector',['../namespacebudget__interp__mod.html#abc99486ee9c0091c1514af6114d4e803',1,'budget_interp_mod::interpolate_budget_vector()'],['../interfacebudget__interp__mod_1_1interpolate__budget.html#a573e89e56381d0f69e4022d791a087e6',1,'budget_interp_mod::interpolate_budget::interpolate_budget_vector()']]], + ['interpolate_5fneighbor_100',['interpolate_neighbor',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html',1,'neighbor_interp_mod']]], + ['interpolate_5fneighbor_5fbudget_101',['interpolate_neighbor_budget',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html',1,'neighbor_budget_interp_mod']]], + ['interpolate_5fneighbor_5fbudget_5fscalar_102',['interpolate_neighbor_budget_scalar',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a96e4b145a4df6f4948b1d5ae2da6a71a',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_scalar()'],['../namespaceneighbor__budget__interp__mod.html#a6d5110a9e9facf8c3132ec27d6857817',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_scalar()']]], + ['interpolate_5fneighbor_5fbudget_5fvector_103',['interpolate_neighbor_budget_vector',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a573bd5ac43484aa6d051e58f37ff7c06',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_vector()'],['../namespaceneighbor__budget__interp__mod.html#a4309c1e6b7fc60ded40657fe6c72297e',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_vector()']]], + ['interpolate_5fneighbor_5fscalar_104',['interpolate_neighbor_scalar',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a04ebb54535e67ff95c1d3d64b9cf6246',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_scalar()'],['../namespaceneighbor__interp__mod.html#a78452d1527c6974ad54091f0318e4b1f',1,'neighbor_interp_mod::interpolate_neighbor_scalar()']]], + ['interpolate_5fneighbor_5fvector_105',['interpolate_neighbor_vector',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a4662245e2744fd14628b48f23bf4f0a7',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_vector()'],['../namespaceneighbor__interp__mod.html#a744ccffd8cd6c13d360e634db4851756',1,'neighbor_interp_mod::interpolate_neighbor_vector()']]], + ['interpolate_5fspectral_106',['interpolate_spectral',['../interfacespectral__interp__mod_1_1interpolate__spectral.html',1,'spectral_interp_mod']]], + ['interpolate_5fspectral_5fscalar_107',['interpolate_spectral_scalar',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a79f600a26ecf256a8a13cf4bdbaf2ab1',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_scalar()'],['../namespacespectral__interp__mod.html#a438646d69e941def0ada00d5ca19f618',1,'spectral_interp_mod::interpolate_spectral_scalar()']]], + ['interpolate_5fspectral_5fvector_108',['interpolate_spectral_vector',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a9e939bbb3f7b214fee26c1e77764e487',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_vector()'],['../namespacespectral__interp__mod.html#acb61ad529b7decc2a6ff58dd12fbadd0',1,'spectral_interp_mod::interpolate_spectral_vector()']]], + ['introduction_109',['Introduction',['../index.html',1,'']]], + ['ip_5fconstants_5fmod_110',['ip_constants_mod',['../namespaceip__constants__mod.html',1,'']]], + ['ip_5fconstants_5fmod_2ef90_111',['ip_constants_mod.F90',['../ip__constants__mod_8F90.html',1,'']]], + ['ip_5fequid_5fcylind_5fgrid_112',['ip_equid_cylind_grid',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html',1,'ip_equid_cylind_grid_mod']]], + ['ip_5fequid_5fcylind_5fgrid_5fmod_113',['ip_equid_cylind_grid_mod',['../namespaceip__equid__cylind__grid__mod.html',1,'']]], + ['ip_5fequid_5fcylind_5fgrid_5fmod_2ef90_114',['ip_equid_cylind_grid_mod.F90',['../ip__equid__cylind__grid__mod_8F90.html',1,'']]], + ['ip_5fgaussian_5fgrid_115',['ip_gaussian_grid',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html',1,'ip_gaussian_grid_mod']]], + ['ip_5fgaussian_5fgrid_5fmod_116',['ip_gaussian_grid_mod',['../namespaceip__gaussian__grid__mod.html',1,'']]], + ['ip_5fgaussian_5fgrid_5fmod_2ef90_117',['ip_gaussian_grid_mod.F90',['../ip__gaussian__grid__mod_8F90.html',1,'']]], + ['ip_5fgrid_118',['ip_grid',['../structip__grid__mod_1_1ip__grid.html',1,'ip_grid_mod']]], + ['ip_5fgrid_5fdescriptor_119',['ip_grid_descriptor',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['ip_5fgrid_5fdescriptor_5fmod_120',['ip_grid_descriptor_mod',['../namespaceip__grid__descriptor__mod.html',1,'']]], + ['ip_5fgrid_5fdescriptor_5fmod_2ef90_121',['ip_grid_descriptor_mod.F90',['../ip__grid__descriptor__mod_8F90.html',1,'']]], + ['ip_5fgrid_5ffactory_5fmod_122',['ip_grid_factory_mod',['../namespaceip__grid__factory__mod.html',1,'']]], + ['ip_5fgrid_5ffactory_5fmod_2ef90_123',['ip_grid_factory_mod.F90',['../ip__grid__factory__mod_8F90.html',1,'']]], + ['ip_5fgrid_5fmod_124',['ip_grid_mod',['../namespaceip__grid__mod.html',1,'']]], + ['ip_5fgrid_5fmod_2ef90_125',['ip_grid_mod.F90',['../ip__grid__mod_8F90.html',1,'']]], + ['ip_5fgrids_5fmod_126',['ip_grids_mod',['../namespaceip__grids__mod.html',1,'']]], + ['ip_5fgrids_5fmod_2ef90_127',['ip_grids_mod.F90',['../ip__grids__mod_8F90.html',1,'']]], + ['ip_5finterpolators_5fmod_128',['ip_interpolators_mod',['../namespaceip__interpolators__mod.html',1,'']]], + ['ip_5finterpolators_5fmod_2ef90_129',['ip_interpolators_mod.F90',['../ip__interpolators__mod_8F90.html',1,'']]], + ['ip_5flambert_5fconf_5fgrid_130',['ip_lambert_conf_grid',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html',1,'ip_lambert_conf_grid_mod']]], + ['ip_5flambert_5fconf_5fgrid_5fmod_131',['ip_lambert_conf_grid_mod',['../namespaceip__lambert__conf__grid__mod.html',1,'']]], + ['ip_5flambert_5fconf_5fgrid_5fmod_2ef90_132',['ip_lambert_conf_grid_mod.F90',['../ip__lambert__conf__grid__mod_8F90.html',1,'']]], + ['ip_5fmercator_5fgrid_133',['ip_mercator_grid',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html',1,'ip_mercator_grid_mod']]], + ['ip_5fmercator_5fgrid_5fmod_134',['ip_mercator_grid_mod',['../namespaceip__mercator__grid__mod.html',1,'']]], + ['ip_5fmercator_5fgrid_5fmod_2ef90_135',['ip_mercator_grid_mod.F90',['../ip__mercator__grid__mod_8F90.html',1,'']]], + ['ip_5fmod_136',['ip_mod',['../namespaceip__mod.html',1,'']]], + ['ip_5fmod_2ef90_137',['ip_mod.F90',['../ip__mod_8F90.html',1,'']]], + ['ip_5fpolar_5fstereo_5fgrid_138',['ip_polar_stereo_grid',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html',1,'ip_polar_stereo_grid_mod']]], + ['ip_5fpolar_5fstereo_5fgrid_5fmod_139',['ip_polar_stereo_grid_mod',['../namespaceip__polar__stereo__grid__mod.html',1,'']]], + ['ip_5fpolar_5fstereo_5fgrid_5fmod_2ef90_140',['ip_polar_stereo_grid_mod.F90',['../ip__polar__stereo__grid__mod_8F90.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_141',['ip_rot_equid_cylind_egrid',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html',1,'ip_rot_equid_cylind_egrid_mod']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_142',['ip_rot_equid_cylind_egrid_mod',['../namespaceip__rot__equid__cylind__egrid__mod.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_2ef90_143',['ip_rot_equid_cylind_egrid_mod.F90',['../ip__rot__equid__cylind__egrid__mod_8F90.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_144',['ip_rot_equid_cylind_grid',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html',1,'ip_rot_equid_cylind_grid_mod']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_145',['ip_rot_equid_cylind_grid_mod',['../namespaceip__rot__equid__cylind__grid__mod.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_2ef90_146',['ip_rot_equid_cylind_grid_mod.F90',['../ip__rot__equid__cylind__grid__mod_8F90.html',1,'']]], + ['ip_5fstation_5fpoints_5fgrid_147',['ip_station_points_grid',['../structip__station__points__grid__mod_1_1ip__station__points__grid.html',1,'ip_station_points_grid_mod']]], + ['ip_5fstation_5fpoints_5fgrid_5fmod_148',['ip_station_points_grid_mod',['../namespaceip__station__points__grid__mod.html',1,'']]], + ['ip_5fstation_5fpoints_5fgrid_5fmod_2ef90_149',['ip_station_points_grid_mod.F90',['../ip__station__points__grid__mod_8F90.html',1,'']]], + ['iplib_5f4_2eh_150',['iplib_4.h',['../iplib__4_8h.html',1,'']]], + ['iplib_5f8_2eh_151',['iplib_8.h',['../iplib__8_8h.html',1,'']]], + ['iplib_5fd_2eh_152',['iplib_d.h',['../iplib__d_8h.html',1,'']]], + ['ipolates_153',['ipolates',['../interfaceipolates__mod_1_1ipolates.html',1,'ipolates_mod']]], + ['ipolates_2ef90_154',['ipolates.F90',['../ipolates_8F90.html',1,'']]], + ['ipolates_5fgrib1_155',['ipolates_grib1',['../namespaceipolates__mod.html#acb5408cf5c3a0f50326edc183f9bd269',1,'ipolates_mod::ipolates_grib1()'],['../interfaceipolates__mod_1_1ipolates.html#a8ff62af694c759f29c332836ff66437b',1,'ipolates_mod::ipolates::ipolates_grib1()']]], + ['ipolates_5fgrib1_5fsingle_5ffield_156',['ipolates_grib1_single_field',['../namespaceipolates__mod.html#ae70a9ca9871bb33e038782b036b7b53d',1,'ipolates_mod::ipolates_grib1_single_field()'],['../interfaceipolates__mod_1_1ipolates.html#afbc36431f96adfbbf552bc6137d0519d',1,'ipolates_mod::ipolates::ipolates_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)']]], + ['ipolates_5fgrib2_157',['ipolates_grib2',['../interfaceipolates__mod_1_1ipolates.html#a791ae0a257adcc3a789494489e28302b',1,'ipolates_mod::ipolates::ipolates_grib2()'],['../namespaceipolates__mod.html#a6b2ea6d5b04d2a68baad261e7a409fac',1,'ipolates_mod::ipolates_grib2()']]], + ['ipolates_5fgrib2_5fsingle_5ffield_158',['ipolates_grib2_single_field',['../interfaceipolates__mod_1_1ipolates.html#a3a77b7de2dce406829a3b01689372240',1,'ipolates_mod::ipolates::ipolates_grib2_single_field()'],['../namespaceipolates__mod.html#a49541b2af75b7c037a863a4785726856',1,'ipolates_mod::ipolates_grib2_single_field(IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], + ['ipolates_5fgrid_159',['ipolates_grid',['../namespaceipolates__mod.html#a2761e20fab898e7fd9963f3e0eb5d104',1,'ipolates_mod']]], + ['ipolates_5fmod_160',['ipolates_mod',['../namespaceipolates__mod.html',1,'']]], + ['ipolatev_161',['ipolatev',['../interfaceipolatev__mod_1_1ipolatev.html',1,'ipolatev_mod']]], + ['ipolatev_2ef90_162',['ipolatev.F90',['../ipolatev_8F90.html',1,'']]], + ['ipolatev_5fgrib1_163',['ipolatev_grib1',['../interfaceipolatev__mod_1_1ipolatev.html#ac721867d3d8e8adc11d56baba4702d53',1,'ipolatev_mod::ipolatev::ipolatev_grib1()'],['../namespaceipolatev__mod.html#abddc4a9b00133b358443b118f1352d1f',1,'ipolatev_mod::ipolatev_grib1()']]], + ['ipolatev_5fgrib1_5fsingle_5ffield_164',['ipolatev_grib1_single_field',['../interfaceipolatev__mod_1_1ipolatev.html#ad211b25631afd3fd7c04bbfba589a7c5',1,'ipolatev_mod::ipolatev::ipolatev_grib1_single_field()'],['../namespaceipolatev__mod.html#ad535ffd159c46e770effd774aabede58',1,'ipolatev_mod::ipolatev_grib1_single_field()']]], + ['ipolatev_5fgrib2_165',['ipolatev_grib2',['../interfaceipolatev__mod_1_1ipolatev.html#ac1ec04e3119f285f0f3955f016926efe',1,'ipolatev_mod::ipolatev::ipolatev_grib2()'],['../namespaceipolatev__mod.html#a00fed53dd867a802b3adbc1141e8d272',1,'ipolatev_mod::ipolatev_grib2()']]], + ['ipolatev_5fgrib2_5fsingle_5ffield_166',['ipolatev_grib2_single_field',['../interfaceipolatev__mod_1_1ipolatev.html#aa0af88a9ccef79a921680fe40ec30ccd',1,'ipolatev_mod::ipolatev::ipolatev_grib2_single_field()'],['../namespaceipolatev__mod.html#a71d7507e8f89e1229caaaacb37e0c9c7',1,'ipolatev_mod::ipolatev_grib2_single_field(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)']]], + ['ipolatev_5fgrid_167',['ipolatev_grid',['../namespaceipolatev__mod.html#a8f3bfec7495e13b75b2035e8e1f081a1',1,'ipolatev_mod']]], + ['ipolatev_5fmod_168',['ipolatev_mod',['../namespaceipolatev__mod.html',1,'']]], + ['ipxetas_169',['ipxetas',['../ipxetas_8F90.html#a89ff34ee39b0da1895e9d8552bb462e1',1,'ipxetas.F90']]], + ['ipxetas_2ef90_170',['ipxetas.F90',['../ipxetas_8F90.html',1,'']]], + ['ipxwafs_171',['ipxwafs',['../ipxwafs_8F90.html#a1465ea191950f7464bb3374abed94c12',1,'ipxwafs.F90']]], + ['ipxwafs_2ef90_172',['ipxwafs.F90',['../ipxwafs_8F90.html',1,'']]], + ['ipxwafs2_173',['ipxwafs2',['../ipxwafs2_8F90.html#ab602c9c04957836c0b8860560d442894',1,'ipxwafs2.F90']]], + ['ipxwafs2_2ef90_174',['ipxwafs2.F90',['../ipxwafs2_8F90.html',1,'']]], + ['ipxwafs3_175',['ipxwafs3',['../ipxwafs3_8F90.html#aae7be3c77cbe16d0219c86e443e6ec1d',1,'ipxwafs3.F90']]], + ['ipxwafs3_2ef90_176',['ipxwafs3.F90',['../ipxwafs3_8F90.html',1,'']]], + ['irot_177',['irot',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a558e99f37191cb2ea7398ac2a05ef29e',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::irot()'],['../namespaceip__rot__equid__cylind__grid__mod.html#abb0c2acdbd71f0c07ffaf9db54ce06c1',1,'ip_rot_equid_cylind_grid_mod::irot()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a93ed996cf2dc9569e356256ec946b571',1,'ip_rot_equid_cylind_egrid_mod::irot()'],['../namespaceip__polar__stereo__grid__mod.html#a1269037aaecd12e75e17d8aac8e20c8c',1,'ip_polar_stereo_grid_mod::irot()'],['../namespaceip__lambert__conf__grid__mod.html#a7dea876ed4206c5ecc0444aadb7d6acd',1,'ip_lambert_conf_grid_mod::irot()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a13f3f267f5a26602eb93b6525f494a10',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::irot()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#ae4c44c4cf8d1376b24861534edbf514f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::irot()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0d90490fa5eb04604fc0e01bea2cf3cf',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::irot()']]], + ['is_5fsame_5fgrid_178',['is_same_grid',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a9da102dac348a63ffce6556ed5da81b6',1,'ip_grid_descriptor_mod::ip_grid_descriptor::is_same_grid()'],['../interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html#a34e94f8aada186a3d22112a1ab31b53c',1,'ip_grid_descriptor_mod::operator(==)::is_same_grid()'],['../interfaceip__grid__mod_1_1operator_07_0a_0a_08.html#a0303cd13db74e096af7f77200ef09c6b',1,'ip_grid_mod::operator(==)::is_same_grid()'],['../namespaceip__grid__descriptor__mod.html#a202219f9c5c84fa04d3eb1c2208358ec',1,'ip_grid_descriptor_mod::is_same_grid()'],['../namespaceip__grid__mod.html#a663bda9af9dd991a09ba0f0de66dc045',1,'ip_grid_mod::is_same_grid()']]], + ['is_5fsame_5fgrid_5fgrib1_179',['is_same_grid_grib1',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html#a33b4fc04d218c73e3c4d061163dcbc95',1,'ip_grid_descriptor_mod::grib1_descriptor::is_same_grid_grib1()'],['../namespaceip__grid__descriptor__mod.html#a5bb3c5230b88012bddc3922bfa1cb019',1,'ip_grid_descriptor_mod::is_same_grid_grib1()']]], + ['is_5fsame_5fgrid_5fgrib2_180',['is_same_grid_grib2',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#ae27b09a835144baf782e2cde0c1ea013',1,'ip_grid_descriptor_mod::grib2_descriptor::is_same_grid_grib2()'],['../namespaceip__grid__descriptor__mod.html#a75ac34ea9372afaa29b0df2ce8919988',1,'ip_grid_descriptor_mod::is_same_grid_grib2()']]], + ['iwrap_181',['iwrap',['../structip__grid__mod_1_1ip__grid.html#ae179622b9a4c764a5ca90385330941ed',1,'ip_grid_mod::ip_grid']]] +]; diff --git a/ver-5.0.0/search/all_9.html b/ver-5.0.0/search/all_9.html new file mode 100644 index 00000000..1e263c13 --- /dev/null +++ b/ver-5.0.0/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_9.js b/ver-5.0.0/search/all_9.js new file mode 100644 index 00000000..da246a14 --- /dev/null +++ b/ver-5.0.0/search/all_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['j1_182',['j1',['../namespaceip__gaussian__grid__mod.html#af5c4024263aa3eaef5801849ae32c15a',1,'ip_gaussian_grid_mod']]], + ['jg_183',['jg',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a110f99e158a977a1679133235fa06c34',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], + ['jh_184',['jh',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a549ccd3ce1f5c75d99e8e04d4d4341b4',1,'ip_gaussian_grid_mod::ip_gaussian_grid::jh()'],['../namespaceip__gaussian__grid__mod.html#a67d6cd6d188a8bded8bdf64927617028',1,'ip_gaussian_grid_mod::jh()']]], + ['jm_185',['jm',['../structip__grid__mod_1_1ip__grid.html#a41a2a38288864520d8c50854d1843f87',1,'ip_grid_mod::ip_grid']]], + ['jscan_186',['jscan',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3e199827f764b162a14515e837c28903',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], + ['jwrap1_187',['jwrap1',['../structip__grid__mod_1_1ip__grid.html#a92976f110dd7e823799991137ac970a1',1,'ip_grid_mod::ip_grid']]], + ['jwrap2_188',['jwrap2',['../structip__grid__mod_1_1ip__grid.html#ae70be8cebcd217a49be4da1cebfc19d2',1,'ip_grid_mod::ip_grid']]] +]; diff --git a/ver-5.0.0/search/all_a.html b/ver-5.0.0/search/all_a.html new file mode 100644 index 00000000..3a6cac10 --- /dev/null +++ b/ver-5.0.0/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_a.js b/ver-5.0.0/search/all_a.js new file mode 100644 index 00000000..e5519d13 --- /dev/null +++ b/ver-5.0.0/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['kd_189',['kd',['../namespaceip__rot__equid__cylind__egrid__mod.html#a50497d277c347a2991b0e34e85f1787e',1,'ip_rot_equid_cylind_egrid_mod::kd()'],['../namespaceip__rot__equid__cylind__grid__mod.html#af5dea0592cccce2de1c5c6a92d42cfd6',1,'ip_rot_equid_cylind_grid_mod::kd()']]], + ['kscan_190',['kscan',['../structip__grid__mod_1_1ip__grid.html#a084603b1c052e76c3335fea2e887cfce',1,'ip_grid_mod::ip_grid']]] +]; diff --git a/ver-5.0.0/search/all_b.html b/ver-5.0.0/search/all_b.html new file mode 100644 index 00000000..130deb4e --- /dev/null +++ b/ver-5.0.0/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_b.js b/ver-5.0.0/search/all_b.js new file mode 100644 index 00000000..610c4342 --- /dev/null +++ b/ver-5.0.0/search/all_b.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['lambert_5fconf_5fgrid_5farea_191',['lambert_conf_grid_area',['../namespaceip__lambert__conf__grid__mod.html#a15c44b47172b926aea840caee9723b1c',1,'ip_lambert_conf_grid_mod']]], + ['lambert_5fconf_5fgrid_5fid_5fgrib1_192',['lambert_conf_grid_id_grib1',['../namespaceip__grid__mod.html#ab82b90d20f38ff39741f6890fa422d16',1,'ip_grid_mod']]], + ['lambert_5fconf_5fgrid_5fid_5fgrib2_193',['lambert_conf_grid_id_grib2',['../namespaceip__grid__mod.html#a2e49846c9122b1fe1fcdbb2913fc32fe',1,'ip_grid_mod']]], + ['lambert_5fconf_5fmap_5fjacob_194',['lambert_conf_map_jacob',['../namespaceip__lambert__conf__grid__mod.html#a5e1d42f0027236f47467e25c525e66ae',1,'ip_lambert_conf_grid_mod']]], + ['lambert_5fconf_5fvect_5frot_195',['lambert_conf_vect_rot',['../namespaceip__lambert__conf__grid__mod.html#a58187073914efa18eca897c6ec203b71',1,'ip_lambert_conf_grid_mod']]], + ['lapack_5fgen_2ef_196',['lapack_gen.F',['../lapack__gen_8F.html',1,'']]], + ['lubksb_197',['lubksb',['../lapack__gen_8F.html#a3c6b581386390037e8c04c238a208547',1,'lapack_gen.F']]], + ['ludcmp_198',['ludcmp',['../lapack__gen_8F.html#a2af64d5edd49c8f4dcdfdd21235de781',1,'lapack_gen.F']]] +]; diff --git a/ver-5.0.0/search/all_c.html b/ver-5.0.0/search/all_c.html new file mode 100644 index 00000000..3dd5af06 --- /dev/null +++ b/ver-5.0.0/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_c.js b/ver-5.0.0/search/all_c.js new file mode 100644 index 00000000..9d635abc --- /dev/null +++ b/ver-5.0.0/search/all_c.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['mercator_5fgrid_5farea_199',['mercator_grid_area',['../namespaceip__mercator__grid__mod.html#a952ab9add18587c4dbe54699feb8eafd',1,'ip_mercator_grid_mod']]], + ['mercator_5fgrid_5fid_5fgrib1_200',['mercator_grid_id_grib1',['../namespaceip__grid__mod.html#ab9ff525eca4f053b04ec96a83cb06682',1,'ip_grid_mod']]], + ['mercator_5fgrid_5fid_5fgrib2_201',['mercator_grid_id_grib2',['../namespaceip__grid__mod.html#af9c58af5162d96cb7d1ac5001139b856',1,'ip_grid_mod']]], + ['mercator_5fmap_5fjacob_202',['mercator_map_jacob',['../namespaceip__mercator__grid__mod.html#ab93a0a6ae8c5f5056abece1dcffdc57a',1,'ip_mercator_grid_mod']]], + ['mercator_5fvect_5frot_203',['mercator_vect_rot',['../namespaceip__mercator__grid__mod.html#aea5e18faf7a18bf8d06c87ccb11f3e17',1,'ip_mercator_grid_mod']]], + ['movect_204',['movect',['../movect_8F90.html#a5974e32c0cf90a65b39c68460d761882',1,'movect.F90']]], + ['movect_2ef90_205',['movect.F90',['../movect_8F90.html',1,'']]] +]; diff --git a/ver-5.0.0/search/all_d.html b/ver-5.0.0/search/all_d.html new file mode 100644 index 00000000..af7f2f0f --- /dev/null +++ b/ver-5.0.0/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_d.js b/ver-5.0.0/search/all_d.js new file mode 100644 index 00000000..478fd976 --- /dev/null +++ b/ver-5.0.0/search/all_d.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['ncpus_206',['ncpus',['../ncpus_8F.html#a821a75ee067ea31758a038c0327bd3bd',1,'ncpus.F']]], + ['ncpus_2ef_207',['ncpus.F',['../ncpus_8F.html',1,'']]], + ['neighbor_5fbudget_5finterp_5fid_208',['neighbor_budget_interp_id',['../namespaceip__interpolators__mod.html#ae77a1da241f5de94f1874004ee8e715c',1,'ip_interpolators_mod']]], + ['neighbor_5fbudget_5finterp_5fmod_209',['neighbor_budget_interp_mod',['../namespaceneighbor__budget__interp__mod.html',1,'']]], + ['neighbor_5fbudget_5finterp_5fmod_2ef90_210',['neighbor_budget_interp_mod.F90',['../neighbor__budget__interp__mod_8F90.html',1,'']]], + ['neighbor_5finterp_5fid_211',['neighbor_interp_id',['../namespaceip__interpolators__mod.html#a35e5fe3a2dd79d205c0503f550388258',1,'ip_interpolators_mod']]], + ['neighbor_5finterp_5fmod_212',['neighbor_interp_mod',['../namespaceneighbor__interp__mod.html',1,'']]], + ['neighbor_5finterp_5fmod_2ef90_213',['neighbor_interp_mod.F90',['../neighbor__interp__mod_8F90.html',1,'']]], + ['nm_214',['nm',['../structip__grid__mod_1_1ip__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30',1,'ip_grid_mod::ip_grid']]], + ['nscan_215',['nscan',['../structip__grid__mod_1_1ip__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18',1,'ip_grid_mod::ip_grid']]], + ['nscan_5ffield_5fpos_216',['nscan_field_pos',['../structip__grid__mod_1_1ip__grid.html#a0640093c52461763f904cc2f12c96b6c',1,'ip_grid_mod::ip_grid']]] +]; diff --git a/ver-5.0.0/search/all_e.html b/ver-5.0.0/search/all_e.html new file mode 100644 index 00000000..e25df423 --- /dev/null +++ b/ver-5.0.0/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_e.js b/ver-5.0.0/search/all_e.js new file mode 100644 index 00000000..30900898 --- /dev/null +++ b/ver-5.0.0/search/all_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['operator_28_3d_3d_29_217',['operator(==)',['../interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html',1,'ip_grid_descriptor_mod::operator(==)'],['../interfaceip__grid__mod_1_1operator_07_0a_0a_08.html',1,'ip_grid_mod::operator(==)']]], + ['orient_218',['orient',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0614cfdb69e59e3c3e2937f3319fe34a',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::orient()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aeaeb6d72861b9b62de5bcd435bc96ea4',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::orient()'],['../namespaceip__polar__stereo__grid__mod.html#aa4a88f48d7b78cfdfc54754882195d18',1,'ip_polar_stereo_grid_mod::orient()']]] +]; diff --git a/ver-5.0.0/search/all_f.html b/ver-5.0.0/search/all_f.html new file mode 100644 index 00000000..b23da6ce --- /dev/null +++ b/ver-5.0.0/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/all_f.js b/ver-5.0.0/search/all_f.js new file mode 100644 index 00000000..f39c5e13 --- /dev/null +++ b/ver-5.0.0/search/all_f.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['pi_219',['pi',['../namespaceip__constants__mod.html#a47f83a2267da693170054c958c401cd4',1,'ip_constants_mod']]], + ['pi2_220',['pi2',['../namespaceip__constants__mod.html#a309f7e3b1f83b6b272b12ce4fff501c5',1,'ip_constants_mod']]], + ['pi4_221',['pi4',['../namespaceip__constants__mod.html#a5fe7cdd86b44487666dc37f655d9ff15',1,'ip_constants_mod']]], + ['polar_5fstereo_5fgrid_5farea_222',['polar_stereo_grid_area',['../namespaceip__polar__stereo__grid__mod.html#a2a2e0854e5c129e320924a811cbd08e2',1,'ip_polar_stereo_grid_mod']]], + ['polar_5fstereo_5fgrid_5fid_5fgrib1_223',['polar_stereo_grid_id_grib1',['../namespaceip__grid__mod.html#afee73c2f09ea9de43c156dc594ae1df1',1,'ip_grid_mod']]], + ['polar_5fstereo_5fgrid_5fid_5fgrib2_224',['polar_stereo_grid_id_grib2',['../namespaceip__grid__mod.html#a5b3ad320b41791e65966e1bb498e9ae3',1,'ip_grid_mod']]], + ['polar_5fstereo_5fmap_5fjacob_225',['polar_stereo_map_jacob',['../namespaceip__polar__stereo__grid__mod.html#a386933f7e52c348b9d742df423e0e223',1,'ip_polar_stereo_grid_mod']]], + ['polar_5fstereo_5fvect_5frot_226',['polar_stereo_vect_rot',['../namespaceip__polar__stereo__grid__mod.html#abe4d416201e986421a8e325a9b00e462',1,'ip_polar_stereo_grid_mod']]], + ['polates4_227',['polates4',['../interfacespectral__interp__mod_1_1polates4.html',1,'spectral_interp_mod']]], + ['polates4_5fgrib1_228',['polates4_grib1',['../namespacespectral__interp__mod.html#ab9fb87d87f2f9d578a5ade6b512ff366',1,'spectral_interp_mod::polates4_grib1()'],['../interfacespectral__interp__mod_1_1polates4.html#a0be1315db4dce899083176b47b6ea6a4',1,'spectral_interp_mod::polates4::polates4_grib1()']]], + ['polates4_5fgrib2_229',['polates4_grib2',['../namespacespectral__interp__mod.html#a54dfd0ea8368242a1053d64770bd295a',1,'spectral_interp_mod::polates4_grib2()'],['../interfacespectral__interp__mod_1_1polates4.html#a3fdc75851f1f741e715a1c3e1e4d89c9',1,'spectral_interp_mod::polates4::polates4_grib2()']]], + ['polatev4_230',['polatev4',['../interfacespectral__interp__mod_1_1polatev4.html',1,'spectral_interp_mod']]], + ['polatev4_5fgrib1_231',['polatev4_grib1',['../interfacespectral__interp__mod_1_1polatev4.html#a5fa619eb983da3326380e9bafcf49ca8',1,'spectral_interp_mod::polatev4::polatev4_grib1()'],['../namespacespectral__interp__mod.html#af4ce7638750e787dd69c7fe3ff2335cc',1,'spectral_interp_mod::polatev4_grib1()']]], + ['polatev4_5fgrib2_232',['polatev4_grib2',['../interfacespectral__interp__mod_1_1polatev4.html#a9dcbaeb719e3872ad5ad461adde5c98b',1,'spectral_interp_mod::polatev4::polatev4_grib2()'],['../namespacespectral__interp__mod.html#a2f76e9900554d90753ca788c2ddf9ac3',1,'spectral_interp_mod::polatev4_grib2()']]], + ['polfix_5fmod_233',['polfix_mod',['../namespacepolfix__mod.html',1,'']]], + ['polfix_5fmod_2ef90_234',['polfix_mod.F90',['../polfix__mod_8F90.html',1,'']]], + ['polfixs_235',['polfixs',['../namespacepolfix__mod.html#a15df1ba2e1fcad1e9465c4aa3a2ba0d6',1,'polfix_mod']]], + ['polfixv_236',['polfixv',['../namespacepolfix__mod.html#aeefc8f045777f6d962d9ec539ef6007d',1,'polfix_mod']]] +]; diff --git a/ver-5.0.0/search/classes_0.html b/ver-5.0.0/search/classes_0.html new file mode 100644 index 00000000..af8159ee --- /dev/null +++ b/ver-5.0.0/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/classes_0.js b/ver-5.0.0/search/classes_0.js new file mode 100644 index 00000000..6c15aca2 --- /dev/null +++ b/ver-5.0.0/search/classes_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['gdswzd_390',['gdswzd',['../interfacegdswzd__mod_1_1gdswzd.html',1,'gdswzd_mod']]], + ['gdswzd_5finterface_391',['gdswzd_interface',['../interfaceip__grid__mod_1_1gdswzd__interface.html',1,'ip_grid_mod']]], + ['grib1_5fdescriptor_392',['grib1_descriptor',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['grib2_5fdescriptor_393',['grib2_descriptor',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html',1,'ip_grid_descriptor_mod']]] +]; diff --git a/ver-5.0.0/search/classes_1.html b/ver-5.0.0/search/classes_1.html new file mode 100644 index 00000000..576e9168 --- /dev/null +++ b/ver-5.0.0/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/classes_1.js b/ver-5.0.0/search/classes_1.js new file mode 100644 index 00000000..52cb1c46 --- /dev/null +++ b/ver-5.0.0/search/classes_1.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['init_5fdescriptor_394',['init_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['init_5fgrib1_5finterface_395',['init_grib1_interface',['../interfaceip__grid__mod_1_1init__grib1__interface.html',1,'ip_grid_mod']]], + ['init_5fgrib2_5finterface_396',['init_grib2_interface',['../interfaceip__grid__mod_1_1init__grib2__interface.html',1,'ip_grid_mod']]], + ['init_5fgrid_397',['init_grid',['../interfaceip__grid__factory__mod_1_1init__grid.html',1,'ip_grid_factory_mod']]], + ['interpolate_5fbicubic_398',['interpolate_bicubic',['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html',1,'bicubic_interp_mod']]], + ['interpolate_5fbilinear_399',['interpolate_bilinear',['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html',1,'bilinear_interp_mod']]], + ['interpolate_5fbudget_400',['interpolate_budget',['../interfacebudget__interp__mod_1_1interpolate__budget.html',1,'budget_interp_mod']]], + ['interpolate_5fneighbor_401',['interpolate_neighbor',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html',1,'neighbor_interp_mod']]], + ['interpolate_5fneighbor_5fbudget_402',['interpolate_neighbor_budget',['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html',1,'neighbor_budget_interp_mod']]], + ['interpolate_5fspectral_403',['interpolate_spectral',['../interfacespectral__interp__mod_1_1interpolate__spectral.html',1,'spectral_interp_mod']]], + ['ip_5fequid_5fcylind_5fgrid_404',['ip_equid_cylind_grid',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html',1,'ip_equid_cylind_grid_mod']]], + ['ip_5fgaussian_5fgrid_405',['ip_gaussian_grid',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html',1,'ip_gaussian_grid_mod']]], + ['ip_5fgrid_406',['ip_grid',['../structip__grid__mod_1_1ip__grid.html',1,'ip_grid_mod']]], + ['ip_5fgrid_5fdescriptor_407',['ip_grid_descriptor',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html',1,'ip_grid_descriptor_mod']]], + ['ip_5flambert_5fconf_5fgrid_408',['ip_lambert_conf_grid',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html',1,'ip_lambert_conf_grid_mod']]], + ['ip_5fmercator_5fgrid_409',['ip_mercator_grid',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html',1,'ip_mercator_grid_mod']]], + ['ip_5fpolar_5fstereo_5fgrid_410',['ip_polar_stereo_grid',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html',1,'ip_polar_stereo_grid_mod']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_411',['ip_rot_equid_cylind_egrid',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html',1,'ip_rot_equid_cylind_egrid_mod']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_412',['ip_rot_equid_cylind_grid',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html',1,'ip_rot_equid_cylind_grid_mod']]], + ['ip_5fstation_5fpoints_5fgrid_413',['ip_station_points_grid',['../structip__station__points__grid__mod_1_1ip__station__points__grid.html',1,'ip_station_points_grid_mod']]], + ['ipolates_414',['ipolates',['../interfaceipolates__mod_1_1ipolates.html',1,'ipolates_mod']]], + ['ipolatev_415',['ipolatev',['../interfaceipolatev__mod_1_1ipolatev.html',1,'ipolatev_mod']]] +]; diff --git a/ver-5.0.0/search/classes_2.html b/ver-5.0.0/search/classes_2.html new file mode 100644 index 00000000..956405e5 --- /dev/null +++ b/ver-5.0.0/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/classes_2.js b/ver-5.0.0/search/classes_2.js new file mode 100644 index 00000000..6689b41d --- /dev/null +++ b/ver-5.0.0/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operator_28_3d_3d_29_416',['operator(==)',['../interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html',1,'ip_grid_descriptor_mod::operator(==)'],['../interfaceip__grid__mod_1_1operator_07_0a_0a_08.html',1,'ip_grid_mod::operator(==)']]] +]; diff --git a/ver-5.0.0/search/classes_3.html b/ver-5.0.0/search/classes_3.html new file mode 100644 index 00000000..d33343bc --- /dev/null +++ b/ver-5.0.0/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/classes_3.js b/ver-5.0.0/search/classes_3.js new file mode 100644 index 00000000..eb67d0de --- /dev/null +++ b/ver-5.0.0/search/classes_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['polates4_417',['polates4',['../interfacespectral__interp__mod_1_1polates4.html',1,'spectral_interp_mod']]], + ['polatev4_418',['polatev4',['../interfacespectral__interp__mod_1_1polatev4.html',1,'spectral_interp_mod']]] +]; diff --git a/ver-5.0.0/search/close.svg b/ver-5.0.0/search/close.svg new file mode 100644 index 00000000..a933eea1 --- /dev/null +++ b/ver-5.0.0/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/ver-5.0.0/search/files_0.html b/ver-5.0.0/search/files_0.html new file mode 100644 index 00000000..9498842a --- /dev/null +++ b/ver-5.0.0/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/files_0.js b/ver-5.0.0/search/files_0.js new file mode 100644 index 00000000..a22a711b --- /dev/null +++ b/ver-5.0.0/search/files_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['bicubic_5finterp_5fmod_2ef90_446',['bicubic_interp_mod.F90',['../bicubic__interp__mod_8F90.html',1,'']]], + ['bilinear_5finterp_5fmod_2ef90_447',['bilinear_interp_mod.F90',['../bilinear__interp__mod_8F90.html',1,'']]], + ['budget_5finterp_5fmod_2ef90_448',['budget_interp_mod.F90',['../budget__interp__mod_8F90.html',1,'']]] +]; diff --git a/ver-5.0.0/search/files_1.html b/ver-5.0.0/search/files_1.html new file mode 100644 index 00000000..7050ef48 --- /dev/null +++ b/ver-5.0.0/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/files_1.js b/ver-5.0.0/search/files_1.js new file mode 100644 index 00000000..85fdfeee --- /dev/null +++ b/ver-5.0.0/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['earth_5fradius_5fmod_2ef90_449',['earth_radius_mod.F90',['../earth__radius__mod_8F90.html',1,'']]] +]; diff --git a/ver-5.0.0/search/files_2.html b/ver-5.0.0/search/files_2.html new file mode 100644 index 00000000..497cdf5c --- /dev/null +++ b/ver-5.0.0/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/files_2.js b/ver-5.0.0/search/files_2.js new file mode 100644 index 00000000..bc31b066 --- /dev/null +++ b/ver-5.0.0/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fftpack_2ef_450',['fftpack.F',['../fftpack_8F.html',1,'']]] +]; diff --git a/ver-5.0.0/search/files_3.html b/ver-5.0.0/search/files_3.html new file mode 100644 index 00000000..1ba106b2 --- /dev/null +++ b/ver-5.0.0/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/files_3.js b/ver-5.0.0/search/files_3.js new file mode 100644 index 00000000..87d2cd84 --- /dev/null +++ b/ver-5.0.0/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gdswzd_5fc_2ef90_451',['gdswzd_c.F90',['../gdswzd__c_8F90.html',1,'']]], + ['gdswzd_5fmod_2ef90_452',['gdswzd_mod.F90',['../gdswzd__mod_8F90.html',1,'']]] +]; diff --git a/ver-5.0.0/search/files_4.html b/ver-5.0.0/search/files_4.html new file mode 100644 index 00000000..753b7b10 --- /dev/null +++ b/ver-5.0.0/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/files_4.js b/ver-5.0.0/search/files_4.js new file mode 100644 index 00000000..18055cf1 --- /dev/null +++ b/ver-5.0.0/search/files_4.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['ip_5fconstants_5fmod_2ef90_453',['ip_constants_mod.F90',['../ip__constants__mod_8F90.html',1,'']]], + ['ip_5fequid_5fcylind_5fgrid_5fmod_2ef90_454',['ip_equid_cylind_grid_mod.F90',['../ip__equid__cylind__grid__mod_8F90.html',1,'']]], + ['ip_5fgaussian_5fgrid_5fmod_2ef90_455',['ip_gaussian_grid_mod.F90',['../ip__gaussian__grid__mod_8F90.html',1,'']]], + ['ip_5fgrid_5fdescriptor_5fmod_2ef90_456',['ip_grid_descriptor_mod.F90',['../ip__grid__descriptor__mod_8F90.html',1,'']]], + ['ip_5fgrid_5ffactory_5fmod_2ef90_457',['ip_grid_factory_mod.F90',['../ip__grid__factory__mod_8F90.html',1,'']]], + ['ip_5fgrid_5fmod_2ef90_458',['ip_grid_mod.F90',['../ip__grid__mod_8F90.html',1,'']]], + ['ip_5fgrids_5fmod_2ef90_459',['ip_grids_mod.F90',['../ip__grids__mod_8F90.html',1,'']]], + ['ip_5finterpolators_5fmod_2ef90_460',['ip_interpolators_mod.F90',['../ip__interpolators__mod_8F90.html',1,'']]], + ['ip_5flambert_5fconf_5fgrid_5fmod_2ef90_461',['ip_lambert_conf_grid_mod.F90',['../ip__lambert__conf__grid__mod_8F90.html',1,'']]], + ['ip_5fmercator_5fgrid_5fmod_2ef90_462',['ip_mercator_grid_mod.F90',['../ip__mercator__grid__mod_8F90.html',1,'']]], + ['ip_5fmod_2ef90_463',['ip_mod.F90',['../ip__mod_8F90.html',1,'']]], + ['ip_5fpolar_5fstereo_5fgrid_5fmod_2ef90_464',['ip_polar_stereo_grid_mod.F90',['../ip__polar__stereo__grid__mod_8F90.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_2ef90_465',['ip_rot_equid_cylind_egrid_mod.F90',['../ip__rot__equid__cylind__egrid__mod_8F90.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_2ef90_466',['ip_rot_equid_cylind_grid_mod.F90',['../ip__rot__equid__cylind__grid__mod_8F90.html',1,'']]], + ['ip_5fstation_5fpoints_5fgrid_5fmod_2ef90_467',['ip_station_points_grid_mod.F90',['../ip__station__points__grid__mod_8F90.html',1,'']]], + ['iplib_5f4_2eh_468',['iplib_4.h',['../iplib__4_8h.html',1,'']]], + ['iplib_5f8_2eh_469',['iplib_8.h',['../iplib__8_8h.html',1,'']]], + ['iplib_5fd_2eh_470',['iplib_d.h',['../iplib__d_8h.html',1,'']]], + ['ipolates_2ef90_471',['ipolates.F90',['../ipolates_8F90.html',1,'']]], + ['ipolatev_2ef90_472',['ipolatev.F90',['../ipolatev_8F90.html',1,'']]], + ['ipxetas_2ef90_473',['ipxetas.F90',['../ipxetas_8F90.html',1,'']]], + ['ipxwafs_2ef90_474',['ipxwafs.F90',['../ipxwafs_8F90.html',1,'']]], + ['ipxwafs2_2ef90_475',['ipxwafs2.F90',['../ipxwafs2_8F90.html',1,'']]], + ['ipxwafs3_2ef90_476',['ipxwafs3.F90',['../ipxwafs3_8F90.html',1,'']]] +]; diff --git a/ver-5.0.0/search/files_5.html b/ver-5.0.0/search/files_5.html new file mode 100644 index 00000000..7b6affd7 --- /dev/null +++ b/ver-5.0.0/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/files_5.js b/ver-5.0.0/search/files_5.js new file mode 100644 index 00000000..f9c80028 --- /dev/null +++ b/ver-5.0.0/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lapack_5fgen_2ef_477',['lapack_gen.F',['../lapack__gen_8F.html',1,'']]] +]; diff --git a/ver-5.0.0/search/files_6.html b/ver-5.0.0/search/files_6.html new file mode 100644 index 00000000..802ebf71 --- /dev/null +++ b/ver-5.0.0/search/files_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/files_6.js b/ver-5.0.0/search/files_6.js new file mode 100644 index 00000000..f9eeb6a6 --- /dev/null +++ b/ver-5.0.0/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['movect_2ef90_478',['movect.F90',['../movect_8F90.html',1,'']]] +]; diff --git a/ver-5.0.0/search/files_7.html b/ver-5.0.0/search/files_7.html new file mode 100644 index 00000000..365e6484 --- /dev/null +++ b/ver-5.0.0/search/files_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/files_7.js b/ver-5.0.0/search/files_7.js new file mode 100644 index 00000000..aba62e4f --- /dev/null +++ b/ver-5.0.0/search/files_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ncpus_2ef_479',['ncpus.F',['../ncpus_8F.html',1,'']]], + ['neighbor_5fbudget_5finterp_5fmod_2ef90_480',['neighbor_budget_interp_mod.F90',['../neighbor__budget__interp__mod_8F90.html',1,'']]], + ['neighbor_5finterp_5fmod_2ef90_481',['neighbor_interp_mod.F90',['../neighbor__interp__mod_8F90.html',1,'']]] +]; diff --git a/ver-5.0.0/search/files_8.html b/ver-5.0.0/search/files_8.html new file mode 100644 index 00000000..3df0f2fa --- /dev/null +++ b/ver-5.0.0/search/files_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/files_8.js b/ver-5.0.0/search/files_8.js new file mode 100644 index 00000000..c05771bc --- /dev/null +++ b/ver-5.0.0/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['polfix_5fmod_2ef90_482',['polfix_mod.F90',['../polfix__mod_8F90.html',1,'']]] +]; diff --git a/search/files_9.html b/ver-5.0.0/search/files_9.html similarity index 100% rename from search/files_9.html rename to ver-5.0.0/search/files_9.html diff --git a/search/files_9.js b/ver-5.0.0/search/files_9.js similarity index 100% rename from search/files_9.js rename to ver-5.0.0/search/files_9.js diff --git a/ver-5.0.0/search/functions_0.html b/ver-5.0.0/search/functions_0.html new file mode 100644 index 00000000..eb4c5014 --- /dev/null +++ b/ver-5.0.0/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_0.js b/ver-5.0.0/search/functions_0.js new file mode 100644 index 00000000..511dace6 --- /dev/null +++ b/ver-5.0.0/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['csfft_536',['csfft',['../fftpack_8F.html#ad261879c88a7f040e43f1549e65f36e5',1,'fftpack.F']]] +]; diff --git a/ver-5.0.0/search/functions_1.html b/ver-5.0.0/search/functions_1.html new file mode 100644 index 00000000..ef4088b8 --- /dev/null +++ b/ver-5.0.0/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_1.js b/ver-5.0.0/search/functions_1.js new file mode 100644 index 00000000..2e7feb8d --- /dev/null +++ b/ver-5.0.0/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dcrft_537',['dcrft',['../fftpack_8F.html#a713ef445886ad8dc8b16692c6075d225',1,'fftpack.F']]], + ['drcft_538',['drcft',['../fftpack_8F.html#a55b05419c0d3bb0595b34c8cacf93be8',1,'fftpack.F']]] +]; diff --git a/ver-5.0.0/search/functions_2.html b/ver-5.0.0/search/functions_2.html new file mode 100644 index 00000000..ca5aa10e --- /dev/null +++ b/ver-5.0.0/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_2.js b/ver-5.0.0/search/functions_2.js new file mode 100644 index 00000000..ab7735da --- /dev/null +++ b/ver-5.0.0/search/functions_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['earth_5fradius_539',['earth_radius',['../namespaceearth__radius__mod.html#a810f60db1a1faff0d6f59937a8207a54',1,'earth_radius_mod']]], + ['equid_5fcylind_5fgrid_5farea_540',['equid_cylind_grid_area',['../namespaceip__equid__cylind__grid__mod.html#a5a70b82abdce76bef22cdeaa96a986c2',1,'ip_equid_cylind_grid_mod']]], + ['equid_5fcylind_5fmap_5fjacob_541',['equid_cylind_map_jacob',['../namespaceip__equid__cylind__grid__mod.html#a039501b44cd3ad4409983e193d509afd',1,'ip_equid_cylind_grid_mod']]], + ['equid_5fcylind_5fvect_5frot_542',['equid_cylind_vect_rot',['../namespaceip__equid__cylind__grid__mod.html#ade88ecea1c0bb4b4d5b0d08f8482268d',1,'ip_equid_cylind_grid_mod']]] +]; diff --git a/ver-5.0.0/search/functions_3.html b/ver-5.0.0/search/functions_3.html new file mode 100644 index 00000000..d79f55b8 --- /dev/null +++ b/ver-5.0.0/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_3.js b/ver-5.0.0/search/functions_3.js new file mode 100644 index 00000000..2559a58d --- /dev/null +++ b/ver-5.0.0/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['field_5fpos_543',['field_pos',['../structip__grid__mod_1_1ip__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179',1,'ip_grid_mod::ip_grid::field_pos()'],['../namespaceip__grid__mod.html#a63572318d74ec94c20c5ccd6ded2d442',1,'ip_grid_mod::field_pos()']]] +]; diff --git a/ver-5.0.0/search/functions_4.html b/ver-5.0.0/search/functions_4.html new file mode 100644 index 00000000..1657cad0 --- /dev/null +++ b/ver-5.0.0/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_4.js b/ver-5.0.0/search/functions_4.js new file mode 100644 index 00000000..a588d793 --- /dev/null +++ b/ver-5.0.0/search/functions_4.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['gaussian_5fgrid_5farea_544',['gaussian_grid_area',['../namespaceip__gaussian__grid__mod.html#ab602a870a477c7ab77438700af4e7780',1,'ip_gaussian_grid_mod']]], + ['gaussian_5fmap_5fjacob_545',['gaussian_map_jacob',['../namespaceip__gaussian__grid__mod.html#adca7b03877c6a7048ff1716a95e0bd9d',1,'ip_gaussian_grid_mod']]], + ['gaussian_5fvect_5frot_546',['gaussian_vect_rot',['../namespaceip__gaussian__grid__mod.html#ac72eec96d0012fbe0f0ec7c520f40dad',1,'ip_gaussian_grid_mod']]], + ['gdswzd_547',['gdswzd',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a7ce52d987d2bd2442053042c03f96885',1,'ip_gaussian_grid_mod::ip_gaussian_grid::gdswzd()'],['../iplib__d_8h.html#ac919f31612096fd6a7547a425ab3d38e',1,'gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_d.h'],['../iplib__8_8h.html#af41ad9a4b34f78d182a68b3d72b9bdf4',1,'gdswzd(long igdtnum, long *igdtmpl, long igdtlen, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_8.h'],['../iplib__4_8h.html#a44daefd49c37e9bc59933d98e56efa53',1,'gdswzd(int igdtnum, int *igdtmpl, int igdtlen, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area): iplib_4.h'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#a9fff8b24553d11177b8c1ee38bfbd91f',1,'ip_station_points_grid_mod::ip_station_points_grid::gdswzd()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a0f14a253b51bcb0633cd00d32d5130a4',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::gdswzd()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa1023c3efed20a990b75f937bbcac6a3',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::gdswzd()'],['../structip__grid__mod_1_1ip__grid.html#a5fb366fb577a90cc09f21269b90ac080',1,'ip_grid_mod::ip_grid::gdswzd()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a62c8147f8845d75e8f52c7524a74c780',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::gdswzd()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9e97b7352e67dd629f622f292cf0ca21',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::gdswzd()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a940420aa99e0fbe51a976f9d0c343f1a',1,'ip_mercator_grid_mod::ip_mercator_grid::gdswzd()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#aa69861340bc268b91a1076048ed489fc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::gdswzd()']]], + ['gdswzd_5f1d_5farray_548',['gdswzd_1d_array',['../interfacegdswzd__mod_1_1gdswzd.html#afaf35e3ce949dd2ce3d72dd3f06d4e3b',1,'gdswzd_mod::gdswzd::gdswzd_1d_array()'],['../namespacegdswzd__mod.html#ac304e2b046eccc701e24827c81107e76',1,'gdswzd_mod::gdswzd_1d_array()']]], + ['gdswzd_5f2d_5farray_549',['gdswzd_2d_array',['../interfacegdswzd__mod_1_1gdswzd.html#a8b60240eefdc297eacf90c348b529d31',1,'gdswzd_mod::gdswzd::gdswzd_2d_array()'],['../namespacegdswzd__mod.html#acdf970e498e9317522fbdfb690b86e25',1,'gdswzd_mod::gdswzd_2d_array(IGDTNUM, IGDTMPL, IGDTLEN, IOPT, NPTS, FILL, XPTS, YPTS, RLON, RLAT, NRET, CROT, SROT, XLON, XLAT, YLON, YLAT, AREA)']]], + ['gdswzd_5f2d_5farray_5fgrib1_550',['gdswzd_2d_array_grib1',['../namespacegdswzd__mod.html#aa032a55281b18e208630a730679958f4',1,'gdswzd_mod::gdswzd_2d_array_grib1()'],['../interfacegdswzd__mod_1_1gdswzd.html#a7c66a7ede2b644f7e366df9f70b9f0a5',1,'gdswzd_mod::gdswzd::gdswzd_2d_array_grib1()']]], + ['gdswzd_5fc_551',['gdswzd_c',['../namespacegdswzd__c__mod.html#ae3026381f7f41561507c97c9125d24e4',1,'gdswzd_c_mod']]], + ['gdswzd_5fc_5fgrib1_552',['gdswzd_c_grib1',['../namespacegdswzd__c__mod.html#a06861f1403edf106bb3b399c39981504',1,'gdswzd_c_mod']]], + ['gdswzd_5fequid_5fcylind_553',['gdswzd_equid_cylind',['../namespaceip__equid__cylind__grid__mod.html#af20f6f308b5a33211c677b894e41b727',1,'ip_equid_cylind_grid_mod']]], + ['gdswzd_5fgaussian_554',['gdswzd_gaussian',['../namespaceip__gaussian__grid__mod.html#a6eefd9270b3f9bb2c59a77bea4ecf1b9',1,'ip_gaussian_grid_mod']]], + ['gdswzd_5fgrib1_555',['gdswzd_grib1',['../interfacegdswzd__mod_1_1gdswzd.html#a65b95791813ffd5afbfba9d4cb67676a',1,'gdswzd_mod::gdswzd::gdswzd_grib1()'],['../namespacegdswzd__mod.html#a133e040fac8dd56e607b8e3fb6a58c37',1,'gdswzd_mod::gdswzd_grib1()'],['../iplib__4_8h.html#a7f2f96041c0d42926e14cb0f40f336e1',1,'gdswzd_grib1(int *kgds, int iopt, int npts, float fill, float *xpts, float *ypts, float *rlon, float *rlat, int *nret, float *crot, float *srot, float *xlon, float *xlat, float *ylon, float *ylat, float *area): iplib_4.h'],['../iplib__8_8h.html#ab8e46b623c66911913f66d314c15cc93',1,'gdswzd_grib1(long *kgds, long iopt, long npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, long *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_8.h'],['../iplib__d_8h.html#ac33340cba2ac7b42dd9b9116fc28d691',1,'gdswzd_grib1(int *kgds, int iopt, int npts, double fill, double *xpts, double *ypts, double *rlon, double *rlat, int *nret, double *crot, double *srot, double *xlon, double *xlat, double *ylon, double *ylat, double *area): iplib_d.h']]], + ['gdswzd_5fgrid_556',['gdswzd_grid',['../namespacegdswzd__mod.html#a584d2bddbc6d857b80cfac5e3b288d45',1,'gdswzd_mod::gdswzd_grid()'],['../interfacegdswzd__mod_1_1gdswzd.html#abfe059339c6c9f05fd4eadb5d70aec16',1,'gdswzd_mod::gdswzd::gdswzd_grid()']]], + ['gdswzd_5finterface_557',['gdswzd_interface',['../interfaceip__grid__mod_1_1gdswzd__interface.html#af34c5d9da54a36322bb1a141217c6369',1,'ip_grid_mod::gdswzd_interface']]], + ['gdswzd_5flambert_5fconf_558',['gdswzd_lambert_conf',['../namespaceip__lambert__conf__grid__mod.html#a5ebb9e4f1bd58caa254771b305c94f71',1,'ip_lambert_conf_grid_mod']]], + ['gdswzd_5fmercator_559',['gdswzd_mercator',['../namespaceip__mercator__grid__mod.html#acc39017fa51125972ab8e755e16d339e',1,'ip_mercator_grid_mod']]], + ['gdswzd_5fpolar_5fstereo_560',['gdswzd_polar_stereo',['../namespaceip__polar__stereo__grid__mod.html#ae2694d90ab514a131e083dfba3b173c5',1,'ip_polar_stereo_grid_mod']]], + ['gdswzd_5frot_5fequid_5fcylind_561',['gdswzd_rot_equid_cylind',['../namespaceip__rot__equid__cylind__grid__mod.html#a55c153201e15205d3f75e4ffb717cc0b',1,'ip_rot_equid_cylind_grid_mod']]], + ['gdswzd_5frot_5fequid_5fcylind_5fegrid_562',['gdswzd_rot_equid_cylind_egrid',['../namespaceip__rot__equid__cylind__egrid__mod.html#a9ad11a599fc0bdc4a9ece86a3b1cc399',1,'ip_rot_equid_cylind_egrid_mod']]], + ['gdswzd_5fscalar_563',['gdswzd_scalar',['../interfacegdswzd__mod_1_1gdswzd.html#a1fc841ec08d39463b3f5f36eac0068cd',1,'gdswzd_mod::gdswzd::gdswzd_scalar()'],['../namespacegdswzd__mod.html#aba3235c5bc5797e72b9a6a8a587b8861',1,'gdswzd_mod::gdswzd_scalar()']]], + ['gdswzd_5fstation_5fpoints_564',['gdswzd_station_points',['../namespaceip__station__points__grid__mod.html#a8da297b45242279a497dbd7062a33197',1,'ip_station_points_grid_mod']]] +]; diff --git a/ver-5.0.0/search/functions_5.html b/ver-5.0.0/search/functions_5.html new file mode 100644 index 00000000..9301d6b9 --- /dev/null +++ b/ver-5.0.0/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_5.js b/ver-5.0.0/search/functions_5.js new file mode 100644 index 00000000..c35b2aaa --- /dev/null +++ b/ver-5.0.0/search/functions_5.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['init_565',['init',['../structip__grid__mod_1_1ip__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c',1,'ip_grid_mod::ip_grid']]], + ['init_5fgrib1_566',['init_grib1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a68fb7543888cc76885560709184e7d70',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib1()'],['../namespaceip__station__points__grid__mod.html#a4b28ebf2b4fe826c96af69db28e0a1ff',1,'ip_station_points_grid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__grid__mod.html#acb27dfdc6f03dea897d509910365afee',1,'ip_rot_equid_cylind_grid_mod::init_grib1()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#aa65616b97df9c89893161ff802e16eab',1,'ip_rot_equid_cylind_egrid_mod::init_grib1()'],['../namespaceip__polar__stereo__grid__mod.html#a6ed76f58f30993cd7be84b7e03cf4d6f',1,'ip_polar_stereo_grid_mod::init_grib1()'],['../namespaceip__mercator__grid__mod.html#a4125dba8b09e9b69933e224b00f4758d',1,'ip_mercator_grid_mod::init_grib1()'],['../namespaceip__lambert__conf__grid__mod.html#a5544708e893ffcfbe7d958fdec700eea',1,'ip_lambert_conf_grid_mod::init_grib1()'],['../namespaceip__gaussian__grid__mod.html#a8fe2ee732a3a2db4891a6431787a0b01',1,'ip_gaussian_grid_mod::init_grib1()'],['../namespaceip__equid__cylind__grid__mod.html#a3d0132823d27b60835ebb59ead173477',1,'ip_equid_cylind_grid_mod::init_grib1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#afd3658924783d5dbbd3fe5f07d5b60a7',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib1()'],['../structip__grid__mod_1_1ip__grid.html#a5a2c16279eb73a0c54ae0a1586d5b806',1,'ip_grid_mod::ip_grid::init_grib1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a35dd86b4a9017f5b03a0a6a01eb4d370',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3ae3bbb47f4c03c36404a2b35014d65c',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ae2a5a7c08e4578f3d0ff6b85e5a14cce',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#ab9a85830bfd06183a8df73726f62217a',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib1()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a9942c787bda2e118f1355476670edfca',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib1()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#aa5ec2cbc9bf0dadf20a226e0afeb3d32',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib1()']]], + ['init_5fgrib1_5fdescriptor_567',['init_grib1_descriptor',['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a3b5b267aa7a17a4615dcc0cb4e590f6e',1,'ip_grid_descriptor_mod::init_descriptor::init_grib1_descriptor()'],['../namespaceip__grid__descriptor__mod.html#aa00884a7fca018535eaf0c2ebe26bc98',1,'ip_grid_descriptor_mod::init_grib1_descriptor()']]], + ['init_5fgrib1_5finterface_568',['init_grib1_interface',['../interfaceip__grid__mod_1_1init__grib1__interface.html#a47e255b76f02fe58a1aebdadcc5894eb',1,'ip_grid_mod::init_grib1_interface']]], + ['init_5fgrib2_569',['init_grib2',['../namespaceip__equid__cylind__grid__mod.html#a39d24c9468ecb7effd16972fd72e088a',1,'ip_equid_cylind_grid_mod::init_grib2()'],['../structip__station__points__grid__mod_1_1ip__station__points__grid.html#a69fac68e7a40d5c3106a47bf1851891e',1,'ip_station_points_grid_mod::ip_station_points_grid::init_grib2()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a30ae580d169972e8d68c3d97ab3b2634',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib2()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#adda32463a76ad97ac35b01f1ac693fa4',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib2()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9622ce9892084b52303f27722572b87c',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib2()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a505b0114c7ff5fbb58c4e7ce5ccde3f0',1,'ip_mercator_grid_mod::ip_mercator_grid::init_grib2()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a64129413df8ea478ab1360fd1a274e9a',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib2()'],['../structip__grid__mod_1_1ip__grid.html#ad13e0ad8d616e1839ced388826fefee9',1,'ip_grid_mod::ip_grid::init_grib2()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a378b72a1b6090acb90a36385ab9eda5a',1,'ip_gaussian_grid_mod::ip_gaussian_grid::init_grib2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a8dd212953e754964770fa1c3d4bcd3db',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib2()'],['../namespaceip__gaussian__grid__mod.html#ae048ac033628515113b11b8c7364e0c2',1,'ip_gaussian_grid_mod::init_grib2()'],['../namespaceip__lambert__conf__grid__mod.html#acb0339a9fff4fff6c2017d37f8bed0cf',1,'ip_lambert_conf_grid_mod::init_grib2()'],['../namespaceip__mercator__grid__mod.html#aad3b6fef6ee74b8df984c0159ff29c82',1,'ip_mercator_grid_mod::init_grib2()'],['../namespaceip__polar__stereo__grid__mod.html#a5210b986366b503683ae966519d501e7',1,'ip_polar_stereo_grid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#af3cbc17f27800bc67135feacb2c1c3e0',1,'ip_rot_equid_cylind_egrid_mod::init_grib2()'],['../namespaceip__rot__equid__cylind__grid__mod.html#add3c6c1dad5748b452d291df6619867d',1,'ip_rot_equid_cylind_grid_mod::init_grib2()'],['../namespaceip__station__points__grid__mod.html#ad17e6d245295803b62b146be984f874d',1,'ip_station_points_grid_mod::init_grib2()']]], + ['init_5fgrib2_5fdescriptor_570',['init_grib2_descriptor',['../namespaceip__grid__descriptor__mod.html#a143ac06a2a20697d01606a259213b451',1,'ip_grid_descriptor_mod::init_grib2_descriptor()'],['../interfaceip__grid__descriptor__mod_1_1init__descriptor.html#a6702c4bf3a3d914e5cd2fce8fba4f95c',1,'ip_grid_descriptor_mod::init_descriptor::init_grib2_descriptor()']]], + ['init_5fgrib2_5finterface_571',['init_grib2_interface',['../interfaceip__grid__mod_1_1init__grib2__interface.html#a25dcec4470effb9b20dfc7981c21ec6c',1,'ip_grid_mod::init_grib2_interface']]], + ['init_5fgrid_5fgeneric_572',['init_grid_generic',['../interfaceip__grid__factory__mod_1_1init__grid.html#a3fbbec3ddc7dfd918c2abc02e7a4cd72',1,'ip_grid_factory_mod::init_grid::init_grid_generic()'],['../namespaceip__grid__factory__mod.html#a2d2ea07d353bae8b057471aa99b58e46',1,'ip_grid_factory_mod::init_grid_generic(grid, grid_desc)']]], + ['init_5fgrid_5fgrib1_573',['init_grid_grib1',['../namespaceip__grid__factory__mod.html#ad8906ed6fe52c2426c0ff09ce50b6fc5',1,'ip_grid_factory_mod']]], + ['init_5fgrid_5fgrib2_574',['init_grid_grib2',['../namespaceip__grid__factory__mod.html#aa187dc8dbd1d004a51cc0e9826ffa225',1,'ip_grid_factory_mod']]], + ['interpolate_5fbicubic_5fscalar_575',['interpolate_bicubic_scalar',['../namespacebicubic__interp__mod.html#a54a442e47f1be9511c1684a337d7e2d1',1,'bicubic_interp_mod::interpolate_bicubic_scalar()'],['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#acbfecc99184cf9ae71b2c9f79c7d4077',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_scalar()']]], + ['interpolate_5fbicubic_5fvector_576',['interpolate_bicubic_vector',['../namespacebicubic__interp__mod.html#a9d27db7d350fc2699aaf5057c3b53d16',1,'bicubic_interp_mod::interpolate_bicubic_vector()'],['../interfacebicubic__interp__mod_1_1interpolate__bicubic.html#aac45c15e1c9d76158d72e62ccaca915b',1,'bicubic_interp_mod::interpolate_bicubic::interpolate_bicubic_vector()']]], + ['interpolate_5fbilinear_5fscalar_577',['interpolate_bilinear_scalar',['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#a3493cf5bc04aa4551ffd4c314ef09a65',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_scalar()'],['../namespacebilinear__interp__mod.html#a34d2eea4682104097dccf3e7ab6a9398',1,'bilinear_interp_mod::interpolate_bilinear_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], + ['interpolate_5fbilinear_5fvector_578',['interpolate_bilinear_vector',['../namespacebilinear__interp__mod.html#abc218f8774d2af09299eb299d6f38e04',1,'bilinear_interp_mod::interpolate_bilinear_vector()'],['../interfacebilinear__interp__mod_1_1interpolate__bilinear.html#ab4692c5250b37325f764b38c570892dd',1,'bilinear_interp_mod::interpolate_bilinear::interpolate_bilinear_vector()']]], + ['interpolate_5fbudget_5fscalar_579',['interpolate_budget_scalar',['../namespacebudget__interp__mod.html#a09bd6535b0c2e1022cfde39c39d14466',1,'budget_interp_mod::interpolate_budget_scalar()'],['../interfacebudget__interp__mod_1_1interpolate__budget.html#a4b96cbeedb86ef43b687f7ea55914ef0',1,'budget_interp_mod::interpolate_budget::interpolate_budget_scalar()']]], + ['interpolate_5fbudget_5fvector_580',['interpolate_budget_vector',['../namespacebudget__interp__mod.html#abc99486ee9c0091c1514af6114d4e803',1,'budget_interp_mod::interpolate_budget_vector()'],['../interfacebudget__interp__mod_1_1interpolate__budget.html#a573e89e56381d0f69e4022d791a087e6',1,'budget_interp_mod::interpolate_budget::interpolate_budget_vector()']]], + ['interpolate_5fneighbor_5fbudget_5fscalar_581',['interpolate_neighbor_budget_scalar',['../namespaceneighbor__budget__interp__mod.html#a6d5110a9e9facf8c3132ec27d6857817',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_scalar()'],['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a96e4b145a4df6f4948b1d5ae2da6a71a',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_scalar()']]], + ['interpolate_5fneighbor_5fbudget_5fvector_582',['interpolate_neighbor_budget_vector',['../namespaceneighbor__budget__interp__mod.html#a4309c1e6b7fc60ded40657fe6c72297e',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget_vector()'],['../interfaceneighbor__budget__interp__mod_1_1interpolate__neighbor__budget.html#a573bd5ac43484aa6d051e58f37ff7c06',1,'neighbor_budget_interp_mod::interpolate_neighbor_budget::interpolate_neighbor_budget_vector()']]], + ['interpolate_5fneighbor_5fscalar_583',['interpolate_neighbor_scalar',['../namespaceneighbor__interp__mod.html#a78452d1527c6974ad54091f0318e4b1f',1,'neighbor_interp_mod::interpolate_neighbor_scalar()'],['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a04ebb54535e67ff95c1d3d64b9cf6246',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], + ['interpolate_5fneighbor_5fvector_584',['interpolate_neighbor_vector',['../interfaceneighbor__interp__mod_1_1interpolate__neighbor.html#a4662245e2744fd14628b48f23bf4f0a7',1,'neighbor_interp_mod::interpolate_neighbor::interpolate_neighbor_vector()'],['../namespaceneighbor__interp__mod.html#a744ccffd8cd6c13d360e634db4851756',1,'neighbor_interp_mod::interpolate_neighbor_vector()']]], + ['interpolate_5fspectral_5fscalar_585',['interpolate_spectral_scalar',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a79f600a26ecf256a8a13cf4bdbaf2ab1',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_scalar()'],['../namespacespectral__interp__mod.html#a438646d69e941def0ada00d5ca19f618',1,'spectral_interp_mod::interpolate_spectral_scalar()']]], + ['interpolate_5fspectral_5fvector_586',['interpolate_spectral_vector',['../interfacespectral__interp__mod_1_1interpolate__spectral.html#a9e939bbb3f7b214fee26c1e77764e487',1,'spectral_interp_mod::interpolate_spectral::interpolate_spectral_vector()'],['../namespacespectral__interp__mod.html#acb61ad529b7decc2a6ff58dd12fbadd0',1,'spectral_interp_mod::interpolate_spectral_vector()']]], + ['ipolates_5fgrib1_587',['ipolates_grib1',['../interfaceipolates__mod_1_1ipolates.html#a8ff62af694c759f29c332836ff66437b',1,'ipolates_mod::ipolates::ipolates_grib1()'],['../namespaceipolates__mod.html#acb5408cf5c3a0f50326edc183f9bd269',1,'ipolates_mod::ipolates_grib1(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)']]], + ['ipolates_5fgrib1_5fsingle_5ffield_588',['ipolates_grib1_single_field',['../namespaceipolates__mod.html#ae70a9ca9871bb33e038782b036b7b53d',1,'ipolates_mod::ipolates_grib1_single_field()'],['../interfaceipolates__mod_1_1ipolates.html#afbc36431f96adfbbf552bc6137d0519d',1,'ipolates_mod::ipolates::ipolates_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)']]], + ['ipolates_5fgrib2_589',['ipolates_grib2',['../interfaceipolates__mod_1_1ipolates.html#a791ae0a257adcc3a789494489e28302b',1,'ipolates_mod::ipolates::ipolates_grib2()'],['../namespaceipolates__mod.html#a6b2ea6d5b04d2a68baad261e7a409fac',1,'ipolates_mod::ipolates_grib2()']]], + ['ipolates_5fgrib2_5fsingle_5ffield_590',['ipolates_grib2_single_field',['../interfaceipolates__mod_1_1ipolates.html#a3a77b7de2dce406829a3b01689372240',1,'ipolates_mod::ipolates::ipolates_grib2_single_field()'],['../namespaceipolates__mod.html#a49541b2af75b7c037a863a4785726856',1,'ipolates_mod::ipolates_grib2_single_field(IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)']]], + ['ipolates_5fgrid_591',['ipolates_grid',['../namespaceipolates__mod.html#a2761e20fab898e7fd9963f3e0eb5d104',1,'ipolates_mod']]], + ['ipolatev_5fgrib1_592',['ipolatev_grib1',['../interfaceipolatev__mod_1_1ipolatev.html#ac721867d3d8e8adc11d56baba4702d53',1,'ipolatev_mod::ipolatev::ipolatev_grib1()'],['../namespaceipolatev__mod.html#abddc4a9b00133b358443b118f1352d1f',1,'ipolatev_mod::ipolatev_grib1(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)']]], + ['ipolatev_5fgrib1_5fsingle_5ffield_593',['ipolatev_grib1_single_field',['../namespaceipolatev__mod.html#ad535ffd159c46e770effd774aabede58',1,'ipolatev_mod::ipolatev_grib1_single_field()'],['../interfaceipolatev__mod_1_1ipolatev.html#ad211b25631afd3fd7c04bbfba589a7c5',1,'ipolatev_mod::ipolatev::ipolatev_grib1_single_field()']]], + ['ipolatev_5fgrib2_594',['ipolatev_grib2',['../namespaceipolatev__mod.html#a00fed53dd867a802b3adbc1141e8d272',1,'ipolatev_mod::ipolatev_grib2()'],['../interfaceipolatev__mod_1_1ipolatev.html#ac1ec04e3119f285f0f3955f016926efe',1,'ipolatev_mod::ipolatev::ipolatev_grib2(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)']]], + ['ipolatev_5fgrib2_5fsingle_5ffield_595',['ipolatev_grib2_single_field',['../interfaceipolatev__mod_1_1ipolatev.html#aa0af88a9ccef79a921680fe40ec30ccd',1,'ipolatev_mod::ipolatev::ipolatev_grib2_single_field()'],['../namespaceipolatev__mod.html#a71d7507e8f89e1229caaaacb37e0c9c7',1,'ipolatev_mod::ipolatev_grib2_single_field(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)']]], + ['ipolatev_5fgrid_596',['ipolatev_grid',['../namespaceipolatev__mod.html#a8f3bfec7495e13b75b2035e8e1f081a1',1,'ipolatev_mod']]], + ['ipxetas_597',['ipxetas',['../ipxetas_8F90.html#a89ff34ee39b0da1895e9d8552bb462e1',1,'ipxetas.F90']]], + ['ipxwafs_598',['ipxwafs',['../ipxwafs_8F90.html#a1465ea191950f7464bb3374abed94c12',1,'ipxwafs.F90']]], + ['ipxwafs2_599',['ipxwafs2',['../ipxwafs2_8F90.html#ab602c9c04957836c0b8860560d442894',1,'ipxwafs2.F90']]], + ['ipxwafs3_600',['ipxwafs3',['../ipxwafs3_8F90.html#aae7be3c77cbe16d0219c86e443e6ec1d',1,'ipxwafs3.F90']]], + ['is_5fsame_5fgrid_601',['is_same_grid',['../interfaceip__grid__mod_1_1operator_07_0a_0a_08.html#a0303cd13db74e096af7f77200ef09c6b',1,'ip_grid_mod::operator(==)::is_same_grid()'],['../interfaceip__grid__descriptor__mod_1_1operator_07_0a_0a_08.html#a34e94f8aada186a3d22112a1ab31b53c',1,'ip_grid_descriptor_mod::operator(==)::is_same_grid()'],['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a9da102dac348a63ffce6556ed5da81b6',1,'ip_grid_descriptor_mod::ip_grid_descriptor::is_same_grid()'],['../namespaceip__grid__descriptor__mod.html#a202219f9c5c84fa04d3eb1c2208358ec',1,'ip_grid_descriptor_mod::is_same_grid()'],['../namespaceip__grid__mod.html#a663bda9af9dd991a09ba0f0de66dc045',1,'ip_grid_mod::is_same_grid()']]], + ['is_5fsame_5fgrid_5fgrib1_602',['is_same_grid_grib1',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html#a33b4fc04d218c73e3c4d061163dcbc95',1,'ip_grid_descriptor_mod::grib1_descriptor::is_same_grid_grib1()'],['../namespaceip__grid__descriptor__mod.html#a5bb3c5230b88012bddc3922bfa1cb019',1,'ip_grid_descriptor_mod::is_same_grid_grib1()']]], + ['is_5fsame_5fgrid_5fgrib2_603',['is_same_grid_grib2',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#ae27b09a835144baf782e2cde0c1ea013',1,'ip_grid_descriptor_mod::grib2_descriptor::is_same_grid_grib2()'],['../namespaceip__grid__descriptor__mod.html#a75ac34ea9372afaa29b0df2ce8919988',1,'ip_grid_descriptor_mod::is_same_grid_grib2()']]] +]; diff --git a/ver-5.0.0/search/functions_6.html b/ver-5.0.0/search/functions_6.html new file mode 100644 index 00000000..9c4f5fc6 --- /dev/null +++ b/ver-5.0.0/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_6.js b/ver-5.0.0/search/functions_6.js new file mode 100644 index 00000000..5b834e83 --- /dev/null +++ b/ver-5.0.0/search/functions_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['lambert_5fconf_5fgrid_5farea_604',['lambert_conf_grid_area',['../namespaceip__lambert__conf__grid__mod.html#a15c44b47172b926aea840caee9723b1c',1,'ip_lambert_conf_grid_mod']]], + ['lambert_5fconf_5fmap_5fjacob_605',['lambert_conf_map_jacob',['../namespaceip__lambert__conf__grid__mod.html#a5e1d42f0027236f47467e25c525e66ae',1,'ip_lambert_conf_grid_mod']]], + ['lambert_5fconf_5fvect_5frot_606',['lambert_conf_vect_rot',['../namespaceip__lambert__conf__grid__mod.html#a58187073914efa18eca897c6ec203b71',1,'ip_lambert_conf_grid_mod']]], + ['lubksb_607',['lubksb',['../lapack__gen_8F.html#a3c6b581386390037e8c04c238a208547',1,'lapack_gen.F']]], + ['ludcmp_608',['ludcmp',['../lapack__gen_8F.html#a2af64d5edd49c8f4dcdfdd21235de781',1,'lapack_gen.F']]] +]; diff --git a/ver-5.0.0/search/functions_7.html b/ver-5.0.0/search/functions_7.html new file mode 100644 index 00000000..46b5c0f6 --- /dev/null +++ b/ver-5.0.0/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_7.js b/ver-5.0.0/search/functions_7.js new file mode 100644 index 00000000..be6c3947 --- /dev/null +++ b/ver-5.0.0/search/functions_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['mercator_5fgrid_5farea_609',['mercator_grid_area',['../namespaceip__mercator__grid__mod.html#a952ab9add18587c4dbe54699feb8eafd',1,'ip_mercator_grid_mod']]], + ['mercator_5fmap_5fjacob_610',['mercator_map_jacob',['../namespaceip__mercator__grid__mod.html#ab93a0a6ae8c5f5056abece1dcffdc57a',1,'ip_mercator_grid_mod']]], + ['mercator_5fvect_5frot_611',['mercator_vect_rot',['../namespaceip__mercator__grid__mod.html#aea5e18faf7a18bf8d06c87ccb11f3e17',1,'ip_mercator_grid_mod']]], + ['movect_612',['movect',['../movect_8F90.html#a5974e32c0cf90a65b39c68460d761882',1,'movect.F90']]] +]; diff --git a/ver-5.0.0/search/functions_8.html b/ver-5.0.0/search/functions_8.html new file mode 100644 index 00000000..31a1d950 --- /dev/null +++ b/ver-5.0.0/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_8.js b/ver-5.0.0/search/functions_8.js new file mode 100644 index 00000000..5f0acb89 --- /dev/null +++ b/ver-5.0.0/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ncpus_613',['ncpus',['../ncpus_8F.html#a821a75ee067ea31758a038c0327bd3bd',1,'ncpus.F']]] +]; diff --git a/ver-5.0.0/search/functions_9.html b/ver-5.0.0/search/functions_9.html new file mode 100644 index 00000000..9a8e4290 --- /dev/null +++ b/ver-5.0.0/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_9.js b/ver-5.0.0/search/functions_9.js new file mode 100644 index 00000000..528304d1 --- /dev/null +++ b/ver-5.0.0/search/functions_9.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['polar_5fstereo_5fgrid_5farea_614',['polar_stereo_grid_area',['../namespaceip__polar__stereo__grid__mod.html#a2a2e0854e5c129e320924a811cbd08e2',1,'ip_polar_stereo_grid_mod']]], + ['polar_5fstereo_5fmap_5fjacob_615',['polar_stereo_map_jacob',['../namespaceip__polar__stereo__grid__mod.html#a386933f7e52c348b9d742df423e0e223',1,'ip_polar_stereo_grid_mod']]], + ['polar_5fstereo_5fvect_5frot_616',['polar_stereo_vect_rot',['../namespaceip__polar__stereo__grid__mod.html#abe4d416201e986421a8e325a9b00e462',1,'ip_polar_stereo_grid_mod']]], + ['polates4_5fgrib1_617',['polates4_grib1',['../interfacespectral__interp__mod_1_1polates4.html#a0be1315db4dce899083176b47b6ea6a4',1,'spectral_interp_mod::polates4::polates4_grib1()'],['../namespacespectral__interp__mod.html#ab9fb87d87f2f9d578a5ade6b512ff366',1,'spectral_interp_mod::polates4_grib1()']]], + ['polates4_5fgrib2_618',['polates4_grib2',['../interfacespectral__interp__mod_1_1polates4.html#a3fdc75851f1f741e715a1c3e1e4d89c9',1,'spectral_interp_mod::polates4::polates4_grib2()'],['../namespacespectral__interp__mod.html#a54dfd0ea8368242a1053d64770bd295a',1,'spectral_interp_mod::polates4_grib2()']]], + ['polatev4_5fgrib1_619',['polatev4_grib1',['../interfacespectral__interp__mod_1_1polatev4.html#a5fa619eb983da3326380e9bafcf49ca8',1,'spectral_interp_mod::polatev4::polatev4_grib1()'],['../namespacespectral__interp__mod.html#af4ce7638750e787dd69c7fe3ff2335cc',1,'spectral_interp_mod::polatev4_grib1()']]], + ['polatev4_5fgrib2_620',['polatev4_grib2',['../interfacespectral__interp__mod_1_1polatev4.html#a9dcbaeb719e3872ad5ad461adde5c98b',1,'spectral_interp_mod::polatev4::polatev4_grib2()'],['../namespacespectral__interp__mod.html#a2f76e9900554d90753ca788c2ddf9ac3',1,'spectral_interp_mod::polatev4_grib2()']]], + ['polfixs_621',['polfixs',['../namespacepolfix__mod.html#a15df1ba2e1fcad1e9465c4aa3a2ba0d6',1,'polfix_mod']]], + ['polfixv_622',['polfixv',['../namespacepolfix__mod.html#aeefc8f045777f6d962d9ec539ef6007d',1,'polfix_mod']]] +]; diff --git a/ver-5.0.0/search/functions_a.html b/ver-5.0.0/search/functions_a.html new file mode 100644 index 00000000..5ecc152c --- /dev/null +++ b/ver-5.0.0/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_a.js b/ver-5.0.0/search/functions_a.js new file mode 100644 index 00000000..66fd6c08 --- /dev/null +++ b/ver-5.0.0/search/functions_a.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['radb2_623',['radb2',['../fftpack_8F.html#ae63abe3a02989ed4fbd60b50bc0c6dda',1,'fftpack.F']]], + ['radb3_624',['radb3',['../fftpack_8F.html#a6129001ac4cdf5d5a345edc2822d8014',1,'fftpack.F']]], + ['radb4_625',['radb4',['../fftpack_8F.html#a3b5aab129020968eaf92f2e6ca0785ef',1,'fftpack.F']]], + ['radb5_626',['radb5',['../fftpack_8F.html#a2b6492f922cbee03af5b89d52356abf1',1,'fftpack.F']]], + ['radbg_627',['radbg',['../fftpack_8F.html#af5a2521b66fece6cc768206c1df0d20b',1,'fftpack.F']]], + ['radf2_628',['radf2',['../fftpack_8F.html#a70e2420dd5bee9e41eb6c15bbad5eef6',1,'fftpack.F']]], + ['radf3_629',['radf3',['../fftpack_8F.html#a51374398f8edd5701987ce483c739592',1,'fftpack.F']]], + ['radf4_630',['radf4',['../fftpack_8F.html#ae9910ca606fd0cdb03b5b3b98533f486',1,'fftpack.F']]], + ['radf5_631',['radf5',['../fftpack_8F.html#a6d852c36924b038f77a24b8e22205add',1,'fftpack.F']]], + ['radfg_632',['radfg',['../fftpack_8F.html#ad5dbca6bb6ee7c0a86a1e140627de1b2',1,'fftpack.F']]], + ['rfftb_633',['rfftb',['../fftpack_8F.html#a79ba25d1f342858b0faa3c3e3585ec88',1,'fftpack.F']]], + ['rfftb1_634',['rfftb1',['../fftpack_8F.html#afa735c298a72dd1c13ab1c45e737c066',1,'fftpack.F']]], + ['rfftf_635',['rfftf',['../fftpack_8F.html#afbb5dc9c70ebe24759d5ffec1d3e42e2',1,'fftpack.F']]], + ['rfftf1_636',['rfftf1',['../fftpack_8F.html#acdf9efa42dc73f90af444ee0da649a09',1,'fftpack.F']]], + ['rffti_637',['rffti',['../fftpack_8F.html#a50f1237ff5990436609962c0eae406db',1,'fftpack.F']]], + ['rffti1_638',['rffti1',['../fftpack_8F.html#ae3569ef7a371390f6bf38417865ef71b',1,'fftpack.F']]], + ['rot_5fequid_5fcylind_5fegrid_5ferror_639',['rot_equid_cylind_egrid_error',['../namespaceip__rot__equid__cylind__egrid__mod.html#a69d4e473a1a276b855d37518dc6f1d48',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fgrid_5farea_640',['rot_equid_cylind_egrid_grid_area',['../namespaceip__rot__equid__cylind__egrid__mod.html#a4e6c3a758f9a6474d3e499fabeac0640',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fmap_5fjacob_641',['rot_equid_cylind_egrid_map_jacob',['../namespaceip__rot__equid__cylind__egrid__mod.html#a45b87f77888d428ca0f551edae8da94e',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5fegrid_5fvect_5frot_642',['rot_equid_cylind_egrid_vect_rot',['../namespaceip__rot__equid__cylind__egrid__mod.html#a9ac1f76f515981c464e8391d8c941888',1,'ip_rot_equid_cylind_egrid_mod']]], + ['rot_5fequid_5fcylind_5ferror_643',['rot_equid_cylind_error',['../namespaceip__rot__equid__cylind__grid__mod.html#a1cc09c83f9a3815d8c5f8ed2f239f53f',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fgrid_5farea_644',['rot_equid_cylind_grid_area',['../namespaceip__rot__equid__cylind__grid__mod.html#ad8f1133eb6809705c15337134eafe9fd',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fmap_5fjacob_645',['rot_equid_cylind_map_jacob',['../namespaceip__rot__equid__cylind__grid__mod.html#a985f1dc1a20444cef706d4bb20e0841b',1,'ip_rot_equid_cylind_grid_mod']]], + ['rot_5fequid_5fcylind_5fvect_5frot_646',['rot_equid_cylind_vect_rot',['../namespaceip__rot__equid__cylind__grid__mod.html#a3de472bfc18740a7d985f560f3541c10',1,'ip_rot_equid_cylind_grid_mod']]] +]; diff --git a/ver-5.0.0/search/functions_b.html b/ver-5.0.0/search/functions_b.html new file mode 100644 index 00000000..e301fedd --- /dev/null +++ b/ver-5.0.0/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/functions_b.js b/ver-5.0.0/search/functions_b.js new file mode 100644 index 00000000..e873aa89 --- /dev/null +++ b/ver-5.0.0/search/functions_b.js @@ -0,0 +1,58 @@ +var searchData= +[ + ['scfft_647',['scfft',['../fftpack_8F.html#a369071ea2d380c9d91ba36d1bf375e33',1,'fftpack.F']]], + ['scrft_648',['scrft',['../fftpack_8F.html#ac69cbd64be972c20a4424f5327fb4b36',1,'fftpack.F']]], + ['spanaly_649',['spanaly',['../spanaly_8f.html#a5cc846d796d393d7499cde0f3d1d6e6a',1,'spanaly.f']]], + ['spdz2uv_650',['spdz2uv',['../spdz2uv_8f.html#ae3a4a74c49f78a25425b610743dc0692',1,'spdz2uv.f']]], + ['speps_651',['speps',['../speps_8f.html#a0ab523ec5e1393ffca970897e63a9131',1,'speps.f']]], + ['spfft_652',['spfft',['../spfft_8f.html#a1041af8ac4f6a2407b5b7a799a13fb5d',1,'spfft.f']]], + ['spfft1_653',['spfft1',['../spfft1_8f.html#ac63643472eda83948c0b249b611346d6',1,'spfft1.f']]], + ['spffte_654',['spffte',['../spffte_8f.html#af06489254bd3e99030b39744fce32233',1,'spffte.f']]], + ['spfftpt_655',['spfftpt',['../spfftpt_8f.html#ad16e674ce87bd762a714853967f81356',1,'spfftpt.f']]], + ['spgradq_656',['spgradq',['../spgradq_8f.html#a0bb358cf2a405ce9f17c6e5dfde65849',1,'spgradq.f']]], + ['spgradx_657',['spgradx',['../spgradx_8f.html#a749bc07e763e9cd44490fff2284d00b4',1,'spgradx.f']]], + ['spgrady_658',['spgrady',['../spgrady_8f.html#a1b3e38e56560de7d7dcf19ea3e931cf1',1,'spgrady.f']]], + ['splaplac_659',['splaplac',['../splaplac_8f.html#a64338955857a3cf58283146940e7ae42',1,'splaplac.f']]], + ['splat_660',['splat',['../splat_8F.html#aa6db21451bb67635e7e4426546140e11',1,'splat.F']]], + ['splegend_661',['splegend',['../splegend_8f.html#a9c68adc80e97c43ac983b955dd6cabac',1,'splegend.f']]], + ['sppad_662',['sppad',['../sppad_8f.html#a4338b3ccd7844251bbdabf3da1d6476e',1,'sppad.f']]], + ['spsynth_663',['spsynth',['../spsynth_8f.html#aa6a8113a459918728c876673520126bf',1,'spsynth.f']]], + ['sptez_664',['sptez',['../sptez_8f.html#a418a7d182834b2e2dafae2fe881ba9fc',1,'sptez.f']]], + ['sptezd_665',['sptezd',['../sptezd_8f.html#a6c30b52dcb4da9e403eeeb307b9516d7',1,'sptezd.f']]], + ['sptezm_666',['sptezm',['../sptezm_8f.html#a1430a0df2cba7eefaf67c939684be2d1',1,'sptezm.f']]], + ['sptezmd_667',['sptezmd',['../sptezmd_8f.html#a2b9ead06893e51604bfb18928ddee996',1,'sptezmd.f']]], + ['sptezmv_668',['sptezmv',['../sptezmv_8f.html#a22dc4fc10c5225ec8d3c12ed3cb4786e',1,'sptezmv.f']]], + ['sptezv_669',['sptezv',['../sptezv_8f.html#a83e49d961c40a2621c3f2afe70846226',1,'sptezv.f']]], + ['sptgpm_670',['sptgpm',['../sptgpm_8f.html#a6cffaeaa602eaae5c03166f48065158d',1,'sptgpm.f']]], + ['sptgpmd_671',['sptgpmd',['../sptgpmd_8f.html#af71718c75a2b24b74fa7e1e4318d0539',1,'sptgpmd.f']]], + ['sptgpmv_672',['sptgpmv',['../sptgpmv_8f.html#a15de3accfd448d116324872c8fb1bb17',1,'sptgpmv.f']]], + ['sptgps_673',['sptgps',['../sptgps_8f.html#af06a2dccfa311014fc9f671b14f247b2',1,'sptgps.f']]], + ['sptgpsd_674',['sptgpsd',['../sptgpsd_8f.html#ad6d10c3360c47558a8116b2f5666ed30',1,'sptgpsd.f']]], + ['sptgpsv_675',['sptgpsv',['../sptgpsv_8f.html#af2bf2335047ec277730564dbfa859079',1,'sptgpsv.f']]], + ['sptgpt_676',['sptgpt',['../sptgpt_8f.html#a1b8d333bcc601e5b7e8d3dd1369f54b1',1,'sptgpt.f']]], + ['sptgptd_677',['sptgptd',['../sptgptd_8f.html#a64d1fe761662182ca3495531152d1cd3',1,'sptgptd.f']]], + ['sptgptsd_678',['sptgptsd',['../sptgptsd_8f.html#ad3ab15089a57b493cc74443ea3b3d88f',1,'sptgptsd.f']]], + ['sptgptv_679',['sptgptv',['../sptgptv_8f.html#a9af8a22564d132a887a5237f30710f13',1,'sptgptv.f']]], + ['sptgptvd_680',['sptgptvd',['../sptgptvd_8f.html#ae03c6c76cad685ae1ed32d74bcba6753',1,'sptgptvd.f']]], + ['sptran_681',['sptran',['../sptran_8f.html#af7610e42f0dcd199b8cf80f851dcfed0',1,'sptran.f']]], + ['sptrand_682',['sptrand',['../sptrand_8f.html#ae810abad32bcbdfb8345a30e50bcc1ef',1,'sptrand.f']]], + ['sptranf_683',['sptranf',['../sptranf_8f.html#acf086b5141203e48bdb7250441a16c8c',1,'sptranf.f']]], + ['sptranf0_684',['sptranf0',['../sptranf0_8f.html#aaf9f9002ccd7074dc04dbc40a5aad9f0',1,'sptranf0.f']]], + ['sptranf1_685',['sptranf1',['../sptranf1_8f.html#ad7cec2fd6729ca84b1fac3436f9730e6',1,'sptranf1.f']]], + ['sptranfv_686',['sptranfv',['../sptranfv_8f.html#a1a7aabbd358d4fe984dac6813c98b106',1,'sptranfv.f']]], + ['sptranv_687',['sptranv',['../sptranv_8f.html#a7d6aaa3ed70df1dfaf8dd4443b7190c1',1,'sptranv.f']]], + ['sptrun_688',['sptrun',['../sptrun_8f.html#a1f04574fbd5018f73b68bd2cd0ffc473',1,'sptrun.f']]], + ['sptrund_689',['sptrund',['../sptrund_8f.html#a2636d99e658dfabd4b85f15a76fca480',1,'sptrund.f']]], + ['sptrung_690',['sptrung',['../sptrung_8f.html#af41b64dad4789617a315515ef885912c',1,'sptrung.f']]], + ['sptrungv_691',['sptrungv',['../sptrungv_8f.html#ab7bbe6ecde57394b15e5d4925cb07164',1,'sptrungv.f']]], + ['sptrunl_692',['sptrunl',['../sptrunl_8f.html#a52c4250d24e52304e49aa1d82a93bdb8',1,'sptrunl.f']]], + ['sptrunm_693',['sptrunm',['../sptrunm_8f.html#a2a4e579890d3cf7f6a26091f544b6cb6',1,'sptrunm.f']]], + ['sptrunmv_694',['sptrunmv',['../sptrunmv_8f.html#a8b405d0621112d6852a3bb99602ac2fd',1,'sptrunmv.f']]], + ['sptruns_695',['sptruns',['../sptruns_8f.html#a34f156e2049105d012e445f8aa215444',1,'sptruns.f']]], + ['sptrunsv_696',['sptrunsv',['../sptrunsv_8f.html#a1373b651b9dea586e33d3033aae68656',1,'sptrunsv.f']]], + ['sptrunv_697',['sptrunv',['../sptrunv_8f.html#a9aa39c13dd38585b3afb30cb2486817f',1,'sptrunv.f']]], + ['spuv2dz_698',['spuv2dz',['../spuv2dz_8f.html#a27edc2d10e0a76a45e4aaae58bf018b9',1,'spuv2dz.f']]], + ['spvar_699',['spvar',['../spvar_8f.html#a840f95e09b8d930b38638a391933bee4',1,'spvar.f']]], + ['spwget_700',['spwget',['../spwget_8f.html#a9b6ce78350f7adf2fed874a18312c7a6',1,'spwget.f']]], + ['srcft_701',['srcft',['../fftpack_8F.html#acf248c4f27a9fa81cffdfded50eee742',1,'fftpack.F']]] +]; diff --git a/ver-5.0.0/search/mag_sel.svg b/ver-5.0.0/search/mag_sel.svg new file mode 100644 index 00000000..03626f64 --- /dev/null +++ b/ver-5.0.0/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/ver-5.0.0/search/namespaces_0.html b/ver-5.0.0/search/namespaces_0.html new file mode 100644 index 00000000..21db2c3a --- /dev/null +++ b/ver-5.0.0/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/namespaces_0.js b/ver-5.0.0/search/namespaces_0.js new file mode 100644 index 00000000..66fe5acf --- /dev/null +++ b/ver-5.0.0/search/namespaces_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['bicubic_5finterp_5fmod_419',['bicubic_interp_mod',['../namespacebicubic__interp__mod.html',1,'']]], + ['bilinear_5finterp_5fmod_420',['bilinear_interp_mod',['../namespacebilinear__interp__mod.html',1,'']]], + ['budget_5finterp_5fmod_421',['budget_interp_mod',['../namespacebudget__interp__mod.html',1,'']]] +]; diff --git a/ver-5.0.0/search/namespaces_1.html b/ver-5.0.0/search/namespaces_1.html new file mode 100644 index 00000000..a01efeb1 --- /dev/null +++ b/ver-5.0.0/search/namespaces_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/namespaces_1.js b/ver-5.0.0/search/namespaces_1.js new file mode 100644 index 00000000..b06e7e7c --- /dev/null +++ b/ver-5.0.0/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['earth_5fradius_5fmod_422',['earth_radius_mod',['../namespaceearth__radius__mod.html',1,'']]] +]; diff --git a/ver-5.0.0/search/namespaces_2.html b/ver-5.0.0/search/namespaces_2.html new file mode 100644 index 00000000..b46f2a5d --- /dev/null +++ b/ver-5.0.0/search/namespaces_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/namespaces_2.js b/ver-5.0.0/search/namespaces_2.js new file mode 100644 index 00000000..be62d637 --- /dev/null +++ b/ver-5.0.0/search/namespaces_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gdswzd_5fc_5fmod_423',['gdswzd_c_mod',['../namespacegdswzd__c__mod.html',1,'']]], + ['gdswzd_5fmod_424',['gdswzd_mod',['../namespacegdswzd__mod.html',1,'']]] +]; diff --git a/ver-5.0.0/search/namespaces_3.html b/ver-5.0.0/search/namespaces_3.html new file mode 100644 index 00000000..32b23bde --- /dev/null +++ b/ver-5.0.0/search/namespaces_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/namespaces_3.js b/ver-5.0.0/search/namespaces_3.js new file mode 100644 index 00000000..a1d712f5 --- /dev/null +++ b/ver-5.0.0/search/namespaces_3.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['ip_5fconstants_5fmod_425',['ip_constants_mod',['../namespaceip__constants__mod.html',1,'']]], + ['ip_5fequid_5fcylind_5fgrid_5fmod_426',['ip_equid_cylind_grid_mod',['../namespaceip__equid__cylind__grid__mod.html',1,'']]], + ['ip_5fgaussian_5fgrid_5fmod_427',['ip_gaussian_grid_mod',['../namespaceip__gaussian__grid__mod.html',1,'']]], + ['ip_5fgrid_5fdescriptor_5fmod_428',['ip_grid_descriptor_mod',['../namespaceip__grid__descriptor__mod.html',1,'']]], + ['ip_5fgrid_5ffactory_5fmod_429',['ip_grid_factory_mod',['../namespaceip__grid__factory__mod.html',1,'']]], + ['ip_5fgrid_5fmod_430',['ip_grid_mod',['../namespaceip__grid__mod.html',1,'']]], + ['ip_5fgrids_5fmod_431',['ip_grids_mod',['../namespaceip__grids__mod.html',1,'']]], + ['ip_5finterpolators_5fmod_432',['ip_interpolators_mod',['../namespaceip__interpolators__mod.html',1,'']]], + ['ip_5flambert_5fconf_5fgrid_5fmod_433',['ip_lambert_conf_grid_mod',['../namespaceip__lambert__conf__grid__mod.html',1,'']]], + ['ip_5fmercator_5fgrid_5fmod_434',['ip_mercator_grid_mod',['../namespaceip__mercator__grid__mod.html',1,'']]], + ['ip_5fmod_435',['ip_mod',['../namespaceip__mod.html',1,'']]], + ['ip_5fpolar_5fstereo_5fgrid_5fmod_436',['ip_polar_stereo_grid_mod',['../namespaceip__polar__stereo__grid__mod.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fegrid_5fmod_437',['ip_rot_equid_cylind_egrid_mod',['../namespaceip__rot__equid__cylind__egrid__mod.html',1,'']]], + ['ip_5frot_5fequid_5fcylind_5fgrid_5fmod_438',['ip_rot_equid_cylind_grid_mod',['../namespaceip__rot__equid__cylind__grid__mod.html',1,'']]], + ['ip_5fstation_5fpoints_5fgrid_5fmod_439',['ip_station_points_grid_mod',['../namespaceip__station__points__grid__mod.html',1,'']]], + ['ipolates_5fmod_440',['ipolates_mod',['../namespaceipolates__mod.html',1,'']]], + ['ipolatev_5fmod_441',['ipolatev_mod',['../namespaceipolatev__mod.html',1,'']]] +]; diff --git a/ver-5.0.0/search/namespaces_4.html b/ver-5.0.0/search/namespaces_4.html new file mode 100644 index 00000000..8b85f448 --- /dev/null +++ b/ver-5.0.0/search/namespaces_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/namespaces_4.js b/ver-5.0.0/search/namespaces_4.js new file mode 100644 index 00000000..95370e42 --- /dev/null +++ b/ver-5.0.0/search/namespaces_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['neighbor_5fbudget_5finterp_5fmod_442',['neighbor_budget_interp_mod',['../namespaceneighbor__budget__interp__mod.html',1,'']]], + ['neighbor_5finterp_5fmod_443',['neighbor_interp_mod',['../namespaceneighbor__interp__mod.html',1,'']]] +]; diff --git a/ver-5.0.0/search/namespaces_5.html b/ver-5.0.0/search/namespaces_5.html new file mode 100644 index 00000000..fe78adff --- /dev/null +++ b/ver-5.0.0/search/namespaces_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/namespaces_5.js b/ver-5.0.0/search/namespaces_5.js new file mode 100644 index 00000000..44468751 --- /dev/null +++ b/ver-5.0.0/search/namespaces_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['polfix_5fmod_444',['polfix_mod',['../namespacepolfix__mod.html',1,'']]] +]; diff --git a/ver-5.0.0/search/namespaces_6.html b/ver-5.0.0/search/namespaces_6.html new file mode 100644 index 00000000..f646cb5a --- /dev/null +++ b/ver-5.0.0/search/namespaces_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/namespaces_6.js b/ver-5.0.0/search/namespaces_6.js new file mode 100644 index 00000000..0db5b9b7 --- /dev/null +++ b/ver-5.0.0/search/namespaces_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['spectral_5finterp_5fmod_445',['spectral_interp_mod',['../namespacespectral__interp__mod.html',1,'']]] +]; diff --git a/ver-5.0.0/search/nomatches.html b/ver-5.0.0/search/nomatches.html new file mode 100644 index 00000000..2b9360b6 --- /dev/null +++ b/ver-5.0.0/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
                    +
                    No Matches
                    +
                    + + diff --git a/ver-5.0.0/search/pages_0.html b/ver-5.0.0/search/pages_0.html new file mode 100644 index 00000000..8517b48f --- /dev/null +++ b/ver-5.0.0/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/pages_0.js b/ver-5.0.0/search/pages_0.js new file mode 100644 index 00000000..1b149a48 --- /dev/null +++ b/ver-5.0.0/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['introduction_783',['Introduction',['../index.html',1,'']]] +]; diff --git a/ver-5.0.0/search/search.css b/ver-5.0.0/search/search.css new file mode 100644 index 00000000..9074198f --- /dev/null +++ b/ver-5.0.0/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
                  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-5.0.0/search/search.js b/ver-5.0.0/search/search.js new file mode 100644 index 00000000..fb226f73 --- /dev/null +++ b/ver-5.0.0/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_0.js b/ver-5.0.0/search/variables_0.js new file mode 100644 index 00000000..b4c84e1c --- /dev/null +++ b/ver-5.0.0/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['an_702',['an',['../namespaceip__lambert__conf__grid__mod.html#a82b75fe2d8495aab75b225c6309e61c8',1,'ip_lambert_conf_grid_mod']]] +]; diff --git a/ver-5.0.0/search/variables_1.html b/ver-5.0.0/search/variables_1.html new file mode 100644 index 00000000..ea73d9a4 --- /dev/null +++ b/ver-5.0.0/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_1.js b/ver-5.0.0/search/variables_1.js new file mode 100644 index 00000000..a00dc525 --- /dev/null +++ b/ver-5.0.0/search/variables_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['bicubic_5finterp_5fid_703',['bicubic_interp_id',['../namespaceip__interpolators__mod.html#adfdc7760718083d85618df85320c495e',1,'ip_interpolators_mod']]], + ['bilinear_5finterp_5fid_704',['bilinear_interp_id',['../namespaceip__interpolators__mod.html#a753e4b6c113a9a8b226c3c834786f3e1',1,'ip_interpolators_mod']]], + ['blat_705',['blat',['../namespaceip__gaussian__grid__mod.html#ae2697b9c4dbe4945276633d1951e79fc',1,'ip_gaussian_grid_mod']]], + ['budget_5finterp_5fid_706',['budget_interp_id',['../namespaceip__interpolators__mod.html#a7df843ca4a64e3178f448aebf7dad359',1,'ip_interpolators_mod']]] +]; diff --git a/ver-5.0.0/search/variables_10.html b/ver-5.0.0/search/variables_10.html new file mode 100644 index 00000000..dc9920b6 --- /dev/null +++ b/ver-5.0.0/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_10.js b/ver-5.0.0/search/variables_10.js new file mode 100644 index 00000000..f504aa0c --- /dev/null +++ b/ver-5.0.0/search/variables_10.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['sbd_776',['sbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a246ec0afc422f6cfcc3758ff62c6017f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]], + ['slat_777',['slat',['../namespaceip__rot__equid__cylind__egrid__mod.html#ae1f8503816477fb685fbadc7a9e50f0b',1,'ip_rot_equid_cylind_egrid_mod']]], + ['slat0_778',['slat0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#aca4b0ae69f756ef4854369bf88423d66',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::slat0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a8a02c6fc1ad38174e15679e69b5cbfdc',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::slat0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a72199c827ab3218b7f2aba35ad30b94d',1,'ip_rot_equid_cylind_egrid_mod::slat0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#a64831f92d5306513987a98e97a32aea1',1,'ip_rot_equid_cylind_grid_mod::slat0()']]], + ['slatr_779',['slatr',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aae4f801c95b7b61e2e6b1dd824d3688b',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::slatr()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a4ccccb64d3e7236d8cac19c279aab900',1,'ip_rot_equid_cylind_egrid_mod::slatr()']]], + ['spectral_5finterp_5fid_780',['spectral_interp_id',['../namespaceip__interpolators__mod.html#a83ba2963a0b686c6ae67b53f9c385851',1,'ip_interpolators_mod']]] +]; diff --git a/ver-5.0.0/search/variables_11.html b/ver-5.0.0/search/variables_11.html new file mode 100644 index 00000000..704bcb18 --- /dev/null +++ b/ver-5.0.0/search/variables_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_11.js b/ver-5.0.0/search/variables_11.js new file mode 100644 index 00000000..e4756d5e --- /dev/null +++ b/ver-5.0.0/search/variables_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wbd_781',['wbd',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a33ae1763c4f1267091bee36a9c92e46a',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid']]] +]; diff --git a/ver-5.0.0/search/variables_12.html b/ver-5.0.0/search/variables_12.html new file mode 100644 index 00000000..a3a32eb8 --- /dev/null +++ b/ver-5.0.0/search/variables_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_12.js b/ver-5.0.0/search/variables_12.js new file mode 100644 index 00000000..557b4d17 --- /dev/null +++ b/ver-5.0.0/search/variables_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ylat_5frow_782',['ylat_row',['../namespaceip__gaussian__grid__mod.html#a3591b5701f3d03931c6a9d5278e161dc',1,'ip_gaussian_grid_mod']]] +]; diff --git a/ver-5.0.0/search/variables_2.html b/ver-5.0.0/search/variables_2.html new file mode 100644 index 00000000..0580462e --- /dev/null +++ b/ver-5.0.0/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_2.js b/ver-5.0.0/search/variables_2.js new file mode 100644 index 00000000..460ddece --- /dev/null +++ b/ver-5.0.0/search/variables_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['clat_707',['clat',['../namespaceip__rot__equid__cylind__egrid__mod.html#aac1018f3ca1b7ad4b5d33f245678d416',1,'ip_rot_equid_cylind_egrid_mod']]], + ['clat0_708',['clat0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a7a1b97e05b77bb7563165bf3f3e97dda',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::clat0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a49835868e8c8b96e243a5992daee6ea5',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::clat0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a83649d02b55d6252d59514aec4eb3142',1,'ip_rot_equid_cylind_egrid_mod::clat0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#afeb699d0eaa8d157277e93fe8e8c5852',1,'ip_rot_equid_cylind_grid_mod::clat0()']]], + ['clatr_709',['clatr',['../namespaceip__rot__equid__cylind__egrid__mod.html#aad4e673a94976b2b5a9bfad9de9e6e30',1,'ip_rot_equid_cylind_egrid_mod']]], + ['clon_710',['clon',['../namespaceip__rot__equid__cylind__egrid__mod.html#a557d49c609fc8c5c564a3a5f10174eec',1,'ip_rot_equid_cylind_egrid_mod']]] +]; diff --git a/ver-5.0.0/search/variables_3.html b/ver-5.0.0/search/variables_3.html new file mode 100644 index 00000000..0d69e761 --- /dev/null +++ b/ver-5.0.0/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_3.js b/ver-5.0.0/search/variables_3.js new file mode 100644 index 00000000..f371871c --- /dev/null +++ b/ver-5.0.0/search/variables_3.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['de2_711',['de2',['../namespaceip__polar__stereo__grid__mod.html#a605d287e34e60f553521a5de2da22962',1,'ip_polar_stereo_grid_mod']]], + ['descriptor_712',['descriptor',['../structip__grid__mod_1_1ip__grid.html#a4a2a0dab09f05931d12615b0ac74bc51',1,'ip_grid_mod::ip_grid']]], + ['dlat_713',['dlat',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a6bd00527219fc596b2c2a7ba47fec719',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::dlat()'],['../namespaceip__equid__cylind__grid__mod.html#a30cb127d26d74d2de6ab3cbfd63183fb',1,'ip_equid_cylind_grid_mod::dlat()']]], + ['dlats_714',['dlats',['../namespaceip__rot__equid__cylind__grid__mod.html#ab43075e39d4e2dde4110e608931a392d',1,'ip_rot_equid_cylind_grid_mod::dlats()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a0b2faca2325b413e1f3207778d4c4c68',1,'ip_rot_equid_cylind_egrid_mod::dlats()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a00d41c3d43370d3f02bb92d59f66866c',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::dlats()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#affd9cfc7a0e1d8e74735eac35b2e03c6',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::dlats()']]], + ['dlon_715',['dlon',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a35c454d320c59a6c71c4aebb881abcb8',1,'ip_gaussian_grid_mod::ip_gaussian_grid::dlon()'],['../namespaceip__mercator__grid__mod.html#a14e1cb3f8c05d2de49d2aa8dc69d104f',1,'ip_mercator_grid_mod::dlon()'],['../namespaceip__gaussian__grid__mod.html#a8852b7cfb7b99318140c66b0c551dc6d',1,'ip_gaussian_grid_mod::dlon()'],['../namespaceip__equid__cylind__grid__mod.html#a46335f95ac343f7751bd519aec0a160f',1,'ip_equid_cylind_grid_mod::dlon()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a455057778c7f2ad677956bdef2d754ee',1,'ip_mercator_grid_mod::ip_mercator_grid::dlon()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ae675dc8c49e64700d941eadc31e8f4e7',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::dlon()']]], + ['dlons_716',['dlons',['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a76222910f6c9fa0c5374bed672904c85',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::dlons()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a23a172ccd2e026746925e2029c0a9206',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::dlons()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#af04f8a1044f4d9a7e0d13d38887adcbc',1,'ip_rot_equid_cylind_egrid_mod::dlons()'],['../namespaceip__rot__equid__cylind__grid__mod.html#aa0cf7bb2dd8be1239ae38c7220d29702',1,'ip_rot_equid_cylind_grid_mod::dlons()']]], + ['dphi_717',['dphi',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a39168528a2c207b2e2c5373487d705c5',1,'ip_mercator_grid_mod::ip_mercator_grid::dphi()'],['../namespaceip__mercator__grid__mod.html#a156e638e2d1b93e388d674462ac3f732',1,'ip_mercator_grid_mod::dphi()']]], + ['dpr_718',['dpr',['../namespaceip__constants__mod.html#ae6b74489db06341b78c3088b3f207011',1,'ip_constants_mod']]], + ['dxs_719',['dxs',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ac009bce0c0c14b3e0970da6c032a11b1',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::dxs()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#aa3288a7fbf2db34946116c771e5bc7dc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::dxs()'],['../namespaceip__lambert__conf__grid__mod.html#a196e94b5a2add34133c87f845394fa81',1,'ip_lambert_conf_grid_mod::dxs()'],['../namespaceip__polar__stereo__grid__mod.html#acf60181f89954e2ff31b08bb1b345354',1,'ip_polar_stereo_grid_mod::dxs()']]], + ['dys_720',['dys',['../namespaceip__polar__stereo__grid__mod.html#aea7950530d06d9c59ff61bf706df0a0f',1,'ip_polar_stereo_grid_mod::dys()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a46fa89562e4dd23c765029d2d6c087bc',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::dys()'],['../namespaceip__lambert__conf__grid__mod.html#aad8b04b77b0920dbf9ed3827e2e8cfd7',1,'ip_lambert_conf_grid_mod::dys()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a95e155383895ad3f56a3876877b5896b',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::dys()']]] +]; diff --git a/ver-5.0.0/search/variables_4.html b/ver-5.0.0/search/variables_4.html new file mode 100644 index 00000000..a4b6506b --- /dev/null +++ b/ver-5.0.0/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_4.js b/ver-5.0.0/search/variables_4.js new file mode 100644 index 00000000..d2c29a3f --- /dev/null +++ b/ver-5.0.0/search/variables_4.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['e2_721',['e2',['../namespaceip__polar__stereo__grid__mod.html#abf3a34d9bb00c39dac5225798aea4d5b',1,'ip_polar_stereo_grid_mod']]], + ['e2_5fwgs84_722',['e2_wgs84',['../namespaceip__constants__mod.html#af7783a977fa10c54d85282dc6ac5f545',1,'ip_constants_mod']]], + ['eccen_5fsquared_723',['eccen_squared',['../structip__grid__mod_1_1ip__grid.html#a180a5da6c470fac34b8439d4c0a32d2a',1,'ip_grid_mod::ip_grid']]], + ['elliptical_724',['elliptical',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a1bac1023f8d8cd631760403b222a8c3f',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid']]], + ['equid_5fcylind_5fgrid_5fid_5fgrib1_725',['equid_cylind_grid_id_grib1',['../namespaceip__grid__mod.html#ad96da95d40beceb1a1c405971e8130bb',1,'ip_grid_mod']]], + ['equid_5fcylind_5fgrid_5fid_5fgrib2_726',['equid_cylind_grid_id_grib2',['../namespaceip__grid__mod.html#a3b5ae57fe3d6d365cfd1ccdb4feb8ac6',1,'ip_grid_mod']]] +]; diff --git a/ver-5.0.0/search/variables_5.html b/ver-5.0.0/search/variables_5.html new file mode 100644 index 00000000..7e345d16 --- /dev/null +++ b/ver-5.0.0/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_5.js b/ver-5.0.0/search/variables_5.js new file mode 100644 index 00000000..15a2a3a4 --- /dev/null +++ b/ver-5.0.0/search/variables_5.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['gaussian_5fgrid_5fid_5fgrib1_727',['gaussian_grid_id_grib1',['../namespaceip__grid__mod.html#a45e8afad72b1b8856b3e44f2dd3123b3',1,'ip_grid_mod']]], + ['gaussian_5fgrid_5fid_5fgrib2_728',['gaussian_grid_id_grib2',['../namespaceip__grid__mod.html#a36a9a73ecd50353f892341ae8a5c8316',1,'ip_grid_mod']]], + ['gds_729',['gds',['../structip__grid__descriptor__mod_1_1grib1__descriptor.html#a08920c194e39d562fbf527939f0ac6c9',1,'ip_grid_descriptor_mod::grib1_descriptor']]], + ['gdt_5flen_730',['gdt_len',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#abf8e6d212308608a039e8e97c05c4a06',1,'ip_grid_descriptor_mod::grib2_descriptor']]], + ['gdt_5fnum_731',['gdt_num',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#aa5dd78817926e0246f93819ab7037e19',1,'ip_grid_descriptor_mod::grib2_descriptor']]], + ['gdt_5ftmpl_732',['gdt_tmpl',['../structip__grid__descriptor__mod_1_1grib2__descriptor.html#a3a90e1ef19332a1d8ec1f6a3193c6ebe',1,'ip_grid_descriptor_mod::grib2_descriptor']]], + ['grid_5fnum_733',['grid_num',['../structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a6d4598dc4bbf46e059f636715cc390f1',1,'ip_grid_descriptor_mod::ip_grid_descriptor']]] +]; diff --git a/ver-5.0.0/search/variables_6.html b/ver-5.0.0/search/variables_6.html new file mode 100644 index 00000000..7d48e75e --- /dev/null +++ b/ver-5.0.0/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_6.js b/ver-5.0.0/search/variables_6.js new file mode 100644 index 00000000..99ce010b --- /dev/null +++ b/ver-5.0.0/search/variables_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['h_734',['h',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a733c8a9b6ed498aeec73fa8f11283c03',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::h()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a6df619b3050279d9d560e72a3e87168f',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::h()'],['../namespaceip__lambert__conf__grid__mod.html#aa91572e8b5ba3559c041f1750b6696c6',1,'ip_lambert_conf_grid_mod::h()'],['../namespaceip__polar__stereo__grid__mod.html#a5a63da5168a1432a1af42c0b668f0645',1,'ip_polar_stereo_grid_mod::h()']]], + ['hi_735',['hi',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#afb1ebcfab0d637688bcac84cbc8582fc',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::hi()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#ae71229713fc9322e23140541993459fc',1,'ip_gaussian_grid_mod::ip_gaussian_grid::hi()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a91b223ca51a556fa11b76b0c05e0d3f2',1,'ip_mercator_grid_mod::ip_mercator_grid::hi()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a970c2655cb03ad0927e03c1d550e3fe5',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::hi()']]] +]; diff --git a/ver-5.0.0/search/variables_7.html b/ver-5.0.0/search/variables_7.html new file mode 100644 index 00000000..5c263409 --- /dev/null +++ b/ver-5.0.0/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_7.js b/ver-5.0.0/search/variables_7.js new file mode 100644 index 00000000..ace09d2d --- /dev/null +++ b/ver-5.0.0/search/variables_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['im_736',['im',['../structip__grid__mod_1_1ip__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc',1,'ip_grid_mod::ip_grid']]], + ['irot_737',['irot',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0d90490fa5eb04604fc0e01bea2cf3cf',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::irot()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a13f3f267f5a26602eb93b6525f494a10',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::irot()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a558e99f37191cb2ea7398ac2a05ef29e',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::irot()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#ae4c44c4cf8d1376b24861534edbf514f',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::irot()'],['../namespaceip__lambert__conf__grid__mod.html#a7dea876ed4206c5ecc0444aadb7d6acd',1,'ip_lambert_conf_grid_mod::irot()'],['../namespaceip__polar__stereo__grid__mod.html#a1269037aaecd12e75e17d8aac8e20c8c',1,'ip_polar_stereo_grid_mod::irot()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a93ed996cf2dc9569e356256ec946b571',1,'ip_rot_equid_cylind_egrid_mod::irot()'],['../namespaceip__rot__equid__cylind__grid__mod.html#abb0c2acdbd71f0c07ffaf9db54ce06c1',1,'ip_rot_equid_cylind_grid_mod::irot()']]], + ['iwrap_738',['iwrap',['../structip__grid__mod_1_1ip__grid.html#ae179622b9a4c764a5ca90385330941ed',1,'ip_grid_mod::ip_grid']]] +]; diff --git a/ver-5.0.0/search/variables_8.html b/ver-5.0.0/search/variables_8.html new file mode 100644 index 00000000..dc9ec54a --- /dev/null +++ b/ver-5.0.0/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_8.js b/ver-5.0.0/search/variables_8.js new file mode 100644 index 00000000..897991b6 --- /dev/null +++ b/ver-5.0.0/search/variables_8.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['j1_739',['j1',['../namespaceip__gaussian__grid__mod.html#af5c4024263aa3eaef5801849ae32c15a',1,'ip_gaussian_grid_mod']]], + ['jg_740',['jg',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a110f99e158a977a1679133235fa06c34',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], + ['jh_741',['jh',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a549ccd3ce1f5c75d99e8e04d4d4341b4',1,'ip_gaussian_grid_mod::ip_gaussian_grid::jh()'],['../namespaceip__gaussian__grid__mod.html#a67d6cd6d188a8bded8bdf64927617028',1,'ip_gaussian_grid_mod::jh()']]], + ['jm_742',['jm',['../structip__grid__mod_1_1ip__grid.html#a41a2a38288864520d8c50854d1843f87',1,'ip_grid_mod::ip_grid']]], + ['jscan_743',['jscan',['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3e199827f764b162a14515e837c28903',1,'ip_gaussian_grid_mod::ip_gaussian_grid']]], + ['jwrap1_744',['jwrap1',['../structip__grid__mod_1_1ip__grid.html#a92976f110dd7e823799991137ac970a1',1,'ip_grid_mod::ip_grid']]], + ['jwrap2_745',['jwrap2',['../structip__grid__mod_1_1ip__grid.html#ae70be8cebcd217a49be4da1cebfc19d2',1,'ip_grid_mod::ip_grid']]] +]; diff --git a/ver-5.0.0/search/variables_9.html b/ver-5.0.0/search/variables_9.html new file mode 100644 index 00000000..7b014750 --- /dev/null +++ b/ver-5.0.0/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_9.js b/ver-5.0.0/search/variables_9.js new file mode 100644 index 00000000..c3739311 --- /dev/null +++ b/ver-5.0.0/search/variables_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['kd_746',['kd',['../namespaceip__rot__equid__cylind__egrid__mod.html#a50497d277c347a2991b0e34e85f1787e',1,'ip_rot_equid_cylind_egrid_mod::kd()'],['../namespaceip__rot__equid__cylind__grid__mod.html#af5dea0592cccce2de1c5c6a92d42cfd6',1,'ip_rot_equid_cylind_grid_mod::kd()']]], + ['kscan_747',['kscan',['../structip__grid__mod_1_1ip__grid.html#a084603b1c052e76c3335fea2e887cfce',1,'ip_grid_mod::ip_grid']]] +]; diff --git a/ver-5.0.0/search/variables_a.html b/ver-5.0.0/search/variables_a.html new file mode 100644 index 00000000..52a724d1 --- /dev/null +++ b/ver-5.0.0/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_a.js b/ver-5.0.0/search/variables_a.js new file mode 100644 index 00000000..5d6aefe7 --- /dev/null +++ b/ver-5.0.0/search/variables_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['lambert_5fconf_5fgrid_5fid_5fgrib1_748',['lambert_conf_grid_id_grib1',['../namespaceip__grid__mod.html#ab82b90d20f38ff39741f6890fa422d16',1,'ip_grid_mod']]], + ['lambert_5fconf_5fgrid_5fid_5fgrib2_749',['lambert_conf_grid_id_grib2',['../namespaceip__grid__mod.html#a2e49846c9122b1fe1fcdbb2913fc32fe',1,'ip_grid_mod']]] +]; diff --git a/ver-5.0.0/search/variables_b.html b/ver-5.0.0/search/variables_b.html new file mode 100644 index 00000000..f376b27a --- /dev/null +++ b/ver-5.0.0/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_b.js b/ver-5.0.0/search/variables_b.js new file mode 100644 index 00000000..bdfc2114 --- /dev/null +++ b/ver-5.0.0/search/variables_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['mercator_5fgrid_5fid_5fgrib1_750',['mercator_grid_id_grib1',['../namespaceip__grid__mod.html#ab9ff525eca4f053b04ec96a83cb06682',1,'ip_grid_mod']]], + ['mercator_5fgrid_5fid_5fgrib2_751',['mercator_grid_id_grib2',['../namespaceip__grid__mod.html#af9c58af5162d96cb7d1ac5001139b856',1,'ip_grid_mod']]] +]; diff --git a/ver-5.0.0/search/variables_c.html b/ver-5.0.0/search/variables_c.html new file mode 100644 index 00000000..6019eba9 --- /dev/null +++ b/ver-5.0.0/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_c.js b/ver-5.0.0/search/variables_c.js new file mode 100644 index 00000000..56aaf9d0 --- /dev/null +++ b/ver-5.0.0/search/variables_c.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['neighbor_5fbudget_5finterp_5fid_752',['neighbor_budget_interp_id',['../namespaceip__interpolators__mod.html#ae77a1da241f5de94f1874004ee8e715c',1,'ip_interpolators_mod']]], + ['neighbor_5finterp_5fid_753',['neighbor_interp_id',['../namespaceip__interpolators__mod.html#a35e5fe3a2dd79d205c0503f550388258',1,'ip_interpolators_mod']]], + ['nm_754',['nm',['../structip__grid__mod_1_1ip__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30',1,'ip_grid_mod::ip_grid']]], + ['nscan_755',['nscan',['../structip__grid__mod_1_1ip__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18',1,'ip_grid_mod::ip_grid']]], + ['nscan_5ffield_5fpos_756',['nscan_field_pos',['../structip__grid__mod_1_1ip__grid.html#a0640093c52461763f904cc2f12c96b6c',1,'ip_grid_mod::ip_grid']]] +]; diff --git a/ver-5.0.0/search/variables_d.html b/ver-5.0.0/search/variables_d.html new file mode 100644 index 00000000..f61ae751 --- /dev/null +++ b/ver-5.0.0/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_d.js b/ver-5.0.0/search/variables_d.js new file mode 100644 index 00000000..e2bb8ef6 --- /dev/null +++ b/ver-5.0.0/search/variables_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['orient_757',['orient',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0614cfdb69e59e3c3e2937f3319fe34a',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::orient()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aeaeb6d72861b9b62de5bcd435bc96ea4',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::orient()'],['../namespaceip__polar__stereo__grid__mod.html#aa4a88f48d7b78cfdfc54754882195d18',1,'ip_polar_stereo_grid_mod::orient()']]] +]; diff --git a/ver-5.0.0/search/variables_e.html b/ver-5.0.0/search/variables_e.html new file mode 100644 index 00000000..7bfd3721 --- /dev/null +++ b/ver-5.0.0/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_e.js b/ver-5.0.0/search/variables_e.js new file mode 100644 index 00000000..245b1a37 --- /dev/null +++ b/ver-5.0.0/search/variables_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['pi_758',['pi',['../namespaceip__constants__mod.html#a47f83a2267da693170054c958c401cd4',1,'ip_constants_mod']]], + ['pi2_759',['pi2',['../namespaceip__constants__mod.html#a309f7e3b1f83b6b272b12ce4fff501c5',1,'ip_constants_mod']]], + ['pi4_760',['pi4',['../namespaceip__constants__mod.html#a5fe7cdd86b44487666dc37f655d9ff15',1,'ip_constants_mod']]], + ['polar_5fstereo_5fgrid_5fid_5fgrib1_761',['polar_stereo_grid_id_grib1',['../namespaceip__grid__mod.html#afee73c2f09ea9de43c156dc594ae1df1',1,'ip_grid_mod']]], + ['polar_5fstereo_5fgrid_5fid_5fgrib2_762',['polar_stereo_grid_id_grib2',['../namespaceip__grid__mod.html#a5b3ad320b41791e65966e1bb498e9ae3',1,'ip_grid_mod']]] +]; diff --git a/ver-5.0.0/search/variables_f.html b/ver-5.0.0/search/variables_f.html new file mode 100644 index 00000000..d97920d0 --- /dev/null +++ b/ver-5.0.0/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                    +
                    Loading...
                    +
                    + +
                    Searching...
                    +
                    No Matches
                    + +
                    + + diff --git a/ver-5.0.0/search/variables_f.js b/ver-5.0.0/search/variables_f.js new file mode 100644 index 00000000..8be52307 --- /dev/null +++ b/ver-5.0.0/search/variables_f.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['rerth_763',['rerth',['../namespaceip__gaussian__grid__mod.html#a8213e02ccf4325ad5db14f2e48990da2',1,'ip_gaussian_grid_mod::rerth()'],['../namespaceip__equid__cylind__grid__mod.html#ab5b84516fab9cee3316c07450f49746c',1,'ip_equid_cylind_grid_mod::rerth()'],['../namespaceip__lambert__conf__grid__mod.html#a9f0538d092cd7d2829a5b98247eb560d',1,'ip_lambert_conf_grid_mod::rerth()'],['../namespaceip__mercator__grid__mod.html#adaa27c5d41ee24185b6d020420ce9419',1,'ip_mercator_grid_mod::rerth()'],['../namespaceip__polar__stereo__grid__mod.html#a3315b2efb5cb9aebc0b2cb2773aa20b5',1,'ip_polar_stereo_grid_mod::rerth()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#aed7a425f4d300fe14ac1b48d76378edb',1,'ip_rot_equid_cylind_egrid_mod::rerth()'],['../structip__grid__mod_1_1ip__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8',1,'ip_grid_mod::ip_grid::rerth()'],['../namespaceip__rot__equid__cylind__grid__mod.html#ae08318392106d174ab36cf7dc05c570b',1,'ip_rot_equid_cylind_grid_mod::rerth()']]], + ['rerth_5fwgs84_764',['rerth_wgs84',['../namespaceip__constants__mod.html#ac6a501512f426673f064edbecd7a62fb',1,'ip_constants_mod']]], + ['rlat1_765',['rlat1',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a493e017343795e89f794bae5229eb6a7',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlat1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a884837892bf520ea7950f95d8c562a08',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlat1()'],['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a00565fd51d334324e9d68d1fc8c52640',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlat1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a1f98e5046c7c1eda30735e5919b79cc7',1,'ip_mercator_grid_mod::ip_mercator_grid::rlat1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a618bb61b83c39dd344264933e51fa932',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlat1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#acdf76c4b3444d0d85dbf9ee09b5f35fc',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlat1()']]], + ['rlat2_766',['rlat2',['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#acfd62fa8199f9b57b555364bca920e42',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid']]], + ['rlati_767',['rlati',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3826e3e6b4f3264932c890a3c9804cef',1,'ip_mercator_grid_mod::ip_mercator_grid']]], + ['rlati1_768',['rlati1',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a7dcfaef2adc076604ad32d1ecd1f1cb4',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid']]], + ['rlati2_769',['rlati2',['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ae8b2c54b8d00685e179fec7786422f3b',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid']]], + ['rlon0_770',['rlon0',['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a65579b8557bffeedb99f384048dea14e',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon0()'],['../structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a7b111301b2fc41270869ee182512f13c',1,'ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::rlon0()'],['../namespaceip__rot__equid__cylind__grid__mod.html#a620a55069afd33b301240533915387df',1,'ip_rot_equid_cylind_grid_mod::rlon0()'],['../namespaceip__rot__equid__cylind__egrid__mod.html#a134acf8ab7f40ff49ce8e03daad900e6',1,'ip_rot_equid_cylind_egrid_mod::rlon0()']]], + ['rlon1_771',['rlon1',['../structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a61650c9ce1a2ce44243bf491e5d93728',1,'ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlon1()'],['../structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a3684458139a165cd719b054637a7d121',1,'ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon1()'],['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#adb673d1f9dbc7d7ee6f87513a2eed723',1,'ip_mercator_grid_mod::ip_mercator_grid::rlon1()'],['../structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ab7e9e396d5eeb63c8079a901c2c8743f',1,'ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlon1()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a583517b74d3c1c1b354fefe0d6871c4d',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlon1()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa927f5ecca3f2880ad88e60c8d4b8871',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon1()']]], + ['rlon2_772',['rlon2',['../structip__mercator__grid__mod_1_1ip__mercator__grid.html#a0b9bfef606985f5e682f4ddb84c99d2c',1,'ip_mercator_grid_mod::ip_mercator_grid::rlon2()'],['../structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3794a22c4866631c6b5bc6a8871e3e44',1,'ip_gaussian_grid_mod::ip_gaussian_grid::rlon2()'],['../structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a1e5b9f8ab3de743b5e392478694154ea',1,'ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon2()']]], + ['rot_5fequid_5fcylind_5fb_5fgrid_5fid_5fgrib1_773',['rot_equid_cylind_b_grid_id_grib1',['../namespaceip__grid__mod.html#adb7d7d18410aaae52d7eee2e97f04b14',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fe_5fgrid_5fid_5fgrib1_774',['rot_equid_cylind_e_grid_id_grib1',['../namespaceip__grid__mod.html#a4e11ce780c3d165c282684188890af1c',1,'ip_grid_mod']]], + ['rot_5fequid_5fcylind_5fgrid_5fid_5fgrib2_775',['rot_equid_cylind_grid_id_grib2',['../namespaceip__grid__mod.html#adc7c650c524eb6425e77b2e0eac0979a',1,'ip_grid_mod']]] +]; diff --git a/ver-5.0.0/spanaly_8f.html b/ver-5.0.0/spanaly_8f.html new file mode 100644 index 00000000..f6447775 --- /dev/null +++ b/ver-5.0.0/spanaly_8f.html @@ -0,0 +1,267 @@ + + + + + + + +NCEPLIBS-ip: spanaly.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spanaly.f File Reference
                    +
                    +
                    + +

                    Analyze spectral from Fourier. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spanaly (I, M, IM, IX, NC, NCTOP, KM, WGT, CLAT, PLN, PLNTOP, MP, F, SPC, SPCTOP)
                     Analyzes spectral coefficients from Fourier coefficients for a latitude pair (Northern and Southern hemispheres). More...
                     
                    +

                    Detailed Description

                    +

                    Analyze spectral from Fourier.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    91-10-31 Mark Iredell Initial.
                    94-08-01 Mark Iredell Moved zonal wavenumber loop inside.
                    1998-12-15 Iredell Openmp directives inserted.
                    +
                    Author
                    Iredell
                    +
                    Date
                    91-10-31
                    + +

                    Definition in file spanaly.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spanaly()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spanaly ( I,
                     M,
                     IM,
                     IX,
                     NC,
                     NCTOP,
                     KM,
                     WGT,
                     CLAT,
                    real, dimension((m+1)*((i+1)*m+2)/2) PLN,
                    real, dimension(m+1) PLNTOP,
                    integer, dimension(km) MP,
                    real, dimension(ix,2,km) F,
                    real, dimension(nc,km) SPC,
                    real, dimension(nctop,km) SPCTOP 
                    )
                    +
                    + +

                    Analyzes spectral coefficients from Fourier coefficients for a latitude pair (Northern and Southern hemispheres).

                    +

                    Vector components are multiplied by cosine of latitude.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + +
                    Ispectral domain shape (0 for triangular, 1 for rhomboidal)
                    Mspectral truncation
                    IMeven number of Fourier coefficients
                    IXdimension of Fourier coefficients (IX>=IM+2)
                    NCdimension of spectral coefficients (NC>=(M+1)*((I+1)*M+2))
                    NCTOPdimension of spectral coefficients over top (NCTOP>=2*(M+1))
                    KMnumber of fields
                    WGTGaussian weight
                    CLATcosine of latitude
                    PLNLegendre polynomials
                    PLNTOPLegendre polynomial over top
                    MPidentifiers (0 for scalar, 1 for vector)
                    FFourier coefficients combined
                    SPCspectral coefficients
                    SPCTOPspectral coefficients over top
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    91-10-31
                    + +

                    Definition at line 35 of file spanaly.f.

                    + +

                    Referenced by sptranf1().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spanaly_8f.js b/ver-5.0.0/spanaly_8f.js new file mode 100644 index 00000000..c397fb92 --- /dev/null +++ b/ver-5.0.0/spanaly_8f.js @@ -0,0 +1,4 @@ +var spanaly_8f = +[ + [ "spanaly", "spanaly_8f.html#a5cc846d796d393d7499cde0f3d1d6e6a", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spanaly_8f_source.html b/ver-5.0.0/spanaly_8f_source.html new file mode 100644 index 00000000..1d29aacf --- /dev/null +++ b/ver-5.0.0/spanaly_8f_source.html @@ -0,0 +1,176 @@ + + + + + + + +NCEPLIBS-ip: spanaly.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spanaly.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Analyze spectral from Fourier.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 91-10-31 | Mark Iredell | Initial.
                    +
                    8 C> 94-08-01 | Mark Iredell | Moved zonal wavenumber loop inside.
                    +
                    9 C> 1998-12-15 | Iredell | Openmp directives inserted.
                    +
                    10 C>
                    +
                    11 C> @author Iredell @date 91-10-31
                    +
                    12 
                    +
                    13 C> Analyzes spectral coefficients from Fourier coefficients
                    +
                    14 C> for a latitude pair (Northern and Southern hemispheres).
                    +
                    15 C>
                    +
                    16 C> Vector components are multiplied by cosine of latitude.
                    +
                    17 C>
                    +
                    18 C> @param I spectral domain shape (0 for triangular, 1 for rhomboidal)
                    +
                    19 C> @param M spectral truncation
                    +
                    20 C> @param IM even number of Fourier coefficients
                    +
                    21 C> @param IX dimension of Fourier coefficients (IX>=IM+2)
                    +
                    22 C> @param NC dimension of spectral coefficients (NC>=(M+1)*((I+1)*M+2))
                    +
                    23 C> @param NCTOP dimension of spectral coefficients over top (NCTOP>=2*(M+1))
                    +
                    24 C> @param KM number of fields
                    +
                    25 C> @param WGT Gaussian weight
                    +
                    26 C> @param CLAT cosine of latitude
                    +
                    27 C> @param PLN Legendre polynomials
                    +
                    28 C> @param PLNTOP Legendre polynomial over top
                    +
                    29 C> @param MP identifiers (0 for scalar, 1 for vector)
                    +
                    30 C> @param F Fourier coefficients combined
                    +
                    31 C> @param SPC spectral coefficients
                    +
                    32 C> @param SPCTOP spectral coefficients over top
                    +
                    33 C>
                    +
                    34 C> @author Iredell @date 91-10-31
                    +
                    35  SUBROUTINE spanaly(I,M,IM,IX,NC,NCTOP,KM,WGT,CLAT,PLN,PLNTOP,MP,
                    +
                    36  & F,SPC,SPCTOP)
                    +
                    37  INTEGER MP(KM)
                    +
                    38  REAL PLN((M+1)*((I+1)*M+2)/2),PLNTOP(M+1)
                    +
                    39  REAL F(IX,2,KM)
                    +
                    40  REAL SPC(NC,KM),SPCTOP(NCTOP,KM)
                    +
                    41  REAL FW(2,2)
                    +
                    42 
                    +
                    43 C FOR EACH ZONAL WAVENUMBER, ANALYZE TERMS OVER TOTAL WAVENUMBER.
                    +
                    44 C ANALYZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    +
                    45  lx=min(m,im/2)
                    +
                    46 !C$OMP PARALLEL DO PRIVATE(L,NT,KS,KP,FW)
                    +
                    47  DO k=1,km
                    +
                    48  DO l=0,lx
                    +
                    49  nt=mod(m+1+(i-1)*l,2)+1
                    +
                    50  ks=l*(2*m+(i-1)*(l-1))
                    +
                    51  kp=ks/2+1
                    +
                    52  IF(mp(k).EQ.0) THEN
                    +
                    53  fw(1,1)=wgt*(f(2*l+1,1,k)+f(2*l+1,2,k))
                    +
                    54  fw(2,1)=wgt*(f(2*l+2,1,k)+f(2*l+2,2,k))
                    +
                    55  fw(1,2)=wgt*(f(2*l+1,1,k)-f(2*l+1,2,k))
                    +
                    56  fw(2,2)=wgt*(f(2*l+2,1,k)-f(2*l+2,2,k))
                    +
                    57  ELSE
                    +
                    58  fw(1,1)=wgt*clat*(f(2*l+1,1,k)+f(2*l+1,2,k))
                    +
                    59  fw(2,1)=wgt*clat*(f(2*l+2,1,k)+f(2*l+2,2,k))
                    +
                    60  fw(1,2)=wgt*clat*(f(2*l+1,1,k)-f(2*l+1,2,k))
                    +
                    61  fw(2,2)=wgt*clat*(f(2*l+2,1,k)-f(2*l+2,2,k))
                    +
                    62  spctop(2*l+1,k)=spctop(2*l+1,k)+plntop(l+1)*fw(1,nt)
                    +
                    63  spctop(2*l+2,k)=spctop(2*l+2,k)+plntop(l+1)*fw(2,nt)
                    +
                    64  ENDIF
                    +
                    65  DO n=l,i*l+m,2
                    +
                    66  spc(ks+2*n+1,k)=spc(ks+2*n+1,k)+pln(kp+n)*fw(1,1)
                    +
                    67  spc(ks+2*n+2,k)=spc(ks+2*n+2,k)+pln(kp+n)*fw(2,1)
                    +
                    68  ENDDO
                    +
                    69  DO n=l+1,i*l+m,2
                    +
                    70  spc(ks+2*n+1,k)=spc(ks+2*n+1,k)+pln(kp+n)*fw(1,2)
                    +
                    71  spc(ks+2*n+2,k)=spc(ks+2*n+2,k)+pln(kp+n)*fw(2,2)
                    +
                    72  ENDDO
                    +
                    73  ENDDO
                    +
                    74  ENDDO
                    +
                    75  RETURN
                    +
                    76  END
                    +
                    subroutine spanaly(I, M, IM, IX, NC, NCTOP, KM, WGT, CLAT, PLN, PLNTOP, MP, F, SPC, SPCTOP)
                    Analyzes spectral coefficients from Fourier coefficients for a latitude pair (Northern and Southern h...
                    Definition: spanaly.f:37
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spdz2uv_8f.html b/ver-5.0.0/spdz2uv_8f.html new file mode 100644 index 00000000..99193ab3 --- /dev/null +++ b/ver-5.0.0/spdz2uv_8f.html @@ -0,0 +1,247 @@ + + + + + + + +NCEPLIBS-ip: spdz2uv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spdz2uv.f File Reference
                    +
                    +
                    + +

                    Compute winds from divergence and vorticity. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spdz2uv (I, M, ENN1, ELONN1, EON, EONTOP, D, Z, U, V, UTOP, VTOP)
                     Computes the wind components from divergence and vorticity in spectral space. More...
                     
                    +

                    Detailed Description

                    +

                    Compute winds from divergence and vorticity.

                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition in file spdz2uv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spdz2uv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spdz2uv ( I,
                     M,
                    real, dimension((m+1)*((i+1)*m+2)/2) ENN1,
                    real, dimension((m+1)*((i+1)*m+2)/2) ELONN1,
                    real, dimension((m+1)*((i+1)*m+2)/2) EON,
                    real, dimension(m+1) EONTOP,
                    real, dimension((m+1)*((i+1)*m+2)) D,
                    real, dimension((m+1)*((i+1)*m+2)) Z,
                    real, dimension((m+1)*((i+1)*m+2)) U,
                    real, dimension((m+1)*((i+1)*m+2)) V,
                    real, dimension(2*(m+1)) UTOP,
                    real, dimension(2*(m+1)) VTOP 
                    )
                    +
                    + +

                    Computes the wind components from divergence and vorticity in spectral space.

                    +

                    Subprogram speps() should be called already.

                    +

                    If L is the zonal wavenumber, N is the total wavenumber,

                          
                    + EPS(L,N) = SQRT((N**2-L**2)/(4*N**2-1))
                    + 

                    a
                    +nd A is earth radius, then the zonal wind component U is computed as

                    + U(L,N)=-I*L/(N*(N+1))*A*D(L,N)
                    + +EPS(L,N+1)/(N+1)*A*Z(L,N+1)-EPS(L,N)/N*A*Z(L,N-1)
                    + 

                    and the meridional wind component V is computed as

                    + V(L,N)=-I*L/(N*(N+1))*A*Z(L,N)
                    + -EPS(L,N+1)/(N+1)*A*D(L,N+1)+EPS(L,N)/N*A*D(L,N-1)
                    + 

                    where D is divergence and Z is vorticity.

                    +

                    U and V are weighted by the cosine of latitude.

                    +

                    Cxtra terms are computed over top of the spectral domain.

                    +

                    Advantage is taken of the fact that EPS(L,L)=0 in order to vectorize over the entire spectral domain.

                    +
                    Parameters
                    + + + + + + + + + + + + + +
                    Ispectral domain shape (0 for triangular, 1 for rhomboidal)
                    Mspectral truncation
                    ENN1((M+1)*((I+1)*M+2)/2) N*(N+1)/A**2
                    ELONN1((M+1)*((I+1)*M+2)/2) L/(N*(N+1))*A
                    EON((M+1)*((I+1)*M+2)/2) EPSILON/N*A
                    EONTOP(M+1) EPSILON/N*A OVER TOP
                    D((M+1)*((I+1)*M+2)) divergence
                    Z((M+1)*((I+1)*M+2)) vorticity
                    U((M+1)*((I+1)*M+2)) zonal wind (times coslat)
                    V((M+1)*((I+1)*M+2)) merid wind (times coslat)
                    UTOP(2*(M+1)) zonal wind (times coslat) over top
                    VTOP(2*(M+1)) merid wind (times coslat) over top
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition at line 48 of file spdz2uv.f.

                    + +

                    Referenced by sptgpmv(), sptgpsv(), sptgptv(), sptgptvd(), and sptranfv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spdz2uv_8f.js b/ver-5.0.0/spdz2uv_8f.js new file mode 100644 index 00000000..e0e6edd1 --- /dev/null +++ b/ver-5.0.0/spdz2uv_8f.js @@ -0,0 +1,4 @@ +var spdz2uv_8f = +[ + [ "spdz2uv", "spdz2uv_8f.html#ae3a4a74c49f78a25425b610743dc0692", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spdz2uv_8f_source.html b/ver-5.0.0/spdz2uv_8f_source.html new file mode 100644 index 00000000..1a510e8c --- /dev/null +++ b/ver-5.0.0/spdz2uv_8f_source.html @@ -0,0 +1,182 @@ + + + + + + + +NCEPLIBS-ip: spdz2uv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spdz2uv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Compute winds from divergence and vorticity.
                    +
                    3 C> @author Iredell @date 92-10-31
                    +
                    4 
                    +
                    5 C> Computes the wind components from divergence and vorticity
                    +
                    6 C> in spectral space.
                    +
                    7 C>
                    +
                    8 C> Subprogram speps() should be called already.
                    +
                    9 C>
                    +
                    10 C> If L is the zonal wavenumber, N is the total wavenumber,
                    +
                    11 C> <pre>
                    +
                    12 C> EPS(L,N) = SQRT((N**2-L**2)/(4*N**2-1))
                    +
                    13 C> </pre>
                    +
                    14 C> and A is earth radius,
                    +
                    15 C> then the zonal wind component U is computed as
                    +
                    16 C> <pre>
                    +
                    17 C> U(L,N)=-I*L/(N*(N+1))*A*D(L,N)
                    +
                    18 C> +EPS(L,N+1)/(N+1)*A*Z(L,N+1)-EPS(L,N)/N*A*Z(L,N-1)
                    +
                    19 C> </pre>
                    +
                    20 C> and the meridional wind component V is computed as
                    +
                    21 C> <pre>
                    +
                    22 C> V(L,N)=-I*L/(N*(N+1))*A*Z(L,N)
                    +
                    23 C> -EPS(L,N+1)/(N+1)*A*D(L,N+1)+EPS(L,N)/N*A*D(L,N-1)
                    +
                    24 C> </pre>
                    +
                    25 C> where D is divergence and Z is vorticity.
                    +
                    26 C>
                    +
                    27 C> U and V are weighted by the cosine of latitude.
                    +
                    28 C>
                    +
                    29 C> Cxtra terms are computed over top of the spectral domain.
                    +
                    30 C>
                    +
                    31 C> Advantage is taken of the fact that EPS(L,L)=0
                    +
                    32 C> in order to vectorize over the entire spectral domain.
                    +
                    33 C>
                    +
                    34 C> @param I spectral domain shape (0 for triangular, 1 for rhomboidal)
                    +
                    35 C> @param M spectral truncation
                    +
                    36 C> @param ENN1 ((M+1)*((I+1)*M+2)/2) N*(N+1)/A**2
                    +
                    37 C> @param ELONN1 ((M+1)*((I+1)*M+2)/2) L/(N*(N+1))*A
                    +
                    38 C> @param EON ((M+1)*((I+1)*M+2)/2) EPSILON/N*A
                    +
                    39 C> @param EONTOP (M+1) EPSILON/N*A OVER TOP
                    +
                    40 C> @param D ((M+1)*((I+1)*M+2)) divergence
                    +
                    41 C> @param Z ((M+1)*((I+1)*M+2)) vorticity
                    +
                    42 C> @param U ((M+1)*((I+1)*M+2)) zonal wind (times coslat)
                    +
                    43 C> @param V ((M+1)*((I+1)*M+2)) merid wind (times coslat)
                    +
                    44 C> @param UTOP (2*(M+1)) zonal wind (times coslat) over top
                    +
                    45 C> @param VTOP (2*(M+1)) merid wind (times coslat) over top
                    +
                    46 C>
                    +
                    47 C> @author Iredell @date 92-10-31
                    +
                    48  SUBROUTINE spdz2uv(I,M,ENN1,ELONN1,EON,EONTOP,D,Z,U,V,UTOP,VTOP)
                    +
                    49  REAL ENN1((M+1)*((I+1)*M+2)/2),ELONN1((M+1)*((I+1)*M+2)/2)
                    +
                    50  REAL EON((M+1)*((I+1)*M+2)/2),EONTOP(M+1)
                    +
                    51  REAL D((M+1)*((I+1)*M+2)),Z((M+1)*((I+1)*M+2))
                    +
                    52  REAL U((M+1)*((I+1)*M+2)),V((M+1)*((I+1)*M+2))
                    +
                    53  REAL UTOP(2*(M+1)),VTOP(2*(M+1))
                    +
                    54 
                    +
                    55 C COMPUTE WINDS IN THE SPECTRAL DOMAIN
                    +
                    56  k=1
                    +
                    57  u(2*k-1)=eon(k+1)*z(2*k+1)
                    +
                    58  u(2*k)=eon(k+1)*z(2*k+2)
                    +
                    59  v(2*k-1)=-eon(k+1)*d(2*k+1)
                    +
                    60  v(2*k)=-eon(k+1)*d(2*k+2)
                    +
                    61  DO k=2,(m+1)*((i+1)*m+2)/2-1
                    +
                    62  u(2*k-1)=elonn1(k)*d(2*k)+eon(k+1)*z(2*k+1)-eon(k)*z(2*k-3)
                    +
                    63  u(2*k)=-elonn1(k)*d(2*k-1)+eon(k+1)*z(2*k+2)-eon(k)*z(2*k-2)
                    +
                    64  v(2*k-1)=elonn1(k)*z(2*k)-eon(k+1)*d(2*k+1)+eon(k)*d(2*k-3)
                    +
                    65  v(2*k)=-elonn1(k)*z(2*k-1)-eon(k+1)*d(2*k+2)+eon(k)*d(2*k-2)
                    +
                    66  ENDDO
                    +
                    67  k=(m+1)*((i+1)*m+2)/2
                    +
                    68  u(2*k-1)=elonn1(k)*d(2*k)-eon(k)*z(2*k-3)
                    +
                    69  u(2*k)=-elonn1(k)*d(2*k-1)-eon(k)*z(2*k-2)
                    +
                    70  v(2*k-1)=elonn1(k)*z(2*k)+eon(k)*d(2*k-3)
                    +
                    71  v(2*k)=-elonn1(k)*z(2*k-1)+eon(k)*d(2*k-2)
                    +
                    72 
                    +
                    73 C COMPUTE WINDS OVER TOP OF THE SPECTRAL DOMAIN
                    +
                    74  DO l=0,m
                    +
                    75  k=l*(2*m+(i-1)*(l-1))/2+i*l+m+1
                    +
                    76  utop(2*l+1)=-eontop(l+1)*z(2*k-1)
                    +
                    77  utop(2*l+2)=-eontop(l+1)*z(2*k)
                    +
                    78  vtop(2*l+1)=eontop(l+1)*d(2*k-1)
                    +
                    79  vtop(2*l+2)=eontop(l+1)*d(2*k)
                    +
                    80  ENDDO
                    +
                    81  RETURN
                    +
                    82  END
                    +
                    subroutine spdz2uv(I, M, ENN1, ELONN1, EON, EONTOP, D, Z, U, V, UTOP, VTOP)
                    Computes the wind components from divergence and vorticity in spectral space.
                    Definition: spdz2uv.f:49
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spectral__interp__mod_8F90.html b/ver-5.0.0/spectral__interp__mod_8F90.html new file mode 100644 index 00000000..22f0ee15 --- /dev/null +++ b/ver-5.0.0/spectral__interp__mod_8F90.html @@ -0,0 +1,151 @@ + + + + + + + +NCEPLIBS-ip: spectral_interp_mod.F90 File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spectral_interp_mod.F90 File Reference
                    +
                    +
                    + +

                    Interpolate spectral. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + + + + +

                    +Data Types

                    interface  spectral_interp_mod::interpolate_spectral
                     
                    interface  spectral_interp_mod::polates4
                     
                    interface  spectral_interp_mod::polatev4
                     
                    + + + + +

                    +Modules

                    module  spectral_interp_mod
                     Interpolate spectral.
                     
                    + + + + + + + + + + + + + + + + + + + +

                    +Functions/Subroutines

                    subroutine spectral_interp_mod::interpolate_spectral_scalar (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate spectral scalar. More...
                     
                    subroutine spectral_interp_mod::interpolate_spectral_vector (IPOPT, grid_in, grid_out, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate spectral vector. More...
                     
                    subroutine spectral_interp_mod::polates4_grib1 (IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (spectral). More...
                     
                    subroutine spectral_interp_mod::polates4_grib2 (IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                     Interpolate scalar fields (spectral). More...
                     
                    subroutine spectral_interp_mod::polatev4_grib1 (IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (spectral). More...
                     
                    subroutine spectral_interp_mod::polatev4_grib2 (IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                     Interpolate vector fields (spectral). More...
                     
                    +

                    Detailed Description

                    +

                    Interpolate spectral.

                    +
                    Author
                    Mark Iredell
                    +
                    Date
                    96-04-10
                    + +

                    Definition in file spectral_interp_mod.F90.

                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spectral__interp__mod_8F90.js b/ver-5.0.0/spectral__interp__mod_8F90.js new file mode 100644 index 00000000..c8774d15 --- /dev/null +++ b/ver-5.0.0/spectral__interp__mod_8F90.js @@ -0,0 +1,12 @@ +var spectral__interp__mod_8F90 = +[ + [ "interpolate_spectral", "interfacespectral__interp__mod_1_1interpolate__spectral.html", "interfacespectral__interp__mod_1_1interpolate__spectral" ], + [ "polates4", "interfacespectral__interp__mod_1_1polates4.html", "interfacespectral__interp__mod_1_1polates4" ], + [ "polatev4", "interfacespectral__interp__mod_1_1polatev4.html", "interfacespectral__interp__mod_1_1polatev4" ], + [ "interpolate_spectral_scalar", "spectral__interp__mod_8F90.html#a438646d69e941def0ada00d5ca19f618", null ], + [ "interpolate_spectral_vector", "spectral__interp__mod_8F90.html#acb61ad529b7decc2a6ff58dd12fbadd0", null ], + [ "polates4_grib1", "spectral__interp__mod_8F90.html#ab9fb87d87f2f9d578a5ade6b512ff366", null ], + [ "polates4_grib2", "spectral__interp__mod_8F90.html#a54dfd0ea8368242a1053d64770bd295a", null ], + [ "polatev4_grib1", "spectral__interp__mod_8F90.html#af4ce7638750e787dd69c7fe3ff2335cc", null ], + [ "polatev4_grib2", "spectral__interp__mod_8F90.html#a2f76e9900554d90753ca788c2ddf9ac3", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spectral__interp__mod_8F90_source.html b/ver-5.0.0/spectral__interp__mod_8F90_source.html new file mode 100644 index 00000000..fe196f10 --- /dev/null +++ b/ver-5.0.0/spectral__interp__mod_8F90_source.html @@ -0,0 +1,1163 @@ + + + + + + + +NCEPLIBS-ip: spectral_interp_mod.F90 Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spectral_interp_mod.F90
                    +
                    +
                    +Go to the documentation of this file.
                    1 
                    +
                    4 
                    + +
                    9  use gdswzd_mod
                    +
                    10  use ip_grid_mod
                    + + + +
                    14  implicit none
                    +
                    15 
                    +
                    16  private
                    +
                    17  public :: interpolate_spectral
                    +
                    18 
                    + +
                    20  module procedure interpolate_spectral_scalar
                    +
                    21  module procedure interpolate_spectral_vector
                    +
                    22  end interface interpolate_spectral
                    +
                    23 
                    +
                    24  interface polates4
                    +
                    25  module procedure polates4_grib1
                    +
                    26  module procedure polates4_grib2
                    +
                    27  end interface polates4
                    +
                    28 
                    +
                    29  interface polatev4
                    +
                    30  module procedure polatev4_grib1
                    +
                    31  module procedure polatev4_grib2
                    +
                    32  end interface polatev4
                    +
                    33 
                    +
                    34 contains
                    +
                    35 
                    +
                    60  subroutine interpolate_spectral_scalar(IPOPT,grid_in,grid_out, &
                    +
                    61  MI,MO,KM,IBI,GI, &
                    +
                    62  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    63  INTEGER, INTENT(IN ) :: IPOPT(20)
                    +
                    64  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    65  INTEGER, INTENT(IN ) :: MI, MO
                    +
                    66  INTEGER, INTENT(IN ) :: IBI(KM), KM
                    +
                    67  INTEGER, INTENT( OUT) :: IBO(KM), IRET, NO
                    +
                    68  !
                    +
                    69  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    70  !
                    +
                    71  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    72  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    73  REAL, INTENT( OUT) :: GO(MO,KM)
                    +
                    74 
                    +
                    75 
                    +
                    76  select type(desc_in => grid_in%descriptor)
                    +
                    77  type is(grib1_descriptor)
                    +
                    78  select type(desc_out => grid_out%descriptor)
                    +
                    79  type is(grib1_descriptor)
                    +
                    80  CALL polates4(ipopt,desc_in%gds,desc_out%gds,mi,mo,km,ibi,gi,no,rlat,rlon,ibo,lo,go,iret)
                    +
                    81  end select
                    +
                    82 
                    +
                    83  type is(grib2_descriptor)
                    +
                    84  select type(desc_out => grid_out%descriptor)
                    +
                    85  type is(grib2_descriptor)
                    +
                    86  CALL polates4(ipopt,desc_in%gdt_num,desc_in%gdt_tmpl,desc_in%gdt_len, &
                    +
                    87  desc_out%gdt_num,desc_out%gdt_tmpl,desc_out%gdt_len, &
                    +
                    88  mi,mo,km,ibi,gi,no,rlat,rlon,ibo,lo,go,iret)
                    +
                    89  end select
                    +
                    90  end select
                    +
                    91  end subroutine interpolate_spectral_scalar
                    +
                    92 
                    +
                    121  subroutine interpolate_spectral_vector(IPOPT,grid_in,grid_out, &
                    +
                    122  MI,MO,KM,IBI,UI,VI, &
                    +
                    123  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    124  class(ip_grid), intent(in) :: grid_in, grid_out
                    +
                    125  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    +
                    126  INTEGER, INTENT(IN ) :: KM, MI, MO
                    +
                    127  INTEGER, INTENT( OUT) :: IRET, IBO(KM), NO
                    +
                    128  !
                    +
                    129  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    130  !
                    +
                    131  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    132  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    133  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    134  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    +
                    135 
                    +
                    136 
                    +
                    137  select type(desc_in => grid_in%descriptor)
                    +
                    138  type is(grib1_descriptor)
                    +
                    139  select type(desc_out => grid_out%descriptor)
                    +
                    140  type is(grib1_descriptor)
                    +
                    141  CALL polatev4_grib1(ipopt,desc_in%gds,desc_out%gds,mi,mo,km,ibi,ui,vi,&
                    +
                    142  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    143  end select
                    +
                    144 
                    +
                    145  type is(grib2_descriptor)
                    +
                    146  select type(desc_out => grid_out%descriptor)
                    +
                    147  type is(grib2_descriptor)
                    +
                    148  CALL polatev4(ipopt,desc_in%gdt_num,desc_in%gdt_tmpl,desc_in%gdt_len, &
                    +
                    149  desc_out%gdt_num,desc_out%gdt_tmpl,desc_out%gdt_len, &
                    +
                    150  mi,mo,km,ibi,ui,vi,&
                    +
                    151  no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
                    +
                    152  end select
                    +
                    153  end select
                    +
                    154 
                    +
                    155 
                    +
                    156  end subroutine interpolate_spectral_vector
                    +
                    157 ! @author Mark Iredell @date 96-04-10
                    +
                    254  SUBROUTINE polates4_grib2(IPOPT,IGDTNUMI,IGDTMPLI,IGDTLENI, &
                    +
                    255  IGDTNUMO,IGDTMPLO,IGDTLENO, &
                    +
                    256  MI,MO,KM,IBI,GI, &
                    +
                    257  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    258  INTEGER, INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    259  INTEGER, INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    260  INTEGER, INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    261  INTEGER, INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    262  INTEGER, INTENT(IN ) :: IPOPT(20)
                    +
                    263  INTEGER, INTENT(IN ) :: MI, MO
                    +
                    264  INTEGER, INTENT(IN ) :: IBI(KM), KM
                    +
                    265  INTEGER, INTENT( OUT) :: IBO(KM), IRET, NO
                    +
                    266  !
                    +
                    267  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    268  !
                    +
                    269  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    270  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    271  REAL, INTENT( OUT) :: GO(MO,KM)
                    +
                    272  !
                    +
                    273  REAL, PARAMETER :: FILL=-9999.
                    +
                    274  REAL, PARAMETER :: PI=3.14159265358979
                    +
                    275  REAL, PARAMETER :: DPR=180./pi
                    +
                    276  !
                    +
                    277  INTEGER :: IDRTI, IDRTO, IG, JG, IM, JM
                    +
                    278  INTEGER :: IGO, JGO, IMO, JMO
                    +
                    279  INTEGER :: ISCAN, JSCAN, NSCAN
                    +
                    280  INTEGER :: ISCANO, JSCANO, NSCANO
                    +
                    281  INTEGER :: ISKIPI, JSKIPI, ISCALE
                    +
                    282  INTEGER :: IMAXI, JMAXI, ISPEC
                    +
                    283  INTEGER :: IP, IPRIME, IPROJ, IROMB, K
                    +
                    284  INTEGER :: MAXWV, N, NI, NJ, NPS
                    +
                    285  !
                    +
                    286  REAL :: DE, DR, DY
                    +
                    287  REAL :: DLAT, DLON, DLATO, DLONO
                    +
                    288  REAL :: GO2(MO,KM), H, HI, HJ
                    +
                    289  REAL :: ORIENT, SLAT, RERTH, E2
                    +
                    290  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    +
                    291  REAL :: XMESH, XP, YP
                    +
                    292  REAL :: XPTS(MO), YPTS(MO)
                    +
                    293 
                    +
                    294  type(grib2_descriptor) :: desc_in, desc_out
                    +
                    295  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    296 
                    +
                    297  desc_in = init_descriptor(igdtnumi, igdtleni, igdtmpli)
                    +
                    298  desc_out = init_descriptor(igdtnumo, igdtleno, igdtmplo)
                    +
                    299 
                    +
                    300  call init_grid(grid_in, desc_in)
                    +
                    301  call init_grid(grid_out, desc_out)
                    +
                    302  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    303  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    304  iret=0
                    +
                    305  IF(igdtnumo.GE.0) THEN
                    +
                    306  !CALL GDSWZD(IGDTNUMO,IGDTMPLO,IGDTLENO, 0,MO,FILL,XPTS,YPTS,RLON,RLAT,NO)
                    +
                    307  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    308  IF(no.EQ.0) iret=3
                    +
                    309  ENDIF
                    +
                    310  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    311  ! AFFIRM APPROPRIATE INPUT GRID
                    +
                    312  ! LAT/LON OR GAUSSIAN
                    +
                    313  ! NO BITMAPS
                    +
                    314  ! FULL ZONAL COVERAGE
                    +
                    315  ! FULL MERIDIONAL COVERAGE
                    +
                    316  idrti=igdtnumi
                    +
                    317  IF(idrti==40) idrti=4
                    +
                    318  IF(idrti==0.OR.idrti==4)THEN
                    +
                    319  im=igdtmpli(8)
                    +
                    320  jm=igdtmpli(9)
                    +
                    321  iscale=igdtmpli(10)*igdtmpli(11)
                    +
                    322  IF(iscale==0) iscale=10**6
                    +
                    323  rlon1=float(igdtmpli(13))/float(iscale)
                    +
                    324  rlon2=float(igdtmpli(16))/float(iscale)
                    +
                    325  iscan=mod(igdtmpli(19)/128,2)
                    +
                    326  jscan=mod(igdtmpli(19)/64,2)
                    +
                    327  nscan=mod(igdtmpli(19)/32,2)
                    +
                    328  ELSE
                    +
                    329  iret=41
                    +
                    330  ENDIF
                    +
                    331  DO k=1,km
                    +
                    332  IF(ibi(k).NE.0) iret=41
                    +
                    333  ENDDO
                    +
                    334  IF(iret.EQ.0) THEN
                    +
                    335  IF(iscan.EQ.0) THEN
                    +
                    336  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    337  ELSE
                    +
                    338  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    339  ENDIF
                    +
                    340  ig=nint(360/abs(dlon))
                    +
                    341  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    +
                    342  imaxi=ig
                    +
                    343  jmaxi=jm
                    +
                    344  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    +
                    345  ENDIF
                    +
                    346  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    +
                    347  iscale=igdtmpli(10)*igdtmpli(11)
                    +
                    348  IF(iscale==0) iscale=10**6
                    +
                    349  rlat1=float(igdtmpli(12))/float(iscale)
                    +
                    350  rlat2=float(igdtmpli(15))/float(iscale)
                    +
                    351  dlat=(rlat2-rlat1)/(jm-1)
                    +
                    352  jg=nint(180/abs(dlat))
                    +
                    353  IF(jm.EQ.jg) idrti=256
                    +
                    354  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    +
                    355  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    +
                    356  jg=igdtmpli(18)*2
                    +
                    357  IF(jm.NE.jg) iret=41
                    +
                    358  ENDIF
                    +
                    359  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    360  ! SET PARAMETERS
                    +
                    361  IF(iret.EQ.0) THEN
                    +
                    362  iromb=ipopt(1)
                    +
                    363  maxwv=ipopt(2)
                    +
                    364  IF(maxwv.EQ.-1) THEN
                    +
                    365  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    +
                    366  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    +
                    367  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    +
                    368  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    +
                    369  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    +
                    370  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    +
                    371  ENDIF
                    +
                    372  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    +
                    373  ENDIF
                    +
                    374  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    375  ! INTERPOLATE
                    +
                    376  IF(iret.EQ.0) THEN
                    +
                    377  IF(nscan.EQ.0) THEN
                    +
                    378  iskipi=1
                    +
                    379  jskipi=im
                    +
                    380  ELSE
                    +
                    381  iskipi=jm
                    +
                    382  jskipi=1
                    +
                    383  ENDIF
                    +
                    384  IF(iscan.EQ.1) iskipi=-iskipi
                    +
                    385  IF(jscan.EQ.0) jskipi=-jskipi
                    +
                    386  ispec=0
                    +
                    387  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    +
                    388  IF((igdtnumo.EQ.0.OR.igdtnumo.EQ.40).AND. &
                    +
                    389  mod(igdtmplo(8),2).EQ.0.AND.igdtmplo(13).EQ.0.AND.igdtmplo(19).EQ.0) THEN
                    +
                    390  idrto=igdtnumo
                    +
                    391  IF(idrto==40)idrto=4
                    +
                    392  imo=igdtmplo(8)
                    +
                    393  jmo=igdtmplo(9)
                    +
                    394  iscale=igdtmplo(10)*igdtmplo(11)
                    +
                    395  IF(iscale==0) iscale=10**6
                    +
                    396  rlon2=float(igdtmplo(16))/float(iscale)
                    +
                    397  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    +
                    398  igo=nint(360/abs(dlono))
                    +
                    399  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    +
                    400  rlat1=float(igdtmplo(12))/float(iscale)
                    +
                    401  rlat2=float(igdtmplo(15))/float(iscale)
                    +
                    402  dlat=(rlat2-rlat1)/(jmo-1)
                    +
                    403  jgo=nint(180/abs(dlat))
                    +
                    404  IF(jmo.EQ.jgo) idrto=256
                    +
                    405  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    +
                    406  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    +
                    407  jgo=igdtmplo(18)*2
                    +
                    408  IF(jmo.EQ.jgo) ispec=1
                    +
                    409  ENDIF
                    +
                    410  IF(ispec.EQ.1) THEN
                    +
                    411  CALL sptrun(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    +
                    412  km,iprime,iskipi,jskipi,mi,0,0,mo,0,gi,go)
                    +
                    413  ENDIF
                    +
                    414  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    +
                    415  ELSEIF(igdtnumo.EQ.20.AND. &
                    +
                    416  igdtmplo(8).EQ.igdtmplo(9).AND.mod(igdtmplo(8),2).EQ.1.AND. &
                    +
                    417  igdtmplo(15).EQ.igdtmplo(16).AND.igdtmplo(18).EQ.64) THEN
                    +
                    418  nps=igdtmplo(8)
                    +
                    419  rlat1=float(igdtmplo(10))*1.e-6
                    +
                    420  rlon1=float(igdtmplo(11))*1.e-6
                    +
                    421  orient=float(igdtmplo(14))*1.e-6
                    +
                    422  xmesh=float(igdtmplo(15))*1.e-3
                    +
                    423  iproj=mod(igdtmplo(17)/128,2)
                    +
                    424  ip=(nps+1)/2
                    +
                    425  h=(-1.)**iproj
                    +
                    426  slat=float(abs(igdtmplo(13)))*1.e-6
                    +
                    427  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    +
                    428  de=(1.+sin(slat/dpr))*rerth
                    +
                    429  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    +
                    430  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    +
                    431  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    +
                    432  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    +
                    433  IF(iproj.EQ.0) THEN
                    +
                    434  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    435  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    436  slat,xmesh,orient,gi,go,go2)
                    +
                    437  ELSE
                    +
                    438  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    439  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    440  slat,xmesh,orient,gi,go2,go)
                    +
                    441  ENDIF
                    +
                    442  ispec=1
                    +
                    443  ENDIF
                    +
                    444  ! SPECIAL CASE OF MERCATOR GRID
                    +
                    445  ELSEIF(igdtnumo.EQ.10) THEN
                    +
                    446  ni=igdtmplo(8)
                    +
                    447  nj=igdtmplo(9)
                    +
                    448  rlat1=float(igdtmplo(10))*1.0e-6
                    +
                    449  rlon1=float(igdtmplo(11))*1.0e-6
                    +
                    450  rlon2=float(igdtmplo(15))*1.0e-6
                    +
                    451  rlati=float(igdtmplo(13))*1.0e-6
                    +
                    452  iscano=mod(igdtmplo(16)/128,2)
                    +
                    453  jscano=mod(igdtmplo(16)/64,2)
                    +
                    454  nscano=mod(igdtmplo(16)/32,2)
                    +
                    455  dy=float(igdtmplo(19))*1.0e-3
                    +
                    456  hi=(-1.)**iscano
                    +
                    457  hj=(-1.)**(1-jscano)
                    +
                    458  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    +
                    459  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    +
                    460  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    +
                    461  IF(nscano.EQ.0) THEN
                    +
                    462  CALL sptrunm(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    +
                    463  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    464  rlat1,rlon1,dlato,dlono,gi,go)
                    +
                    465  ispec=1
                    +
                    466  ENDIF
                    +
                    467  ENDIF
                    +
                    468  ! GENERAL SLOW CASE
                    +
                    469  IF(ispec.EQ.0) THEN
                    +
                    470  CALL sptrung(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    +
                    471  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon,gi,go)
                    +
                    472  ENDIF
                    +
                    473  DO k=1,km
                    +
                    474  ibo(k)=0
                    +
                    475  DO n=1,no
                    +
                    476  lo(n,k)=.true.
                    +
                    477  ENDDO
                    +
                    478  ENDDO
                    +
                    479  ELSE
                    +
                    480  DO k=1,km
                    +
                    481  ibo(k)=1
                    +
                    482  DO n=1,no
                    +
                    483  lo(n,k)=.false.
                    +
                    484  go(n,k)=0.
                    +
                    485  ENDDO
                    +
                    486  ENDDO
                    +
                    487  ENDIF
                    +
                    488  END SUBROUTINE polates4_grib2
                    +
                    489 
                    +
                    559  suBROUTINE polates4_grib1(IPOPT,KGDSI,KGDSO,MI,MO,KM,IBI,GI, &
                    +
                    560  NO,RLAT,RLON,IBO,LO,GO,IRET)
                    +
                    561  INTEGER, INTENT(IN ) :: IPOPT(20), KGDSI(200)
                    +
                    562  INTEGER, INTENT(IN ) :: KGDSO(200), MI, MO
                    +
                    563  INTEGER, INTENT(IN ) :: IBI(KM), KM
                    +
                    564  INTEGER, INTENT( OUT) :: IBO(KM), IRET
                    +
                    565  !
                    +
                    566  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    567  !
                    +
                    568  REAL, INTENT(IN ) :: GI(MI,KM)
                    +
                    569  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    570  REAL, INTENT( OUT) :: GO(MO,KM)
                    +
                    571  !
                    +
                    572  REAL, PARAMETER :: FILL=-9999.
                    +
                    573  REAL, PARAMETER :: RERTH=6.3712e6
                    +
                    574  REAL, PARAMETER :: PI=3.14159265358979
                    +
                    575  REAL, PARAMETER :: DPR=180./pi
                    +
                    576  !
                    +
                    577  INTEGER :: IDRTI, IDRTO, IG, JG, IM, JM
                    +
                    578  INTEGER :: IGO, JGO, IMO, JMO
                    +
                    579  INTEGER :: ISCAN, JSCAN, NSCAN
                    +
                    580  INTEGER :: ISCANO, JSCANO, NSCANO
                    +
                    581  INTEGER :: ISKIPI, JSKIPI
                    +
                    582  INTEGER :: IMAXI, JMAXI, ISPEC
                    +
                    583  INTEGER :: IP, IPRIME, IPROJ, IROMB, K
                    +
                    584  INTEGER :: MAXWV, N, NI, NJ, NPS, NO
                    +
                    585  !
                    +
                    586  REAL :: DE, DR, DY
                    +
                    587  REAL :: DLAT, DLON, DLATO, DLONO
                    +
                    588  REAL :: GO2(MO,KM), H, HI, HJ
                    +
                    589  REAL :: ORIENT
                    +
                    590  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    +
                    591  REAL :: XMESH, XP, YP
                    +
                    592  REAL :: XPTS(MO), YPTS(MO)
                    +
                    593 
                    +
                    594  type(grib1_descriptor) :: desc_in, desc_out
                    +
                    595  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    596 
                    +
                    597  desc_in = init_descriptor(kgdsi)
                    +
                    598  desc_out = init_descriptor(kgdso)
                    +
                    599 
                    +
                    600  call init_grid(grid_in, desc_in)
                    +
                    601  call init_grid(grid_out, desc_out)
                    +
                    602 
                    +
                    603  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    604  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    605  iret=0
                    +
                    606  IF(kgdso(1).GE.0) THEN
                    +
                    607  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no)
                    +
                    608  IF(no.EQ.0) iret=3
                    +
                    609  ENDIF
                    +
                    610  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    611  ! AFFIRM APPROPRIATE INPUT GRID
                    +
                    612  ! LAT/LON OR GAUSSIAN
                    +
                    613  ! NO BITMAPS
                    +
                    614  ! FULL ZONAL COVERAGE
                    +
                    615  ! FULL MERIDIONAL COVERAGE
                    +
                    616  idrti=kgdsi(1)
                    +
                    617  im=kgdsi(2)
                    +
                    618  jm=kgdsi(3)
                    +
                    619  rlon1=kgdsi(5)*1.e-3
                    +
                    620  rlon2=kgdsi(8)*1.e-3
                    +
                    621  iscan=mod(kgdsi(11)/128,2)
                    +
                    622  jscan=mod(kgdsi(11)/64,2)
                    +
                    623  nscan=mod(kgdsi(11)/32,2)
                    +
                    624  IF(idrti.NE.0.AND.idrti.NE.4) iret=41
                    +
                    625  DO k=1,km
                    +
                    626  IF(ibi(k).NE.0) iret=41
                    +
                    627  ENDDO
                    +
                    628  IF(iret.EQ.0) THEN
                    +
                    629  IF(iscan.EQ.0) THEN
                    +
                    630  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    631  ELSE
                    +
                    632  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    633  ENDIF
                    +
                    634  ig=nint(360/abs(dlon))
                    +
                    635  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    +
                    636  imaxi=ig
                    +
                    637  jmaxi=jm
                    +
                    638  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    +
                    639  ENDIF
                    +
                    640  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    +
                    641  rlat1=kgdsi(4)*1.e-3
                    +
                    642  rlat2=kgdsi(7)*1.e-3
                    +
                    643  dlat=(rlat2-rlat1)/(jm-1)
                    +
                    644  jg=nint(180/abs(dlat))
                    +
                    645  IF(jm.EQ.jg) idrti=256
                    +
                    646  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    +
                    647  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    +
                    648  jg=kgdsi(10)*2
                    +
                    649  IF(jm.NE.jg) iret=41
                    +
                    650  ENDIF
                    +
                    651  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    652  ! SET PARAMETERS
                    +
                    653  IF(iret.EQ.0) THEN
                    +
                    654  iromb=ipopt(1)
                    +
                    655  maxwv=ipopt(2)
                    +
                    656  IF(maxwv.EQ.-1) THEN
                    +
                    657  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    +
                    658  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    +
                    659  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    +
                    660  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    +
                    661  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    +
                    662  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    +
                    663  ENDIF
                    +
                    664  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    +
                    665  ENDIF
                    +
                    666  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    667  ! INTERPOLATE
                    +
                    668  IF(iret.EQ.0) THEN
                    +
                    669  IF(nscan.EQ.0) THEN
                    +
                    670  iskipi=1
                    +
                    671  jskipi=im
                    +
                    672  ELSE
                    +
                    673  iskipi=jm
                    +
                    674  jskipi=1
                    +
                    675  ENDIF
                    +
                    676  IF(iscan.EQ.1) iskipi=-iskipi
                    +
                    677  IF(jscan.EQ.0) jskipi=-jskipi
                    +
                    678  ispec=0
                    +
                    679  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    +
                    680  IF((kgdso(1).EQ.0.OR.kgdso(1).EQ.4).AND. &
                    +
                    681  mod(kgdso(2),2).EQ.0.AND.kgdso(5).EQ.0.AND.kgdso(11).EQ.0) THEN
                    +
                    682  idrto=kgdso(1)
                    +
                    683  imo=kgdso(2)
                    +
                    684  jmo=kgdso(3)
                    +
                    685  rlon2=kgdso(8)*1.e-3
                    +
                    686  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    +
                    687  igo=nint(360/abs(dlono))
                    +
                    688  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    +
                    689  rlat1=kgdso(4)*1.e-3
                    +
                    690  rlat2=kgdso(7)*1.e-3
                    +
                    691  dlat=(rlat2-rlat1)/(jmo-1)
                    +
                    692  jgo=nint(180/abs(dlat))
                    +
                    693  IF(jmo.EQ.jgo) idrto=256
                    +
                    694  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    +
                    695  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    +
                    696  jgo=kgdso(10)*2
                    +
                    697  IF(jmo.EQ.jgo) ispec=1
                    +
                    698  ENDIF
                    +
                    699  IF(ispec.EQ.1) THEN
                    +
                    700  CALL sptrun(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    +
                    701  km,iprime,iskipi,jskipi,mi,0,0,mo,0,gi,go)
                    +
                    702  ENDIF
                    +
                    703  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    +
                    704  ELSEIF(kgdso(1).EQ.5.AND. &
                    +
                    705  kgdso(2).EQ.kgdso(3).AND.mod(kgdso(2),2).EQ.1.AND. &
                    +
                    706  kgdso(8).EQ.kgdso(9).AND.kgdso(11).EQ.64) THEN
                    +
                    707  nps=kgdso(2)
                    +
                    708  rlat1=kgdso(4)*1.e-3
                    +
                    709  rlon1=kgdso(5)*1.e-3
                    +
                    710  orient=kgdso(7)*1.e-3
                    +
                    711  xmesh=kgdso(8)
                    +
                    712  iproj=mod(kgdso(10)/128,2)
                    +
                    713  ip=(nps+1)/2
                    +
                    714  h=(-1.)**iproj
                    +
                    715  de=(1.+sin(60./dpr))*rerth
                    +
                    716  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    +
                    717  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    +
                    718  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    +
                    719  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    +
                    720  IF(iproj.EQ.0) THEN
                    +
                    721  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    722  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    723  60.,xmesh,orient,gi,go,go2)
                    +
                    724  ELSE
                    +
                    725  CALL sptruns(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    726  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    727  60.,xmesh,orient,gi,go2,go)
                    +
                    728  ENDIF
                    +
                    729  ispec=1
                    +
                    730  ENDIF
                    +
                    731  ! SPECIAL CASE OF MERCATOR GRID
                    +
                    732  ELSEIF(kgdso(1).EQ.1) THEN
                    +
                    733  ni=kgdso(2)
                    +
                    734  nj=kgdso(3)
                    +
                    735  rlat1=kgdso(4)*1.e-3
                    +
                    736  rlon1=kgdso(5)*1.e-3
                    +
                    737  rlon2=kgdso(8)*1.e-3
                    +
                    738  rlati=kgdso(9)*1.e-3
                    +
                    739  iscano=mod(kgdso(11)/128,2)
                    +
                    740  jscano=mod(kgdso(11)/64,2)
                    +
                    741  nscano=mod(kgdso(11)/32,2)
                    +
                    742  dy=kgdso(13)
                    +
                    743  hi=(-1.)**iscano
                    +
                    744  hj=(-1.)**(1-jscano)
                    +
                    745  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    +
                    746  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    +
                    747  IF(nscano.EQ.0) THEN
                    +
                    748  CALL sptrunm(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    +
                    749  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    750  rlat1,rlon1,dlato,dlono,gi,go)
                    +
                    751  ispec=1
                    +
                    752  ENDIF
                    +
                    753  ENDIF
                    +
                    754  ! GENERAL SLOW CASE
                    +
                    755  IF(ispec.EQ.0) THEN
                    +
                    756  CALL sptrung(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    +
                    757  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon,gi,go)
                    +
                    758  ENDIF
                    +
                    759  DO k=1,km
                    +
                    760  ibo(k)=0
                    +
                    761  DO n=1,no
                    +
                    762  lo(n,k)=.true.
                    +
                    763  ENDDO
                    +
                    764  ENDDO
                    +
                    765  ELSE
                    +
                    766  DO k=1,km
                    +
                    767  ibo(k)=1
                    +
                    768  DO n=1,no
                    +
                    769  lo(n,k)=.false.
                    +
                    770  go(n,k)=0.
                    +
                    771  ENDDO
                    +
                    772  ENDDO
                    +
                    773  ENDIF
                    +
                    774  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    775  END SUBROUTINE polates4_grib1
                    +
                    776 
                    +
                    777 
                    +
                    887  SUBROUTINE polatev4_grib2(IPOPT,IGDTNUMI,IGDTMPLI,IGDTLENI, &
                    +
                    888  IGDTNUMO,IGDTMPLO,IGDTLENO, &
                    +
                    889  MI,MO,KM,IBI,UI,VI, &
                    +
                    890  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    891  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    +
                    892  INTEGER, INTENT(IN ) :: KM, MI, MO
                    +
                    893  INTEGER, INTENT( OUT) :: IRET, IBO(KM), NO
                    +
                    894  INTEGER, INTENT(IN ) :: IGDTNUMI, IGDTLENI
                    +
                    895  INTEGER, INTENT(IN ) :: IGDTMPLI(IGDTLENI)
                    +
                    896  INTEGER, INTENT(IN ) :: IGDTNUMO, IGDTLENO
                    +
                    897  INTEGER, INTENT(IN ) :: IGDTMPLO(IGDTLENO)
                    +
                    898  !
                    +
                    899  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    900  !
                    +
                    901  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    902  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    903  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    904  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    +
                    905  !
                    +
                    906  REAL, PARAMETER :: FILL=-9999.
                    +
                    907  REAL, PARAMETER :: PI=3.14159265358979
                    +
                    908  REAL, PARAMETER :: DPR=180./pi
                    +
                    909  !
                    +
                    910  INTEGER :: IDRTO, IROMB, ISKIPI, ISPEC
                    +
                    911  INTEGER :: IDRTI, IMAXI, JMAXI, IM, JM
                    +
                    912  INTEGER :: IPRIME, IG, IMO, JMO, IGO, JGO
                    +
                    913  INTEGER :: ISCAN, JSCAN, NSCAN
                    +
                    914  INTEGER :: ISCANO, JSCANO, NSCANO
                    +
                    915  INTEGER :: ISCALE, IP, IPROJ, JSKIPI, JG
                    +
                    916  INTEGER :: K, MAXWV, N, NI, NJ, NPS
                    +
                    917  !
                    +
                    918  REAL :: DLAT, DLON, DLATO, DLONO, DE, DR, DY
                    +
                    919  REAL :: DUM, E2, H, HI, HJ
                    +
                    920  REAL :: ORIENT, RERTH, SLAT
                    +
                    921  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    +
                    922  REAL :: UROT, VROT, UO2(MO,KM),VO2(MO,KM)
                    +
                    923  REAL :: XMESH, X, XP, YP, XPTS(MO),YPTS(MO)
                    +
                    924 
                    +
                    925  type(grib2_descriptor) :: desc_in, desc_out
                    +
                    926  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    927 
                    +
                    928  desc_in = init_descriptor(igdtnumi, igdtleni, igdtmpli)
                    +
                    929  desc_out = init_descriptor(igdtnumo, igdtleno, igdtmplo)
                    +
                    930 
                    +
                    931  call init_grid(grid_in, desc_in)
                    +
                    932  call init_grid(grid_out, desc_out)
                    +
                    933 
                    +
                    934  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    935  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    936  iret=0
                    +
                    937  IF(igdtnumo.GE.0) THEN
                    +
                    938  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts, &
                    +
                    939  rlon,rlat,no,crot,srot)
                    +
                    940  IF(no.EQ.0) iret=3
                    +
                    941  ENDIF
                    +
                    942  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    943  ! AFFIRM APPROPRIATE INPUT GRID
                    +
                    944  ! LAT/LON OR GAUSSIAN
                    +
                    945  ! NO BITMAPS
                    +
                    946  ! FULL ZONAL COVERAGE
                    +
                    947  ! FULL MERIDIONAL COVERAGE
                    +
                    948  idrti=igdtnumi
                    +
                    949  IF(idrti==40) idrti=4
                    +
                    950  IF(idrti==0.OR.idrti==4)THEN
                    +
                    951  im=igdtmpli(8)
                    +
                    952  jm=igdtmpli(9)
                    +
                    953  iscale=igdtmpli(10)*igdtmpli(11)
                    +
                    954  IF(iscale==0) iscale=10**6
                    +
                    955  rlon1=float(igdtmpli(13))/float(iscale)
                    +
                    956  rlon2=float(igdtmpli(16))/float(iscale)
                    +
                    957  iscan=mod(igdtmpli(19)/128,2)
                    +
                    958  jscan=mod(igdtmpli(19)/64,2)
                    +
                    959  nscan=mod(igdtmpli(19)/32,2)
                    +
                    960  ELSE
                    +
                    961  iret=41
                    +
                    962  ENDIF
                    +
                    963  DO k=1,km
                    +
                    964  IF(ibi(k).NE.0) iret=41
                    +
                    965  ENDDO
                    +
                    966  IF(iret.EQ.0) THEN
                    +
                    967  IF(iscan.EQ.0) THEN
                    +
                    968  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    969  ELSE
                    +
                    970  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    971  ENDIF
                    +
                    972  ig=nint(360/abs(dlon))
                    +
                    973  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    +
                    974  imaxi=ig
                    +
                    975  jmaxi=jm
                    +
                    976  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    +
                    977  ENDIF
                    +
                    978  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    +
                    979  iscale=igdtmpli(10)*igdtmpli(11)
                    +
                    980  IF(iscale==0) iscale=10**6
                    +
                    981  rlat1=float(igdtmpli(12))/float(iscale)
                    +
                    982  rlat2=float(igdtmpli(15))/float(iscale)
                    +
                    983  dlat=(rlat2-rlat1)/(jm-1)
                    +
                    984  jg=nint(180/abs(dlat))
                    +
                    985  IF(jm.EQ.jg) idrti=256
                    +
                    986  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    +
                    987  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    +
                    988  jg=igdtmpli(18)*2
                    +
                    989  IF(jm.NE.jg) iret=41
                    +
                    990  ENDIF
                    +
                    991  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    992  ! SET PARAMETERS
                    +
                    993  IF(iret.EQ.0) THEN
                    +
                    994  iromb=ipopt(1)
                    +
                    995  maxwv=ipopt(2)
                    +
                    996  IF(maxwv.EQ.-1) THEN
                    +
                    997  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    +
                    998  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    +
                    999  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    +
                    1000  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    +
                    1001  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    +
                    1002  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    +
                    1003  ENDIF
                    +
                    1004  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    +
                    1005  ENDIF
                    +
                    1006  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1007  ! INTERPOLATE
                    +
                    1008  IF(iret.EQ.0) THEN
                    +
                    1009  IF(nscan.EQ.0) THEN
                    +
                    1010  iskipi=1
                    +
                    1011  jskipi=im
                    +
                    1012  ELSE
                    +
                    1013  iskipi=jm
                    +
                    1014  jskipi=1
                    +
                    1015  ENDIF
                    +
                    1016  IF(iscan.EQ.1) iskipi=-iskipi
                    +
                    1017  IF(jscan.EQ.0) jskipi=-jskipi
                    +
                    1018  ispec=0
                    +
                    1019  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    +
                    1020  IF((igdtnumo.EQ.0.OR.igdtnumo.EQ.40).AND. &
                    +
                    1021  mod(igdtmplo(8),2).EQ.0.AND.igdtmplo(13).EQ.0.AND. &
                    +
                    1022  igdtmplo(19).EQ.0) THEN
                    +
                    1023  idrto=igdtnumo
                    +
                    1024  IF(idrto==40)idrto=4
                    +
                    1025  imo=igdtmplo(8)
                    +
                    1026  jmo=igdtmplo(9)
                    +
                    1027  iscale=igdtmplo(10)*igdtmplo(11)
                    +
                    1028  IF(iscale==0) iscale=10**6
                    +
                    1029  rlon2=float(igdtmplo(16))/float(iscale)
                    +
                    1030  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    +
                    1031  igo=nint(360/abs(dlono))
                    +
                    1032  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    +
                    1033  rlat1=float(igdtmplo(12))/float(iscale)
                    +
                    1034  rlat2=float(igdtmplo(15))/float(iscale)
                    +
                    1035  dlat=(rlat2-rlat1)/(jmo-1)
                    +
                    1036  jgo=nint(180/abs(dlat))
                    +
                    1037  IF(jmo.EQ.jgo) idrto=256
                    +
                    1038  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    +
                    1039  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    +
                    1040  jgo=igdtmplo(18)*2
                    +
                    1041  IF(jmo.EQ.jgo) ispec=1
                    +
                    1042  ENDIF
                    +
                    1043  IF(ispec.EQ.1) THEN
                    +
                    1044  CALL sptrunv(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    +
                    1045  km,iprime,iskipi,jskipi,mi,0,0,mo,0,ui,vi, &
                    +
                    1046  .true.,uo,vo,.false.,dum,dum,.false.,dum,dum)
                    +
                    1047  ENDIF
                    +
                    1048  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    +
                    1049  ELSEIF(igdtnumo.EQ.20.AND. &
                    +
                    1050  igdtmplo(8).EQ.igdtmplo(9).AND.mod(igdtmplo(8),2).EQ.1.AND. &
                    +
                    1051  igdtmplo(15).EQ.igdtmplo(16).AND.igdtmplo(18).EQ.64.AND. &
                    +
                    1052  mod(igdtmplo(12)/8,2).EQ.1) THEN
                    +
                    1053  nps=igdtmplo(8)
                    +
                    1054  rlat1=float(igdtmplo(10))*1.e-6
                    +
                    1055  rlon1=float(igdtmplo(11))*1.e-6
                    +
                    1056  orient=float(igdtmplo(14))*1.e-6
                    +
                    1057  xmesh=float(igdtmplo(15))*1.e-3
                    +
                    1058  iproj=mod(igdtmplo(17)/128,2)
                    +
                    1059  ip=(nps+1)/2
                    +
                    1060  h=(-1.)**iproj
                    +
                    1061  slat=float(abs(igdtmplo(13)))*1.e-6
                    +
                    1062  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    +
                    1063  de=(1.+sin(slat/dpr))*rerth
                    +
                    1064  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    +
                    1065  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    +
                    1066  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    +
                    1067  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    +
                    1068  IF(iproj.EQ.0) THEN
                    +
                    1069  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    1070  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1071  slat,xmesh,orient,ui,vi,.true.,uo,vo,uo2,vo2, &
                    +
                    1072  .false.,dum,dum,dum,dum, &
                    +
                    1073  .false.,dum,dum,dum,dum)
                    +
                    1074  ELSE
                    +
                    1075  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    1076  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1077  slat,xmesh,orient,ui,vi,.true.,uo2,vo2,uo,vo, &
                    +
                    1078  .false.,dum,dum,dum,dum, &
                    +
                    1079  .false.,dum,dum,dum,dum)
                    +
                    1080  ENDIF
                    +
                    1081  ispec=1
                    +
                    1082  ENDIF
                    +
                    1083  ! SPECIAL CASE OF MERCATOR GRID
                    +
                    1084  ELSEIF(igdtnumo.EQ.10) THEN
                    +
                    1085  ni=igdtmplo(8)
                    +
                    1086  nj=igdtmplo(9)
                    +
                    1087  rlat1=float(igdtmplo(10))*1.0e-6
                    +
                    1088  rlon1=float(igdtmplo(11))*1.0e-6
                    +
                    1089  rlon2=float(igdtmplo(15))*1.0e-6
                    +
                    1090  rlati=float(igdtmplo(13))*1.0e-6
                    +
                    1091  iscano=mod(igdtmplo(16)/128,2)
                    +
                    1092  jscano=mod(igdtmplo(16)/64,2)
                    +
                    1093  nscano=mod(igdtmplo(16)/32,2)
                    +
                    1094  dy=float(igdtmplo(19))*1.0e-3
                    +
                    1095  hi=(-1.)**iscano
                    +
                    1096  hj=(-1.)**(1-jscano)
                    +
                    1097  CALL earth_radius(igdtmplo,igdtleno,rerth,e2)
                    +
                    1098  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    +
                    1099  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    +
                    1100  IF(nscano.EQ.0) THEN
                    +
                    1101  CALL sptrunmv(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    +
                    1102  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1103  rlat1,rlon1,dlato,dlono,ui,vi, &
                    +
                    1104  .true.,uo,vo,.false.,dum,dum,.false.,dum,dum)
                    +
                    1105  ispec=1
                    +
                    1106  ENDIF
                    +
                    1107  ENDIF
                    +
                    1108  ! GENERAL SLOW CASE
                    +
                    1109  IF(ispec.EQ.0) THEN
                    +
                    1110  CALL sptrungv(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    +
                    1111  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon, &
                    +
                    1112  ui,vi,.true.,uo,vo,.false.,x,x,.false.,x,x)
                    +
                    1113  DO k=1,km
                    +
                    1114  ibo(k)=0
                    +
                    1115  DO n=1,no
                    +
                    1116  lo(n,k)=.true.
                    +
                    1117  urot=crot(n)*uo(n,k)-srot(n)*vo(n,k)
                    +
                    1118  vrot=srot(n)*uo(n,k)+crot(n)*vo(n,k)
                    +
                    1119  uo(n,k)=urot
                    +
                    1120  vo(n,k)=vrot
                    +
                    1121  ENDDO
                    +
                    1122  ENDDO
                    +
                    1123  ENDIF
                    +
                    1124  ELSE
                    +
                    1125  DO k=1,km
                    +
                    1126  ibo(k)=1
                    +
                    1127  DO n=1,no
                    +
                    1128  lo(n,k)=.false.
                    +
                    1129  uo(n,k)=0.
                    +
                    1130  vo(n,k)=0.
                    +
                    1131  ENDDO
                    +
                    1132  ENDDO
                    +
                    1133  ENDIF
                    +
                    1134  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1135  END SUBROUTINE polatev4_grib2
                    +
                    1136 
                    +
                    1221  SUBROUTINE polatev4_grib1(IPOPT,KGDSI,KGDSO,MI,MO,KM,IBI,UI,VI, &
                    +
                    1222  NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
                    +
                    1223  INTEGER, INTENT(IN ) :: IPOPT(20), IBI(KM)
                    +
                    1224  INTEGER, INTENT(IN ) :: KM, MI, MO
                    +
                    1225  INTEGER, INTENT( OUT) :: IRET, IBO(KM)
                    +
                    1226  INTEGER, INTENT(IN) :: KGDSI(200),KGDSO(200)
                    +
                    1227  !
                    +
                    1228  LOGICAL*1, INTENT( OUT) :: LO(MO,KM)
                    +
                    1229  !
                    +
                    1230  REAL, INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
                    +
                    1231  REAL, INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
                    +
                    1232  REAL, INTENT(INOUT) :: RLAT(MO),RLON(MO)
                    +
                    1233  REAL, INTENT( OUT) :: CROT(MO),SROT(MO)
                    +
                    1234  !
                    +
                    1235  REAL, PARAMETER :: FILL=-9999.
                    +
                    1236  REAL, PARAMETER :: RERTH=6.3712e6
                    +
                    1237  REAL, PARAMETER :: PI=3.14159265358979
                    +
                    1238  REAL, PARAMETER :: DPR=180./pi
                    +
                    1239  !
                    +
                    1240  INTEGER :: IDRTO, IROMB, ISKIPI, ISPEC
                    +
                    1241  INTEGER :: IDRTI, IMAXI, JMAXI, IM, JM
                    +
                    1242  INTEGER :: IPRIME, IG, IMO, JMO, IGO, JGO
                    +
                    1243  INTEGER :: ISCAN, JSCAN, NSCAN
                    +
                    1244  INTEGER :: ISCANO, JSCANO, NSCANO
                    +
                    1245  INTEGER :: IP, IPROJ, JSKIPI, JG
                    +
                    1246  INTEGER :: K, MAXWV, N, NI, NJ, NO, NPS
                    +
                    1247  !
                    +
                    1248  REAL :: DLAT, DLON, DLATO, DLONO, DE, DR, DY
                    +
                    1249  REAL :: DUM, H, HI, HJ
                    +
                    1250  REAL :: ORIENT
                    +
                    1251  REAL :: RLAT1, RLON1, RLAT2, RLON2, RLATI
                    +
                    1252  REAL :: UROT, VROT, UO2(MO,KM),VO2(MO,KM)
                    +
                    1253  REAL :: XMESH, X, XP, YP, XPTS(MO),YPTS(MO)
                    +
                    1254 
                    +
                    1255  type(grib1_descriptor) :: desc_in, desc_out
                    +
                    1256  class(ip_grid), allocatable :: grid_in, grid_out
                    +
                    1257 
                    +
                    1258  desc_in = init_descriptor(kgdsi)
                    +
                    1259  desc_out = init_descriptor(kgdso)
                    +
                    1260 
                    +
                    1261  call init_grid(grid_in, desc_in)
                    +
                    1262  call init_grid(grid_out, desc_out)
                    +
                    1263  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1264  ! COMPUTE NUMBER OF OUTPUT POINTS AND THEIR LATITUDES AND LONGITUDES.
                    +
                    1265  iret=0
                    +
                    1266  IF(kgdso(1).GE.0) THEN
                    +
                    1267  CALL gdswzd(grid_out, 0,mo,fill,xpts,ypts,rlon,rlat,no,crot,srot)
                    +
                    1268  IF(no.EQ.0) iret=3
                    +
                    1269  ENDIF
                    +
                    1270  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1271  ! AFFIRM APPROPRIATE INPUT GRID
                    +
                    1272  ! LAT/LON OR GAUSSIAN
                    +
                    1273  ! NO BITMAPS
                    +
                    1274  ! FULL ZONAL COVERAGE
                    +
                    1275  ! FULL MERIDIONAL COVERAGE
                    +
                    1276  idrti=kgdsi(1)
                    +
                    1277  im=kgdsi(2)
                    +
                    1278  jm=kgdsi(3)
                    +
                    1279  rlon1=kgdsi(5)*1.e-3
                    +
                    1280  rlon2=kgdsi(8)*1.e-3
                    +
                    1281  iscan=mod(kgdsi(11)/128,2)
                    +
                    1282  jscan=mod(kgdsi(11)/64,2)
                    +
                    1283  nscan=mod(kgdsi(11)/32,2)
                    +
                    1284  IF(idrti.NE.0.AND.idrti.NE.4) iret=41
                    +
                    1285  DO k=1,km
                    +
                    1286  IF(ibi(k).NE.0) iret=41
                    +
                    1287  ENDDO
                    +
                    1288  IF(iret.EQ.0) THEN
                    +
                    1289  IF(iscan.EQ.0) THEN
                    +
                    1290  dlon=(mod(rlon2-rlon1-1+3600,360.)+1)/(im-1)
                    +
                    1291  ELSE
                    +
                    1292  dlon=-(mod(rlon1-rlon2-1+3600,360.)+1)/(im-1)
                    +
                    1293  ENDIF
                    +
                    1294  ig=nint(360/abs(dlon))
                    +
                    1295  iprime=1+mod(-nint(rlon1/dlon)+ig,ig)
                    +
                    1296  imaxi=ig
                    +
                    1297  jmaxi=jm
                    +
                    1298  IF(mod(ig,2).NE.0.OR.im.LT.ig) iret=41
                    +
                    1299  ENDIF
                    +
                    1300  IF(iret.EQ.0.AND.idrti.EQ.0) THEN
                    +
                    1301  rlat1=kgdsi(4)*1.e-3
                    +
                    1302  rlat2=kgdsi(7)*1.e-3
                    +
                    1303  dlat=(rlat2-rlat1)/(jm-1)
                    +
                    1304  jg=nint(180/abs(dlat))
                    +
                    1305  IF(jm.EQ.jg) idrti=256
                    +
                    1306  IF(jm.NE.jg.AND.jm.NE.jg+1) iret=41
                    +
                    1307  ELSEIF(iret.EQ.0.AND.idrti.EQ.4) THEN
                    +
                    1308  jg=kgdsi(10)*2
                    +
                    1309  IF(jm.NE.jg) iret=41
                    +
                    1310  ENDIF
                    +
                    1311  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1312  ! SET PARAMETERS
                    +
                    1313  IF(iret.EQ.0) THEN
                    +
                    1314  iromb=ipopt(1)
                    +
                    1315  maxwv=ipopt(2)
                    +
                    1316  IF(maxwv.EQ.-1) THEN
                    +
                    1317  IF(iromb.EQ.0.AND.idrti.EQ.4) maxwv=(jmaxi-1)
                    +
                    1318  IF(iromb.EQ.1.AND.idrti.EQ.4) maxwv=(jmaxi-1)/2
                    +
                    1319  IF(iromb.EQ.0.AND.idrti.EQ.0) maxwv=(jmaxi-3)/2
                    +
                    1320  IF(iromb.EQ.1.AND.idrti.EQ.0) maxwv=(jmaxi-3)/4
                    +
                    1321  IF(iromb.EQ.0.AND.idrti.EQ.256) maxwv=(jmaxi-1)/2
                    +
                    1322  IF(iromb.EQ.1.AND.idrti.EQ.256) maxwv=(jmaxi-1)/4
                    +
                    1323  ENDIF
                    +
                    1324  IF((iromb.NE.0.AND.iromb.NE.1).OR.maxwv.LT.0) iret=42
                    +
                    1325  ENDIF
                    +
                    1326  ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    1327  ! INTERPOLATE
                    +
                    1328  IF(iret.EQ.0) THEN
                    +
                    1329  IF(nscan.EQ.0) THEN
                    +
                    1330  iskipi=1
                    +
                    1331  jskipi=im
                    +
                    1332  ELSE
                    +
                    1333  iskipi=jm
                    +
                    1334  jskipi=1
                    +
                    1335  ENDIF
                    +
                    1336  IF(iscan.EQ.1) iskipi=-iskipi
                    +
                    1337  IF(jscan.EQ.0) jskipi=-jskipi
                    +
                    1338  ispec=0
                    +
                    1339  ! SPECIAL CASE OF GLOBAL CYLINDRICAL GRID
                    +
                    1340  IF((kgdso(1).EQ.0.OR.kgdso(1).EQ.4).AND. &
                    +
                    1341  mod(kgdso(2),2).EQ.0.AND.kgdso(5).EQ.0.AND. &
                    +
                    1342  kgdso(11).EQ.0) THEN
                    +
                    1343  idrto=kgdso(1)
                    +
                    1344  imo=kgdso(2)
                    +
                    1345  jmo=kgdso(3)
                    +
                    1346  rlon2=kgdso(8)*1.e-3
                    +
                    1347  dlono=(mod(rlon2-1+3600,360.)+1)/(imo-1)
                    +
                    1348  igo=nint(360/abs(dlono))
                    +
                    1349  IF(imo.EQ.igo.AND.idrto.EQ.0) THEN
                    +
                    1350  rlat1=kgdso(4)*1.e-3
                    +
                    1351  rlat2=kgdso(7)*1.e-3
                    +
                    1352  dlat=(rlat2-rlat1)/(jmo-1)
                    +
                    1353  jgo=nint(180/abs(dlat))
                    +
                    1354  IF(jmo.EQ.jgo) idrto=256
                    +
                    1355  IF(jmo.EQ.jgo.OR.jmo.EQ.jgo+1) ispec=1
                    +
                    1356  ELSEIF(imo.EQ.igo.AND.idrto.EQ.4) THEN
                    +
                    1357  jgo=kgdso(10)*2
                    +
                    1358  IF(jmo.EQ.jgo) ispec=1
                    +
                    1359  ENDIF
                    +
                    1360  IF(ispec.EQ.1) THEN
                    +
                    1361  CALL sptrunv(iromb,maxwv,idrti,imaxi,jmaxi,idrto,imo,jmo, &
                    +
                    1362  km,iprime,iskipi,jskipi,mi,0,0,mo,0,ui,vi, &
                    +
                    1363  .true.,uo,vo,.false.,dum,dum,.false.,dum,dum)
                    +
                    1364  ENDIF
                    +
                    1365  ! SPECIAL CASE OF POLAR STEREOGRAPHIC GRID
                    +
                    1366  ELSEIF(kgdso(1).EQ.5.AND. &
                    +
                    1367  kgdso(2).EQ.kgdso(3).AND.mod(kgdso(2),2).EQ.1.AND. &
                    +
                    1368  kgdso(8).EQ.kgdso(9).AND.kgdso(11).EQ.64.AND. &
                    +
                    1369  mod(kgdso(6)/8,2).EQ.1) THEN
                    +
                    1370  nps=kgdso(2)
                    +
                    1371  rlat1=kgdso(4)*1.e-3
                    +
                    1372  rlon1=kgdso(5)*1.e-3
                    +
                    1373  orient=kgdso(7)*1.e-3
                    +
                    1374  xmesh=kgdso(8)
                    +
                    1375  iproj=mod(kgdso(10)/128,2)
                    +
                    1376  ip=(nps+1)/2
                    +
                    1377  h=(-1.)**iproj
                    +
                    1378  de=(1.+sin(60./dpr))*rerth
                    +
                    1379  dr=de*cos(rlat1/dpr)/(1+h*sin(rlat1/dpr))
                    +
                    1380  xp=1-h*sin((rlon1-orient)/dpr)*dr/xmesh
                    +
                    1381  yp=1+cos((rlon1-orient)/dpr)*dr/xmesh
                    +
                    1382  IF(nint(xp).EQ.ip.AND.nint(yp).EQ.ip) THEN
                    +
                    1383  IF(iproj.EQ.0) THEN
                    +
                    1384  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    1385  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1386  60.,xmesh,orient,ui,vi,.true.,uo,vo,uo2,vo2, &
                    +
                    1387  .false.,dum,dum,dum,dum, &
                    +
                    1388  .false.,dum,dum,dum,dum)
                    +
                    1389  ELSE
                    +
                    1390  CALL sptrunsv(iromb,maxwv,idrti,imaxi,jmaxi,km,nps, &
                    +
                    1391  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1392  60.,xmesh,orient,ui,vi,.true.,uo2,vo2,uo,vo, &
                    +
                    1393  .false.,dum,dum,dum,dum, &
                    +
                    1394  .false.,dum,dum,dum,dum)
                    +
                    1395  ENDIF
                    +
                    1396  ispec=1
                    +
                    1397  ENDIF
                    +
                    1398  ! SPECIAL CASE OF MERCATOR GRID
                    +
                    1399  ELSEIF(kgdso(1).EQ.1) THEN
                    +
                    1400  ni=kgdso(2)
                    +
                    1401  nj=kgdso(3)
                    +
                    1402  rlat1=kgdso(4)*1.e-3
                    +
                    1403  rlon1=kgdso(5)*1.e-3
                    +
                    1404  rlon2=kgdso(8)*1.e-3
                    +
                    1405  rlati=kgdso(9)*1.e-3
                    +
                    1406  iscano=mod(kgdso(11)/128,2)
                    +
                    1407  jscano=mod(kgdso(11)/64,2)
                    +
                    1408  nscano=mod(kgdso(11)/32,2)
                    +
                    1409  dy=kgdso(13)
                    +
                    1410  hi=(-1.)**iscano
                    +
                    1411  hj=(-1.)**(1-jscano)
                    +
                    1412  dlono=hi*(mod(hi*(rlon2-rlon1)-1+3600,360.)+1)/(ni-1)
                    +
                    1413  dlato=hj*dy/(rerth*cos(rlati/dpr))*dpr
                    +
                    1414  IF(nscano.EQ.0) THEN
                    +
                    1415  CALL sptrunmv(iromb,maxwv,idrti,imaxi,jmaxi,km,ni,nj, &
                    +
                    1416  iprime,iskipi,jskipi,mi,mo,0,0,0, &
                    +
                    1417  rlat1,rlon1,dlato,dlono,ui,vi, &
                    +
                    1418  .true.,uo,vo,.false.,dum,dum,.false.,dum,dum)
                    +
                    1419  ispec=1
                    +
                    1420  ENDIF
                    +
                    1421  ENDIF
                    +
                    1422  ! GENERAL SLOW CASE
                    +
                    1423  IF(ispec.EQ.0) THEN
                    +
                    1424  CALL sptrungv(iromb,maxwv,idrti,imaxi,jmaxi,km,no, &
                    +
                    1425  iprime,iskipi,jskipi,mi,mo,0,0,0,rlat,rlon, &
                    +
                    1426  ui,vi,.true.,uo,vo,.false.,x,x,.false.,x,x)
                    +
                    1427  DO k=1,km
                    +
                    1428  ibo(k)=0
                    +
                    1429  DO n=1,no
                    +
                    1430  lo(n,k)=.true.
                    +
                    1431  urot=crot(n)*uo(n,k)-srot(n)*vo(n,k)
                    +
                    1432  vrot=srot(n)*uo(n,k)+crot(n)*vo(n,k)
                    +
                    1433  uo(n,k)=urot
                    +
                    1434  vo(n,k)=vrot
                    +
                    1435  ENDDO
                    +
                    1436  ENDDO
                    +
                    1437  ENDIF
                    +
                    1438  ELSE
                    +
                    1439  DO k=1,km
                    +
                    1440  ibo(k)=1
                    +
                    1441  DO n=1,no
                    +
                    1442  lo(n,k)=.false.
                    +
                    1443  uo(n,k)=0.
                    +
                    1444  vo(n,k)=0.
                    +
                    1445  ENDDO
                    +
                    1446  ENDDO
                    +
                    1447  ENDIF
                    +
                    1448  END SUBROUTINE polatev4_grib1
                    +
                    1449 end module spectral_interp_mod
                    + + + + + + +
                    Determine earth radius and shape.
                    +
                    subroutine, public earth_radius(IGDTMPL, IGDTLEN, RADIUS, ECCEN_SQUARED)
                    Determine earth radius and shape.
                    +
                    Driver module for gdswzd routines.
                    Definition: gdswzd_mod.F90:25
                    +
                    Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
                    +
                    Routines for creating an ip_grid given a Grib descriptor.
                    +
                    Abstract ip_grid type.
                    Definition: ip_grid_mod.F90:10
                    +
                    Interpolate spectral.
                    +
                    subroutine polatev4_grib2(IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate vector fields (spectral).
                    +
                    subroutine interpolate_spectral_scalar(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate spectral scalar.
                    +
                    subroutine polates4_grib2(IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate scalar fields (spectral).
                    +
                    subroutine polates4_grib1(IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
                    Interpolate scalar fields (spectral).
                    +
                    subroutine interpolate_spectral_vector(IPOPT, grid_in, grid_out, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate spectral vector.
                    +
                    subroutine polatev4_grib1(IPOPT, KGDSI, KGDSO, MI, MO, KM, IBI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
                    Interpolate vector fields (spectral).
                    +
                    subroutine sptrun(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRIDI, GRIDO)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptrun.f:58
                    +
                    subroutine sptrung(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NRSKIP, NGSKIP, JCPU, RLAT, RLON, GRIDI, GP)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptrung.f:68
                    +
                    subroutine sptrungv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NRSKIP, NGSKIP, JCPU, RLAT, RLON, GRIDUI, GRIDVI, LUV, UP, VP, LDZ, DP, ZP, LPS, PP, SP)
                    THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTORS FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELD...
                    Definition: sptrungv.f:85
                    +
                    subroutine sptrunm(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, MI, MJ, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, RLAT1, RLON1, DLAT, DLON, GRIDI, GM)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptrunm.f:80
                    +
                    subroutine sptrunmv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, MI, MJ, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, RLAT1, RLON1, DLAT, DLON, GRIDUI, GRIDVI, LUV, UM, VM, LDZ, DM, ZM, LPS, PM, SM)
                    THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTOR FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELDS...
                    Definition: sptrunmv.f:96
                    +
                    subroutine sptruns(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NPS, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, TRUE, XMESH, ORIENT, GRIDI, GN, GS)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptruns.f:75
                    +
                    subroutine sptrunsv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NPS, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, TRUE, XMESH, ORIENT, GRIDUI, GRIDVI, LUV, UN, VN, US, VS, LDZ, DN, ZN, DS, ZS, LPS, PN, SN, PS, SS)
                    This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields...
                    Definition: sptrunsv.f:94
                    +
                    subroutine sptrunv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRIDUI, GRIDVI, LUV, GRIDUO, GRIDVO, LDZ, GRIDDO, GRIDZO, LPS, GRIDPO, GRIDSO)
                    This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields...
                    Definition: sptrunv.f:96
                    +
                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
                    +
                    Grib-2 descriptor containing a grib2 GDT represented by an integer array.
                    +
                    Abstract grid that holds fields and methods common to all grids.
                    Definition: ip_grid_mod.F90:52
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/speps_8f.html b/ver-5.0.0/speps_8f.html new file mode 100644 index 00000000..684d2fad --- /dev/null +++ b/ver-5.0.0/speps_8f.html @@ -0,0 +1,211 @@ + + + + + + + +NCEPLIBS-ip: speps.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    speps.f File Reference
                    +
                    +
                    + +

                    Compute utility spectral fields. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine speps (I, M, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                     Computes constant fields indexed in the spectral domain in "IBM ORDER" (Zonal wavenumber is the slower index). More...
                     
                    +

                    Detailed Description

                    +

                    Compute utility spectral fields.

                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition in file speps.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ speps()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine speps ( I,
                     M,
                    real, dimension((m+1)*((i+1)*m+2)/2) EPS,
                    real, dimension(m+1) EPSTOP,
                    real, dimension((m+1)*((i+1)*m+2)/2) ENN1,
                    real, dimension((m+1)*((i+1)*m+2)/2) ELONN1,
                    real, dimension((m+1)*((i+1)*m+2)/2) EON,
                    real, dimension(m+1) EONTOP 
                    )
                    +
                    + +

                    Computes constant fields indexed in the spectral domain in "IBM ORDER" (Zonal wavenumber is the slower index).

                    +

                    If L is the zonal wavenumber and N is the total wavenumber and A is the earth radius, then the fields returned are:

                      +
                    • (1) normalizing factor EPSILON=SQRT((N**2-L**2)/(4*N**2-1))
                    • +
                    • (2) Laplacian factor N*(N+1)/A**2
                    • +
                    • (3) zonal derivative/Laplacian factor L/(N*(N+1))*A
                    • +
                    • (4) Meridional derivative/Laplacian factor EPSILON/N*A
                    • +
                    +
                    Parameters
                    + + + + + + + + + +
                    Ispectral domain shape (0 for triangular, 1 for rhomboidal)
                    Mspectral truncation
                    EPS((M+1)*((I+1)*M+2)/2) SQRT((N**2-L**2)/(4*N**2-1))
                    EPSTOP(M+1) SQRT((N**2-L**2)/(4*N**2-1)) OVER TOP
                    ENN1((M+1)*((I+1)*M+2)/2) N*(N+1)/A**2
                    ELONN1((M+1)*((I+1)*M+2)/2) L/(N*(N+1))*A
                    EON((M+1)*((I+1)*M+2)/2) EPSILON/N*A
                    EONTOP(M+1) EPSILON/N*A OVER TOP
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition at line 25 of file speps.f.

                    + +

                    Referenced by spwget().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/speps_8f.js b/ver-5.0.0/speps_8f.js new file mode 100644 index 00000000..48596d4c --- /dev/null +++ b/ver-5.0.0/speps_8f.js @@ -0,0 +1,4 @@ +var speps_8f = +[ + [ "speps", "speps_8f.html#a0ab523ec5e1393ffca970897e63a9131", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/speps_8f_source.html b/ver-5.0.0/speps_8f_source.html new file mode 100644 index 00000000..1b2a8af4 --- /dev/null +++ b/ver-5.0.0/speps_8f_source.html @@ -0,0 +1,153 @@ + + + + + + + +NCEPLIBS-ip: speps.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    speps.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Compute utility spectral fields.
                    +
                    3 C> @author Iredell @date 92-10-31
                    +
                    4 
                    +
                    5 C> Computes constant fields indexed in the spectral domain
                    +
                    6 C> in "IBM ORDER" (Zonal wavenumber is the slower index).
                    +
                    7 C>
                    +
                    8 C> If L is the zonal wavenumber and N is the total wavenumber
                    +
                    9 C> and A is the earth radius, then the fields returned are:
                    +
                    10 C> - (1) normalizing factor EPSILON=SQRT((N**2-L**2)/(4*N**2-1))
                    +
                    11 C> - (2) Laplacian factor N*(N+1)/A**2
                    +
                    12 C> - (3) zonal derivative/Laplacian factor L/(N*(N+1))*A
                    +
                    13 C> - (4) Meridional derivative/Laplacian factor EPSILON/N*A
                    +
                    14 C>
                    +
                    15 C> @param I spectral domain shape (0 for triangular, 1 for rhomboidal)
                    +
                    16 C> @param M spectral truncation
                    +
                    17 C> @param EPS ((M+1)*((I+1)*M+2)/2) SQRT((N**2-L**2)/(4*N**2-1))
                    +
                    18 C> @param EPSTOP (M+1) SQRT((N**2-L**2)/(4*N**2-1)) OVER TOP
                    +
                    19 C> @param ENN1 ((M+1)*((I+1)*M+2)/2) N*(N+1)/A**2
                    +
                    20 C> @param ELONN1 ((M+1)*((I+1)*M+2)/2) L/(N*(N+1))*A
                    +
                    21 C> @param EON ((M+1)*((I+1)*M+2)/2) EPSILON/N*A
                    +
                    22 C> @param EONTOP (M+1) EPSILON/N*A OVER TOP
                    +
                    23 C>
                    +
                    24 C> @author Iredell @date 92-10-31
                    +
                    25  SUBROUTINE speps(I,M,EPS,EPSTOP,ENN1,ELONN1,EON,EONTOP)
                    +
                    26  REAL EPS((M+1)*((I+1)*M+2)/2),EPSTOP(M+1)
                    +
                    27  REAL ENN1((M+1)*((I+1)*M+2)/2),ELONN1((M+1)*((I+1)*M+2)/2)
                    +
                    28  REAL EON((M+1)*((I+1)*M+2)/2),EONTOP(M+1)
                    +
                    29  parameter(rerth=6.3712e6,ra2=1./rerth**2)
                    +
                    30 
                    +
                    31  DO l=0,m
                    +
                    32  k=l*(2*m+(i-1)*(l-1))/2+l+1
                    +
                    33  eps(k)=0.
                    +
                    34  enn1(k)=ra2*l*(l+1)
                    +
                    35  elonn1(k)=rerth/(l+1)
                    +
                    36  eon(k)=0.
                    +
                    37  ENDDO
                    +
                    38  DO l=0,m
                    +
                    39  DO n=l+1,i*l+m
                    +
                    40  k=l*(2*m+(i-1)*(l-1))/2+n+1
                    +
                    41  eps(k)=sqrt(float(n**2-l**2)/float(4*n**2-1))
                    +
                    42  enn1(k)=ra2*n*(n+1)
                    +
                    43  elonn1(k)=rerth*l/(n*(n+1))
                    +
                    44  eon(k)=rerth/n*eps(k)
                    +
                    45  ENDDO
                    +
                    46  ENDDO
                    +
                    47  DO l=0,m
                    +
                    48  n=i*l+m+1
                    +
                    49  epstop(l+1)=sqrt(float(n**2-l**2)/float(4*n**2-1))
                    +
                    50  eontop(l+1)=rerth/n*epstop(l+1)
                    +
                    51  ENDDO
                    +
                    52  RETURN
                    +
                    53  END
                    +
                    subroutine speps(I, M, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    Computes constant fields indexed in the spectral domain in "IBM ORDER" (Zonal wavenumber is the slowe...
                    Definition: speps.f:26
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spfft1_8f.html b/ver-5.0.0/spfft1_8f.html new file mode 100644 index 00000000..4ab7b4fc --- /dev/null +++ b/ver-5.0.0/spfft1_8f.html @@ -0,0 +1,206 @@ + + + + + + + +NCEPLIBS-ip: spfft1.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spfft1.f File Reference
                    +
                    +
                    + +

                    Perform multiple fast Fourier transforms. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spfft1 (IMAX, INCW, INCG, KMAX, W, G, IDIR)
                     This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space and real values in cyclic physical space. More...
                     
                    +

                    Detailed Description

                    +

                    Perform multiple fast Fourier transforms.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-20
                    + +

                    Definition in file spfft1.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spfft1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spfft1 (integer, intent(in) IMAX,
                    integer, intent(in) INCW,
                    integer, intent(in) INCG,
                    integer, intent(in) KMAX,
                    complex, dimension(incw,kmax), intent(inout) W,
                    real, dimension(incg,kmax), intent(inout) G,
                    integer, intent(in) IDIR 
                    )
                    +
                    + +

                    This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space and real values in cyclic physical space.

                    +

                    Subprogram spfft1() initializes trigonometric data each call. Use subprogram spfft() to save time and initialize once. This version invokes the IBM ESSL FFT.

                    +
                    Note
                    The restrictions on IMAX are that it must be a multiple of 1 to 25 factors of two, up to 2 factors of three, and up to 1 factor of five, seven and eleven.
                    +
                    +This subprogram is thread-safe.
                    +
                    Parameters
                    + + + + + + + + +
                    IMAXnumber of values in the cyclic physical space (see limitations on imax in remarks below.)
                    INCWfirst dimension of the complex amplitude array (INCW >= IMAX/2+1)
                    INCGfirst dimension of the real value array (INCG >= IMAX)
                    KMAXnumber of transforms to perform
                    [out]Wcomplex amplitudes if IDIR>0
                    [out]Gvalues if IDIR<0
                    IDIRdirection flag
                      +
                    • IDIR>0 to transform from Fourier to physical space
                    • +
                    • IDIR<0 to transform from physical to Fourier space
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-20
                    + +

                    Definition at line 32 of file spfft1.f.

                    + +

                    References scrft(), and srcft().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spfft1_8f.js b/ver-5.0.0/spfft1_8f.js new file mode 100644 index 00000000..d459d959 --- /dev/null +++ b/ver-5.0.0/spfft1_8f.js @@ -0,0 +1,4 @@ +var spfft1_8f = +[ + [ "spfft1", "spfft1_8f.html#ac63643472eda83948c0b249b611346d6", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spfft1_8f_source.html b/ver-5.0.0/spfft1_8f_source.html new file mode 100644 index 00000000..ff1f1efe --- /dev/null +++ b/ver-5.0.0/spfft1_8f_source.html @@ -0,0 +1,161 @@ + + + + + + + +NCEPLIBS-ip: spfft1.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spfft1.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform multiple fast Fourier transforms.
                    +
                    3 C> @author Iredell @date 96-02-20
                    +
                    4 
                    +
                    5 C> This subprogram performs multiple fast Fourier transforms
                    +
                    6 C> between complex amplitudes in Fourier space and real values
                    +
                    7 C> in cyclic physical space.
                    +
                    8 C>
                    +
                    9 C> Subprogram spfft1() initializes trigonometric data each call.
                    +
                    10 C> Use subprogram spfft() to save time and initialize once.
                    +
                    11 C> This version invokes the IBM ESSL FFT.
                    +
                    12 C>
                    +
                    13 C> @note The restrictions on IMAX are that it must be a multiple of 1
                    +
                    14 C> to 25 factors of two, up to 2 factors of three, and up to 1 factor of
                    +
                    15 C> five, seven and eleven.
                    +
                    16 C>
                    +
                    17 C> @note This subprogram is thread-safe.
                    +
                    18 C>
                    +
                    19 C> @param IMAX number of values in the cyclic physical space
                    +
                    20 C> (see limitations on imax in remarks below.)
                    +
                    21 C> @param INCW first dimension of the complex amplitude array
                    +
                    22 C> (INCW >= IMAX/2+1)
                    +
                    23 C> @param INCG first dimension of the real value array (INCG >= IMAX)
                    +
                    24 C> @param KMAX number of transforms to perform
                    +
                    25 C> @param[out] W complex amplitudes if IDIR>0
                    +
                    26 C> @param[out] G values if IDIR<0
                    +
                    27 C> @param IDIR direction flag
                    +
                    28 C> - IDIR>0 to transform from Fourier to physical space
                    +
                    29 C> - IDIR<0 to transform from physical to Fourier space
                    +
                    30 C>
                    +
                    31 C> @author Iredell @date 96-02-20
                    +
                    32  SUBROUTINE spfft1(IMAX,INCW,INCG,KMAX,W,G,IDIR)
                    +
                    33  IMPLICIT NONE
                    +
                    34  INTEGER,INTENT(IN):: IMAX,INCW,INCG,KMAX,IDIR
                    +
                    35  COMPLEX,INTENT(INOUT):: W(INCW,KMAX)
                    +
                    36  REAL,INTENT(INOUT):: G(INCG,KMAX)
                    +
                    37  REAL:: AUX1(25000+INT(0.82*IMAX))
                    +
                    38  REAL:: AUX2(20000+INT(0.57*IMAX))
                    +
                    39  INTEGER:: NAUX1,NAUX2
                    +
                    40 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    41  naux1=25000+int(0.82*imax)
                    +
                    42  naux2=20000+int(0.57*imax)
                    +
                    43 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    44 C FOURIER TO PHYSICAL TRANSFORM.
                    +
                    45  SELECT CASE(idir)
                    +
                    46  CASE(1:)
                    +
                    47  CALL scrft(1,w,incw,g,incg,imax,kmax,-1,1.,
                    +
                    48  & aux1,naux1,aux2,naux2,0.,0)
                    +
                    49  CALL scrft(0,w,incw,g,incg,imax,kmax,-1,1.,
                    +
                    50  & aux1,naux1,aux2,naux2,0.,0)
                    +
                    51 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    52 C PHYSICAL TO FOURIER TRANSFORM.
                    +
                    53  CASE(:-1)
                    +
                    54  CALL srcft(1,g,incg,w,incw,imax,kmax,+1,1./imax,
                    +
                    55  & aux1,naux1,aux2,naux2,0.,0)
                    +
                    56  CALL srcft(0,g,incg,w,incw,imax,kmax,+1,1./imax,
                    +
                    57  & aux1,naux1,aux2,naux2,0.,0)
                    +
                    58  END SELECT
                    +
                    59  END SUBROUTINE
                    +
                    subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    scrft
                    Definition: fftpack.F:80
                    +
                    subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    srcft
                    Definition: fftpack.F:209
                    +
                    subroutine spfft1(IMAX, INCW, INCG, KMAX, W, G, IDIR)
                    This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space...
                    Definition: spfft1.f:33
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spfft_8f.html b/ver-5.0.0/spfft_8f.html new file mode 100644 index 00000000..6b9a9edf --- /dev/null +++ b/ver-5.0.0/spfft_8f.html @@ -0,0 +1,207 @@ + + + + + + + +NCEPLIBS-ip: spfft.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spfft.f File Reference
                    +
                    +
                    + +

                    Perform multiple fast fourier transforms. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spfft (IMAX, INCW, INCG, KMAX, W, G, IDIR)
                     This subprogram performs multiple fast fourier transforms between complex amplitudes in fourier space and real values in cyclic physical space. More...
                     
                    +

                    Detailed Description

                    +

                    Perform multiple fast fourier transforms.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-20
                    + +

                    Definition in file spfft.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spfft()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spfft (integer, intent(in) IMAX,
                    integer, intent(in) INCW,
                    integer, intent(in) INCG,
                    integer, intent(in) KMAX,
                    complex, dimension(incw,kmax), intent(inout) W,
                    real, dimension(incg,kmax), intent(inout) G,
                    integer, intent(in) IDIR 
                    )
                    +
                    + +

                    This subprogram performs multiple fast fourier transforms between complex amplitudes in fourier space and real values in cyclic physical space.

                    +

                    Subprogram spfft must be invoked first with idir=0 to initialize trigonemetric data. Use subprogram spfft1 to perform an fft without previous initialization. This version invokes the ibm essl fft.

                    +

                    The restrictions on imax are that it must be a multiple of 1 to 25 factors of two, up to 2 factors of three, and up to 1 factor of five, seven and eleven.

                    +

                    If IDIR=0, then W and G need not contain any valid data. the other parameters must be supplied and cannot change in succeeding calls until the next time it is called with IDIR=0.

                    +

                    This subprogram is not thread-safe when IDIR=0. On the other hand, when IDIR is not zero, it can be called from a threaded region.

                    +
                    Parameters
                    + + + + + + + + +
                    IMAXnumber of values in the cyclic physical space (see limitations on imax in remarks below.)
                    INCWfirst dimension of the complex amplitude array (INCW >= IMAX/2+1)
                    INCGfirst dimension of the real value array (INCG >= IMAX)
                    KMAXnumber of transforms to perform
                    [out]Wcomplex amplitudes if IDIR>0
                    [out]Greal values if IDIR<0
                    IDIRdirection flag
                      +
                    • IDIR=0 to initialize internal trigonometric data
                    • +
                    • IDIR>0 TO transform from Fourier to physical space
                    • +
                    • IDIR<0 TO transform from physical to fourier space
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-20
                    + +

                    Definition at line 40 of file spfft.f.

                    + +

                    References scrft(), and srcft().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spfft_8f.js b/ver-5.0.0/spfft_8f.js new file mode 100644 index 00000000..f458e16b --- /dev/null +++ b/ver-5.0.0/spfft_8f.js @@ -0,0 +1,4 @@ +var spfft_8f = +[ + [ "spfft", "spfft_8f.html#a1041af8ac4f6a2407b5b7a799a13fb5d", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spfft_8f_source.html b/ver-5.0.0/spfft_8f_source.html new file mode 100644 index 00000000..37cb9c8a --- /dev/null +++ b/ver-5.0.0/spfft_8f_source.html @@ -0,0 +1,177 @@ + + + + + + + +NCEPLIBS-ip: spfft.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spfft.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform multiple fast fourier transforms.
                    +
                    3 C> @author Iredell @date 96-02-20
                    +
                    4 
                    +
                    5 C> This subprogram performs multiple fast fourier transforms
                    +
                    6 C> between complex amplitudes in fourier space and real values
                    +
                    7 C> in cyclic physical space.
                    +
                    8 C>
                    +
                    9 C> Subprogram spfft must be invoked first with idir=0
                    +
                    10 C> to initialize trigonemetric data. Use subprogram spfft1
                    +
                    11 C> to perform an fft without previous initialization.
                    +
                    12 C> This version invokes the ibm essl fft.
                    +
                    13 C>
                    +
                    14 C> The restrictions on imax are that it must be a multiple
                    +
                    15 C> of 1 to 25 factors of two, up to 2 factors of three,
                    +
                    16 C> and up to 1 factor of five, seven and eleven.
                    +
                    17 C>
                    +
                    18 C> If IDIR=0, then W and G need not contain any valid data.
                    +
                    19 C> the other parameters must be supplied and cannot change
                    +
                    20 C> in succeeding calls until the next time it is called with IDIR=0.
                    +
                    21 C>
                    +
                    22 C> This subprogram is not thread-safe when IDIR=0. On the other hand,
                    +
                    23 C> when IDIR is not zero, it can be called from a threaded region.
                    +
                    24 C>
                    +
                    25 C> @param IMAX number of values in the cyclic physical space
                    +
                    26 C> (see limitations on imax in remarks below.)
                    +
                    27 C> @param INCW first dimension of the complex amplitude array
                    +
                    28 C> (INCW >= IMAX/2+1)
                    +
                    29 C> @param INCG first dimension of the real value array
                    +
                    30 C> (INCG >= IMAX)
                    +
                    31 C> @param KMAX number of transforms to perform
                    +
                    32 C> @param[out] W complex amplitudes if IDIR>0
                    +
                    33 C> @param[out] G real values if IDIR<0
                    +
                    34 C> @param IDIR direction flag
                    +
                    35 C> - IDIR=0 to initialize internal trigonometric data
                    +
                    36 C> - IDIR>0 TO transform from Fourier to physical space
                    +
                    37 C> - IDIR<0 TO transform from physical to fourier space
                    +
                    38 C>
                    +
                    39 C> @author Iredell @date 96-02-20
                    +
                    40  SUBROUTINE spfft(IMAX,INCW,INCG,KMAX,W,G,IDIR)
                    +
                    41 
                    +
                    42  IMPLICIT NONE
                    +
                    43  INTEGER,INTENT(IN):: IMAX,INCW,INCG,KMAX,IDIR
                    +
                    44  COMPLEX,INTENT(INOUT):: W(INCW,KMAX)
                    +
                    45  REAL,INTENT(INOUT):: G(INCG,KMAX)
                    +
                    46  INTEGER,SAVE:: NAUX1=0
                    +
                    47  REAL,SAVE,ALLOCATABLE:: AUX1CR(:),AUX1RC(:)
                    +
                    48  INTEGER:: NAUX2
                    +
                    49  REAL:: AUX2(20000+INT(0.57*IMAX))
                    +
                    50 
                    +
                    51  naux2=20000+int(0.57*imax)
                    +
                    52 
                    +
                    53 C INITIALIZATION.
                    +
                    54 C ALLOCATE AND FILL AUXILIARY ARRAYS WITH TRIGONOMETRIC DATA
                    +
                    55  SELECT CASE(idir)
                    +
                    56  CASE(0)
                    +
                    57  IF(naux1.GT.0) DEALLOCATE(aux1cr,aux1rc)
                    +
                    58  naux1=25000+int(0.82*imax)
                    +
                    59  ALLOCATE(aux1cr(naux1),aux1rc(naux1))
                    +
                    60  CALL scrft(1,w,incw,g,incg,imax,kmax,-1,1.,
                    +
                    61  & aux1cr,naux1,aux2,naux2,0.,0)
                    +
                    62  CALL srcft(1,g,incg,w,incw,imax,kmax,+1,1./imax,
                    +
                    63  & aux1rc,naux1,aux2,naux2,0.,0)
                    +
                    64 
                    +
                    65 C FOURIER TO PHYSICAL TRANSFORM.
                    +
                    66  CASE(1:)
                    +
                    67  CALL scrft(0,w,incw,g,incg,imax,kmax,-1,1.,
                    +
                    68  & aux1cr,naux1,aux2,naux2,0.,0)
                    +
                    69 
                    +
                    70 C PHYSICAL TO FOURIER TRANSFORM.
                    +
                    71  CASE(:-1)
                    +
                    72  CALL srcft(0,g,incg,w,incw,imax,kmax,+1,1./imax,
                    +
                    73  & aux1rc,naux1,aux2,naux2,0.,0)
                    +
                    74  END SELECT
                    +
                    75  END SUBROUTINE
                    +
                    subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    scrft
                    Definition: fftpack.F:80
                    +
                    subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    srcft
                    Definition: fftpack.F:209
                    +
                    subroutine spfft(IMAX, INCW, INCG, KMAX, W, G, IDIR)
                    This subprogram performs multiple fast fourier transforms between complex amplitudes in fourier space...
                    Definition: spfft.f:41
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spffte_8f.html b/ver-5.0.0/spffte_8f.html new file mode 100644 index 00000000..34bf6596 --- /dev/null +++ b/ver-5.0.0/spffte_8f.html @@ -0,0 +1,227 @@ + + + + + + + +NCEPLIBS-ip: spffte.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spffte.f File Reference
                    +
                    +
                    + +

                    Perform multiple fast Fourier transforms. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spffte (IMAX, INCW, INCG, KMAX, W, G, IDIR, AFFT)
                     This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space and real values in cyclic physical space. More...
                     
                    +

                    Detailed Description

                    +

                    Perform multiple fast Fourier transforms.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    1998-12-18 Iredell Initial.
                    2012-11-12 Mirvis fixing hard-wired types problem on Intel/Linux.
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-20
                    + +

                    Definition in file spffte.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spffte()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spffte (integer, intent(in) IMAX,
                    integer, intent(in) INCW,
                    integer, intent(in) INCG,
                    integer, intent(in) KMAX,
                    real, dimension(2*incw,kmax), intent(inout) W,
                    real, dimension(incg,kmax), intent(inout) G,
                    integer, intent(in) IDIR,
                    real(8), dimension(50000+4*imax), intent(inout) AFFT 
                    )
                    +
                    + +

                    This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space and real values in cyclic physical space.

                    +

                    This subprogram must be invoked first with IDIR=0 to initialize trigonemetric data. Use subprogram spfft1() to perform an FFT without previous initialization.

                    +

                    This version invokes the IBM ESSL FFT.

                    +
                    Note
                    The restrictions on IMAX are that it must be a multiple of 1 to 25 factors of two, up to 2 factors of three, and up to 1 factor of five, seven and eleven.
                    +

                    If IDIR=0, then W and G need not contain any valid data. The other parameters must be supplied and cannot change in succeeding calls until the next time it is called with IDIR=0.

                    +

                    This subprogram is thread-safe.

                    +
                    Parameters
                    + + + + + + + + + +
                    IMAXnumber of values in the cyclic physical space (see limitations on imax in remarks below.)
                    INCWfirst dimension of the complex amplitude array (INCW >= IMAX/2+1)
                    INCGfirst dimension of the real value array (INCG >= IMAX)
                    KMAXnumber of transforms to perform
                    [out]Wcomplex amplitudes if IDIR>0
                    [out]Greal values if IDIR<0
                    IDIRdirection flag
                      +
                    • IDIR=0 to initialize trigonometric data
                    • +
                    • IDIR>0 to transform from Fourier to physical space
                    • +
                    • IDIR<0 to transform from physical to Fourier space
                    • +
                    +
                    [out]AFFTauxiliary array if IDIR<>0
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-20
                    + +

                    Definition at line 48 of file spffte.f.

                    + +

                    References dcrft(), drcft(), scrft(), and srcft().

                    + +

                    Referenced by sptranf0(), and sptranf1().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spffte_8f.js b/ver-5.0.0/spffte_8f.js new file mode 100644 index 00000000..34e90bee --- /dev/null +++ b/ver-5.0.0/spffte_8f.js @@ -0,0 +1,4 @@ +var spffte_8f = +[ + [ "spffte", "spffte_8f.html#af06489254bd3e99030b39744fce32233", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spffte_8f_source.html b/ver-5.0.0/spffte_8f_source.html new file mode 100644 index 00000000..463652f3 --- /dev/null +++ b/ver-5.0.0/spffte_8f_source.html @@ -0,0 +1,237 @@ + + + + + + + +NCEPLIBS-ip: spffte.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spffte.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform multiple fast Fourier transforms.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 1998-12-18 | Iredell | Initial.
                    +
                    8 C> 2012-11-12 | Mirvis | fixing hard-wired types problem on Intel/Linux.
                    +
                    9 C>
                    +
                    10 C> @author Iredell @date 96-02-20
                    +
                    11 
                    +
                    12 C> This subprogram performs multiple fast Fourier transforms
                    +
                    13 C> between complex amplitudes in Fourier space and real values
                    +
                    14 C> in cyclic physical space.
                    +
                    15 C>
                    +
                    16 C> This subprogram must be invoked first with IDIR=0
                    +
                    17 C> to initialize trigonemetric data. Use subprogram spfft1()
                    +
                    18 C> to perform an FFT without previous initialization.
                    +
                    19 C>
                    +
                    20 C> This version invokes the IBM ESSL FFT.
                    +
                    21 C>
                    +
                    22 C> @note The restrictions on IMAX are that it must be a multiple
                    +
                    23 C> of 1 to 25 factors of two, up to 2 factors of three,
                    +
                    24 C> and up to 1 factor of five, seven and eleven.
                    +
                    25 C>
                    +
                    26 C> If IDIR=0, then W and G need not contain any valid data.
                    +
                    27 C> The other parameters must be supplied and cannot change
                    +
                    28 C> in succeeding calls until the next time it is called with IDIR=0.
                    +
                    29 C>
                    +
                    30 C> This subprogram is thread-safe.
                    +
                    31 C>
                    +
                    32 C> @param IMAX number of values in the cyclic physical space
                    +
                    33 C> (see limitations on imax in remarks below.)
                    +
                    34 C> @param INCW first dimension of the complex amplitude array
                    +
                    35 C> (INCW >= IMAX/2+1)
                    +
                    36 C> @param INCG first dimension of the real value array
                    +
                    37 C> (INCG >= IMAX)
                    +
                    38 C> @param KMAX number of transforms to perform
                    +
                    39 C> @param[out] W complex amplitudes if IDIR>0
                    +
                    40 C> @param[out] G real values if IDIR<0
                    +
                    41 C> @param IDIR direction flag
                    +
                    42 C> - IDIR=0 to initialize trigonometric data
                    +
                    43 C> - IDIR>0 to transform from Fourier to physical space
                    +
                    44 C> - IDIR<0 to transform from physical to Fourier space
                    +
                    45 C> @param[out] AFFT auxiliary array if IDIR<>0
                    +
                    46 C>
                    +
                    47 C> @author Iredell @date 96-02-20
                    +
                    48  SUBROUTINE spffte(IMAX,INCW,INCG,KMAX,W,G,IDIR,AFFT)
                    +
                    49  IMPLICIT NONE
                    +
                    50  INTEGER,INTENT(IN):: IMAX,INCW,INCG,KMAX,IDIR
                    +
                    51  REAL,INTENT(INOUT):: W(2*INCW,KMAX)
                    +
                    52  REAL,INTENT(INOUT):: G(INCG,KMAX)
                    +
                    53  REAL(8),INTENT(INOUT):: AFFT(50000+4*IMAX)
                    +
                    54  INTEGER:: INIT,INC2X,INC2Y,N,M,ISIGN,NAUX1,NAUX2,NAUX3
                    +
                    55 C ==EM== ^(4)
                    +
                    56  REAL:: SCALE
                    +
                    57  REAL(8):: AUX2(20000+2*IMAX),AUX3
                    +
                    58  INTEGER:: IACR,IARC
                    +
                    59 
                    +
                    60  naux1=25000+2*imax
                    +
                    61  naux2=20000+2*imax
                    +
                    62  naux3=1
                    +
                    63  iacr=1
                    +
                    64  iarc=1+naux1
                    +
                    65 
                    +
                    66 C INITIALIZATION.
                    +
                    67 C FILL AUXILIARY ARRAYS WITH TRIGONOMETRIC DATA
                    +
                    68  SELECT CASE(idir)
                    +
                    69  CASE(0)
                    +
                    70  init=1
                    +
                    71  inc2x=incw
                    +
                    72  inc2y=incg
                    +
                    73  n=imax
                    +
                    74  m=kmax
                    +
                    75  isign=-1
                    +
                    76  scale=1.
                    +
                    77  IF(digits(1.).LT.digits(1._8)) THEN
                    +
                    78  CALL scrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    +
                    79  & afft(iacr),naux1,aux2,naux2,aux3,naux3)
                    +
                    80  ELSE
                    +
                    81  CALL dcrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    +
                    82  & afft(iacr),naux1,aux2,naux2)
                    +
                    83  ENDIF
                    +
                    84  init=1
                    +
                    85  inc2x=incg
                    +
                    86  inc2y=incw
                    +
                    87  n=imax
                    +
                    88  m=kmax
                    +
                    89  isign=+1
                    +
                    90  scale=1./imax
                    +
                    91  IF(digits(1.).LT.digits(1._8)) THEN
                    +
                    92  CALL srcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    +
                    93  & afft(iarc),naux1,aux2,naux2,aux3,naux3)
                    +
                    94  ELSE
                    +
                    95  CALL drcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    +
                    96  & afft(iarc),naux1,aux2,naux2)
                    +
                    97  ENDIF
                    +
                    98 
                    +
                    99 C FOURIER TO PHYSICAL TRANSFORM.
                    +
                    100  CASE(1:)
                    +
                    101  init=0
                    +
                    102  inc2x=incw
                    +
                    103  inc2y=incg
                    +
                    104  n=imax
                    +
                    105  m=kmax
                    +
                    106  isign=-1
                    +
                    107  scale=1.
                    +
                    108  IF(digits(1.).LT.digits(1._8)) THEN
                    +
                    109  CALL scrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    +
                    110  & afft(iacr),naux1,aux2,naux2,aux3,naux3)
                    +
                    111  ELSE
                    +
                    112  CALL dcrft(init,w,inc2x,g,inc2y,n,m,isign,scale,
                    +
                    113  & afft(iacr),naux1,aux2,naux2)
                    +
                    114  ENDIF
                    +
                    115 
                    +
                    116 C PHYSICAL TO FOURIER TRANSFORM.
                    +
                    117  CASE(:-1)
                    +
                    118  init=0
                    +
                    119  inc2x=incg
                    +
                    120  inc2y=incw
                    +
                    121  n=imax
                    +
                    122  m=kmax
                    +
                    123  isign=+1
                    +
                    124  scale=1./imax
                    +
                    125  IF(digits(1.).LT.digits(1._8)) THEN
                    +
                    126  CALL srcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    +
                    127  & afft(iarc),naux1,aux2,naux2,aux3,naux3)
                    +
                    128  ELSE
                    +
                    129  CALL drcft(init,g,inc2x,w,inc2y,n,m,isign,scale,
                    +
                    130  & afft(iarc),naux1,aux2,naux2)
                    +
                    131  ENDIF
                    +
                    132  END SELECT
                    +
                    133  END SUBROUTINE
                    +
                    subroutine drcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    drcft
                    Definition: fftpack.F:160
                    +
                    subroutine dcrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    dcrft
                    Definition: fftpack.F:34
                    +
                    subroutine scrft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    scrft
                    Definition: fftpack.F:80
                    +
                    subroutine srcft(init, x, ldx, y, ldy, n, m, isign, scale, table, n1, wrk, n2, z, nz)
                    srcft
                    Definition: fftpack.F:209
                    +
                    subroutine spffte(IMAX, INCW, INCG, KMAX, W, G, IDIR, AFFT)
                    This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space...
                    Definition: spffte.f:49
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spfftpt_8f.html b/ver-5.0.0/spfftpt_8f.html new file mode 100644 index 00000000..2a132f4a --- /dev/null +++ b/ver-5.0.0/spfftpt_8f.html @@ -0,0 +1,206 @@ + + + + + + + +NCEPLIBS-ip: spfftpt.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spfftpt.f File Reference
                    +
                    +
                    + +

                    Compute fourier transform to gridpoints. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spfftpt (M, N, INCW, INCG, KMAX, RLON, W, G)
                     This subprogram computes a slow Fourier transform from Fourier space to a set of gridpoints. More...
                     
                    +

                    Detailed Description

                    +

                    Compute fourier transform to gridpoints.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-20
                    + +

                    Definition in file spfftpt.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spfftpt()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spfftpt (integer, intent(in) M,
                    integer, intent(in) N,
                    integer, intent(in) INCW,
                    integer, intent(in) INCG,
                    integer, intent(in) KMAX,
                    real, dimension(n), intent(in) RLON,
                    real, dimension(2*incw,kmax), intent(in) W,
                    real, dimension(incg,kmax), intent(out) G 
                    )
                    +
                    + +

                    This subprogram computes a slow Fourier transform from Fourier space to a set of gridpoints.

                    +
                    Note
                    This subprogram is thread-safe.
                    +
                    Parameters
                    + + + + + + + + + +
                    MFourier wavenumber truncation
                    Nnumber of gridpoints
                    INCWfirst dimension of the complex amplitude array (INCW >= M+1)
                    INCGfirst dimension of the gridpoint array (INCG >= N)
                    KMAXnumber of Fourier fields
                    RLONgrid longitudes in degrees
                    WFourier amplitudes
                    Ggridpoint values
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-20
                    + +

                    Definition at line 22 of file spfftpt.f.

                    + +

                    Referenced by sptgpt(), sptgptsd(), sptgptv(), and sptgptvd().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spfftpt_8f.js b/ver-5.0.0/spfftpt_8f.js new file mode 100644 index 00000000..a4e4b804 --- /dev/null +++ b/ver-5.0.0/spfftpt_8f.js @@ -0,0 +1,4 @@ +var spfftpt_8f = +[ + [ "spfftpt", "spfftpt_8f.html#ad16e674ce87bd762a714853967f81356", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spfftpt_8f_source.html b/ver-5.0.0/spfftpt_8f_source.html new file mode 100644 index 00000000..5d0ac32a --- /dev/null +++ b/ver-5.0.0/spfftpt_8f_source.html @@ -0,0 +1,148 @@ + + + + + + + +NCEPLIBS-ip: spfftpt.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spfftpt.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Compute fourier transform to gridpoints.
                    +
                    3 C> @author Iredell @date 96-02-20
                    +
                    4 
                    +
                    5 C> This subprogram computes a slow Fourier transform
                    +
                    6 C> from Fourier space to a set of gridpoints.
                    +
                    7 C>
                    +
                    8 C> @note This subprogram is thread-safe.
                    +
                    9 C>
                    +
                    10 C> @param M Fourier wavenumber truncation
                    +
                    11 C> @param N number of gridpoints
                    +
                    12 C> @param INCW first dimension of the complex amplitude array
                    +
                    13 C> (INCW >= M+1)
                    +
                    14 C> @param INCG first dimension of the gridpoint array
                    +
                    15 C> (INCG >= N)
                    +
                    16 C> @param KMAX number of Fourier fields
                    +
                    17 C> @param RLON grid longitudes in degrees
                    +
                    18 C> @param W Fourier amplitudes
                    +
                    19 C> @param G gridpoint values
                    +
                    20 C>
                    +
                    21 C> @author Iredell @date 96-02-20
                    +
                    22  SUBROUTINE spfftpt(M,N,INCW,INCG,KMAX,RLON,W,G)
                    +
                    23 
                    +
                    24  IMPLICIT NONE
                    +
                    25  INTEGER,INTENT(IN):: M,N,INCW,INCG,KMAX
                    +
                    26  REAL,INTENT(IN):: RLON(N)
                    +
                    27  REAL,INTENT(IN):: W(2*INCW,KMAX)
                    +
                    28  REAL,INTENT(OUT):: G(INCG,KMAX)
                    +
                    29  INTEGER I,K,L
                    +
                    30  REAL RADLON,SLON(M),CLON(M)
                    +
                    31  REAL,PARAMETER:: PI=3.14159265358979
                    +
                    32 
                    +
                    33  DO i=1,n
                    +
                    34  radlon=pi/180*rlon(i)
                    +
                    35  DO l=1,m
                    +
                    36  slon(l)=sin(l*radlon)
                    +
                    37  clon(l)=cos(l*radlon)
                    +
                    38  ENDDO
                    +
                    39  DO k=1,kmax
                    +
                    40  g(i,k)=w(1,k)
                    +
                    41  ENDDO
                    +
                    42  DO l=1,m
                    +
                    43  DO k=1,kmax
                    +
                    44  g(i,k)=g(i,k)+2.*(w(2*l+1,k)*clon(l)-w(2*l+2,k)*slon(l))
                    +
                    45  ENDDO
                    +
                    46  ENDDO
                    +
                    47  ENDDO
                    +
                    48  END SUBROUTINE
                    +
                    subroutine spfftpt(M, N, INCW, INCG, KMAX, RLON, W, G)
                    This subprogram computes a slow Fourier transform from Fourier space to a set of gridpoints.
                    Definition: spfftpt.f:23
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spgradq_8f.html b/ver-5.0.0/spgradq_8f.html new file mode 100644 index 00000000..bba0b0aa --- /dev/null +++ b/ver-5.0.0/spgradq_8f.html @@ -0,0 +1,221 @@ + + + + + + + +NCEPLIBS-ip: spgradq.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spgradq.f File Reference
                    +
                    +
                    + +

                    Compute gradient in spectral space. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spgradq (I, M, ENN1, ELONN1, EON, EONTOP, Q, QDX, QDY, QDYTOP)
                     Computes the horizontal vector gradient of a scalar field in spectral space. More...
                     
                    +

                    Detailed Description

                    +

                    Compute gradient in spectral space.

                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition in file spgradq.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spgradq()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spgradq ( I,
                     M,
                    real, dimension((m+1)*((i+1)*m+2)/2) ENN1,
                    real, dimension((m+1)*((i+1)*m+2)/2) ELONN1,
                    real, dimension((m+1)*((i+1)*m+2)/2) EON,
                    real, dimension(m+1) EONTOP,
                    real, dimension((m+1)*((i+1)*m+2)) Q,
                    real, dimension((m+1)*((i+1)*m+2)) QDX,
                    real, dimension((m+1)*((i+1)*m+2)) QDY,
                    real, dimension(2*(m+1)) QDYTOP 
                    )
                    +
                    + +

                    Computes the horizontal vector gradient of a scalar field in spectral space.

                    +

                    Subprogram speps() should be called already.

                    +

                    If l is the zonal wavenumber, n is the total wavenumber, eps(l,n)=sqrt((n**2-l**2)/(4*n**2-1)) and a is earth radius, then the zonal gradient of q(l,n) is simply i*l/a*q(l,n) while the meridional gradient of q(l,n) is computed as eps(l,n+1)*(n+2)/a*q(l,n+1)-eps(l,n+1)*(n-1)/a*q(l,n-1).

                    +

                    Extra terms are computed over top of the spectral domain.

                    +

                    Advantage is taken of the fact that eps(l,l)=0 in order to vectorize over the entire spectral domain.

                    +
                    Parameters
                    + + + + + + + + + + + +
                    Ispectral domain shape (0 for triangular, 1 for rhomboidal)
                    Mspectral truncation
                    ENN1
                    ELONN1
                    EONEPSILON/N*A
                    EONTOPEPSILON/N*A over top
                    Qscalar field
                    QDXzonal gradient (times coslat)
                    QDYmerid gradient (times coslat)
                    QDYTOPmerid gradient (times coslat) over top
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    92-10-31
                    + +

                    Definition at line 33 of file spgradq.f.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spgradq_8f.js b/ver-5.0.0/spgradq_8f.js new file mode 100644 index 00000000..f2dc8b8f --- /dev/null +++ b/ver-5.0.0/spgradq_8f.js @@ -0,0 +1,4 @@ +var spgradq_8f = +[ + [ "spgradq", "spgradq_8f.html#a0bb358cf2a405ce9f17c6e5dfde65849", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spgradq_8f_source.html b/ver-5.0.0/spgradq_8f_source.html new file mode 100644 index 00000000..6917638a --- /dev/null +++ b/ver-5.0.0/spgradq_8f_source.html @@ -0,0 +1,166 @@ + + + + + + + +NCEPLIBS-ip: spgradq.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spgradq.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Compute gradient in spectral space.
                    +
                    3 C> @author Iredell @date 92-10-31
                    +
                    4 
                    +
                    5 C> Computes the horizontal vector gradient of a scalar field
                    +
                    6 C> in spectral space.
                    +
                    7 C>
                    +
                    8 C> Subprogram speps() should be called already.
                    +
                    9 C>
                    +
                    10 C> If l is the zonal wavenumber, n is the total wavenumber,
                    +
                    11 C> eps(l,n)=sqrt((n**2-l**2)/(4*n**2-1)) and a is earth radius,
                    +
                    12 C> then the zonal gradient of q(l,n) is simply i*l/a*q(l,n)
                    +
                    13 C> while the meridional gradient of q(l,n) is computed as
                    +
                    14 C> eps(l,n+1)*(n+2)/a*q(l,n+1)-eps(l,n+1)*(n-1)/a*q(l,n-1).
                    +
                    15 C>
                    +
                    16 C> Extra terms are computed over top of the spectral domain.
                    +
                    17 C>
                    +
                    18 C> Advantage is taken of the fact that eps(l,l)=0
                    +
                    19 C> in order to vectorize over the entire spectral domain.
                    +
                    20 C>
                    +
                    21 C> @param I spectral domain shape (0 for triangular, 1 for rhomboidal)
                    +
                    22 C> @param M spectral truncation
                    +
                    23 C> @param ENN1
                    +
                    24 C> @param ELONN1
                    +
                    25 C> @param EON EPSILON/N*A
                    +
                    26 C> @param EONTOP EPSILON/N*A over top
                    +
                    27 C> @param Q scalar field
                    +
                    28 C> @param QDX zonal gradient (times coslat)
                    +
                    29 C> @param QDY merid gradient (times coslat)
                    +
                    30 C> @param QDYTOP merid gradient (times coslat) over top
                    +
                    31 C>
                    +
                    32 C> @author IREDELL @date 92-10-31
                    +
                    33  SUBROUTINE spgradq(I,M,ENN1,ELONN1,EON,EONTOP,Q,QDX,QDY,QDYTOP)
                    +
                    34 
                    +
                    35  REAL ENN1((M+1)*((I+1)*M+2)/2),ELONN1((M+1)*((I+1)*M+2)/2)
                    +
                    36  REAL EON((M+1)*((I+1)*M+2)/2),EONTOP(M+1)
                    +
                    37  REAL Q((M+1)*((I+1)*M+2))
                    +
                    38  REAL QDX((M+1)*((I+1)*M+2)),QDY((M+1)*((I+1)*M+2))
                    +
                    39  REAL QDYTOP(2*(M+1))
                    +
                    40 
                    +
                    41 C TAKE ZONAL AND MERIDIONAL GRADIENTS
                    +
                    42  k=1
                    +
                    43  qdx(2*k-1)=0.
                    +
                    44  qdx(2*k)=0.
                    +
                    45  qdy(2*k-1)=eon(k+1)*enn1(k+1)*q(2*k+1)
                    +
                    46  qdy(2*k)=eon(k+1)*enn1(k+1)*q(2*k+2)
                    +
                    47  DO k=2,(m+1)*((i+1)*m+2)/2-1
                    +
                    48  qdx(2*k-1)=-elonn1(k)*enn1(k)*q(2*k)
                    +
                    49  qdx(2*k)=elonn1(k)*enn1(k)*q(2*k-1)
                    +
                    50  qdy(2*k-1)=eon(k+1)*enn1(k+1)*q(2*k+1)-eon(k)*enn1(k-1)*q(2*k-3)
                    +
                    51  qdy(2*k)=eon(k+1)*enn1(k+1)*q(2*k+2)-eon(k)*enn1(k-1)*q(2*k-2)
                    +
                    52  ENDDO
                    +
                    53  k=(m+1)*((i+1)*m+2)/2
                    +
                    54  qdx(2*k-1)=-elonn1(k)*enn1(k)*q(2*k)
                    +
                    55  qdx(2*k)=elonn1(k)*enn1(k)*q(2*k-1)
                    +
                    56  qdy(2*k-1)=-eon(k)*enn1(k-1)*q(2*k-3)
                    +
                    57  qdy(2*k)=-eon(k)*enn1(k-1)*q(2*k-2)
                    +
                    58 
                    +
                    59 C TAKE MERIDIONAL GRADIENT OVER TOP
                    +
                    60  DO l=0,m
                    +
                    61  k=l*(2*m+(i-1)*(l-1))/2+i*l+m+1
                    +
                    62  qdytop(2*l+1)=-eontop(l+1)*enn1(k)*q(2*k-1)
                    +
                    63  qdytop(2*l+2)=-eontop(l+1)*enn1(k)*q(2*k)
                    +
                    64  ENDDO
                    +
                    65  RETURN
                    +
                    66  END
                    +
                    subroutine spgradq(I, M, ENN1, ELONN1, EON, EONTOP, Q, QDX, QDY, QDYTOP)
                    Computes the horizontal vector gradient of a scalar field in spectral space.
                    Definition: spgradq.f:34
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spgradx_8f.html b/ver-5.0.0/spgradx_8f.html new file mode 100644 index 00000000..b239b9d5 --- /dev/null +++ b/ver-5.0.0/spgradx_8f.html @@ -0,0 +1,202 @@ + + + + + + + +NCEPLIBS-ip: spgradx.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spgradx.f File Reference
                    +
                    +
                    + +

                    Compute x-gradient in Fourier space. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spgradx (M, INCW, KMAX, MP, CLAT, W, WX)
                     This subprogram computes the x-gradient of fields in complex Fourier space. More...
                     
                    +

                    Detailed Description

                    +

                    Compute x-gradient in Fourier space.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-20
                    + +

                    Definition in file spgradx.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spgradx()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spgradx (integer, intent(in) M,
                    integer, intent(in) INCW,
                    integer, intent(in) KMAX,
                    integer, dimension(kmax), intent(in) MP,
                    real, intent(in) CLAT,
                    real, dimension(2*incw,kmax), intent(inout) W,
                    real, dimension(2*incw,kmax), intent(out) WX 
                    )
                    +
                    + +

                    This subprogram computes the x-gradient of fields in complex Fourier space.

                    +

                    The x-gradient of a vector field W is WX=CONJG(W)*L/RERTH where L is the wavenumber and RERTH is the Earth radius, so that the result is the x-gradient of the pseudo-vector.

                    +

                    The x-gradient of a scalar field W is WX=CONJG(W)*L/(RERTH*CLAT) where CLAT is the cosine of latitude.

                    +

                    At the pole this is undefined, so the way to get the x-gradient at the pole is by passing both the weighted wavenumber 0 and the unweighted wavenumber 1 amplitudes at the pole and setting MP=10. In this case, the wavenumber 1 amplitudes are used to compute the x-gradient and then zeroed out.

                    +
                    Note
                    This subprogram is thread-safe.
                    +
                    Parameters
                    + + + + + + + + +
                    MFourier wavenumber truncation
                    INCWfirst dimension of the complex amplitude array (INCW >= M+1)
                    KMAXnumber of Fourier fields
                    MPidentifiers (0 or 10 for scalar, 1 for vector)
                    CLATcosine of latitude
                    [out]WFourier amplitudes corrected when MP=10 and CLAT=0
                    [out]WXcomplex amplitudes of x-gradients
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-20
                    + +

                    Definition at line 37 of file spgradx.f.

                    + +

                    Referenced by sptgptsd(), and sptgptvd().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spgradx_8f.js b/ver-5.0.0/spgradx_8f.js new file mode 100644 index 00000000..b419f805 --- /dev/null +++ b/ver-5.0.0/spgradx_8f.js @@ -0,0 +1,4 @@ +var spgradx_8f = +[ + [ "spgradx", "spgradx_8f.html#a749bc07e763e9cd44490fff2284d00b4", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spgradx_8f_source.html b/ver-5.0.0/spgradx_8f_source.html new file mode 100644 index 00000000..59190c5b --- /dev/null +++ b/ver-5.0.0/spgradx_8f_source.html @@ -0,0 +1,172 @@ + + + + + + + +NCEPLIBS-ip: spgradx.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spgradx.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Compute x-gradient in Fourier space
                    +
                    3 C> @author IREDELL @date 96-02-20
                    +
                    4 
                    +
                    5 C> This subprogram computes the x-gradient of fields
                    +
                    6 C> in complex Fourier space.
                    +
                    7 C>
                    +
                    8 C> The x-gradient of a vector field W is
                    +
                    9 C> WX=CONJG(W)*L/RERTH
                    +
                    10 C> where L is the wavenumber and RERTH is the Earth radius,
                    +
                    11 C> so that the result is the x-gradient of the pseudo-vector.
                    +
                    12 C>
                    +
                    13 C> The x-gradient of a scalar field W is
                    +
                    14 C> WX=CONJG(W)*L/(RERTH*CLAT)
                    +
                    15 C> where CLAT is the cosine of latitude.
                    +
                    16 C>
                    +
                    17 C> At the pole this is undefined, so the way to get
                    +
                    18 C> the x-gradient at the pole is by passing both
                    +
                    19 C> the weighted wavenumber 0 and the unweighted wavenumber 1
                    +
                    20 C> amplitudes at the pole and setting MP=10.
                    +
                    21 C> In this case, the wavenumber 1 amplitudes are used
                    +
                    22 C> to compute the x-gradient and then zeroed out.
                    +
                    23 C>
                    +
                    24 C> @note This subprogram is thread-safe.
                    +
                    25 C>
                    +
                    26 C> @param M Fourier wavenumber truncation
                    +
                    27 C> @param INCW first dimension of the complex amplitude array
                    +
                    28 C> (INCW >= M+1)
                    +
                    29 C> @param KMAX number of Fourier fields
                    +
                    30 C> @param MP identifiers
                    +
                    31 C> (0 or 10 for scalar, 1 for vector)
                    +
                    32 C> @param CLAT cosine of latitude
                    +
                    33 C> @param[out] W Fourier amplitudes corrected when MP=10 and CLAT=0
                    +
                    34 C> @param[out] WX complex amplitudes of x-gradients
                    +
                    35 C>
                    +
                    36 C> @author IREDELL @date 96-02-20
                    +
                    37  SUBROUTINE spgradx(M,INCW,KMAX,MP,CLAT,W,WX)
                    +
                    38 
                    +
                    39  IMPLICIT NONE
                    +
                    40  INTEGER,INTENT(IN):: M,INCW,KMAX,MP(KMAX)
                    +
                    41  REAL,INTENT(IN):: CLAT
                    +
                    42  REAL,INTENT(INOUT):: W(2*INCW,KMAX)
                    +
                    43  REAL,INTENT(OUT):: WX(2*INCW,KMAX)
                    +
                    44  INTEGER K,L
                    +
                    45  REAL,PARAMETER:: RERTH=6.3712e6
                    +
                    46 
                    +
                    47  DO k=1,kmax
                    +
                    48  IF(mp(k).EQ.1) THEN
                    +
                    49  DO l=0,m
                    +
                    50  wx(2*l+1,k)=-w(2*l+2,k)*(l/rerth)
                    +
                    51  wx(2*l+2,k)=+w(2*l+1,k)*(l/rerth)
                    +
                    52  ENDDO
                    +
                    53  ELSEIF(clat.EQ.0.) THEN
                    +
                    54  DO l=0,m
                    +
                    55  wx(2*l+1,k)=0
                    +
                    56  wx(2*l+2,k)=0
                    +
                    57  ENDDO
                    +
                    58  IF(mp(k).EQ.10.AND.m.GE.2) THEN
                    +
                    59  wx(3,k)=-w(4,k)/rerth
                    +
                    60  wx(4,k)=+w(3,k)/rerth
                    +
                    61  w(3,k)=0
                    +
                    62  w(4,k)=0
                    +
                    63  ENDIF
                    +
                    64  ELSE
                    +
                    65  DO l=0,m
                    +
                    66  wx(2*l+1,k)=-w(2*l+2,k)*(l/(rerth*clat))
                    +
                    67  wx(2*l+2,k)=+w(2*l+1,k)*(l/(rerth*clat))
                    +
                    68  ENDDO
                    +
                    69  ENDIF
                    +
                    70  ENDDO
                    +
                    71 
                    +
                    72  END SUBROUTINE
                    +
                    subroutine spgradx(M, INCW, KMAX, MP, CLAT, W, WX)
                    This subprogram computes the x-gradient of fields in complex Fourier space.
                    Definition: spgradx.f:38
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spgrady_8f.html b/ver-5.0.0/spgrady_8f.html new file mode 100644 index 00000000..83ba029d --- /dev/null +++ b/ver-5.0.0/spgrady_8f.html @@ -0,0 +1,209 @@ + + + + + + + +NCEPLIBS-ip: spgrady.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spgrady.f File Reference
                    +
                    +
                    + +

                    Compute y-gradient in spectral space. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spgrady (I, M, ENN1, EON, EONTOP, Q, QDY, QDYTOP)
                     Computes the horizontal vector y-gradient of a scalar field in spectral space. More...
                     
                    +

                    Detailed Description

                    +

                    Compute y-gradient in spectral space.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    92-10-31
                    + +

                    Definition in file spgrady.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spgrady()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spgrady ( I,
                     M,
                    real, dimension((m+1)*((i+1)*m+2)/2) ENN1,
                    real, dimension((m+1)*((i+1)*m+2)/2) EON,
                    real, dimension(m+1) EONTOP,
                    real, dimension((m+1)*((i+1)*m+2)) Q,
                    real, dimension((m+1)*((i+1)*m+2)) QDY,
                    real, dimension(2*(m+1)) QDYTOP 
                    )
                    +
                    + +

                    Computes the horizontal vector y-gradient of a scalar field in spectral space.

                    +

                    Subprogram speps should be called already.

                    +

                    If L is the zonal wavenumber, N is the total wavenumber, EPS(L,N)=SQRT((N**2-L**2)/(4*N**2-1)) and A is Earth radius, then the meridional gradient of Q(L,N) is computed as EPS(L,N+1)*(N+2)/A*Q(L,N+1)-EPS(L,N+1)*(N-1)/A*Q(L,N-1).

                    +

                    Extra terms are computed over top of the spectral domain.

                    +

                    Advantage is taken of the fact that EPS(L,L)=0 in order to vectorize over the entire spectral domain.

                    +
                    Parameters
                    + + + + + + + + + +
                    Ispectral domain shape (0 for triangular, 1 for rhomboidal)
                    Mspectral truncation
                    ENN1N*(N+1)/A**2
                    EONEPSILON/N*A
                    EONTOPEPSILON/N*A over top
                    Qscalar field
                    QDYmerid gradient (times coslat)
                    QDYTOPmerid gradient (times coslat) over top
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    92-10-31
                    + +

                    Definition at line 31 of file spgrady.f.

                    + +

                    Referenced by sptgptsd().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spgrady_8f.js b/ver-5.0.0/spgrady_8f.js new file mode 100644 index 00000000..f8529204 --- /dev/null +++ b/ver-5.0.0/spgrady_8f.js @@ -0,0 +1,4 @@ +var spgrady_8f = +[ + [ "spgrady", "spgrady_8f.html#a1b3e38e56560de7d7dcf19ea3e931cf1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spgrady_8f_source.html b/ver-5.0.0/spgrady_8f_source.html new file mode 100644 index 00000000..dc6a635b --- /dev/null +++ b/ver-5.0.0/spgrady_8f_source.html @@ -0,0 +1,159 @@ + + + + + + + +NCEPLIBS-ip: spgrady.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spgrady.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Compute y-gradient in spectral space.
                    +
                    3 C> @author IREDELL @date 92-10-31
                    +
                    4 
                    +
                    5 C> Computes the horizontal vector y-gradient of a scalar field
                    +
                    6 c> in spectral space.
                    +
                    7 C>
                    +
                    8 C> Subprogram speps should be called already.
                    +
                    9 C>
                    +
                    10 C> If L is the zonal wavenumber, N is the total wavenumber,
                    +
                    11 C> EPS(L,N)=SQRT((N**2-L**2)/(4*N**2-1)) and A is Earth radius,
                    +
                    12 C> then the meridional gradient of Q(L,N) is computed as
                    +
                    13 C> EPS(L,N+1)*(N+2)/A*Q(L,N+1)-EPS(L,N+1)*(N-1)/A*Q(L,N-1).
                    +
                    14 C>
                    +
                    15 C> Extra terms are computed over top of the spectral domain.
                    +
                    16 C>
                    +
                    17 C> Advantage is taken of the fact that EPS(L,L)=0
                    +
                    18 C> in order to vectorize over the entire spectral domain.
                    +
                    19 C>
                    +
                    20 C> @param I spectral domain shape
                    +
                    21 c> (0 for triangular, 1 for rhomboidal)
                    +
                    22 C> @param M spectral truncation
                    +
                    23 C> @param ENN1 N*(N+1)/A**2
                    +
                    24 C> @param EON EPSILON/N*A
                    +
                    25 C> @param EONTOP EPSILON/N*A over top
                    +
                    26 C> @param Q scalar field
                    +
                    27 C> @param QDY merid gradient (times coslat)
                    +
                    28 C> @param QDYTOP merid gradient (times coslat) over top
                    +
                    29 C>
                    +
                    30 C> @author IREDELL @date 92-10-31
                    +
                    31  SUBROUTINE spgrady(I,M,ENN1,EON,EONTOP,Q,QDY,QDYTOP)
                    +
                    32 
                    +
                    33  REAL ENN1((M+1)*((I+1)*M+2)/2)
                    +
                    34  REAL EON((M+1)*((I+1)*M+2)/2),EONTOP(M+1)
                    +
                    35  REAL Q((M+1)*((I+1)*M+2))
                    +
                    36  REAL QDY((M+1)*((I+1)*M+2))
                    +
                    37  REAL QDYTOP(2*(M+1))
                    +
                    38 
                    +
                    39 C TAKE MERIDIONAL GRADIENT
                    +
                    40  k=1
                    +
                    41  qdy(2*k-1)=eon(k+1)*enn1(k+1)*q(2*k+1)
                    +
                    42  qdy(2*k)=eon(k+1)*enn1(k+1)*q(2*k+2)
                    +
                    43  DO k=2,(m+1)*((i+1)*m+2)/2-1
                    +
                    44  qdy(2*k-1)=eon(k+1)*enn1(k+1)*q(2*k+1)-eon(k)*enn1(k-1)*q(2*k-3)
                    +
                    45  qdy(2*k)=eon(k+1)*enn1(k+1)*q(2*k+2)-eon(k)*enn1(k-1)*q(2*k-2)
                    +
                    46  ENDDO
                    +
                    47  k=(m+1)*((i+1)*m+2)/2
                    +
                    48  qdy(2*k-1)=-eon(k)*enn1(k-1)*q(2*k-3)
                    +
                    49  qdy(2*k)=-eon(k)*enn1(k-1)*q(2*k-2)
                    +
                    50 
                    +
                    51 C TAKE MERIDIONAL GRADIENT OVER TOP
                    +
                    52  DO l=0,m
                    +
                    53  k=l*(2*m+(i-1)*(l-1))/2+i*l+m+1
                    +
                    54  qdytop(2*l+1)=-eontop(l+1)*enn1(k)*q(2*k-1)
                    +
                    55  qdytop(2*l+2)=-eontop(l+1)*enn1(k)*q(2*k)
                    +
                    56  ENDDO
                    +
                    57 
                    +
                    58  RETURN
                    +
                    59  END
                    +
                    subroutine spgrady(I, M, ENN1, EON, EONTOP, Q, QDY, QDYTOP)
                    Computes the horizontal vector y-gradient of a scalar field in spectral space.
                    Definition: spgrady.f:32
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/splaplac_8f.html b/ver-5.0.0/splaplac_8f.html new file mode 100644 index 00000000..538bcfe4 --- /dev/null +++ b/ver-5.0.0/splaplac_8f.html @@ -0,0 +1,197 @@ + + + + + + + +NCEPLIBS-ip: splaplac.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    splaplac.f File Reference
                    +
                    +
                    + +

                    Compute laplacian in spectral space. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine splaplac (I, M, ENN1, Q, QD2, IDIR)
                     Computes the laplacian or the inverse laplacian of a scalar field in spectral space. More...
                     
                    +

                    Detailed Description

                    +

                    Compute laplacian in spectral space.

                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition in file splaplac.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ splaplac()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine splaplac ( I,
                     M,
                    real, dimension((m+1)*((i+1)*m+2)/2) ENN1,
                    real, dimension((m+1)*((i+1)*m+2)) Q,
                    real, dimension((m+1)*((i+1)*m+2)) QD2,
                     IDIR 
                    )
                    +
                    + +

                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.

                    +

                    Subprogram speps() should be called already.

                    +

                    The Laplacian of Q(L,N) is simply -N*(N+1)/A**2*Q(L,N)

                    +
                    Parameters
                    + + + + + + + +
                    Ispectral domain shape (0 for triangular, 1 for rhomboidal)
                    Mspectral truncation
                    ENN1N*(N+1)/A**2
                    [out]Qif IDIR > 0, scalar field (Q(0,0) is not computed)
                    [out]QD2if IDIR < 0, Laplacian
                    IDIRflag
                      +
                    • IDIR > 0 to take Laplacian
                    • +
                    • IDIR < 0 to take inverse Laplacian
                    • +
                    +
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition at line 24 of file splaplac.f.

                    + +

                    Referenced by sptgpmd(), sptgpsd(), sptgptd(), sptrand(), sptrungv(), sptrunl(), sptrunmv(), sptrunsv(), and sptrunv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/splaplac_8f.js b/ver-5.0.0/splaplac_8f.js new file mode 100644 index 00000000..45b0c9dc --- /dev/null +++ b/ver-5.0.0/splaplac_8f.js @@ -0,0 +1,4 @@ +var splaplac_8f = +[ + [ "splaplac", "splaplac_8f.html#a64338955857a3cf58283146940e7ae42", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/splaplac_8f_source.html b/ver-5.0.0/splaplac_8f_source.html new file mode 100644 index 00000000..9a37b1cd --- /dev/null +++ b/ver-5.0.0/splaplac_8f_source.html @@ -0,0 +1,149 @@ + + + + + + + +NCEPLIBS-ip: splaplac.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    splaplac.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Compute laplacian in spectral space.
                    +
                    3 C> @author Iredell @date 92-10-31
                    +
                    4 
                    +
                    5 C> Computes the laplacian or the inverse laplacian
                    +
                    6 C> of a scalar field in spectral space.
                    +
                    7 C>
                    +
                    8 C> Subprogram speps() should be called already.
                    +
                    9 C>
                    +
                    10 C> The Laplacian of Q(L,N) is simply -N*(N+1)/A**2*Q(L,N)
                    +
                    11 C>
                    +
                    12 C> @param I spectral domain shape
                    +
                    13 C> (0 for triangular, 1 for rhomboidal)
                    +
                    14 C> @param M spectral truncation
                    +
                    15 C> @param ENN1 N*(N+1)/A**2
                    +
                    16 C> @param[out] Q if IDIR > 0, scalar field
                    +
                    17 C> (Q(0,0) is not computed)
                    +
                    18 C> @param[out] QD2 if IDIR < 0, Laplacian
                    +
                    19 C> @param IDIR flag
                    +
                    20 C> - IDIR > 0 to take Laplacian
                    +
                    21 C> - IDIR < 0 to take inverse Laplacian
                    +
                    22 C>
                    +
                    23 C> @author Iredell @date 92-10-31
                    +
                    24  SUBROUTINE splaplac(I,M,ENN1,Q,QD2,IDIR)
                    +
                    25 
                    +
                    26  REAL ENN1((M+1)*((I+1)*M+2)/2)
                    +
                    27  REAL Q((M+1)*((I+1)*M+2))
                    +
                    28  REAL QD2((M+1)*((I+1)*M+2))
                    +
                    29 
                    +
                    30 C TAKE LAPLACIAN
                    +
                    31  IF(idir.GT.0) THEN
                    +
                    32  k=1
                    +
                    33  qd2(2*k-1)=0.
                    +
                    34  qd2(2*k)=0.
                    +
                    35  DO k=2,(m+1)*((i+1)*m+2)/2
                    +
                    36  qd2(2*k-1)=q(2*k-1)*(-enn1(k))
                    +
                    37  qd2(2*k)=q(2*k)*(-enn1(k))
                    +
                    38  ENDDO
                    +
                    39 
                    +
                    40 C TAKE INVERSE LAPLACIAN
                    +
                    41  ELSE
                    +
                    42  DO k=2,(m+1)*((i+1)*m+2)/2
                    +
                    43  q(2*k-1)=qd2(2*k-1)/(-enn1(k))
                    +
                    44  q(2*k)=qd2(2*k)/(-enn1(k))
                    +
                    45  ENDDO
                    +
                    46  ENDIF
                    +
                    47 
                    +
                    48  RETURN
                    +
                    49  END
                    +
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/splat_8F.html b/ver-5.0.0/splat_8F.html new file mode 100644 index 00000000..8ea153e4 --- /dev/null +++ b/ver-5.0.0/splat_8F.html @@ -0,0 +1,214 @@ + + + + + + + +NCEPLIBS-ip: splat.F File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    splat.F File Reference
                    +
                    +
                    + +

                    Computes cosines of colatitude and Gaussian weights for sets of latitudes. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine splat (IDRT, JMAX, SLAT, WLAT)
                     Computes cosines of colatitude and Gaussian weights for one of the following specific global sets of latitudes. More...
                     
                    +

                    Detailed Description

                    +

                    Computes cosines of colatitude and Gaussian weights for sets of latitudes.

                    +

                    +Program History Log

                    + + + + + + + + + + + + + + + + + + + + + +
                    Date Programmer Comments
                    96-02-20 Iredell Initial.
                    97-10-20 Iredell Adjust precision.
                    98-06-11 Iredell Generalize precision using FORTRAN 90 intrinsic.
                    1998-12-03 Iredell Generalize precision further.
                    1998-12-03 Iredell Uses AIX ESSL BLAS calls.
                    2009-12-27 D. Stark Updated to switch between ESSL calls on an AIX platform, and Numerical Recipies calls elsewise.
                    2010-12-30 Slovacek Update alignment so preprocessor does not cause compilation failure.
                    2012-09-01 E. Mirvis & M.Iredell Merging & debugging linux errors of _d and _8 using generic LU factorization.
                    2012-11-05 E. Mirvis Generic FFTPACK and LU lapack were removed.
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-20
                    + +

                    Definition in file splat.F.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ splat()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine splat ( IDRT,
                     JMAX,
                    real, dimension(jmax) SLAT,
                    real, dimension(jmax) WLAT 
                    )
                    +
                    + +

                    Computes cosines of colatitude and Gaussian weights for one of the following specific global sets of latitudes.

                    +
                      +
                    • Gaussian latitudes (IDRT=4)
                    • +
                    • Equally-spaced latitudes including poles (IDRT=0)
                    • +
                    • Equally-spaced latitudes excluding poles (IDRT=256)
                    • +
                    +

                    The Gaussian latitudes are located at the zeroes of the Legendre polynomial of the given order. These latitudes are efficient for reversible transforms from spectral space. (About twice as many equally-spaced latitudes are needed.) The weights for the equally-spaced latitudes are based on Ellsaesser (JAM,1966). (No weight is given the pole point.) Note that when analyzing grid to spectral in latitude pairs, if an equator point exists, its weight should be halved. This version invokes the ibm essl matrix solver.

                    +
                    Parameters
                    + + + + + +
                    [in]IDRTgrid identifier
                      +
                    • 4 for Gaussian grid
                    • +
                    • 0 for equally-spaced grid including poles
                    • +
                    • 256 for equally-spaced grid excluding poles
                    • +
                    +
                    [in]JMAXnumber of latitudes
                    [out]SLATsines of latitude
                    [out]WLATGaussian weights
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-20
                    + +

                    Definition at line 45 of file splat.F.

                    + +

                    References lubksb(), and ludcmp().

                    + +

                    Referenced by ip_gaussian_grid_mod::gdswzd_gaussian(), and sptranf0().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/splat_8F.js b/ver-5.0.0/splat_8F.js new file mode 100644 index 00000000..1bbff9ef --- /dev/null +++ b/ver-5.0.0/splat_8F.js @@ -0,0 +1,4 @@ +var splat_8F = +[ + [ "splat", "splat_8F.html#aa6db21451bb67635e7e4426546140e11", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/splat_8F_source.html b/ver-5.0.0/splat_8F_source.html new file mode 100644 index 00000000..1462fab7 --- /dev/null +++ b/ver-5.0.0/splat_8F_source.html @@ -0,0 +1,294 @@ + + + + + + + +NCEPLIBS-ip: splat.F Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    splat.F
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Computes cosines of colatitude and Gaussian weights
                    +
                    3 C> for sets of latitudes.
                    +
                    4 C>
                    +
                    5 C> ### Program History Log
                    +
                    6 C> Date | Programmer | Comments
                    +
                    7 C> -----|------------|---------
                    +
                    8 C> 96-02-20 | Iredell | Initial.
                    +
                    9 C> 97-10-20 | Iredell | Adjust precision.
                    +
                    10 C> 98-06-11 | Iredell | Generalize precision using FORTRAN 90 intrinsic.
                    +
                    11 C> 1998-12-03 | Iredell | Generalize precision further.
                    +
                    12 C> 1998-12-03 | Iredell | Uses AIX ESSL BLAS calls.
                    +
                    13 C> 2009-12-27 | D. Stark | Updated to switch between ESSL calls on an AIX platform, and Numerical Recipies calls elsewise.
                    +
                    14 C> 2010-12-30 | Slovacek | Update alignment so preprocessor does not cause compilation failure.
                    +
                    15 C> 2012-09-01 | E. Mirvis & M.Iredell | Merging & debugging linux errors of _d and _8 using generic LU factorization.
                    +
                    16 C> 2012-11-05 | E. Mirvis | Generic FFTPACK and LU lapack were removed.
                    +
                    17 C>
                    +
                    18 C> @author Iredell @date 96-02-20
                    +
                    19 
                    +
                    20 C> Computes cosines of colatitude and Gaussian weights
                    +
                    21 C> for one of the following specific global sets of latitudes.
                    +
                    22 C> - Gaussian latitudes (IDRT=4)
                    +
                    23 C> - Equally-spaced latitudes including poles (IDRT=0)
                    +
                    24 C> - Equally-spaced latitudes excluding poles (IDRT=256)
                    +
                    25 C>
                    +
                    26 C> The Gaussian latitudes are located at the zeroes of the
                    +
                    27 C> Legendre polynomial of the given order. These latitudes
                    +
                    28 C> are efficient for reversible transforms from spectral space.
                    +
                    29 C> (About twice as many equally-spaced latitudes are needed.)
                    +
                    30 C> The weights for the equally-spaced latitudes are based on
                    +
                    31 C> Ellsaesser (JAM,1966). (No weight is given the pole point.)
                    +
                    32 C> Note that when analyzing grid to spectral in latitude pairs,
                    +
                    33 C> if an equator point exists, its weight should be halved.
                    +
                    34 C> This version invokes the ibm essl matrix solver.
                    +
                    35 C>
                    +
                    36 C> @param[in] IDRT grid identifier
                    +
                    37 C> - 4 for Gaussian grid
                    +
                    38 C> - 0 for equally-spaced grid including poles
                    +
                    39 C> - 256 for equally-spaced grid excluding poles
                    +
                    40 C> @param[in] JMAX number of latitudes
                    +
                    41 C> @param[out] SLAT sines of latitude
                    +
                    42 C> @param[out] WLAT Gaussian weights
                    +
                    43 C>
                    +
                    44 C> @author Iredell @date 96-02-20
                    +
                    45  SUBROUTINE splat(IDRT,JMAX,SLAT,WLAT)
                    +
                    46  REAL SLAT(JMAX),WLAT(JMAX)
                    +
                    47  INTEGER,PARAMETER:: KD=selected_real_kind(15,45)
                    +
                    48  REAL(KIND=kd):: pk(jmax/2),pkm1(jmax/2),pkm2(jmax/2)
                    +
                    49  REAL(KIND=kd):: slatd(jmax/2),sp,spmax,eps=10.*epsilon(sp)
                    +
                    50  parameter(jz=50)
                    +
                    51  REAL BZ(JZ)
                    +
                    52  DATA bz / 2.4048255577, 5.5200781103,
                    +
                    53  $ 8.6537279129, 11.7915344391, 14.9309177086, 18.0710639679,
                    +
                    54  $ 21.2116366299, 24.3524715308, 27.4934791320, 30.6346064684,
                    +
                    55  $ 33.7758202136, 36.9170983537, 40.0584257646, 43.1997917132,
                    +
                    56  $ 46.3411883717, 49.4826098974, 52.6240518411, 55.7655107550,
                    +
                    57  $ 58.9069839261, 62.0484691902, 65.1899648002, 68.3314693299,
                    +
                    58  $ 71.4729816036, 74.6145006437, 77.7560256304, 80.8975558711,
                    +
                    59  $ 84.0390907769, 87.1806298436, 90.3221726372, 93.4637187819,
                    +
                    60  $ 96.6052679510, 99.7468198587, 102.888374254, 106.029930916,
                    +
                    61  $ 109.171489649, 112.313050280, 115.454612653, 118.596176630,
                    +
                    62  $ 121.737742088, 124.879308913, 128.020877005, 131.162446275,
                    +
                    63  $ 134.304016638, 137.445588020, 140.587160352, 143.728733573,
                    +
                    64  $ 146.870307625, 150.011882457, 153.153458019, 156.295034268 /
                    +
                    65  REAL:: DLT,D1=1.
                    +
                    66  REAL AWORK((JMAX+1)/2,((JMAX+1)/2)),BWORK(((JMAX+1)/2))
                    +
                    67  INTEGER:: JHE,JHO,J0=0
                    +
                    68  INTEGER IPVT((JMAX+1)/2)
                    +
                    69  parameter(pi=3.14159265358979,c=(1.-(2./pi)**2)*0.25)
                    +
                    70 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    71 C GAUSSIAN LATITUDES
                    +
                    72  IF(idrt.EQ.4) THEN
                    +
                    73  jh=jmax/2
                    +
                    74  jhe=(jmax+1)/2
                    +
                    75  r=1./sqrt((jmax+0.5)**2+c)
                    +
                    76  DO j=1,min(jh,jz)
                    +
                    77  slatd(j)=cos(bz(j)*r)
                    +
                    78  ENDDO
                    +
                    79  DO j=jz+1,jh
                    +
                    80  slatd(j)=cos((bz(jz)+(j-jz)*pi)*r)
                    +
                    81  ENDDO
                    +
                    82  spmax=1.
                    +
                    83  DO WHILE(spmax.GT.eps)
                    +
                    84  spmax=0.
                    +
                    85  DO j=1,jh
                    +
                    86  pkm1(j)=1.
                    +
                    87  pk(j)=slatd(j)
                    +
                    88  ENDDO
                    +
                    89  DO n=2,jmax
                    +
                    90  DO j=1,jh
                    +
                    91  pkm2(j)=pkm1(j)
                    +
                    92  pkm1(j)=pk(j)
                    +
                    93  pk(j)=((2*n-1)*slatd(j)*pkm1(j)-(n-1)*pkm2(j))/n
                    +
                    94  ENDDO
                    +
                    95  ENDDO
                    +
                    96  DO j=1,jh
                    +
                    97  sp=pk(j)*(1.-slatd(j)**2)/(jmax*(pkm1(j)-slatd(j)*pk(j)))
                    +
                    98  slatd(j)=slatd(j)-sp
                    +
                    99  spmax=max(spmax,abs(sp))
                    +
                    100  ENDDO
                    +
                    101  ENDDO
                    +
                    102 CDIR$ IVDEP
                    +
                    103  DO j=1,jh
                    +
                    104  slat(j)=slatd(j)
                    +
                    105  wlat(j)=(2.*(1.-slatd(j)**2))/(jmax*pkm1(j))**2
                    +
                    106  slat(jmax+1-j)=-slat(j)
                    +
                    107  wlat(jmax+1-j)=wlat(j)
                    +
                    108  ENDDO
                    +
                    109  IF(jhe.GT.jh) THEN
                    +
                    110  slat(jhe)=0.
                    +
                    111  wlat(jhe)=2./jmax**2
                    +
                    112  DO n=2,jmax,2
                    +
                    113  wlat(jhe)=wlat(jhe)*n**2/(n-1)**2
                    +
                    114  ENDDO
                    +
                    115  ENDIF
                    +
                    116 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    117 C EQUALLY-SPACED LATITUDES INCLUDING POLES
                    +
                    118  ELSEIF(idrt.EQ.0) THEN
                    +
                    119  jh=jmax/2
                    +
                    120  jhe=(jmax+1)/2
                    +
                    121  jho=jhe-1
                    +
                    122  dlt=pi/(jmax-1)
                    +
                    123  slat(1)=1.
                    +
                    124  DO j=2,jh
                    +
                    125  slat(j)=cos((j-1)*dlt)
                    +
                    126  ENDDO
                    +
                    127  DO js=1,jho
                    +
                    128  DO j=1,jho
                    +
                    129  awork(js,j)=cos(2*(js-1)*j*dlt)
                    +
                    130  ENDDO
                    +
                    131  ENDDO
                    +
                    132  DO js=1,jho
                    +
                    133  bwork(js)=-d1/(4*(js-1)**2-1)
                    +
                    134  ENDDO
                    +
                    135 
                    +
                    136  call ludcmp(awork,jho,jhe,ipvt)
                    +
                    137  call lubksb(awork,jho,jhe,ipvt,bwork)
                    +
                    138 
                    +
                    139  wlat(1)=0.
                    +
                    140  DO j=1,jho
                    +
                    141  wlat(j+1)=bwork(j)
                    +
                    142  ENDDO
                    +
                    143 CDIR$ IVDEP
                    +
                    144  DO j=1,jh
                    +
                    145  print *, j, jmax, jmax+1-j
                    +
                    146  slat(jmax+1-j)=-slat(j)
                    +
                    147  wlat(jmax+1-j)=wlat(j)
                    +
                    148  ENDDO
                    +
                    149  IF(jhe.GT.jh) THEN
                    +
                    150  slat(jhe)=0.
                    +
                    151  wlat(jhe)=2.*wlat(jhe)
                    +
                    152  ENDIF
                    +
                    153 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    154 C EQUALLY-SPACED LATITUDES EXCLUDING POLES
                    +
                    155  ELSEIF(idrt.EQ.256) THEN
                    +
                    156  jh=jmax/2
                    +
                    157  jhe=(jmax+1)/2
                    +
                    158  jho=jhe
                    +
                    159  dlt=pi/jmax
                    +
                    160  slat(1)=1.
                    +
                    161  DO j=1,jh
                    +
                    162  slat(j)=cos((j-0.5)*dlt)
                    +
                    163  ENDDO
                    +
                    164  DO js=1,jho
                    +
                    165  DO j=1,jho
                    +
                    166  awork(js,j)=cos(2*(js-1)*(j-0.5)*dlt)
                    +
                    167  ENDDO
                    +
                    168  ENDDO
                    +
                    169  DO js=1,jho
                    +
                    170  bwork(js)=-d1/(4*(js-1)**2-1)
                    +
                    171  ENDDO
                    +
                    172 
                    +
                    173  call ludcmp(awork,jho,jhe,ipvt,d)
                    +
                    174  call lubksb(awork,jho,jhe,ipvt,bwork)
                    +
                    175 
                    +
                    176  wlat(1)=0.
                    +
                    177  DO j=1,jho
                    +
                    178  wlat(j)=bwork(j)
                    +
                    179  ENDDO
                    +
                    180 CDIR$ IVDEP
                    +
                    181  DO j=1,jh
                    +
                    182  slat(jmax+1-j)=-slat(j)
                    +
                    183  wlat(jmax+1-j)=wlat(j)
                    +
                    184  ENDDO
                    +
                    185  IF(jhe.GT.jh) THEN
                    +
                    186  slat(jhe)=0.
                    +
                    187  wlat(jhe)=2.*wlat(jhe)
                    +
                    188  ENDIF
                    +
                    189  ENDIF
                    +
                    190 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    191  RETURN
                    +
                    192  END
                    +
                    subroutine ludcmp(A, N, NP, INDX)
                    Replaces an NxN matrix a with the LU decomposition.
                    Definition: lapack_gen.F:52
                    +
                    subroutine lubksb(A, N, NP, INDX, B)
                    Solves a system of linear equations, follows call to ludcmp().
                    Definition: lapack_gen.F:17
                    +
                    subroutine splat(IDRT, JMAX, SLAT, WLAT)
                    Computes cosines of colatitude and Gaussian weights for one of the following specific global sets of ...
                    Definition: splat.F:46
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/splegend_8f.html b/ver-5.0.0/splegend_8f.html new file mode 100644 index 00000000..eaa4c202 --- /dev/null +++ b/ver-5.0.0/splegend_8f.html @@ -0,0 +1,217 @@ + + + + + + + +NCEPLIBS-ip: splegend.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    splegend.f File Reference
                    +
                    +
                    + +

                    Compute Legendre polynomials. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine splegend (I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                     Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude. More...
                     
                    +

                    Detailed Description

                    +

                    Compute Legendre polynomials.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    92-10-31
                    + +

                    Definition in file splegend.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ splegend()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine splegend ( I,
                     M,
                     SLAT,
                     CLAT,
                    real, dimension((m+1)*((i+1)*m+2)/2) EPS,
                    real, dimension(m+1) EPSTOP,
                    real, dimension((m+1)*((i+1)*m+2)/2) PLN,
                    real, dimension(m+1) PLNTOP 
                    )
                    +
                    + +

                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.

                    +

                    Subprogram splegend should be called already. If l is the zonal wavenumber, N is the total wavenumber, and EPS(L,N)=SQRT((N**2-L**2)/(4*N**2-1)) then the following bootstrapping formulas are used:

                    +
                    + PLN(0,0)=SQRT(0.5)
                    + PLN(L,L)=PLN(L-1,L-1)*CLAT*SQRT(FLOAT(2*L+1)/FLOAT(2*L))
                    + PLN(L,N)=(SLAT*PLN(L,N-1)-EPS(L,N-1)*PLN(L,N-2))/EPS(L,N)
                    + 

                    Synthesis at the pole needs only two zonal wavenumbers. Scalar fields are synthesized with zonal wavenumber 0 while vector fields are synthesized with zonal wavenumber 1. (Thus polar vector fields are implicitly divided by clat.) The following bootstrapping formulas are used at the pole:

                    +
                    + PLN(0,0)=SQRT(0.5)
                    + PLN(1,1)=SQRT(0.75)
                    + PLN(L,N)=(PLN(L,N-1)-EPS(L,N-1)*PLN(L,N-2))/EPS(L,N)
                    + 

                    PROGRAM HISTORY LOG:

                      +
                    • 91-10-31 MARK IREDELL
                    • +
                    • 98-06-10 MARK IREDELL GENERALIZE PRECISION
                    • +
                    +
                    Parameters
                    + + + + + + + + + +
                    I- INTEGER SPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    M- INTEGER SPECTRAL TRUNCATION
                    SLAT- REAL SINE OF LATITUDE
                    CLAT- REAL COSINE OF LATITUDE
                    EPS- REAL ((M+1)*((I+1)*M+2)/2) SQRT((N**2-L**2)/(4*N**2-1))
                    EPSTOP- REAL (M+1) SQRT((N**2-L**2)/(4*N**2-1)) OVER TOP
                    [out]PLN- REAL ((M+1)*((I+1)*M+2)/2) LEGENDRE POLYNOMIAL
                    [out]PLNTOP- REAL (M+1) LEGENDRE POLYNOMIAL OVER TOP
                    +
                    +
                    + +

                    Definition at line 44 of file splegend.f.

                    + +

                    Referenced by sptgpm(), sptgpmv(), sptgps(), sptgpsv(), sptgpt(), sptgptsd(), sptgptv(), sptgptvd(), and sptranf0().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/splegend_8f.js b/ver-5.0.0/splegend_8f.js new file mode 100644 index 00000000..8ab7c002 --- /dev/null +++ b/ver-5.0.0/splegend_8f.js @@ -0,0 +1,4 @@ +var splegend_8f = +[ + [ "splegend", "splegend_8f.html#a9c68adc80e97c43ac983b955dd6cabac", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/splegend_8f_source.html b/ver-5.0.0/splegend_8f_source.html new file mode 100644 index 00000000..cde06ce3 --- /dev/null +++ b/ver-5.0.0/splegend_8f_source.html @@ -0,0 +1,231 @@ + + + + + + + +NCEPLIBS-ip: splegend.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    splegend.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C>
                    +
                    3 C> Compute Legendre polynomials
                    +
                    4 C> @author IREDELL @date 92-10-31
                    +
                    5 
                    +
                    6 C> Evaluates the orthonormal associated Legendre polynomials in the
                    +
                    7 C> spectral domain at a given latitude. Subprogram splegend should
                    +
                    8 C> be called already. If l is the zonal wavenumber, N is the total
                    +
                    9 C> wavenumber, and EPS(L,N)=SQRT((N**2-L**2)/(4*N**2-1)) then the
                    +
                    10 C> following bootstrapping formulas are used:
                    +
                    11 C>
                    +
                    12 C> <pre>
                    +
                    13 C> PLN(0,0)=SQRT(0.5)
                    +
                    14 C> PLN(L,L)=PLN(L-1,L-1)*CLAT*SQRT(FLOAT(2*L+1)/FLOAT(2*L))
                    +
                    15 C> PLN(L,N)=(SLAT*PLN(L,N-1)-EPS(L,N-1)*PLN(L,N-2))/EPS(L,N)
                    +
                    16 C> </pre>
                    +
                    17 C>
                    +
                    18 C> Synthesis at the pole needs only two zonal wavenumbers. Scalar
                    +
                    19 C> fields are synthesized with zonal wavenumber 0 while vector
                    +
                    20 C> fields are synthesized with zonal wavenumber 1. (Thus polar
                    +
                    21 C> vector fields are implicitly divided by clat.) The following
                    +
                    22 C> bootstrapping formulas are used at the pole:
                    +
                    23 C>
                    +
                    24 C> <pre>
                    +
                    25 C> PLN(0,0)=SQRT(0.5)
                    +
                    26 C> PLN(1,1)=SQRT(0.75)
                    +
                    27 C> PLN(L,N)=(PLN(L,N-1)-EPS(L,N-1)*PLN(L,N-2))/EPS(L,N)
                    +
                    28 C> </pre>
                    +
                    29 C>
                    +
                    30 C> PROGRAM HISTORY LOG:
                    +
                    31 C> - 91-10-31 MARK IREDELL
                    +
                    32 C> - 98-06-10 MARK IREDELL GENERALIZE PRECISION
                    +
                    33 C>
                    +
                    34 C> @param I - INTEGER SPECTRAL DOMAIN SHAPE
                    +
                    35 C> (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    +
                    36 C> @param M - INTEGER SPECTRAL TRUNCATION
                    +
                    37 C> @param SLAT - REAL SINE OF LATITUDE
                    +
                    38 C> @param CLAT - REAL COSINE OF LATITUDE
                    +
                    39 C> @param EPS - REAL ((M+1)*((I+1)*M+2)/2) SQRT((N**2-L**2)/(4*N**2-1))
                    +
                    40 C> @param EPSTOP - REAL (M+1) SQRT((N**2-L**2)/(4*N**2-1)) OVER TOP
                    +
                    41 C> @param[out] PLN - REAL ((M+1)*((I+1)*M+2)/2) LEGENDRE POLYNOMIAL
                    +
                    42 C> @param[out] PLNTOP - REAL (M+1) LEGENDRE POLYNOMIAL OVER TOP
                    +
                    43 C>
                    +
                    44  SUBROUTINE splegend(I,M,SLAT,CLAT,EPS,EPSTOP,PLN,PLNTOP)
                    +
                    45 
                    +
                    46 CFPP$ NOCONCUR R
                    +
                    47  REAL EPS((M+1)*((I+1)*M+2)/2),EPSTOP(M+1)
                    +
                    48  REAL PLN((M+1)*((I+1)*M+2)/2),PLNTOP(M+1)
                    +
                    49  REAL(KIND=selected_real_kind(15,45)):: dln((m+1)*((i+1)*m+2)/2)
                    +
                    50 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    51 C ITERATIVELY COMPUTE PLN WITHIN SPECTRAL DOMAIN AT POLE
                    +
                    52  m1=m+1
                    +
                    53  m2=2*m+i+1
                    +
                    54  mx=(m+1)*((i+1)*m+2)/2
                    +
                    55  IF(clat.EQ.0.) THEN
                    +
                    56  dln(1)=sqrt(0.5)
                    +
                    57  IF(m.GT.0) THEN
                    +
                    58  dln(m1+1)=sqrt(0.75)
                    +
                    59  dln(2)=slat*dln(1)/eps(2)
                    +
                    60  ENDIF
                    +
                    61  IF(m.GT.1) THEN
                    +
                    62  dln(m1+2)=slat*dln(m1+1)/eps(m1+2)
                    +
                    63  dln(3)=(slat*dln(2)-eps(2)*dln(1))/eps(3)
                    +
                    64  DO n=3,m
                    +
                    65  k=1+n
                    +
                    66  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    +
                    67  k=m1+n
                    +
                    68  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    +
                    69  ENDDO
                    +
                    70  IF(i.EQ.1) THEN
                    +
                    71  k=m2
                    +
                    72  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    +
                    73  ENDIF
                    +
                    74  DO k=m2+1,mx
                    +
                    75  dln(k)=0.
                    +
                    76  ENDDO
                    +
                    77  ENDIF
                    +
                    78 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    79 C COMPUTE POLYNOMIALS OVER TOP OF SPECTRAL DOMAIN
                    +
                    80  k=m1+1
                    +
                    81  plntop(1)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/epstop(1)
                    +
                    82  IF(m.GT.0) THEN
                    +
                    83  k=m2+1
                    +
                    84  plntop(2)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/epstop(2)
                    +
                    85  DO l=2,m
                    +
                    86  plntop(l+1)=0.
                    +
                    87  ENDDO
                    +
                    88  ENDIF
                    +
                    89 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    90 C ITERATIVELY COMPUTE PLN(L,L) (BOTTOM HYPOTENUSE OF DOMAIN)
                    +
                    91  ELSE
                    +
                    92  nml=0
                    +
                    93  k=1
                    +
                    94  dln(k)=sqrt(0.5)
                    +
                    95  DO l=1,m+(i-1)*nml
                    +
                    96  kp=k
                    +
                    97  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    +
                    98  dln(k)=dln(kp)*clat*sqrt(float(2*l+1)/float(2*l))
                    +
                    99  ENDDO
                    +
                    100 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    101 C COMPUTE PLN(L,L+1) (DIAGONAL NEXT TO BOTTOM HYPOTENUSE OF DOMAIN)
                    +
                    102  nml=1
                    +
                    103 CDIR$ IVDEP
                    +
                    104  DO l=0,m+(i-1)*nml
                    +
                    105  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    +
                    106  dln(k)=slat*dln(k-1)/eps(k)
                    +
                    107  ENDDO
                    +
                    108 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    109 C COMPUTE REMAINING PLN IN SPECTRAL DOMAIN
                    +
                    110  DO nml=2,m
                    +
                    111 CDIR$ IVDEP
                    +
                    112  DO l=0,m+(i-1)*nml
                    +
                    113  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    +
                    114  dln(k)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/eps(k)
                    +
                    115  ENDDO
                    +
                    116  ENDDO
                    +
                    117 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    118 C COMPUTE POLYNOMIALS OVER TOP OF SPECTRAL DOMAIN
                    +
                    119  DO l=0,m
                    +
                    120  nml=m+1+(i-1)*l
                    +
                    121  k=l*(2*m+(i-1)*(l-1))/2+l+nml+1
                    +
                    122  plntop(l+1)=(slat*dln(k-1)-eps(k-1)*dln(k-2))/epstop(l+1)
                    +
                    123  ENDDO
                    +
                    124  ENDIF
                    +
                    125 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    126 C RETURN VALUES
                    +
                    127  DO k=1,mx
                    +
                    128  pln(k)=dln(k)
                    +
                    129  ENDDO
                    +
                    130  RETURN
                    +
                    131  END
                    +
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/splitbar.png b/ver-5.0.0/splitbar.png new file mode 100644 index 00000000..fe895f2c Binary files /dev/null and b/ver-5.0.0/splitbar.png differ diff --git a/ver-5.0.0/sppad_8f.html b/ver-5.0.0/sppad_8f.html new file mode 100644 index 00000000..513b29a5 --- /dev/null +++ b/ver-5.0.0/sppad_8f.html @@ -0,0 +1,189 @@ + + + + + + + +NCEPLIBS-ip: sppad.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sppad.f File Reference
                    +
                    +
                    + +

                    Pad or truncate a spectral field. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sppad (I1, M1, Q1, I2, M2, Q2)
                     Pad or truncate a spectral field. More...
                     
                    +

                    Detailed Description

                    +

                    Pad or truncate a spectral field.

                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition in file sppad.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sppad()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sppad ( I1,
                     M1,
                    real, dimension((m1+1)*((i1+1)*m1+2)) Q1,
                     I2,
                     M2,
                    real, dimension((m2+1)*((i2+1)*m2+2)) Q2 
                    )
                    +
                    + +

                    Pad or truncate a spectral field.

                    +
                    Parameters
                    + + + + + + + +
                    I1input spectral domain shape (0 for triangular, 1 for rhomboidal)
                    M1input spectral truncation
                    Q1((M+1)*((I+1)*M+2)) input field
                    I2output spectral domain shape (0 for triangular, 1 for rhomboidal)
                    M2output spectral truncation
                    Q2((M+1)*((I+1)*M+2)) output field
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition at line 17 of file sppad.f.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sppad_8f.js b/ver-5.0.0/sppad_8f.js new file mode 100644 index 00000000..a47faa1f --- /dev/null +++ b/ver-5.0.0/sppad_8f.js @@ -0,0 +1,4 @@ +var sppad_8f = +[ + [ "sppad", "sppad_8f.html#a4338b3ccd7844251bbdabf3da1d6476e", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sppad_8f_source.html b/ver-5.0.0/sppad_8f_source.html new file mode 100644 index 00000000..b3429e10 --- /dev/null +++ b/ver-5.0.0/sppad_8f_source.html @@ -0,0 +1,136 @@ + + + + + + + +NCEPLIBS-ip: sppad.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sppad.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Pad or truncate a spectral field.
                    +
                    3 C> @author Iredell @date 92-10-31
                    +
                    4 
                    +
                    5 C> Pad or truncate a spectral field.
                    +
                    6 C>
                    +
                    7 C> @param I1 input spectral domain shape
                    +
                    8 C> (0 for triangular, 1 for rhomboidal)
                    +
                    9 C> @param M1 input spectral truncation
                    +
                    10 C> @param Q1 ((M+1)*((I+1)*M+2)) input field
                    +
                    11 C> @param I2 output spectral domain shape
                    +
                    12 C> (0 for triangular, 1 for rhomboidal)
                    +
                    13 C> @param M2 output spectral truncation
                    +
                    14 C> @param Q2 ((M+1)*((I+1)*M+2)) output field
                    +
                    15 C>
                    +
                    16 C> @author Iredell @date 92-10-31
                    +
                    17  SUBROUTINE sppad(I1,M1,Q1,I2,M2,Q2)
                    +
                    18 
                    +
                    19  REAL Q1((M1+1)*((I1+1)*M1+2))
                    +
                    20  REAL Q2((M2+1)*((I2+1)*M2+2))
                    +
                    21 
                    +
                    22  DO l=0,m2
                    +
                    23  DO n=l,i2*l+m2
                    +
                    24  ks2=l*(2*m2+(i2-1)*(l-1))+2*n
                    +
                    25  IF(l.LE.m1.AND.n.LE.i1*l+m1) THEN
                    +
                    26  ks1=l*(2*m1+(i1-1)*(l-1))+2*n
                    +
                    27  q2(ks2+1)=q1(ks1+1)
                    +
                    28  q2(ks2+2)=q1(ks1+2)
                    +
                    29  ELSE
                    +
                    30  q2(ks2+1)=0
                    +
                    31  q2(ks2+2)=0
                    +
                    32  ENDIF
                    +
                    33  ENDDO
                    +
                    34  ENDDO
                    +
                    35  RETURN
                    +
                    36  END
                    +
                    subroutine sppad(I1, M1, Q1, I2, M2, Q2)
                    Pad or truncate a spectral field.
                    Definition: sppad.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spsynth_8f.html b/ver-5.0.0/spsynth_8f.html new file mode 100644 index 00000000..98e123bf --- /dev/null +++ b/ver-5.0.0/spsynth_8f.html @@ -0,0 +1,258 @@ + + + + + + + +NCEPLIBS-ip: spsynth.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spsynth.f File Reference
                    +
                    +
                    + +

                    Synthesize Fourier coefficients from spectral coefficients. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spsynth (I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                     Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Southern hemispheres). More...
                     
                    +

                    Detailed Description

                    +

                    Synthesize Fourier coefficients from spectral coefficients.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    91-10-31 Mark Iredell Initial.
                    1998-12-18 Mark Iredell Include scalar and gradient option.
                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition in file spsynth.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spsynth()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spsynth ( I,
                     M,
                     IM,
                     IX,
                     NC,
                     NCTOP,
                     KM,
                     CLAT,
                    real, dimension((m+1)*((i+1)*m+2)/2) PLN,
                    real, dimension(m+1) PLNTOP,
                    integer, dimension(km) MP,
                    real, dimension(nc,km) SPC,
                    real, dimension(nctop,km) SPCTOP,
                    real, dimension(ix,2,km) F 
                    )
                    +
                    + +

                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Southern hemispheres).

                    +

                    Vector components are divided by cosine of latitude.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + +
                    Ispectral domain shape (0 for triangular, 1 for rhomboidal)
                    Mspectral truncation
                    IMeven number of Fourier coefficients
                    IXdimension of Fourier coefficients (IX>=IM+2)
                    NCdimension of spectral coefficients (NC>=(M+1)*((I+1)*M+2))
                    NCTOPdimension of spectral coefficients over top (NCTOP>=2*(M+1))
                    KMnumber of fields
                    CLATcosine of latitude
                    PLN((M+1)*((I+1)*M+2)/2) Legendre polynomial
                    PLNTOPLegendre polynomial over top
                    SPCspectral coefficients
                    SPCTOPspectral coefficients over top
                    MPidentifiers (0 for scalar, 1 for vector, or 10 for scalar and gradient)
                    FFourier coefficients for latitude pair
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition at line 37 of file spsynth.f.

                    + +

                    Referenced by sptgpm(), sptgpmv(), sptgps(), sptgpsv(), sptgpt(), sptgptsd(), sptgptv(), sptgptvd(), and sptranf1().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spsynth_8f.js b/ver-5.0.0/spsynth_8f.js new file mode 100644 index 00000000..6cb85dd1 --- /dev/null +++ b/ver-5.0.0/spsynth_8f.js @@ -0,0 +1,4 @@ +var spsynth_8f = +[ + [ "spsynth", "spsynth_8f.html#aa6a8113a459918728c876673520126bf", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spsynth_8f_source.html b/ver-5.0.0/spsynth_8f_source.html new file mode 100644 index 00000000..c80d1102 --- /dev/null +++ b/ver-5.0.0/spsynth_8f_source.html @@ -0,0 +1,258 @@ + + + + + + + +NCEPLIBS-ip: spsynth.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spsynth.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Synthesize Fourier coefficients from spectral coefficients.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 91-10-31 | Mark Iredell | Initial.
                    +
                    8 C> 1998-12-18 | Mark Iredell | Include scalar and gradient option.
                    +
                    9 C>
                    +
                    10 C> @author Iredell @date 92-10-31
                    +
                    11 
                    +
                    12 C> Synthesizes Fourier coefficients from spectral coefficients
                    +
                    13 C> for a latitude pair (Northern and Southern hemispheres).
                    +
                    14 C>
                    +
                    15 C> Vector components are divided by cosine of latitude.
                    +
                    16 C>
                    +
                    17 C> @param I spectral domain shape
                    +
                    18 C> (0 for triangular, 1 for rhomboidal)
                    +
                    19 C> @param M spectral truncation
                    +
                    20 C> @param IM even number of Fourier coefficients
                    +
                    21 C> @param IX dimension of Fourier coefficients (IX>=IM+2)
                    +
                    22 C> @param NC dimension of spectral coefficients
                    +
                    23 C> (NC>=(M+1)*((I+1)*M+2))
                    +
                    24 C> @param NCTOP dimension of spectral coefficients over top
                    +
                    25 C> (NCTOP>=2*(M+1))
                    +
                    26 C> @param KM number of fields
                    +
                    27 C> @param CLAT cosine of latitude
                    +
                    28 C> @param PLN ((M+1)*((I+1)*M+2)/2) Legendre polynomial
                    +
                    29 C> @param PLNTOP Legendre polynomial over top
                    +
                    30 C> @param SPC spectral coefficients
                    +
                    31 C> @param SPCTOP spectral coefficients over top
                    +
                    32 C> @param MP identifiers (0 for scalar, 1 for vector,
                    +
                    33 C> or 10 for scalar and gradient)
                    +
                    34 C> @param F Fourier coefficients for latitude pair
                    +
                    35 C>
                    +
                    36 C> @author Iredell @date 92-10-31
                    +
                    37  SUBROUTINE spsynth(I,M,IM,IX,NC,NCTOP,KM,CLAT,PLN,PLNTOP,MP,
                    +
                    38  & SPC,SPCTOP,F)
                    +
                    39 
                    +
                    40  REAL PLN((M+1)*((I+1)*M+2)/2),PLNTOP(M+1)
                    +
                    41  INTEGER MP(KM)
                    +
                    42  REAL SPC(NC,KM),SPCTOP(NCTOP,KM)
                    +
                    43  REAL F(IX,2,KM)
                    +
                    44 
                    +
                    45 C ZERO OUT FOURIER COEFFICIENTS.
                    +
                    46  DO k=1,km
                    +
                    47  DO l=0,im/2
                    +
                    48  f(2*l+1,1,k)=0.
                    +
                    49  f(2*l+2,1,k)=0.
                    +
                    50  f(2*l+1,2,k)=0.
                    +
                    51  f(2*l+2,2,k)=0.
                    +
                    52  ENDDO
                    +
                    53  ENDDO
                    +
                    54 
                    +
                    55 C SYNTHESIS OVER POLE.
                    +
                    56 C INITIALIZE FOURIER COEFFICIENTS WITH TERMS OVER TOP OF THE SPECTRUM.
                    +
                    57 C INITIALIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    +
                    58  IF(clat.EQ.0) THEN
                    +
                    59  ltope=mod(m+1+i,2)
                    +
                    60 !C$OMP PARALLEL DO PRIVATE(LB,LE,L,KS,KP,N,F1R,F1I)
                    +
                    61  DO k=1,km
                    +
                    62  lb=mp(k)
                    +
                    63  le=mp(k)
                    +
                    64  IF(mp(k).EQ.10) THEN
                    +
                    65  lb=0
                    +
                    66  le=1
                    +
                    67  ENDIF
                    +
                    68  l=lb
                    +
                    69  IF(l.EQ.1) THEN
                    +
                    70  IF(l.EQ.ltope) THEN
                    +
                    71  f(2*l+1,1,k)=plntop(l+1)*spctop(2*l+1,k)
                    +
                    72  f(2*l+2,1,k)=plntop(l+1)*spctop(2*l+2,k)
                    +
                    73  ELSE
                    +
                    74  f(2*l+1,2,k)=plntop(l+1)*spctop(2*l+1,k)
                    +
                    75  f(2*l+2,2,k)=plntop(l+1)*spctop(2*l+2,k)
                    +
                    76  ENDIF
                    +
                    77  ENDIF
                    +
                    78 C FOR EACH ZONAL WAVENUMBER, SYNTHESIZE TERMS OVER TOTAL WAVENUMBER.
                    +
                    79 C SYNTHESIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    +
                    80  DO l=lb,le
                    +
                    81  ks=l*(2*m+(i-1)*(l-1))
                    +
                    82  kp=ks/2+1
                    +
                    83  DO n=l,i*l+m,2
                    +
                    84  f(2*l+1,1,k)=f(2*l+1,1,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    +
                    85  f(2*l+2,1,k)=f(2*l+2,1,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    +
                    86  ENDDO
                    +
                    87  DO n=l+1,i*l+m,2
                    +
                    88  f(2*l+1,2,k)=f(2*l+1,2,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    +
                    89  f(2*l+2,2,k)=f(2*l+2,2,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    +
                    90  ENDDO
                    +
                    91 C SEPARATE FOURIER COEFFICIENTS FROM EACH HEMISPHERE.
                    +
                    92 C ODD POLYNOMIALS CONTRIBUTE NEGATIVELY TO THE SOUTHERN HEMISPHERE.
                    +
                    93  f1r=f(2*l+1,1,k)
                    +
                    94  f1i=f(2*l+2,1,k)
                    +
                    95  f(2*l+1,1,k)=f1r+f(2*l+1,2,k)
                    +
                    96  f(2*l+2,1,k)=f1i+f(2*l+2,2,k)
                    +
                    97  f(2*l+1,2,k)=f1r-f(2*l+1,2,k)
                    +
                    98  f(2*l+2,2,k)=f1i-f(2*l+2,2,k)
                    +
                    99  ENDDO
                    +
                    100  ENDDO
                    +
                    101 
                    +
                    102 C SYNTHESIS OVER FINITE LATITUDE.
                    +
                    103 C INITIALIZE FOURIER COEFFICIENTS WITH TERMS OVER TOP OF THE SPECTRUM.
                    +
                    104 C INITIALIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    +
                    105  ELSE
                    +
                    106  lx=min(m,im/2)
                    +
                    107  ltope=mod(m+1,2)
                    +
                    108  ltopo=1-ltope
                    +
                    109  le=1+i*ltope
                    +
                    110  lo=2-i*ltopo
                    +
                    111 !C$OMP PARALLEL DO PRIVATE(L,KS,KP,N,F1R,F1I)
                    +
                    112  DO k=1,km
                    +
                    113  IF(mp(k).EQ.1) THEN
                    +
                    114  DO l=ltope,lx,2
                    +
                    115  f(2*l+1,le,k)=plntop(l+1)*spctop(2*l+1,k)
                    +
                    116  f(2*l+2,le,k)=plntop(l+1)*spctop(2*l+2,k)
                    +
                    117  ENDDO
                    +
                    118  DO l=ltopo,lx,2
                    +
                    119  f(2*l+1,lo,k)=plntop(l+1)*spctop(2*l+1,k)
                    +
                    120  f(2*l+2,lo,k)=plntop(l+1)*spctop(2*l+2,k)
                    +
                    121  ENDDO
                    +
                    122  ENDIF
                    +
                    123 C FOR EACH ZONAL WAVENUMBER, SYNTHESIZE TERMS OVER TOTAL WAVENUMBER.
                    +
                    124 C SYNTHESIZE EVEN AND ODD POLYNOMIALS SEPARATELY.
                    +
                    125  DO l=0,lx
                    +
                    126  ks=l*(2*m+(i-1)*(l-1))
                    +
                    127  kp=ks/2+1
                    +
                    128  DO n=l,i*l+m,2
                    +
                    129  f(2*l+1,1,k)=f(2*l+1,1,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    +
                    130  f(2*l+2,1,k)=f(2*l+2,1,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    +
                    131  ENDDO
                    +
                    132  DO n=l+1,i*l+m,2
                    +
                    133  f(2*l+1,2,k)=f(2*l+1,2,k)+pln(kp+n)*spc(ks+2*n+1,k)
                    +
                    134  f(2*l+2,2,k)=f(2*l+2,2,k)+pln(kp+n)*spc(ks+2*n+2,k)
                    +
                    135  ENDDO
                    +
                    136  ENDDO
                    +
                    137 C SEPARATE FOURIER COEFFICIENTS FROM EACH HEMISPHERE.
                    +
                    138 C ODD POLYNOMIALS CONTRIBUTE NEGATIVELY TO THE SOUTHERN HEMISPHERE.
                    +
                    139 C DIVIDE VECTOR COMPONENTS BY COSINE LATITUDE.
                    +
                    140  DO l=0,lx
                    +
                    141  f1r=f(2*l+1,1,k)
                    +
                    142  f1i=f(2*l+2,1,k)
                    +
                    143  f(2*l+1,1,k)=f1r+f(2*l+1,2,k)
                    +
                    144  f(2*l+2,1,k)=f1i+f(2*l+2,2,k)
                    +
                    145  f(2*l+1,2,k)=f1r-f(2*l+1,2,k)
                    +
                    146  f(2*l+2,2,k)=f1i-f(2*l+2,2,k)
                    +
                    147  ENDDO
                    +
                    148  IF(mp(k).EQ.1) THEN
                    +
                    149  DO l=0,lx
                    +
                    150  f(2*l+1,1,k)=f(2*l+1,1,k)/clat
                    +
                    151  f(2*l+2,1,k)=f(2*l+2,1,k)/clat
                    +
                    152  f(2*l+1,2,k)=f(2*l+1,2,k)/clat
                    +
                    153  f(2*l+2,2,k)=f(2*l+2,2,k)/clat
                    +
                    154  ENDDO
                    +
                    155  ENDIF
                    +
                    156  ENDDO
                    +
                    157  ENDIF
                    +
                    158  END
                    +
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptez_8f.html b/ver-5.0.0/sptez_8f.html new file mode 100644 index 00000000..e69c0bb0 --- /dev/null +++ b/ver-5.0.0/sptez_8f.html @@ -0,0 +1,234 @@ + + + + + + + +NCEPLIBS-ip: sptez.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptez.f File Reference
                    +
                    +
                    + +

                    Perform a simple scalar spherical transform. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptez (IROMB, MAXWV, IDRT, IMAX, JMAX, WAVE, GRID, IDIR)
                     This subprogram performs a spherical transform between spectral coefficients of a scalar quantity and a field on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform a simple scalar spherical transform.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptez.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptez()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptez ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)) WAVE,
                    real, dimension(imax,jmax) GRID,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform between spectral coefficients of a scalar quantity and a field on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid.

                    +

                    The wave field is in sequential 'IBM ORDER'.

                    +

                    The grid field is indexed East to West, then North to South.

                    +

                    For more flexibility and efficiency, call sptran().

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid,
                    • +
                    • IDRT=0 for equally-spaced grid including poles,
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes.
                    JMAXnumber of latitudes.
                    [out]WAVEwave field if IDIR>0 where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    [out]GRIDgrid field (E->W,N->S) if IDIR<0
                    IDIRtransform flag (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 49 of file sptez.f.

                    + +

                    References ncpus(), and sptranf().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptez_8f.js b/ver-5.0.0/sptez_8f.js new file mode 100644 index 00000000..03fe31e3 --- /dev/null +++ b/ver-5.0.0/sptez_8f.js @@ -0,0 +1,4 @@ +var sptez_8f = +[ + [ "sptez", "sptez_8f.html#a418a7d182834b2e2dafae2fe881ba9fc", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptez_8f_source.html b/ver-5.0.0/sptez_8f_source.html new file mode 100644 index 00000000..c72ceb9b --- /dev/null +++ b/ver-5.0.0/sptez_8f_source.html @@ -0,0 +1,173 @@ + + + + + + + +NCEPLIBS-ip: sptez.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptez.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform a simple scalar spherical transform.
                    +
                    3 C> @author Iredell @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram performs a spherical transform
                    +
                    6 C> between spectral coefficients of a scalar quantity
                    +
                    7 C> and a field on a global cylindrical grid.
                    +
                    8 C>
                    +
                    9 C> The wave-space can be either triangular or rhomboidal.
                    +
                    10 C>
                    +
                    11 C> The grid-space can be either an equally-spaced grid
                    +
                    12 C> (with or without pole points) or a Gaussian grid.
                    +
                    13 C>
                    +
                    14 C> The wave field is in sequential 'IBM ORDER'.
                    +
                    15 C>
                    +
                    16 C> The grid field is indexed East to West, then North to South.
                    +
                    17 C>
                    +
                    18 C> For more flexibility and efficiency, call sptran().
                    +
                    19 C>
                    +
                    20 C> Subprogram can be called from a multiprocessing environment.
                    +
                    21 C>
                    +
                    22 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    23 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    24 C> ----------------------- |--------- |-------------
                    +
                    25 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    26 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    27 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    28 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    29 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    30 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    31 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    32 C>
                    +
                    33 C> @param IROMB spectral domain shape
                    +
                    34 C> (0 for triangular, 1 for rhomboidal)
                    +
                    35 C> @param MAXWV spectral truncation
                    +
                    36 C> @param IDRT grid identifier
                    +
                    37 C> - IDRT=4 for Gaussian grid,
                    +
                    38 C> - IDRT=0 for equally-spaced grid including poles,
                    +
                    39 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    40 C> @param IMAX even number of longitudes.
                    +
                    41 C> @param JMAX number of latitudes.
                    +
                    42 C> @param[out] WAVE wave field if IDIR>0
                    +
                    43 C> where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    +
                    44 C> @param[out] GRID grid field (E->W,N->S) if IDIR<0
                    +
                    45 C> @param IDIR transform flag
                    +
                    46 C> (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    47 C>
                    +
                    48 C> @author Iredell @date 96-02-29
                    +
                    49  SUBROUTINE sptez(IROMB,MAXWV,IDRT,IMAX,JMAX,WAVE,GRID,IDIR)
                    +
                    50 
                    +
                    51  REAL WAVE((MAXWV+1)*((IROMB+1)*MAXWV+2))
                    +
                    52  REAL GRID(IMAX,JMAX)
                    +
                    53 
                    +
                    54  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    55  ip=1
                    +
                    56  is=1
                    +
                    57  jn=imax
                    +
                    58  js=-jn
                    +
                    59  kw=2*mx
                    +
                    60  kg=imax*jmax
                    +
                    61  jb=1
                    +
                    62  je=(jmax+1)/2
                    +
                    63  jc=ncpus()
                    +
                    64 ! print *, " EM: SPTEZ:::JJJJJJJJJJJJJJJJJJJCCCCCCCCCCC=" ,JC
                    +
                    65  IF(idir.LT.0) wave=0
                    +
                    66 
                    +
                    67  CALL sptranf(iromb,maxwv,idrt,imax,jmax,1,
                    +
                    68  & ip,is,jn,js,kw,kg,jb,je,jc,
                    +
                    69  & wave,grid,grid(1,jmax),idir)
                    +
                    70 
                    +
                    71  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptez(IROMB, MAXWV, IDRT, IMAX, JMAX, WAVE, GRID, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of a scalar quantity and...
                    Definition: sptez.f:50
                    +
                    subroutine sptranf(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IP, IS, JN, JS, KW, KG, JB, JE, JC, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptranf.f:77
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptezd_8f.html b/ver-5.0.0/sptezd_8f.html new file mode 100644 index 00000000..dbb5f245 --- /dev/null +++ b/ver-5.0.0/sptezd_8f.html @@ -0,0 +1,248 @@ + + + + + + + +NCEPLIBS-ip: sptezd.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptezd.f File Reference
                    +
                    +
                    + +

                    Perform a simple gradient spherical transform. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptezd (IROMB, MAXWV, IDRT, IMAX, JMAX, WAVE, GRIDMN, GRIDX, GRIDY, IDIR)
                     This subprogram performs a spherical transform between spectral coefficients of a scalar field and its mean and gradient on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform a simple gradient spherical transform.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptezd.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptezd()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptezd ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                    real, dimension(*) WAVE,
                     GRIDMN,
                    real, dimension(imax,jmax) GRIDX,
                    real, dimension(imax,jmax) GRIDY,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform between spectral coefficients of a scalar field and its mean and gradient on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid.

                    +

                    The wave field is in sequential 'IBM ORDER'.

                    +

                    The grid fiels is indexed East to West, then North to South.

                    +

                    For more flexibility and efficiency, call sptran().

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid
                    • +
                    • IDRT=0 for equally-spaced grid including poles
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes.
                    JMAXnumber of latitudes.
                    [out]WAVEwave field if IDIR>0
                    [out]GRIDMNglobal mean if IDIR<0
                    [out]GRIDXgrid x-gradients (E->W,N->S) if IDIR<0
                    [out]GRIDYgrid y-gradients (E->W,N->S) if IDIR<0
                    IDIRtransform flag (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 50 of file sptezd.f.

                    + +

                    References ncpus(), and sptrand().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptezd_8f.js b/ver-5.0.0/sptezd_8f.js new file mode 100644 index 00000000..d5a75e40 --- /dev/null +++ b/ver-5.0.0/sptezd_8f.js @@ -0,0 +1,4 @@ +var sptezd_8f = +[ + [ "sptezd", "sptezd_8f.html#a6c30b52dcb4da9e403eeeb307b9516d7", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptezd_8f_source.html b/ver-5.0.0/sptezd_8f_source.html new file mode 100644 index 00000000..370a4b70 --- /dev/null +++ b/ver-5.0.0/sptezd_8f_source.html @@ -0,0 +1,162 @@ + + + + + + + +NCEPLIBS-ip: sptezd.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptezd.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform a simple gradient spherical transform.
                    +
                    3 C> @author Iredell @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram performs a spherical transform
                    +
                    6 C> between spectral coefficients of a scalar field
                    +
                    7 C> and its mean and gradient on a global cylindrical grid.
                    +
                    8 C>
                    +
                    9 C> The wave-space can be either triangular or rhomboidal.
                    +
                    10 C>
                    +
                    11 C> The grid-space can be either an equally-spaced grid
                    +
                    12 C> (with or without pole points) or a Gaussian grid.
                    +
                    13 C>
                    +
                    14 C> The wave field is in sequential 'IBM ORDER'.
                    +
                    15 C>
                    +
                    16 C> The grid fiels is indexed East to West, then North to South.
                    +
                    17 C>
                    +
                    18 C> For more flexibility and efficiency, call sptran().
                    +
                    19 C>
                    +
                    20 C> Subprogram can be called from a multiprocessing environment.
                    +
                    21 C>
                    +
                    22 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    23 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    24 C> ----------------------- |--------- |-------------
                    +
                    25 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    26 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    27 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    28 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    29 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    30 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    31 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    32 C>
                    +
                    33 C> @param IROMB spectral domain shape
                    +
                    34 C> (0 for triangular, 1 for rhomboidal)
                    +
                    35 C> @param MAXWV spectral truncation
                    +
                    36 C> @param IDRT grid identifier
                    +
                    37 C> - IDRT=4 for Gaussian grid
                    +
                    38 C> - IDRT=0 for equally-spaced grid including poles
                    +
                    39 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    40 C> @param IMAX even number of longitudes.
                    +
                    41 C> @param JMAX number of latitudes.
                    +
                    42 C> @param[out] WAVE wave field if IDIR>0
                    +
                    43 C> @param[out] GRIDMN global mean if IDIR<0
                    +
                    44 C> @param[out] GRIDX grid x-gradients (E->W,N->S) if IDIR<0
                    +
                    45 C> @param[out] GRIDY grid y-gradients (E->W,N->S) if IDIR<0
                    +
                    46 C> @param IDIR transform flag
                    +
                    47 C> (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    48 C>
                    +
                    49 C> @author Iredell @date 96-02-29
                    +
                    50  SUBROUTINE sptezd(IROMB,MAXWV,IDRT,IMAX,JMAX,
                    +
                    51  & WAVE,GRIDMN,GRIDX,GRIDY,IDIR)
                    +
                    52 
                    +
                    53  REAL WAVE(*),GRIDX(IMAX,JMAX),GRIDY(IMAX,JMAX)
                    +
                    54 
                    +
                    55  jc=ncpus()
                    +
                    56  CALL sptrand(iromb,maxwv,idrt,imax,jmax,1,
                    +
                    57  & 0,0,0,0,0,0,0,0,jc,
                    +
                    58  & wave,gridmn,
                    +
                    59  & gridx,gridx(1,jmax),gridy,gridy(1,jmax),1)
                    +
                    60  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptezd(IROMB, MAXWV, IDRT, IMAX, JMAX, WAVE, GRIDMN, GRIDX, GRIDY, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of a scalar field and it...
                    Definition: sptezd.f:52
                    +
                    subroutine sptrand(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDMN, GRIDXN, GRIDXS, GRIDYN, GRIDYS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar fields and the...
                    Definition: sptrand.f:92
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptezm_8f.html b/ver-5.0.0/sptezm_8f.html new file mode 100644 index 00000000..57138f17 --- /dev/null +++ b/ver-5.0.0/sptezm_8f.html @@ -0,0 +1,241 @@ + + + + + + + +NCEPLIBS-ip: sptezm.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptezm.f File Reference
                    +
                    +
                    + +

                    Perform simple scalar spherical transforms. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptezm (IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, WAVE, GRID, IDIR)
                     This subprogram performs spherical transforms between spectral coefficients of scalar quantities and fields on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform simple scalar spherical transforms.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptezm.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptezm()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptezm ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                     KMAX,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2),kmax) WAVE,
                    real, dimension(imax,jmax,kmax) GRID,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs spherical transforms between spectral coefficients of scalar quantities and fields on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid.

                    +

                    Wave fields are in sequential 'IBM ORDER'.

                    +

                    Grid fields are indexed East to West, then North to South.

                    +

                    For more flexibility and efficiency, call sptran().

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid
                    • +
                    • IDRT=0 for equally-spaced grid including poles
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes
                    JMAXnumber of latitudes
                    KMAXnumber of fields to transform
                    [out]WAVEwave field if IDIR>0 where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    [out]GRIDgrid field (E->W,N->S) if IDIR<0
                    IDIRtransform flag (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 50 of file sptezm.f.

                    + +

                    References ncpus(), and sptranf().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptezm_8f.js b/ver-5.0.0/sptezm_8f.js new file mode 100644 index 00000000..d8cb8be0 --- /dev/null +++ b/ver-5.0.0/sptezm_8f.js @@ -0,0 +1,4 @@ +var sptezm_8f = +[ + [ "sptezm", "sptezm_8f.html#a1430a0df2cba7eefaf67c939684be2d1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptezm_8f_source.html b/ver-5.0.0/sptezm_8f_source.html new file mode 100644 index 00000000..4b9a7720 --- /dev/null +++ b/ver-5.0.0/sptezm_8f_source.html @@ -0,0 +1,172 @@ + + + + + + + +NCEPLIBS-ip: sptezm.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptezm.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform simple scalar spherical transforms.
                    +
                    3 C> @author Iredell @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram performs spherical transforms
                    +
                    6 C> between spectral coefficients of scalar quantities
                    +
                    7 C> and fields on a global cylindrical grid.
                    +
                    8 C>
                    +
                    9 C> The wave-space can be either triangular or rhomboidal.
                    +
                    10 C>
                    +
                    11 C> The grid-space can be either an equally-spaced grid
                    +
                    12 C> (with or without pole points) or a Gaussian grid.
                    +
                    13 C>
                    +
                    14 C> Wave fields are in sequential 'IBM ORDER'.
                    +
                    15 C>
                    +
                    16 C> Grid fields are indexed East to West, then North to South.
                    +
                    17 C>
                    +
                    18 C> For more flexibility and efficiency, call sptran().
                    +
                    19 C>
                    +
                    20 C> Subprogram can be called from a multiprocessing environment.
                    +
                    21 C>
                    +
                    22 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    23 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    24 C> ----------------------- |--------- |-------------
                    +
                    25 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    26 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    27 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    28 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    29 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    30 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    31 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    32 C>
                    +
                    33 C> @param IROMB spectral domain shape
                    +
                    34 C> (0 for triangular, 1 for rhomboidal)
                    +
                    35 C> @param MAXWV spectral truncation
                    +
                    36 C> @param IDRT grid identifier
                    +
                    37 C> - IDRT=4 for Gaussian grid
                    +
                    38 C> - IDRT=0 for equally-spaced grid including poles
                    +
                    39 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    40 C> @param IMAX even number of longitudes
                    +
                    41 C> @param JMAX number of latitudes
                    +
                    42 C> @param KMAX number of fields to transform
                    +
                    43 C> @param[out] WAVE wave field if IDIR>0
                    +
                    44 C> where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    +
                    45 C> @param[out] GRID grid field (E->W,N->S) if IDIR<0
                    +
                    46 C> @param IDIR transform flag
                    +
                    47 C> (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    48 C>
                    +
                    49 C> @author Iredell @date 96-02-29
                    +
                    50  SUBROUTINE sptezm(IROMB,MAXWV,IDRT,IMAX,JMAX,KMAX,WAVE,GRID,IDIR)
                    +
                    51 
                    +
                    52  REAL WAVE((MAXWV+1)*((IROMB+1)*MAXWV+2),KMAX)
                    +
                    53  REAL GRID(IMAX,JMAX,KMAX)
                    +
                    54 
                    +
                    55  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    56  ip=1
                    +
                    57  is=1
                    +
                    58  jn=imax
                    +
                    59  js=-jn
                    +
                    60  kw=2*mx
                    +
                    61  kg=imax*jmax
                    +
                    62  jb=1
                    +
                    63  je=(jmax+1)/2
                    +
                    64  jc=ncpus()
                    +
                    65  IF(idir.LT.0) wave=0
                    +
                    66 
                    +
                    67  CALL sptranf(iromb,maxwv,idrt,imax,jmax,kmax,
                    +
                    68  & ip,is,jn,js,kw,kg,jb,je,jc,
                    +
                    69  & wave,grid,grid(1,jmax,1),idir)
                    +
                    70  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptezm(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, WAVE, GRID, IDIR)
                    This subprogram performs spherical transforms between spectral coefficients of scalar quantities and ...
                    Definition: sptezm.f:51
                    +
                    subroutine sptranf(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IP, IS, JN, JS, KW, KG, JB, JE, JC, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptranf.f:77
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptezmd_8f.html b/ver-5.0.0/sptezmd_8f.html new file mode 100644 index 00000000..29e74a14 --- /dev/null +++ b/ver-5.0.0/sptezmd_8f.html @@ -0,0 +1,255 @@ + + + + + + + +NCEPLIBS-ip: sptezmd.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptezmd.f File Reference
                    +
                    +
                    + +

                    Perform simple gradient spherical transforms. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptezmd (IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, WAVE, GRIDMN, GRIDX, GRIDY, IDIR)
                     This subprogram performs spherical transforms between spectral coefficients of scalar fields and their means and gradients on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform simple gradient spherical transforms.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptezmd.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptezmd()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptezmd ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                     KMAX,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2),kmax) WAVE,
                    real, dimension(kmax) GRIDMN,
                    real, dimension(imax,jmax,kmax) GRIDX,
                    real, dimension(imax,jmax,kmax) GRIDY,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs spherical transforms between spectral coefficients of scalar fields and their means and gradients on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a gaussian grid.

                    +

                    The wave fields are in sequential 'IBM ORDER'.

                    +

                    The grid fields are indexed East to West, then North to South.

                    +

                    For more flexibility and efficiency, call sptran().

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid
                    • +
                    • IDRT=0 for equally-spaced grid including poles
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes.
                    JMAXnumber of latitudes.
                    KMAXnumber
                    [out]WAVEwave field if IDIR>0 where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)
                    [out]GRIDMNglobal mean if IDIR<0
                    [out]GRIDXgrid x-gradients (E->W,N->S) if IDIR<0
                    [out]GRIDYgrid y-gradients (E->W,N->S) if IDIR<0
                    IDIRtransform flag (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 52 of file sptezmd.f.

                    + +

                    References ncpus(), and sptrand().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptezmd_8f.js b/ver-5.0.0/sptezmd_8f.js new file mode 100644 index 00000000..31e96979 --- /dev/null +++ b/ver-5.0.0/sptezmd_8f.js @@ -0,0 +1,4 @@ +var sptezmd_8f = +[ + [ "sptezmd", "sptezmd_8f.html#a2b9ead06893e51604bfb18928ddee996", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptezmd_8f_source.html b/ver-5.0.0/sptezmd_8f_source.html new file mode 100644 index 00000000..881cc4cd --- /dev/null +++ b/ver-5.0.0/sptezmd_8f_source.html @@ -0,0 +1,165 @@ + + + + + + + +NCEPLIBS-ip: sptezmd.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptezmd.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform simple gradient spherical transforms.
                    +
                    3 C> @author Iredell @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram performs spherical transforms
                    +
                    6 C> between spectral coefficients of scalar fields
                    +
                    7 C> and their means and gradients on a global cylindrical grid.
                    +
                    8 C>
                    +
                    9 C> The wave-space can be either triangular or rhomboidal.
                    +
                    10 C>
                    +
                    11 C> The grid-space can be either an equally-spaced grid
                    +
                    12 C> (with or without pole points) or a gaussian grid.
                    +
                    13 C>
                    +
                    14 C> The wave fields are in sequential 'IBM ORDER'.
                    +
                    15 C>
                    +
                    16 C> The grid fields are indexed East to West, then North to South.
                    +
                    17 C>
                    +
                    18 C> For more flexibility and efficiency, call sptran().
                    +
                    19 C>
                    +
                    20 C> Subprogram can be called from a multiprocessing environment.
                    +
                    21 C>
                    +
                    22 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    23 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    24 C> ----------------------- |--------- |-------------
                    +
                    25 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    26 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    27 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    28 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    29 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    30 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    31 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    32 C>
                    +
                    33 C> @param IROMB spectral domain shape
                    +
                    34 C> (0 for triangular, 1 for rhomboidal)
                    +
                    35 C> @param MAXWV spectral truncation
                    +
                    36 C> @param IDRT grid identifier
                    +
                    37 C> - IDRT=4 for Gaussian grid
                    +
                    38 C> - IDRT=0 for equally-spaced grid including poles
                    +
                    39 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    40 C> @param IMAX even number of longitudes.
                    +
                    41 C> @param JMAX number of latitudes.
                    +
                    42 C> @param KMAX number
                    +
                    43 C> @param[out] WAVE wave field if IDIR>0
                    +
                    44 C> where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)
                    +
                    45 C> @param[out] GRIDMN global mean if IDIR<0
                    +
                    46 C> @param[out] GRIDX grid x-gradients (E->W,N->S) if IDIR<0
                    +
                    47 C> @param[out] GRIDY grid y-gradients (E->W,N->S) if IDIR<0
                    +
                    48 C> @param IDIR transform flag
                    +
                    49 C> (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    50 C>
                    +
                    51 C> @author Iredell @date 96-02-29
                    +
                    52  SUBROUTINE sptezmd(IROMB,MAXWV,IDRT,IMAX,JMAX,KMAX,
                    +
                    53  & WAVE,GRIDMN,GRIDX,GRIDY,IDIR)
                    +
                    54 
                    +
                    55  REAL WAVE((MAXWV+1)*((IROMB+1)*MAXWV+2),KMAX)
                    +
                    56  REAL GRIDMN(KMAX),GRIDX(IMAX,JMAX,KMAX),GRIDY(IMAX,JMAX,KMAX)
                    +
                    57 
                    +
                    58  jc=ncpus()
                    +
                    59  CALL sptrand(iromb,maxwv,idrt,imax,jmax,kmax,
                    +
                    60  & 0,0,0,0,0,0,0,0,jc,
                    +
                    61  & wave,gridmn,
                    +
                    62  & gridx,gridx(1,jmax,1),gridy,gridy(1,jmax,1),idir)
                    +
                    63  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptezmd(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, WAVE, GRIDMN, GRIDX, GRIDY, IDIR)
                    This subprogram performs spherical transforms between spectral coefficients of scalar fields and thei...
                    Definition: sptezmd.f:54
                    +
                    subroutine sptrand(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDMN, GRIDXN, GRIDXS, GRIDYN, GRIDYS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar fields and the...
                    Definition: sptrand.f:92
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptezmv_8f.html b/ver-5.0.0/sptezmv_8f.html new file mode 100644 index 00000000..86831b90 --- /dev/null +++ b/ver-5.0.0/sptezmv_8f.html @@ -0,0 +1,255 @@ + + + + + + + +NCEPLIBS-ip: sptezmv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptezmv.f File Reference
                    +
                    +
                    + +

                    Perform simple vector spherical transforms. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptezmv (IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, WAVED, WAVEZ, GRIDU, GRIDV, IDIR)
                     This subprogram performs spherical transforms between spectral coefficients of divergence and curl and vector fields on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform simple vector spherical transforms.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptezmv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptezmv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptezmv ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                     KMAX,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2),kmax) WAVED,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2),kmax) WAVEZ,
                    real, dimension(imax,jmax,kmax) GRIDU,
                    real, dimension(imax,jmax,kmax) GRIDV,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs spherical transforms between spectral coefficients of divergence and curl and vector fields on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid.

                    +

                    Wave fields are in sequential 'IBM ORDER'.

                    +

                    Grid fields are indexed east to west, then north to south.

                    +

                    For more flexibility and efficiency, call sptran().

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid
                    • +
                    • IDRT=0 for equally-spaced grid including poles
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes
                    JMAXnumber of latitudes
                    KMAXnumber of fields to transform
                    [out]WAVEDwave divergence field if IDIR<0 where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    [out]WAVEZwave vorticity field if IDIR>0 where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    [out]GRIDUgrid u-wind (E->W,N->S) if IDIR>0
                    [out]GRIDVgrid v-wind (E->W,N->S) if IDIR>0
                    IDIRtransform flag (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 53 of file sptezmv.f.

                    + +

                    References ncpus(), and sptranfv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptezmv_8f.js b/ver-5.0.0/sptezmv_8f.js new file mode 100644 index 00000000..2b2725eb --- /dev/null +++ b/ver-5.0.0/sptezmv_8f.js @@ -0,0 +1,4 @@ +var sptezmv_8f = +[ + [ "sptezmv", "sptezmv_8f.html#a22dc4fc10c5225ec8d3c12ed3cb4786e", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptezmv_8f_source.html b/ver-5.0.0/sptezmv_8f_source.html new file mode 100644 index 00000000..e3acbec4 --- /dev/null +++ b/ver-5.0.0/sptezmv_8f_source.html @@ -0,0 +1,180 @@ + + + + + + + +NCEPLIBS-ip: sptezmv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptezmv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform simple vector spherical transforms.
                    +
                    3 C> @author Iredell @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram performs spherical transforms
                    +
                    6 C> between spectral coefficients of divergence and curl
                    +
                    7 C> and vector fields on a global cylindrical grid.
                    +
                    8 C>
                    +
                    9 C> The wave-space can be either triangular or rhomboidal.
                    +
                    10 C>
                    +
                    11 C> The grid-space can be either an equally-spaced grid
                    +
                    12 C> (with or without pole points) or a Gaussian grid.
                    +
                    13 C>
                    +
                    14 C> Wave fields are in sequential 'IBM ORDER'.
                    +
                    15 C>
                    +
                    16 C> Grid fields are indexed east to west, then north to south.
                    +
                    17 C>
                    +
                    18 C> For more flexibility and efficiency, call sptran().
                    +
                    19 C>
                    +
                    20 C> Subprogram can be called from a multiprocessing environment.
                    +
                    21 C>
                    +
                    22 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    23 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    24 C> ----------------------- |--------- |-------------
                    +
                    25 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    26 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    27 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    28 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    29 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    30 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    31 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    32 C>
                    +
                    33 C> @param IROMB spectral domain shape
                    +
                    34 C> (0 for triangular, 1 for rhomboidal)
                    +
                    35 C> @param MAXWV spectral truncation
                    +
                    36 C> @param IDRT grid identifier
                    +
                    37 C> - IDRT=4 for Gaussian grid
                    +
                    38 C> - IDRT=0 for equally-spaced grid including poles
                    +
                    39 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    40 C> @param IMAX even number of longitudes
                    +
                    41 C> @param JMAX number of latitudes
                    +
                    42 C> @param KMAX number of fields to transform
                    +
                    43 C> @param[out] WAVED wave divergence field if IDIR<0
                    +
                    44 C> where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    +
                    45 C> @param[out] WAVEZ wave vorticity field if IDIR>0
                    +
                    46 C> where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    +
                    47 C> @param[out] GRIDU grid u-wind (E->W,N->S) if IDIR>0
                    +
                    48 C> @param[out] GRIDV grid v-wind (E->W,N->S) if IDIR>0
                    +
                    49 C> @param IDIR transform flag
                    +
                    50 C> (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    51 C>
                    +
                    52 C> @author Iredell @date 96-02-29
                    +
                    53  SUBROUTINE sptezmv(IROMB,MAXWV,IDRT,IMAX,JMAX,KMAX,
                    +
                    54  & WAVED,WAVEZ,GRIDU,GRIDV,IDIR)
                    +
                    55 
                    +
                    56  REAL WAVED((MAXWV+1)*((IROMB+1)*MAXWV+2),KMAX)
                    +
                    57  REAL WAVEZ((MAXWV+1)*((IROMB+1)*MAXWV+2),KMAX)
                    +
                    58  REAL GRIDU(IMAX,JMAX,KMAX)
                    +
                    59  REAL GRIDV(IMAX,JMAX,KMAX)
                    +
                    60 
                    +
                    61  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    62  ip=1
                    +
                    63  is=1
                    +
                    64  jn=imax
                    +
                    65  js=-jn
                    +
                    66  kw=2*mx
                    +
                    67  kg=imax*jmax
                    +
                    68  jb=1
                    +
                    69  je=(jmax+1)/2
                    +
                    70  jc=ncpus()
                    +
                    71  IF(idir.LT.0) waved=0
                    +
                    72  IF(idir.LT.0) wavez=0
                    +
                    73 
                    +
                    74  CALL sptranfv(iromb,maxwv,idrt,imax,jmax,kmax,
                    +
                    75  & ip,is,jn,js,kw,kg,jb,je,jc,
                    +
                    76  & waved,wavez,
                    +
                    77  & gridu,gridu(1,jmax,1),gridv,gridv(1,jmax,1),idir)
                    +
                    78  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptezmv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, WAVED, WAVEZ, GRIDU, GRIDV, IDIR)
                    This subprogram performs spherical transforms between spectral coefficients of divergence and curl an...
                    Definition: sptezmv.f:55
                    +
                    subroutine sptranfv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IP, IS, JN, JS, KW, KG, JB, JE, JC, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranfv.f:83
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptezv_8f.html b/ver-5.0.0/sptezv_8f.html new file mode 100644 index 00000000..483d7cc3 --- /dev/null +++ b/ver-5.0.0/sptezv_8f.html @@ -0,0 +1,248 @@ + + + + + + + +NCEPLIBS-ip: sptezv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptezv.f File Reference
                    +
                    +
                    + +

                    Perform a simple vector spherical transform. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptezv (IROMB, MAXWV, IDRT, IMAX, JMAX, WAVED, WAVEZ, GRIDU, GRIDV, IDIR)
                     This subprogram performs a spherical transform between spectral coefficients of divergence and curl and a vector field on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform a simple vector spherical transform.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptezv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptezv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptezv ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)) WAVED,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)) WAVEZ,
                    real, dimension(imax,jmax) GRIDU,
                    real, dimension(imax,jmax) GRIDV,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform between spectral coefficients of divergence and curl and a vector field on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid.

                    +

                    The wave field is in sequential 'IBM order'.

                    +

                    The grid field is indexed east to west, then north to south.

                    +

                    For more flexibility and efficiency, call SPTRAN().

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    Dimension Linear Quadratic
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + +
                    IROMBSpectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVSpectral truncation
                    IDRTGrid identifier
                      +
                    • IDRT=4 for Gaussian grid
                    • +
                    • IDRT=0 for equally-spaced grid including poles
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXEven number of longitudes
                    JMAXNumber of latitudes
                    [out]WAVEDWave divergence field if IDIR>0 where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    [out]WAVEZWave vorticity field if IDIR>0 where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    [out]GRIDUGrid u-wind (E->W,N->S) if IDIR<0
                    [out]GRIDVGrid v-wind (E->W,N->S) if IDIR<0
                    IDIRTransform flag (IDIR>0 for wave to grid, IDIR<0 for grid to wave)
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 51 of file sptezv.f.

                    + +

                    References ncpus(), and sptranfv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptezv_8f.js b/ver-5.0.0/sptezv_8f.js new file mode 100644 index 00000000..d9e51fb2 --- /dev/null +++ b/ver-5.0.0/sptezv_8f.js @@ -0,0 +1,4 @@ +var sptezv_8f = +[ + [ "sptezv", "sptezv_8f.html#a83e49d961c40a2621c3f2afe70846226", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptezv_8f_source.html b/ver-5.0.0/sptezv_8f_source.html new file mode 100644 index 00000000..3c9b5c1c --- /dev/null +++ b/ver-5.0.0/sptezv_8f_source.html @@ -0,0 +1,178 @@ + + + + + + + +NCEPLIBS-ip: sptezv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptezv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform a simple vector spherical transform
                    +
                    3 C> @author Iredell @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram performs a spherical transform
                    +
                    6 C> between spectral coefficients of divergence and curl
                    +
                    7 C> and a vector field on a global cylindrical grid.
                    +
                    8 C> The wave-space can be either triangular or rhomboidal.
                    +
                    9 C>
                    +
                    10 C> The grid-space can be either an equally-spaced grid
                    +
                    11 C> (with or without pole points) or a Gaussian grid.
                    +
                    12 C>
                    +
                    13 C> The wave field is in sequential 'IBM order'.
                    +
                    14 C>
                    +
                    15 C> The grid field is indexed east to west, then north to south.
                    +
                    16 C>
                    +
                    17 C> For more flexibility and efficiency, call SPTRAN().
                    +
                    18 C>
                    +
                    19 C> Subprogram can be called from a multiprocessing environment.
                    +
                    20 C>
                    +
                    21 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    22 C> Dimension |Linear |Quadratic
                    +
                    23 C> ----------------------- |--------- |-------------
                    +
                    24 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    25 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    26 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    27 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    28 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    29 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    30 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    31 C>
                    +
                    32 C> @param IROMB Spectral domain shape
                    +
                    33 C> (0 for triangular, 1 for rhomboidal)
                    +
                    34 C> @param MAXWV Spectral truncation
                    +
                    35 C> @param IDRT Grid identifier
                    +
                    36 C> - IDRT=4 for Gaussian grid
                    +
                    37 C> - IDRT=0 for equally-spaced grid including poles
                    +
                    38 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    39 C> @param IMAX Even number of longitudes
                    +
                    40 C> @param JMAX Number of latitudes
                    +
                    41 C> @param[out] WAVED Wave divergence field if IDIR>0
                    +
                    42 C> where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    +
                    43 C> @param[out] WAVEZ Wave vorticity field if IDIR>0
                    +
                    44 C> where MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
                    +
                    45 C> @param[out] GRIDU Grid u-wind (E->W,N->S) if IDIR<0
                    +
                    46 C> @param[out] GRIDV Grid v-wind (E->W,N->S) if IDIR<0
                    +
                    47 C> @param IDIR Transform flag
                    +
                    48 C> (IDIR>0 for wave to grid, IDIR<0 for grid to wave)
                    +
                    49 C>
                    +
                    50 C> @author Iredell @date 96-02-29
                    +
                    51  SUBROUTINE sptezv(IROMB,MAXWV,IDRT,IMAX,JMAX,
                    +
                    52  & WAVED,WAVEZ,GRIDU,GRIDV,IDIR)
                    +
                    53 
                    +
                    54  REAL WAVED((MAXWV+1)*((IROMB+1)*MAXWV+2))
                    +
                    55  REAL WAVEZ((MAXWV+1)*((IROMB+1)*MAXWV+2))
                    +
                    56  REAL GRIDU(IMAX,JMAX)
                    +
                    57  REAL GRIDV(IMAX,JMAX)
                    +
                    58 
                    +
                    59  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    60  ip=1
                    +
                    61  is=1
                    +
                    62  jn=imax
                    +
                    63  js=-jn
                    +
                    64  kw=2*mx
                    +
                    65  kg=imax*jmax
                    +
                    66  jb=1
                    +
                    67  je=(jmax+1)/2
                    +
                    68  jc=ncpus()
                    +
                    69  IF(idir.LT.0) waved=0
                    +
                    70  IF(idir.LT.0) wavez=0
                    +
                    71 
                    +
                    72  CALL sptranfv(iromb,maxwv,idrt,imax,jmax,1,
                    +
                    73  & ip,is,jn,js,kw,kg,jb,je,jc,
                    +
                    74  & waved,wavez,
                    +
                    75  & gridu,gridu(1,jmax),gridv,gridv(1,jmax),idir)
                    +
                    76  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptezv(IROMB, MAXWV, IDRT, IMAX, JMAX, WAVED, WAVEZ, GRIDU, GRIDV, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergence and curl a...
                    Definition: sptezv.f:53
                    +
                    subroutine sptranfv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IP, IS, JN, JS, KW, KG, JB, JE, JC, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranfv.f:83
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpm_8f.html b/ver-5.0.0/sptgpm_8f.html new file mode 100644 index 00000000..13c6c40e --- /dev/null +++ b/ver-5.0.0/sptgpm_8f.html @@ -0,0 +1,267 @@ + + + + + + + +NCEPLIBS-ip: sptgpm.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgpm.f File Reference
                    +
                    +
                    + +

                    Transform spectral scalar to Mercator. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgpm (IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVE, GM)
                     This subprogram performs a spherical transform from spectral coefficients of scalar quantities to scalar fields on a Mercator grid. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral scalar to Mercator.

                    +

                    +Program history log:

                    + + + + + + + +
                    Date Programmer Comments
                    96-02-29 IREDELL Initial.
                    1998-12-15 IREDELL OpenMP directives inserted.
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgpm.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgpm()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgpm ( IROMB,
                     MAXWV,
                     KMAX,
                     MI,
                     MJ,
                     KWSKIP,
                     KGSKIP,
                     NISKIP,
                     NJSKIP,
                     RLAT1,
                     RLON1,
                     DLAT,
                     DLON,
                    real, dimension(*) WAVE,
                    real, dimension(*) GM 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to scalar fields on a Mercator grid.

                    +

                    The wave-space can be either triangular or rhomboidal. The wave and grid fields may have general indexing, but each wave field is in sequential 'ibm order', i.e. with zonal wavenumber as the slower index. The Mercator grid is identified by the location of its first point and by its respective increments. The transforms are all multiprocessed over sector points. Transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + +
                    IROMBSpectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVSpectral truncation
                    KMAXNumber of fields to transform
                    MINumber of points in the faster zonal direction
                    MJNumber of points in the slower merid direction
                    KWSKIPSkip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    KGSKIPSkip number between grid fields (defaults to MI*MJ if KGSKIP=0)
                    NISKIPSkip number between grid i-points (defaults to 1 if NISKIP=0)
                    NJSKIPSkip number between grid j-points (defaults to MI if NJSKIP=0)
                    RLAT1Latitude of the first grid point in degrees
                    RLON1Longitude of the first grid point in degrees
                    DLATLatitude increment in degrees such that D(PHI)/D(J)=DLAT*COS(PHI) where J is meridional index. DLAT is negative for grids indexed southward. (in terms of grid increment DY valid at latitude RLATI, the latitude increment DLAT is determined as DLAT=DPR*DY/(RERTH*COS(RLATI/DPR)) where DPR=180/PI and RERTH is earth's radius)
                    DLONLongitude increment in degrees such that D(LAMBDA)/D(I)=DLON where I is zonal index. DLON is negative for grids indexed westward.
                    WAVEWave fields
                    GMMercator fields
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 53 of file sptgpm.f.

                    + +

                    References splegend(), spsynth(), and spwget().

                    + +

                    Referenced by sptrunm(), and sptrunmv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpm_8f.js b/ver-5.0.0/sptgpm_8f.js new file mode 100644 index 00000000..d1806195 --- /dev/null +++ b/ver-5.0.0/sptgpm_8f.js @@ -0,0 +1,4 @@ +var sptgpm_8f = +[ + [ "sptgpm", "sptgpm_8f.html#a6cffaeaa602eaae5c03166f48065158d", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgpm_8f_source.html b/ver-5.0.0/sptgpm_8f_source.html new file mode 100644 index 00000000..48cf1a00 --- /dev/null +++ b/ver-5.0.0/sptgpm_8f_source.html @@ -0,0 +1,227 @@ + + + + + + + +NCEPLIBS-ip: sptgpm.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgpm.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral scalar to Mercator
                    +
                    3 C> ### Program history log:
                    +
                    4 C> Date | Programmer | Comments
                    +
                    5 C> -----------|------------|---------
                    +
                    6 C> 96-02-29 | IREDELL | Initial.
                    +
                    7 C> 1998-12-15 | IREDELL | OpenMP directives inserted.
                    +
                    8 C> @author IREDELL @date 96-02-29
                    +
                    9 
                    +
                    10 C> This subprogram performs a spherical transform
                    +
                    11 C> from spectral coefficients of scalar quantities
                    +
                    12 C> to scalar fields on a Mercator grid.
                    +
                    13 C> The wave-space can be either triangular or rhomboidal.
                    +
                    14 C> The wave and grid fields may have general indexing,
                    +
                    15 C> but each wave field is in sequential 'ibm order',
                    +
                    16 C> i.e. with zonal wavenumber as the slower index.
                    +
                    17 C> The Mercator grid is identified by the location
                    +
                    18 C> of its first point and by its respective increments.
                    +
                    19 C> The transforms are all multiprocessed over sector points.
                    +
                    20 C> Transform several fields at a time to improve vectorization.
                    +
                    21 C> Subprogram can be called from a multiprocessing environment.
                    +
                    22 C>
                    +
                    23 C> @param IROMB Spectral domain shape
                    +
                    24 C> (0 for triangular, 1 for rhomboidal)
                    +
                    25 C> @param MAXWV Spectral truncation
                    +
                    26 C> @param KMAX Number of fields to transform
                    +
                    27 C> @param MI Number of points in the faster zonal direction
                    +
                    28 C> @param MJ Number of points in the slower merid direction
                    +
                    29 C> @param KWSKIP Skip number between wave fields
                    +
                    30 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    +
                    31 C> @param KGSKIP Skip number between grid fields
                    +
                    32 C> (defaults to MI*MJ if KGSKIP=0)
                    +
                    33 C> @param NISKIP Skip number between grid i-points
                    +
                    34 C> (defaults to 1 if NISKIP=0)
                    +
                    35 C> @param NJSKIP Skip number between grid j-points
                    +
                    36 C> (defaults to MI if NJSKIP=0)
                    +
                    37 C> @param RLAT1 Latitude of the first grid point in degrees
                    +
                    38 C> @param RLON1 Longitude of the first grid point in degrees
                    +
                    39 C> @param DLAT Latitude increment in degrees such that
                    +
                    40 C> D(PHI)/D(J)=DLAT*COS(PHI) where J is meridional index.
                    +
                    41 C> DLAT is negative for grids indexed southward.
                    +
                    42 C> (in terms of grid increment DY valid at latitude RLATI,
                    +
                    43 C> the latitude increment DLAT is determined as
                    +
                    44 C> DLAT=DPR*DY/(RERTH*COS(RLATI/DPR))
                    +
                    45 C> where DPR=180/PI and RERTH is earth's radius)
                    +
                    46 C> @param DLON Longitude increment in degrees such that
                    +
                    47 C> D(LAMBDA)/D(I)=DLON where I is zonal index.
                    +
                    48 C> DLON is negative for grids indexed westward.
                    +
                    49 C> @param WAVE Wave fields
                    +
                    50 C> @param GM Mercator fields
                    +
                    51 C>
                    +
                    52 C> @author IREDELL @date 96-02-29
                    +
                    53  SUBROUTINE sptgpm(IROMB,MAXWV,KMAX,MI,MJ,
                    +
                    54  & KWSKIP,KGSKIP,NISKIP,NJSKIP,
                    +
                    55  & RLAT1,RLON1,DLAT,DLON,WAVE,GM)
                    +
                    56 
                    +
                    57  REAL WAVE(*),GM(*)
                    +
                    58  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    59  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    60  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    61  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    62  INTEGER MP(KMAX)
                    +
                    63  REAL WTOP(2*(MAXWV+1),KMAX)
                    +
                    64  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
                    +
                    65  REAL F(2*MAXWV+3,2,KMAX)
                    +
                    66  REAL CLAT(MJ),SLAT(MJ),CLON(MAXWV,MI),SLON(MAXWV,MI)
                    +
                    67  parameter(rerth=6.3712e6)
                    +
                    68  parameter(pi=3.14159265358979,dpr=180./pi)
                    +
                    69 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    70 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    71  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    72  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    73  mxtop=maxwv+1
                    +
                    74  idim=2*maxwv+3
                    +
                    75  kw=kwskip
                    +
                    76  kg=kgskip
                    +
                    77  ni=niskip
                    +
                    78  nj=njskip
                    +
                    79  IF(kw.EQ.0) kw=2*mx
                    +
                    80  IF(kg.EQ.0) kg=mi*mj
                    +
                    81  IF(ni.EQ.0) ni=1
                    +
                    82  IF(nj.EQ.0) nj=mi
                    +
                    83  DO i=1,mi
                    +
                    84  rlon=mod(rlon1+dlon*(i-1)+3600,360.)
                    +
                    85  DO l=1,maxwv
                    +
                    86  clon(l,i)=cos(l*rlon/dpr)
                    +
                    87  slon(l,i)=sin(l*rlon/dpr)
                    +
                    88  ENDDO
                    +
                    89  ENDDO
                    +
                    90  ye=1-log(tan((rlat1+90)/2/dpr))*dpr/dlat
                    +
                    91  DO j=1,mj
                    +
                    92  rlat=atan(exp(dlat/dpr*(j-ye)))*2*dpr-90
                    +
                    93  clat(j)=cos(rlat/dpr)
                    +
                    94  slat(j)=sin(rlat/dpr)
                    +
                    95  ENDDO
                    +
                    96  mp=0
                    +
                    97 C$OMP PARALLEL DO
                    +
                    98  DO k=1,kmax
                    +
                    99  wtop(1:2*mxtop,k)=0
                    +
                    100  ENDDO
                    +
                    101 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    102 C TRANSFORM TO GRID
                    +
                    103 C$OMP PARALLEL DO PRIVATE(PLN,PLNTOP,F,IJK)
                    +
                    104  DO j=1,mj
                    +
                    105  CALL splegend(iromb,maxwv,slat(j),clat(j),eps,epstop,
                    +
                    106  & pln,plntop)
                    +
                    107  CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
                    +
                    108  & clat(j),pln,plntop,mp,wave,wtop,f)
                    +
                    109  DO k=1,kmax
                    +
                    110  DO i=1,mi
                    +
                    111  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    +
                    112  gm(ijk)=f(1,1,k)
                    +
                    113  ENDDO
                    +
                    114  DO l=1,maxwv
                    +
                    115  DO i=1,mi
                    +
                    116  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    +
                    117  gm(ijk)=gm(ijk)+2.*(f(2*l+1,1,k)*clon(l,i)
                    +
                    118  & -f(2*l+2,1,k)*slon(l,i))
                    +
                    119  ENDDO
                    +
                    120  ENDDO
                    +
                    121  ENDDO
                    +
                    122  ENDDO
                    +
                    123 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    124  END
                    +
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    +
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    +
                    subroutine sptgpm(IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVE, GM)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to sca...
                    Definition: sptgpm.f:56
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpmd_8f.html b/ver-5.0.0/sptgpmd_8f.html new file mode 100644 index 00000000..8471d635 --- /dev/null +++ b/ver-5.0.0/sptgpmd_8f.html @@ -0,0 +1,265 @@ + + + + + + + +NCEPLIBS-ip: sptgpmd.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgpmd.f File Reference
                    +
                    +
                    + +

                    Transform spectral to Mercator gradients. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgpmd (IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVE, XM, YM)
                     This subprogram performs a spherical transform from spectral coefficients of scalar fields to gradient fields on a Mercator grid. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral to Mercator gradients.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgpmd.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgpmd()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgpmd ( IROMB,
                     MAXWV,
                     KMAX,
                     MI,
                     MJ,
                     KWSKIP,
                     KGSKIP,
                     NISKIP,
                     NJSKIP,
                     RLAT1,
                     RLON1,
                     DLAT,
                     DLON,
                    real, dimension(*) WAVE,
                    real, dimension(*) XM,
                    real, dimension(*) YM 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of scalar fields to gradient fields on a Mercator grid.

                    +

                    The wave-space can be either triangular or rhomboidal. The wave and grid fields may have general indexing, but each wave field is in sequential 'IBM order', i.e. with zonal wavenumber as the slower index.

                    +

                    The Mercator grid is identified by the location of its first point and by its respective increments.

                    +

                    The transforms are all multiprocessed over sector points.

                    +

                    Transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    IROMBSpectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVSpectral truncation
                    KMAXNumber of fields to transform
                    MINumber of points in the faster zonal direction
                    MJNumber of points in the slower merid direction
                    KWSKIPSkip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    KGSKIPSkip number between grid fields (defaults to MI*MJ if KGSKIP=0)
                    NISKIPSkip number between grid i-points (defaults to 1 if NISKIP=0)
                    NJSKIPSkip number between grid j-points (defaults to MI if NJSKIP=0)
                    RLAT1Latitude of the first grid point in degrees
                    RLON1Longitude of the first grid point in degrees
                    DLATLatitude increment in degrees such that D(PHI)/D(J)=DLAT*COS(PHI) where J is meridional index. DLAT is negative for grids indexed southward. (in terms of grid increment dy valid at latitude RLATI, the latitude increment DLAT is determined as DLAT=DPR*DY/(RERTH*COS(RLATI/DPR)) where DPR=180/PI and RERTH is Earth's radius)
                    DLONLongitude increment in degrees such that D(LAMBDA)/D(I)=DLON where I is zonal index. DLON is negative for grids indexed westward.
                    WAVEWave fields
                    XMMercator x-gradients
                    YMMercator y-gradients
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 53 of file sptgpmd.f.

                    + +

                    References splaplac(), sptgpmv(), and spwget().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpmd_8f.js b/ver-5.0.0/sptgpmd_8f.js new file mode 100644 index 00000000..37a6a937 --- /dev/null +++ b/ver-5.0.0/sptgpmd_8f.js @@ -0,0 +1,4 @@ +var sptgpmd_8f = +[ + [ "sptgpmd", "sptgpmd_8f.html#af71718c75a2b24b74fa7e1e4318d0539", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgpmd_8f_source.html b/ver-5.0.0/sptgpmd_8f_source.html new file mode 100644 index 00000000..6bacf70f --- /dev/null +++ b/ver-5.0.0/sptgpmd_8f_source.html @@ -0,0 +1,184 @@ + + + + + + + +NCEPLIBS-ip: sptgpmd.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgpmd.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral to Mercator gradients.
                    +
                    3 C> @author Iredell @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram performs a spherical transform
                    +
                    6 C> from spectral coefficients of scalar fields
                    +
                    7 C> to gradient fields on a Mercator grid.
                    +
                    8 C>
                    +
                    9 C> The wave-space can be either triangular or rhomboidal.
                    +
                    10 C> The wave and grid fields may have general indexing,
                    +
                    11 C> but each wave field is in sequential 'IBM order',
                    +
                    12 C> i.e. with zonal wavenumber as the slower index.
                    +
                    13 C>
                    +
                    14 C> The Mercator grid is identified by the location
                    +
                    15 C> of its first point and by its respective increments.
                    +
                    16 C>
                    +
                    17 C> The transforms are all multiprocessed over sector points.
                    +
                    18 C>
                    +
                    19 C> Transform several fields at a time to improve vectorization.
                    +
                    20 C> Subprogram can be called from a multiprocessing environment.
                    +
                    21 C>
                    +
                    22 C> @param IROMB Spectral domain shape
                    +
                    23 C> (0 for triangular, 1 for rhomboidal)
                    +
                    24 C> @param MAXWV Spectral truncation
                    +
                    25 C> @param KMAX Number of fields to transform
                    +
                    26 C> @param MI Number of points in the faster zonal direction
                    +
                    27 C> @param MJ Number of points in the slower merid direction
                    +
                    28 C> @param KWSKIP Skip number between wave fields
                    +
                    29 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    +
                    30 C> @param KGSKIP Skip number between grid fields
                    +
                    31 C> (defaults to MI*MJ if KGSKIP=0)
                    +
                    32 C> @param NISKIP Skip number between grid i-points
                    +
                    33 C> (defaults to 1 if NISKIP=0)
                    +
                    34 C> @param NJSKIP Skip number between grid j-points
                    +
                    35 C> (defaults to MI if NJSKIP=0)
                    +
                    36 C> @param RLAT1 Latitude of the first grid point in degrees
                    +
                    37 C> @param RLON1 Longitude of the first grid point in degrees
                    +
                    38 C> @param DLAT Latitude increment in degrees such that
                    +
                    39 C> D(PHI)/D(J)=DLAT*COS(PHI) where J is meridional index.
                    +
                    40 C> DLAT is negative for grids indexed southward.
                    +
                    41 C> (in terms of grid increment dy valid at latitude RLATI,
                    +
                    42 C> the latitude increment DLAT is determined as
                    +
                    43 C> DLAT=DPR*DY/(RERTH*COS(RLATI/DPR))
                    +
                    44 C> where DPR=180/PI and RERTH is Earth's radius)
                    +
                    45 C> @param DLON Longitude increment in degrees such that
                    +
                    46 C> D(LAMBDA)/D(I)=DLON where I is zonal index.
                    +
                    47 C> DLON is negative for grids indexed westward.
                    +
                    48 C> @param WAVE Wave fields
                    +
                    49 C> @param XM Mercator x-gradients
                    +
                    50 C> @param YM Mercator y-gradients
                    +
                    51 C>
                    +
                    52 C> @author Iredell @date 96-02-29
                    +
                    53  SUBROUTINE sptgpmd(IROMB,MAXWV,KMAX,MI,MJ,
                    +
                    54  & KWSKIP,KGSKIP,NISKIP,NJSKIP,
                    +
                    55  & RLAT1,RLON1,DLAT,DLON,WAVE,XM,YM)
                    +
                    56 
                    +
                    57  REAL WAVE(*),XM(*),YM(*)
                    +
                    58  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    59  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    60  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    61  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    62  REAL WD((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    63  REAL WZ((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    64 
                    +
                    65 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    66  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    67  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    68  mdim=2*mx+1
                    +
                    69  kw=kwskip
                    +
                    70  IF(kw.EQ.0) kw=2*mx
                    +
                    71 
                    +
                    72 C CALCULATE GRADIENTS
                    +
                    73 C$OMP PARALLEL DO PRIVATE(KWS)
                    +
                    74  DO k=1,kmax
                    +
                    75  kws=(k-1)*kw
                    +
                    76  CALL splaplac(iromb,maxwv,enn1,wave(kws+1),wd(1,k),1)
                    +
                    77  wz(1:2*mx,k)=0.
                    +
                    78  ENDDO
                    +
                    79  CALL sptgpmv(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    80  & rlat1,rlon1,dlat,dlon,wd,wz,xm,ym)
                    +
                    81  END
                    +
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    +
                    subroutine sptgpmd(IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVE, XM, YM)
                    This subprogram performs a spherical transform from spectral coefficients of scalar fields to gradien...
                    Definition: sptgpmd.f:56
                    +
                    subroutine sptgpmv(IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVED, WAVEZ, UM, VM)
                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to...
                    Definition: sptgpmv.f:63
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpmv_8f.html b/ver-5.0.0/sptgpmv_8f.html new file mode 100644 index 00000000..2312de75 --- /dev/null +++ b/ver-5.0.0/sptgpmv_8f.html @@ -0,0 +1,285 @@ + + + + + + + +NCEPLIBS-ip: sptgpmv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgpmv.f File Reference
                    +
                    +
                    + +

                    Transform spectral vector to Mercator. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgpmv (IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVED, WAVEZ, UM, VM)
                     This subprogram performs a spherical transform from spectral coefficients of divergences and curls to vector fields on a Mercator grid. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral vector to Mercator.

                    +

                    +Program history log:

                    + + + + + + + +
                    Date Programmer Comments
                    96-02-29 IREDELL Initial.
                    1998-12-15 IREDELL OpenMP directives inserted.
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgpmv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgpmv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgpmv ( IROMB,
                     MAXWV,
                     KMAX,
                     MI,
                     MJ,
                     KWSKIP,
                     KGSKIP,
                     NISKIP,
                     NJSKIP,
                     RLAT1,
                     RLON1,
                     DLAT,
                     DLON,
                    real, dimension(*) WAVED,
                    real, dimension(*) WAVEZ,
                    real, dimension(*) UM,
                    real, dimension(*) VM 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to vector fields on a Mercator grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The wave and grid fields may have general indexing, but each wave field is in sequential 'ibm order', i.e., with zonal wavenumber as the slower index.

                    +

                    The Mercator grid is identified by the location of its first point and by its respective increments.

                    +

                    The transforms are all multiprocessed over sector points. Transform several fields at a time to improve vectorization.

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    IROMBSpectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVSpectral truncation
                    KMAXNumber of fields to transform
                    MINumber of points in the faster zonal direction
                    MJNumber of points in the slower merid direction
                    KWSKIPSkip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    KGSKIPSkip number between grid fields (defaults to MI*MJ if KGSKIP=0)
                    NISKIPSkip number between grid i-points (defaults to 1 if NISKIP=0)
                    NJSKIPSkip number between grid j-points (defaults to MI if NJSKIP=0)
                    RLAT1Latitude of the first grid point in degrees
                    RLON1Longitude of the first grid point in degrees
                    DLATLatitude increment in degrees such that D(PHI)/D(J)=DLAT*COS(PHI) where J is meridional index. DLAT is negative for grids indexed southward. (in terms of grid increment dy valid at latitude RLATI, The latitude increment DLAT is determined as DLAT=DPR*DY/(RERTH*COS(RLATI/DPR)) where DPR=180/PI and RERTH is Earth's radius)
                    DLONlongitude increment in degrees such that D(LAMBDA)/D(I)=DLON where I is zonal index. DLON is negative for grids indexed westward.
                    WAVEDWave divergence fields
                    WAVEZWave vorticity fields
                    UMMercator u-winds
                    VMMercator v-winds
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 60 of file sptgpmv.f.

                    + +

                    References spdz2uv(), splegend(), spsynth(), and spwget().

                    + +

                    Referenced by sptgpmd(), and sptrunmv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpmv_8f.js b/ver-5.0.0/sptgpmv_8f.js new file mode 100644 index 00000000..a46a2628 --- /dev/null +++ b/ver-5.0.0/sptgpmv_8f.js @@ -0,0 +1,4 @@ +var sptgpmv_8f = +[ + [ "sptgpmv", "sptgpmv_8f.html#a15de3accfd448d116324872c8fb1bb17", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgpmv_8f_source.html b/ver-5.0.0/sptgpmv_8f_source.html new file mode 100644 index 00000000..4c03f661 --- /dev/null +++ b/ver-5.0.0/sptgpmv_8f_source.html @@ -0,0 +1,247 @@ + + + + + + + +NCEPLIBS-ip: sptgpmv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgpmv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral vector to Mercator
                    +
                    3 C> ### Program history log:
                    +
                    4 C> Date | Programmer | Comments
                    +
                    5 C> -----|------------|----------
                    +
                    6 C> 96-02-29 | IREDELL | Initial.
                    +
                    7 C> 1998-12-15 | IREDELL | OpenMP directives inserted.
                    +
                    8 C> @author IREDELL @date 96-02-29
                    +
                    9 
                    +
                    10 C> This subprogram performs a spherical transform
                    +
                    11 C> from spectral coefficients of divergences and curls
                    +
                    12 C> to vector fields on a Mercator grid.
                    +
                    13 C>
                    +
                    14 C> The wave-space can be either triangular or rhomboidal.
                    +
                    15 C>
                    +
                    16 C> The wave and grid fields may have general indexing,
                    +
                    17 C> but each wave field is in sequential 'ibm order',
                    +
                    18 C> i.e., with zonal wavenumber as the slower index.
                    +
                    19 C>
                    +
                    20 C> The Mercator grid is identified by the location
                    +
                    21 C> of its first point and by its respective increments.
                    +
                    22 C>
                    +
                    23 C> The transforms are all multiprocessed over sector points.
                    +
                    24 C> Transform several fields at a time to improve vectorization.
                    +
                    25 C>
                    +
                    26 C> Subprogram can be called from a multiprocessing environment.
                    +
                    27 C>
                    +
                    28 C> @param IROMB Spectral domain shape
                    +
                    29 C> (0 for triangular, 1 for rhomboidal)
                    +
                    30 C> @param MAXWV Spectral truncation
                    +
                    31 C> @param KMAX Number of fields to transform
                    +
                    32 C> @param MI Number of points in the faster zonal direction
                    +
                    33 C> @param MJ Number of points in the slower merid direction
                    +
                    34 C> @param KWSKIP Skip number between wave fields
                    +
                    35 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    +
                    36 C> @param KGSKIP Skip number between grid fields
                    +
                    37 C> (defaults to MI*MJ if KGSKIP=0)
                    +
                    38 C> @param NISKIP Skip number between grid i-points
                    +
                    39 C> (defaults to 1 if NISKIP=0)
                    +
                    40 C> @param NJSKIP Skip number between grid j-points
                    +
                    41 C> (defaults to MI if NJSKIP=0)
                    +
                    42 C> @param RLAT1 Latitude of the first grid point in degrees
                    +
                    43 C> @param RLON1 Longitude of the first grid point in degrees
                    +
                    44 C> @param DLAT Latitude increment in degrees such that
                    +
                    45 C> D(PHI)/D(J)=DLAT*COS(PHI) where J is meridional index.
                    +
                    46 C> DLAT is negative for grids indexed southward.
                    +
                    47 C> (in terms of grid increment dy valid at latitude RLATI,
                    +
                    48 C> The latitude increment DLAT is determined as
                    +
                    49 C> DLAT=DPR*DY/(RERTH*COS(RLATI/DPR))
                    +
                    50 C> where DPR=180/PI and RERTH is Earth's radius)
                    +
                    51 C> @param DLON longitude increment in degrees such that
                    +
                    52 C> D(LAMBDA)/D(I)=DLON where I is zonal index.
                    +
                    53 C> DLON is negative for grids indexed westward.
                    +
                    54 C> @param WAVED Wave divergence fields
                    +
                    55 C> @param WAVEZ Wave vorticity fields
                    +
                    56 C> @param UM Mercator u-winds
                    +
                    57 C> @param VM Mercator v-winds
                    +
                    58 C>
                    +
                    59 C> @author IREDELL @date 96-02-29
                    +
                    60  SUBROUTINE sptgpmv(IROMB,MAXWV,KMAX,MI,MJ,
                    +
                    61  & KWSKIP,KGSKIP,NISKIP,NJSKIP,
                    +
                    62  & RLAT1,RLON1,DLAT,DLON,WAVED,WAVEZ,UM,VM)
                    +
                    63 
                    +
                    64  REAL WAVED(*),WAVEZ(*),UM(*),VM(*)
                    +
                    65  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    66  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    67  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    68  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    69  INTEGER MP(2*KMAX)
                    +
                    70  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,2*KMAX)
                    +
                    71  REAL WTOP(2*(MAXWV+1),2*KMAX)
                    +
                    72  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
                    +
                    73  REAL F(2*MAXWV+3,2,2*KMAX)
                    +
                    74  REAL CLAT(MJ),SLAT(MJ),CLON(MAXWV,MI),SLON(MAXWV,MI)
                    +
                    75  parameter(rerth=6.3712e6)
                    +
                    76  parameter(pi=3.14159265358979,dpr=180./pi)
                    +
                    77 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    78 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    79  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    80  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    81  mxtop=maxwv+1
                    +
                    82  mdim=2*mx+1
                    +
                    83  idim=2*maxwv+3
                    +
                    84  kw=kwskip
                    +
                    85  kg=kgskip
                    +
                    86  ni=niskip
                    +
                    87  nj=njskip
                    +
                    88  IF(kw.EQ.0) kw=2*mx
                    +
                    89  IF(kg.EQ.0) kg=mi*mj
                    +
                    90  IF(ni.EQ.0) ni=1
                    +
                    91  IF(nj.EQ.0) nj=mi
                    +
                    92  DO i=1,mi
                    +
                    93  rlon=mod(rlon1+dlon*(i-1)+3600,360.)
                    +
                    94  DO l=1,maxwv
                    +
                    95  clon(l,i)=cos(l*rlon/dpr)
                    +
                    96  slon(l,i)=sin(l*rlon/dpr)
                    +
                    97  ENDDO
                    +
                    98  ENDDO
                    +
                    99  ye=1-log(tan((rlat1+90)/2/dpr))*dpr/dlat
                    +
                    100  DO j=1,mj
                    +
                    101  rlat=atan(exp(dlat/dpr*(j-ye)))*2*dpr-90
                    +
                    102  clat(j)=cos(rlat/dpr)
                    +
                    103  slat(j)=sin(rlat/dpr)
                    +
                    104  ENDDO
                    +
                    105  mp=1
                    +
                    106 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    107 C CALCULATE SPECTRAL WINDS
                    +
                    108 C$OMP PARALLEL DO PRIVATE(KWS)
                    +
                    109  DO k=1,kmax
                    +
                    110  kws=(k-1)*kw
                    +
                    111  CALL spdz2uv(iromb,maxwv,enn1,elonn1,eon,eontop,
                    +
                    112  & waved(kws+1),wavez(kws+1),
                    +
                    113  & w(1,k),w(1,kmax+k),wtop(1,k),wtop(1,kmax+k))
                    +
                    114  ENDDO
                    +
                    115 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    116 C TRANSFORM TO GRID
                    +
                    117 C$OMP PARALLEL DO PRIVATE(PLN,PLNTOP,F,KU,KV,IJK)
                    +
                    118  DO j=1,mj
                    +
                    119  CALL splegend(iromb,maxwv,slat(j),clat(j),eps,epstop,
                    +
                    120  & pln,plntop)
                    +
                    121  CALL spsynth(iromb,maxwv,2*maxwv,idim,mdim,2*mxtop,2*kmax,
                    +
                    122  & clat(j),pln,plntop,mp,w,wtop,f)
                    +
                    123  DO k=1,kmax
                    +
                    124  ku=k
                    +
                    125  kv=k+kmax
                    +
                    126  DO i=1,mi
                    +
                    127  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    +
                    128  um(ijk)=f(1,1,ku)
                    +
                    129  vm(ijk)=f(1,1,kv)
                    +
                    130  ENDDO
                    +
                    131  DO l=1,maxwv
                    +
                    132  DO i=1,mi
                    +
                    133  ijk=(i-1)*ni+(j-1)*nj+(k-1)*kg+1
                    +
                    134  um(ijk)=um(ijk)+2.*(f(2*l+1,1,ku)*clon(l,i)
                    +
                    135  & -f(2*l+2,1,ku)*slon(l,i))
                    +
                    136  vm(ijk)=vm(ijk)+2.*(f(2*l+1,1,kv)*clon(l,i)
                    +
                    137  & -f(2*l+2,1,kv)*slon(l,i))
                    +
                    138  ENDDO
                    +
                    139  ENDDO
                    +
                    140  ENDDO
                    +
                    141  ENDDO
                    +
                    142 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    143  END
                    +
                    subroutine spdz2uv(I, M, ENN1, ELONN1, EON, EONTOP, D, Z, U, V, UTOP, VTOP)
                    Computes the wind components from divergence and vorticity in spectral space.
                    Definition: spdz2uv.f:49
                    +
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    +
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    +
                    subroutine sptgpmv(IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVED, WAVEZ, UM, VM)
                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to...
                    Definition: sptgpmv.f:63
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgps_8f.html b/ver-5.0.0/sptgps_8f.html new file mode 100644 index 00000000..0ea18ca6 --- /dev/null +++ b/ver-5.0.0/sptgps_8f.html @@ -0,0 +1,281 @@ + + + + + + + +NCEPLIBS-ip: sptgps.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgps.f File Reference
                    +
                    +
                    + +

                    Transform spectral scalar to polar stereo. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgps (IROMB, MAXWV, KMAX, NPS, KWSKIP, KGSKIP, NISKIP, NJSKIP, TRUE, XMESH, ORIENT, WAVE, GN, GS)
                     This subprogram performs a spherical transform from spectral coefficients of scalar quantities to scalar fields on a pair of polar stereographic grids. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral scalar to polar stereo.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    96-02-29 Iredell Initial.
                    1998-12-15 Iredell Openmp directives inserted.
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgps.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgps()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgps ( IROMB,
                     MAXWV,
                     KMAX,
                     NPS,
                     KWSKIP,
                     KGSKIP,
                     NISKIP,
                     NJSKIP,
                     TRUE,
                     XMESH,
                     ORIENT,
                    real, dimension(*) WAVE,
                    real, dimension(*) GN,
                    real, dimension(*) GS 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to scalar fields on a pair of polar stereographic grids.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The wave and grid fields may have general indexing, but each wave field is in sequential 'IBM order', i.e. with zonal wavenumber as the slower index.

                    +

                    The two square polar stereographic grids are centered on the respective poles, with the orientation longitude of the southern hemisphere grid 180 degrees opposite that of the northern hemisphere grid.

                    +

                    The transform is made efficient by combining points in eight sectors of each polar stereographic grid,
                    + numbered as in the diagram below.

                    +

                    The pole and the sector boundaries
                    + are treated specially in the code.
                    +

                    +

                    Unfortunately, this approach induces some hairy indexing and code loquacity.

                    +
                    +              \ 4 | 5 /
                    +               \  |  /
                    +              3 \ | / 6
                    +                 |/
                    +              ----+----
                    +                 /|\
                    +              2 / | \ 7
                    +               /  |  \
                    +              / 1 | 8 \
                    + 

                    The transforms are all multiprocessed over sector points.

                    +

                    Transform several fields at a time to improve vectorization.

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    KMAXnumber of fields to transform.
                    NPSodd order of the polar stereographic grids.
                    KWSKIPskip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    KGSKIPskip number between grid fields (defaults to NPS*NPS if KGSKIP=0)
                    NISKIPskip number between grid i-points (defaults to 1 if NISKIP=0)
                    NJSKIPskip number between grid j-points (defaults to NPS if NJSKIP=0)
                    TRUElatitude at which ps grid is true (usually 60.)
                    XMESHgrid length at true latitude (m)
                    ORIENTlongitude at bottom of northern ps grid (southern ps grid will have opposite orientation.)
                    WAVEwave fields
                    GNnorthern polar stereographic fields
                    GSsouthern polar stereographic fields
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 78 of file sptgps.f.

                    + +

                    References splegend(), spsynth(), and spwget().

                    + +

                    Referenced by sptruns(), and sptrunsv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgps_8f.js b/ver-5.0.0/sptgps_8f.js new file mode 100644 index 00000000..8cdfa429 --- /dev/null +++ b/ver-5.0.0/sptgps_8f.js @@ -0,0 +1,4 @@ +var sptgps_8f = +[ + [ "sptgps", "sptgps_8f.html#af06a2dccfa311014fc9f671b14f247b2", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgps_8f_source.html b/ver-5.0.0/sptgps_8f_source.html new file mode 100644 index 00000000..5e1936ad --- /dev/null +++ b/ver-5.0.0/sptgps_8f_source.html @@ -0,0 +1,650 @@ + + + + + + + +NCEPLIBS-ip: sptgps.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgps.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral scalar to polar stereo.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | Iredell | Initial.
                    +
                    8 C> 1998-12-15 | Iredell | Openmp directives inserted.
                    +
                    9 C>
                    +
                    10 C> @author Iredell @date 96-02-29
                    +
                    11 
                    +
                    12 C> This subprogram performs a spherical transform
                    +
                    13 C> from spectral coefficients of scalar quantities
                    +
                    14 C> to scalar fields on a pair of polar stereographic grids.
                    +
                    15 C>
                    +
                    16 C> The wave-space can be either triangular or rhomboidal.
                    +
                    17 C>
                    +
                    18 C> The wave and grid fields may have general indexing,
                    +
                    19 C> but each wave field is in sequential 'IBM order',
                    +
                    20 C> i.e. with zonal wavenumber as the slower index.
                    +
                    21 C>
                    +
                    22 C> The two square polar stereographic grids are centered
                    +
                    23 C> on the respective poles, with the orientation longitude
                    +
                    24 C> of the southern hemisphere grid 180 degrees opposite
                    +
                    25 C> that of the northern hemisphere grid.
                    +
                    26 C>
                    +
                    27 C> The transform is made efficient
                    +
                    28 C> by combining points in eight sectors
                    +
                    29 C> of each polar stereographic grid,
                    +
                    30 C> numbered as in the diagram below.
                    +
                    31 C>
                    +
                    32 C> The pole and the sector boundaries
                    +
                    33 C> are treated specially in the code.
                    +
                    34 C>
                    +
                    35 C> Unfortunately, this approach induces
                    +
                    36 C> some hairy indexing and code loquacity.
                    +
                    37 C>
                    +
                    38 C> <pre>
                    +
                    39 C> \ 4 | 5 /
                    +
                    40 C> \ | /
                    +
                    41 C> 3 \ | / 6
                    +
                    42 C> \|/
                    +
                    43 C> ----+----
                    +
                    44 C> /|\
                    +
                    45 C> 2 / | \ 7
                    +
                    46 C> / | \
                    +
                    47 C> / 1 | 8 \
                    +
                    48 C> </pre>
                    +
                    49 C>
                    +
                    50 C> The transforms are all multiprocessed over sector points.
                    +
                    51 C>
                    +
                    52 C> Transform several fields at a time to improve vectorization.
                    +
                    53 C>
                    +
                    54 C> Subprogram can be called from a multiprocessing environment.
                    +
                    55 C>
                    +
                    56 C> @param IROMB spectral domain shape
                    +
                    57 C> (0 for triangular, 1 for rhomboidal)
                    +
                    58 C> @param MAXWV spectral truncation
                    +
                    59 C> @param KMAX number of fields to transform.
                    +
                    60 C> @param NPS odd order of the polar stereographic grids.
                    +
                    61 C> @param KWSKIP skip number between wave fields
                    +
                    62 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    +
                    63 C> @param KGSKIP skip number between grid fields
                    +
                    64 C> (defaults to NPS*NPS if KGSKIP=0)
                    +
                    65 C> @param NISKIP skip number between grid i-points
                    +
                    66 C> (defaults to 1 if NISKIP=0)
                    +
                    67 C> @param NJSKIP skip number between grid j-points
                    +
                    68 C> (defaults to NPS if NJSKIP=0)
                    +
                    69 C> @param TRUE latitude at which ps grid is true (usually 60.)
                    +
                    70 C> @param XMESH grid length at true latitude (m)
                    +
                    71 C> @param ORIENT longitude at bottom of northern ps grid
                    +
                    72 C> (southern ps grid will have opposite orientation.)
                    +
                    73 C> @param WAVE wave fields
                    +
                    74 C> @param GN northern polar stereographic fields
                    +
                    75 C> @param GS southern polar stereographic fields
                    +
                    76 C>
                    +
                    77 C> @author Iredell @date 96-02-29
                    +
                    78  SUBROUTINE sptgps(IROMB,MAXWV,KMAX,NPS,
                    +
                    79  & KWSKIP,KGSKIP,NISKIP,NJSKIP,
                    +
                    80  & TRUE,XMESH,ORIENT,WAVE,GN,GS)
                    +
                    81 
                    +
                    82  REAL WAVE(*),GN(*),GS(*)
                    +
                    83  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    84  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    85  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    86  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    87  INTEGER MP(KMAX)
                    +
                    88  REAL SLON(MAXWV,8),CLON(MAXWV,8),SROT(0:3),CROT(0:3)
                    +
                    89  REAL WTOP(2*(MAXWV+1),KMAX)
                    +
                    90  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
                    +
                    91  REAL F(2*MAXWV+3,2,KMAX)
                    +
                    92  DATA srot/0.,1.,0.,-1./,crot/1.,0.,-1.,0./
                    +
                    93  parameter(rerth=6.3712e6)
                    +
                    94  parameter(pi=3.14159265358979,dpr=180./pi)
                    +
                    95 
                    +
                    96 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    97  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    98  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    99  mxtop=maxwv+1
                    +
                    100  idim=2*maxwv+3
                    +
                    101  kw=kwskip
                    +
                    102  kg=kgskip
                    +
                    103  ni=niskip
                    +
                    104  nj=njskip
                    +
                    105  IF(kw.EQ.0) kw=2*mx
                    +
                    106  IF(kg.EQ.0) kg=nps*nps
                    +
                    107  IF(ni.EQ.0) ni=1
                    +
                    108  IF(nj.EQ.0) nj=nps
                    +
                    109  mp=0
                    +
                    110  nph=(nps-1)/2
                    +
                    111  gq=((1.+sin(true/dpr))*rerth/xmesh)**2
                    +
                    112 C$OMP PARALLEL DO
                    +
                    113  DO k=1,kmax
                    +
                    114  wtop(1:2*mxtop,k)=0
                    +
                    115  ENDDO
                    +
                    116 
                    +
                    117 C CALCULATE POLE POINT
                    +
                    118  i1=nph+1
                    +
                    119  j1=nph+1
                    +
                    120  ij1=(i1-1)*ni+(j1-1)*nj+1
                    +
                    121  slat1=1.
                    +
                    122  clat1=0.
                    +
                    123  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    124  & pln,plntop)
                    +
                    125  CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
                    +
                    126  & clat1,pln,plntop,mp,wave,wtop,f)
                    +
                    127 CDIR$ IVDEP
                    +
                    128  DO k=1,kmax
                    +
                    129  ijk1=ij1+(k-1)*kg
                    +
                    130  gn(ijk1)=f(1,1,k)
                    +
                    131  gs(ijk1)=f(1,2,k)
                    +
                    132  ENDDO
                    +
                    133 
                    +
                    134 C CALCULATE POINTS ALONG THE ROW AND COLUMN OF THE POLE,
                    +
                    135 C STARTING AT THE ORIENTATION LONGITUDE AND GOING CLOCKWISE.
                    +
                    136 C$OMP PARALLEL DO PRIVATE(I1,J2,I2,J3,I3,J4,I4,J5,I5,J6,I6,J7,I7,J8,I8)
                    +
                    137 C$OMP& PRIVATE(IJ1,IJ2,IJ3,IJ4,IJ5,IJ6,IJ7,IJ8)
                    +
                    138 C$OMP& PRIVATE(IJK1,IJK2,IJK3,IJK4,IJK5,IJK6,IJK7,IJK8)
                    +
                    139 C$OMP& PRIVATE(DJ1,DI1,RQ,RADLON,RADLON1,RADLON2,SLAT1,CLAT1)
                    +
                    140 C$OMP& PRIVATE(PLN,PLNTOP,F,SLON,CLON,LR,LI)
                    +
                    141  DO j1=1,nph
                    +
                    142  i1=nph+1
                    +
                    143  radlon=orient/dpr
                    +
                    144  j3=nps+1-i1
                    +
                    145  i3=j1
                    +
                    146  j5=nps+1-j1
                    +
                    147  i5=nps+1-i1
                    +
                    148  j7=i1
                    +
                    149  i7=nps+1-j1
                    +
                    150  ij1=(i1-1)*ni+(j1-1)*nj+1
                    +
                    151  ij3=(i3-1)*ni+(j3-1)*nj+1
                    +
                    152  ij5=(i5-1)*ni+(j5-1)*nj+1
                    +
                    153  ij7=(i7-1)*ni+(j7-1)*nj+1
                    +
                    154  di1=i1-nph-1
                    +
                    155  dj1=j1-nph-1
                    +
                    156  rq=di1**2+dj1**2
                    +
                    157  slat1=(gq-rq)/(gq+rq)
                    +
                    158  clat1=sqrt(1.-slat1**2)
                    +
                    159  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    160  & pln,plntop)
                    +
                    161  CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
                    +
                    162  & clat1,pln,plntop,mp,wave,wtop,f)
                    +
                    163  DO l=1,maxwv
                    +
                    164  slon(l,1)=sin(l*radlon)
                    +
                    165  clon(l,1)=cos(l*radlon)
                    +
                    166  slon(l,3)=slon(l,1)*crot(mod(1*l,4))
                    +
                    167  & -clon(l,1)*srot(mod(1*l,4))
                    +
                    168  clon(l,3)=clon(l,1)*crot(mod(1*l,4))
                    +
                    169  & +slon(l,1)*srot(mod(1*l,4))
                    +
                    170  slon(l,5)=slon(l,1)*crot(mod(2*l,4))
                    +
                    171  & -clon(l,1)*srot(mod(2*l,4))
                    +
                    172  clon(l,5)=clon(l,1)*crot(mod(2*l,4))
                    +
                    173  & +slon(l,1)*srot(mod(2*l,4))
                    +
                    174  slon(l,7)=slon(l,1)*crot(mod(3*l,4))
                    +
                    175  & -clon(l,1)*srot(mod(3*l,4))
                    +
                    176  clon(l,7)=clon(l,1)*crot(mod(3*l,4))
                    +
                    177  & +slon(l,1)*srot(mod(3*l,4))
                    +
                    178  ENDDO
                    +
                    179 CDIR$ IVDEP
                    +
                    180  DO k=1,kmax
                    +
                    181  ijk1=ij1+(k-1)*kg
                    +
                    182  ijk3=ij3+(k-1)*kg
                    +
                    183  ijk5=ij5+(k-1)*kg
                    +
                    184  ijk7=ij7+(k-1)*kg
                    +
                    185  gn(ijk1)=f(1,1,k)
                    +
                    186  gn(ijk3)=f(1,1,k)
                    +
                    187  gn(ijk5)=f(1,1,k)
                    +
                    188  gn(ijk7)=f(1,1,k)
                    +
                    189  gs(ijk1)=f(1,2,k)
                    +
                    190  gs(ijk3)=f(1,2,k)
                    +
                    191  gs(ijk5)=f(1,2,k)
                    +
                    192  gs(ijk7)=f(1,2,k)
                    +
                    193  ENDDO
                    +
                    194  IF(kmax.EQ.1) THEN
                    +
                    195  DO l=1,maxwv
                    +
                    196  lr=2*l+1
                    +
                    197  li=2*l+2
                    +
                    198  gn(ij1)=gn(ij1)+2*(f(lr,1,1)*clon(l,1)
                    +
                    199  & -f(li,1,1)*slon(l,1))
                    +
                    200  gn(ij3)=gn(ij3)+2*(f(lr,1,1)*clon(l,3)
                    +
                    201  & -f(li,1,1)*slon(l,3))
                    +
                    202  gn(ij5)=gn(ij5)+2*(f(lr,1,1)*clon(l,5)
                    +
                    203  & -f(li,1,1)*slon(l,5))
                    +
                    204  gn(ij7)=gn(ij7)+2*(f(lr,1,1)*clon(l,7)
                    +
                    205  & -f(li,1,1)*slon(l,7))
                    +
                    206  gs(ij1)=gs(ij1)+2*(f(lr,2,1)*clon(l,5)
                    +
                    207  & -f(li,2,1)*slon(l,5))
                    +
                    208  gs(ij3)=gs(ij3)+2*(f(lr,2,1)*clon(l,3)
                    +
                    209  & -f(li,2,1)*slon(l,3))
                    +
                    210  gs(ij5)=gs(ij5)+2*(f(lr,2,1)*clon(l,1)
                    +
                    211  & -f(li,2,1)*slon(l,1))
                    +
                    212  gs(ij7)=gs(ij7)+2*(f(lr,2,1)*clon(l,7)
                    +
                    213  & -f(li,2,1)*slon(l,7))
                    +
                    214  ENDDO
                    +
                    215  ELSE
                    +
                    216  DO l=1,maxwv
                    +
                    217  lr=2*l+1
                    +
                    218  li=2*l+2
                    +
                    219 CDIR$ IVDEP
                    +
                    220  DO k=1,kmax
                    +
                    221  ijk1=ij1+(k-1)*kg
                    +
                    222  ijk3=ij3+(k-1)*kg
                    +
                    223  ijk5=ij5+(k-1)*kg
                    +
                    224  ijk7=ij7+(k-1)*kg
                    +
                    225  gn(ijk1)=gn(ijk1)+2*(f(lr,1,k)*clon(l,1)
                    +
                    226  & -f(li,1,k)*slon(l,1))
                    +
                    227  gn(ijk3)=gn(ijk3)+2*(f(lr,1,k)*clon(l,3)
                    +
                    228  & -f(li,1,k)*slon(l,3))
                    +
                    229  gn(ijk5)=gn(ijk5)+2*(f(lr,1,k)*clon(l,5)
                    +
                    230  & -f(li,1,k)*slon(l,5))
                    +
                    231  gn(ijk7)=gn(ijk7)+2*(f(lr,1,k)*clon(l,7)
                    +
                    232  & -f(li,1,k)*slon(l,7))
                    +
                    233  gs(ijk1)=gs(ijk1)+2*(f(lr,2,k)*clon(l,5)
                    +
                    234  & -f(li,2,k)*slon(l,5))
                    +
                    235  gs(ijk3)=gs(ijk3)+2*(f(lr,2,k)*clon(l,3)
                    +
                    236  & -f(li,2,k)*slon(l,3))
                    +
                    237  gs(ijk5)=gs(ijk5)+2*(f(lr,2,k)*clon(l,1)
                    +
                    238  & -f(li,2,k)*slon(l,1))
                    +
                    239  gs(ijk7)=gs(ijk7)+2*(f(lr,2,k)*clon(l,7)
                    +
                    240  & -f(li,2,k)*slon(l,7))
                    +
                    241  ENDDO
                    +
                    242  ENDDO
                    +
                    243  ENDIF
                    +
                    244  ENDDO
                    +
                    245 
                    +
                    246 C CALCULATE POINTS ON THE MAIN DIAGONALS THROUGH THE POLE,
                    +
                    247 C STARTING CLOCKWISE OF THE ORIENTATION LONGITUDE AND GOING CLOCKWISE.
                    +
                    248 C$OMP PARALLEL DO PRIVATE(I1,J2,I2,J3,I3,J4,I4,J5,I5,J6,I6,J7,I7,J8,I8)
                    +
                    249 C$OMP& PRIVATE(IJ1,IJ2,IJ3,IJ4,IJ5,IJ6,IJ7,IJ8)
                    +
                    250 C$OMP& PRIVATE(IJK1,IJK2,IJK3,IJK4,IJK5,IJK6,IJK7,IJK8)
                    +
                    251 C$OMP& PRIVATE(DJ1,DI1,RQ,RADLON,RADLON1,RADLON2,SLAT1,CLAT1)
                    +
                    252 C$OMP& PRIVATE(PLN,PLNTOP,F,SLON,CLON,LR,LI)
                    +
                    253  DO j1=1,nph
                    +
                    254  i1=j1
                    +
                    255  radlon=(orient-45)/dpr
                    +
                    256  j3=nps+1-i1
                    +
                    257  i3=j1
                    +
                    258  j5=nps+1-j1
                    +
                    259  i5=nps+1-i1
                    +
                    260  j7=i1
                    +
                    261  i7=nps+1-j1
                    +
                    262  ij1=(i1-1)*ni+(j1-1)*nj+1
                    +
                    263  ij3=(i3-1)*ni+(j3-1)*nj+1
                    +
                    264  ij5=(i5-1)*ni+(j5-1)*nj+1
                    +
                    265  ij7=(i7-1)*ni+(j7-1)*nj+1
                    +
                    266  di1=i1-nph-1
                    +
                    267  dj1=j1-nph-1
                    +
                    268  rq=di1**2+dj1**2
                    +
                    269  slat1=(gq-rq)/(gq+rq)
                    +
                    270  clat1=sqrt(1.-slat1**2)
                    +
                    271  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    272  & pln,plntop)
                    +
                    273  CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
                    +
                    274  & clat1,pln,plntop,mp,wave,wtop,f)
                    +
                    275  DO l=1,maxwv
                    +
                    276  slon(l,1)=sin(l*radlon)
                    +
                    277  clon(l,1)=cos(l*radlon)
                    +
                    278  slon(l,3)=slon(l,1)*crot(mod(1*l,4))
                    +
                    279  & -clon(l,1)*srot(mod(1*l,4))
                    +
                    280  clon(l,3)=clon(l,1)*crot(mod(1*l,4))
                    +
                    281  & +slon(l,1)*srot(mod(1*l,4))
                    +
                    282  slon(l,5)=slon(l,1)*crot(mod(2*l,4))
                    +
                    283  & -clon(l,1)*srot(mod(2*l,4))
                    +
                    284  clon(l,5)=clon(l,1)*crot(mod(2*l,4))
                    +
                    285  & +slon(l,1)*srot(mod(2*l,4))
                    +
                    286  slon(l,7)=slon(l,1)*crot(mod(3*l,4))
                    +
                    287  & -clon(l,1)*srot(mod(3*l,4))
                    +
                    288  clon(l,7)=clon(l,1)*crot(mod(3*l,4))
                    +
                    289  & +slon(l,1)*srot(mod(3*l,4))
                    +
                    290  ENDDO
                    +
                    291 CDIR$ IVDEP
                    +
                    292  DO k=1,kmax
                    +
                    293  ijk1=ij1+(k-1)*kg
                    +
                    294  ijk3=ij3+(k-1)*kg
                    +
                    295  ijk5=ij5+(k-1)*kg
                    +
                    296  ijk7=ij7+(k-1)*kg
                    +
                    297  gn(ijk1)=f(1,1,k)
                    +
                    298  gn(ijk3)=f(1,1,k)
                    +
                    299  gn(ijk5)=f(1,1,k)
                    +
                    300  gn(ijk7)=f(1,1,k)
                    +
                    301  gs(ijk1)=f(1,2,k)
                    +
                    302  gs(ijk3)=f(1,2,k)
                    +
                    303  gs(ijk5)=f(1,2,k)
                    +
                    304  gs(ijk7)=f(1,2,k)
                    +
                    305  ENDDO
                    +
                    306  IF(kmax.EQ.1) THEN
                    +
                    307  DO l=1,maxwv
                    +
                    308  lr=2*l+1
                    +
                    309  li=2*l+2
                    +
                    310  gn(ij1)=gn(ij1)+2*(f(lr,1,1)*clon(l,1)
                    +
                    311  & -f(li,1,1)*slon(l,1))
                    +
                    312  gn(ij3)=gn(ij3)+2*(f(lr,1,1)*clon(l,3)
                    +
                    313  & -f(li,1,1)*slon(l,3))
                    +
                    314  gn(ij5)=gn(ij5)+2*(f(lr,1,1)*clon(l,5)
                    +
                    315  & -f(li,1,1)*slon(l,5))
                    +
                    316  gn(ij7)=gn(ij7)+2*(f(lr,1,1)*clon(l,7)
                    +
                    317  & -f(li,1,1)*slon(l,7))
                    +
                    318  gs(ij1)=gs(ij1)+2*(f(lr,2,1)*clon(l,3)
                    +
                    319  & -f(li,2,1)*slon(l,3))
                    +
                    320  gs(ij3)=gs(ij3)+2*(f(lr,2,1)*clon(l,1)
                    +
                    321  & -f(li,2,1)*slon(l,1))
                    +
                    322  gs(ij5)=gs(ij5)+2*(f(lr,2,1)*clon(l,7)
                    +
                    323  & -f(li,2,1)*slon(l,7))
                    +
                    324  gs(ij7)=gs(ij7)+2*(f(lr,2,1)*clon(l,5)
                    +
                    325  & -f(li,2,1)*slon(l,5))
                    +
                    326  ENDDO
                    +
                    327  ELSE
                    +
                    328  DO l=1,maxwv
                    +
                    329  lr=2*l+1
                    +
                    330  li=2*l+2
                    +
                    331 CDIR$ IVDEP
                    +
                    332  DO k=1,kmax
                    +
                    333  ijk1=ij1+(k-1)*kg
                    +
                    334  ijk3=ij3+(k-1)*kg
                    +
                    335  ijk5=ij5+(k-1)*kg
                    +
                    336  ijk7=ij7+(k-1)*kg
                    +
                    337  gn(ijk1)=gn(ijk1)+2*(f(lr,1,k)*clon(l,1)
                    +
                    338  & -f(li,1,k)*slon(l,1))
                    +
                    339  gn(ijk3)=gn(ijk3)+2*(f(lr,1,k)*clon(l,3)
                    +
                    340  & -f(li,1,k)*slon(l,3))
                    +
                    341  gn(ijk5)=gn(ijk5)+2*(f(lr,1,k)*clon(l,5)
                    +
                    342  & -f(li,1,k)*slon(l,5))
                    +
                    343  gn(ijk7)=gn(ijk7)+2*(f(lr,1,k)*clon(l,7)
                    +
                    344  & -f(li,1,k)*slon(l,7))
                    +
                    345  gs(ijk1)=gs(ijk1)+2*(f(lr,2,k)*clon(l,3)
                    +
                    346  & -f(li,2,k)*slon(l,3))
                    +
                    347  gs(ijk3)=gs(ijk3)+2*(f(lr,2,k)*clon(l,1)
                    +
                    348  & -f(li,2,k)*slon(l,1))
                    +
                    349  gs(ijk5)=gs(ijk5)+2*(f(lr,2,k)*clon(l,7)
                    +
                    350  & -f(li,2,k)*slon(l,7))
                    +
                    351  gs(ijk7)=gs(ijk7)+2*(f(lr,2,k)*clon(l,5)
                    +
                    352  & -f(li,2,k)*slon(l,5))
                    +
                    353  ENDDO
                    +
                    354  ENDDO
                    +
                    355  ENDIF
                    +
                    356  ENDDO
                    +
                    357 
                    +
                    358 C CALCULATE THE REMAINDER OF THE POLAR STEREOGRAPHIC DOMAIN,
                    +
                    359 C STARTING AT THE SECTOR JUST CLOCKWISE OF THE ORIENTATION LONGITUDE
                    +
                    360 C AND GOING CLOCKWISE UNTIL ALL EIGHT SECTORS ARE DONE.
                    +
                    361 C$OMP PARALLEL DO PRIVATE(I1,J2,I2,J3,I3,J4,I4,J5,I5,J6,I6,J7,I7,J8,I8)
                    +
                    362 C$OMP& PRIVATE(IJ1,IJ2,IJ3,IJ4,IJ5,IJ6,IJ7,IJ8)
                    +
                    363 C$OMP& PRIVATE(IJK1,IJK2,IJK3,IJK4,IJK5,IJK6,IJK7,IJK8)
                    +
                    364 C$OMP& PRIVATE(DJ1,DI1,RQ,RADLON,RADLON1,RADLON2,SLAT1,CLAT1)
                    +
                    365 C$OMP& PRIVATE(PLN,PLNTOP,F,SLON,CLON,LR,LI)
                    +
                    366  DO j1=1,nph-1
                    +
                    367  DO i1=j1+1,nph
                    +
                    368  j2=i1
                    +
                    369  i2=j1
                    +
                    370  j3=nps+1-i1
                    +
                    371  i3=j1
                    +
                    372  j4=nps+1-j1
                    +
                    373  i4=i1
                    +
                    374  j5=nps+1-j1
                    +
                    375  i5=nps+1-i1
                    +
                    376  j6=nps+1-i1
                    +
                    377  i6=nps+1-j1
                    +
                    378  j7=i1
                    +
                    379  i7=nps+1-j1
                    +
                    380  j8=j1
                    +
                    381  i8=nps+1-i1
                    +
                    382  ij1=(i1-1)*ni+(j1-1)*nj+1
                    +
                    383  ij2=(i2-1)*ni+(j2-1)*nj+1
                    +
                    384  ij3=(i3-1)*ni+(j3-1)*nj+1
                    +
                    385  ij4=(i4-1)*ni+(j4-1)*nj+1
                    +
                    386  ij5=(i5-1)*ni+(j5-1)*nj+1
                    +
                    387  ij6=(i6-1)*ni+(j6-1)*nj+1
                    +
                    388  ij7=(i7-1)*ni+(j7-1)*nj+1
                    +
                    389  ij8=(i8-1)*ni+(j8-1)*nj+1
                    +
                    390  di1=i1-nph-1
                    +
                    391  dj1=j1-nph-1
                    +
                    392  rq=di1**2+dj1**2
                    +
                    393  slat1=(gq-rq)/(gq+rq)
                    +
                    394  clat1=sqrt(1.-slat1**2)
                    +
                    395  radlon1=orient/dpr+atan(-di1/dj1)
                    +
                    396  radlon2=(orient-45)/dpr*2-radlon1
                    +
                    397  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    398  & pln,plntop)
                    +
                    399  CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
                    +
                    400  & clat1,pln,plntop,mp,wave,wtop,f)
                    +
                    401  DO l=1,maxwv
                    +
                    402  slon(l,1)=sin(l*radlon1)
                    +
                    403  clon(l,1)=cos(l*radlon1)
                    +
                    404  slon(l,2)=sin(l*radlon2)
                    +
                    405  clon(l,2)=cos(l*radlon2)
                    +
                    406  slon(l,3)=slon(l,1)*crot(mod(1*l,4))
                    +
                    407  & -clon(l,1)*srot(mod(1*l,4))
                    +
                    408  clon(l,3)=clon(l,1)*crot(mod(1*l,4))
                    +
                    409  & +slon(l,1)*srot(mod(1*l,4))
                    +
                    410  slon(l,4)=slon(l,2)*crot(mod(1*l,4))
                    +
                    411  & -clon(l,2)*srot(mod(1*l,4))
                    +
                    412  clon(l,4)=clon(l,2)*crot(mod(1*l,4))
                    +
                    413  & +slon(l,2)*srot(mod(1*l,4))
                    +
                    414  slon(l,5)=slon(l,1)*crot(mod(2*l,4))
                    +
                    415  & -clon(l,1)*srot(mod(2*l,4))
                    +
                    416  clon(l,5)=clon(l,1)*crot(mod(2*l,4))
                    +
                    417  & +slon(l,1)*srot(mod(2*l,4))
                    +
                    418  slon(l,6)=slon(l,2)*crot(mod(2*l,4))
                    +
                    419  & -clon(l,2)*srot(mod(2*l,4))
                    +
                    420  clon(l,6)=clon(l,2)*crot(mod(2*l,4))
                    +
                    421  & +slon(l,2)*srot(mod(2*l,4))
                    +
                    422  slon(l,7)=slon(l,1)*crot(mod(3*l,4))
                    +
                    423  & -clon(l,1)*srot(mod(3*l,4))
                    +
                    424  clon(l,7)=clon(l,1)*crot(mod(3*l,4))
                    +
                    425  & +slon(l,1)*srot(mod(3*l,4))
                    +
                    426  slon(l,8)=slon(l,2)*crot(mod(3*l,4))
                    +
                    427  & -clon(l,2)*srot(mod(3*l,4))
                    +
                    428  clon(l,8)=clon(l,2)*crot(mod(3*l,4))
                    +
                    429  & +slon(l,2)*srot(mod(3*l,4))
                    +
                    430  ENDDO
                    +
                    431 CDIR$ IVDEP
                    +
                    432  DO k=1,kmax
                    +
                    433  ijk1=ij1+(k-1)*kg
                    +
                    434  ijk2=ij2+(k-1)*kg
                    +
                    435  ijk3=ij3+(k-1)*kg
                    +
                    436  ijk4=ij4+(k-1)*kg
                    +
                    437  ijk5=ij5+(k-1)*kg
                    +
                    438  ijk6=ij6+(k-1)*kg
                    +
                    439  ijk7=ij7+(k-1)*kg
                    +
                    440  ijk8=ij8+(k-1)*kg
                    +
                    441  gn(ijk1)=f(1,1,k)
                    +
                    442  gn(ijk2)=f(1,1,k)
                    +
                    443  gn(ijk3)=f(1,1,k)
                    +
                    444  gn(ijk4)=f(1,1,k)
                    +
                    445  gn(ijk5)=f(1,1,k)
                    +
                    446  gn(ijk6)=f(1,1,k)
                    +
                    447  gn(ijk7)=f(1,1,k)
                    +
                    448  gn(ijk8)=f(1,1,k)
                    +
                    449  gs(ijk1)=f(1,2,k)
                    +
                    450  gs(ijk2)=f(1,2,k)
                    +
                    451  gs(ijk3)=f(1,2,k)
                    +
                    452  gs(ijk4)=f(1,2,k)
                    +
                    453  gs(ijk5)=f(1,2,k)
                    +
                    454  gs(ijk6)=f(1,2,k)
                    +
                    455  gs(ijk7)=f(1,2,k)
                    +
                    456  gs(ijk8)=f(1,2,k)
                    +
                    457  ENDDO
                    +
                    458  IF(kmax.EQ.1) THEN
                    +
                    459  DO l=1,maxwv
                    +
                    460  lr=2*l+1
                    +
                    461  li=2*l+2
                    +
                    462  gn(ij1)=gn(ij1)+2*(f(lr,1,1)*clon(l,1)
                    +
                    463  & -f(li,1,1)*slon(l,1))
                    +
                    464  gn(ij2)=gn(ij2)+2*(f(lr,1,1)*clon(l,2)
                    +
                    465  & -f(li,1,1)*slon(l,2))
                    +
                    466  gn(ij3)=gn(ij3)+2*(f(lr,1,1)*clon(l,3)
                    +
                    467  & -f(li,1,1)*slon(l,3))
                    +
                    468  gn(ij4)=gn(ij4)+2*(f(lr,1,1)*clon(l,4)
                    +
                    469  & -f(li,1,1)*slon(l,4))
                    +
                    470  gn(ij5)=gn(ij5)+2*(f(lr,1,1)*clon(l,5)
                    +
                    471  & -f(li,1,1)*slon(l,5))
                    +
                    472  gn(ij6)=gn(ij6)+2*(f(lr,1,1)*clon(l,6)
                    +
                    473  & -f(li,1,1)*slon(l,6))
                    +
                    474  gn(ij7)=gn(ij7)+2*(f(lr,1,1)*clon(l,7)
                    +
                    475  & -f(li,1,1)*slon(l,7))
                    +
                    476  gn(ij8)=gn(ij8)+2*(f(lr,1,1)*clon(l,8)
                    +
                    477  & -f(li,1,1)*slon(l,8))
                    +
                    478  gs(ij1)=gs(ij1)+2*(f(lr,2,1)*clon(l,4)
                    +
                    479  & -f(li,2,1)*slon(l,4))
                    +
                    480  gs(ij2)=gs(ij2)+2*(f(lr,2,1)*clon(l,3)
                    +
                    481  & -f(li,2,1)*slon(l,3))
                    +
                    482  gs(ij3)=gs(ij3)+2*(f(lr,2,1)*clon(l,2)
                    +
                    483  & -f(li,2,1)*slon(l,2))
                    +
                    484  gs(ij4)=gs(ij4)+2*(f(lr,2,1)*clon(l,1)
                    +
                    485  & -f(li,2,1)*slon(l,1))
                    +
                    486  gs(ij5)=gs(ij5)+2*(f(lr,2,1)*clon(l,8)
                    +
                    487  & -f(li,2,1)*slon(l,8))
                    +
                    488  gs(ij6)=gs(ij6)+2*(f(lr,2,1)*clon(l,7)
                    +
                    489  & -f(li,2,1)*slon(l,7))
                    +
                    490  gs(ij7)=gs(ij7)+2*(f(lr,2,1)*clon(l,6)
                    +
                    491  & -f(li,2,1)*slon(l,6))
                    +
                    492  gs(ij8)=gs(ij8)+2*(f(lr,2,1)*clon(l,5)
                    +
                    493  & -f(li,2,1)*slon(l,5))
                    +
                    494  ENDDO
                    +
                    495  ELSE
                    +
                    496  DO l=1,maxwv
                    +
                    497  lr=2*l+1
                    +
                    498  li=2*l+2
                    +
                    499 CDIR$ IVDEP
                    +
                    500  DO k=1,kmax
                    +
                    501  ijk1=ij1+(k-1)*kg
                    +
                    502  ijk2=ij2+(k-1)*kg
                    +
                    503  ijk3=ij3+(k-1)*kg
                    +
                    504  ijk4=ij4+(k-1)*kg
                    +
                    505  ijk5=ij5+(k-1)*kg
                    +
                    506  ijk6=ij6+(k-1)*kg
                    +
                    507  ijk7=ij7+(k-1)*kg
                    +
                    508  ijk8=ij8+(k-1)*kg
                    +
                    509  gn(ijk1)=gn(ijk1)+2*(f(lr,1,k)*clon(l,1)
                    +
                    510  & -f(li,1,k)*slon(l,1))
                    +
                    511  gn(ijk2)=gn(ijk2)+2*(f(lr,1,k)*clon(l,2)
                    +
                    512  & -f(li,1,k)*slon(l,2))
                    +
                    513  gn(ijk3)=gn(ijk3)+2*(f(lr,1,k)*clon(l,3)
                    +
                    514  & -f(li,1,k)*slon(l,3))
                    +
                    515  gn(ijk4)=gn(ijk4)+2*(f(lr,1,k)*clon(l,4)
                    +
                    516  & -f(li,1,k)*slon(l,4))
                    +
                    517  gn(ijk5)=gn(ijk5)+2*(f(lr,1,k)*clon(l,5)
                    +
                    518  & -f(li,1,k)*slon(l,5))
                    +
                    519  gn(ijk6)=gn(ijk6)+2*(f(lr,1,k)*clon(l,6)
                    +
                    520  & -f(li,1,k)*slon(l,6))
                    +
                    521  gn(ijk7)=gn(ijk7)+2*(f(lr,1,k)*clon(l,7)
                    +
                    522  & -f(li,1,k)*slon(l,7))
                    +
                    523  gn(ijk8)=gn(ijk8)+2*(f(lr,1,k)*clon(l,8)
                    +
                    524  & -f(li,1,k)*slon(l,8))
                    +
                    525  gs(ijk1)=gs(ijk1)+2*(f(lr,2,k)*clon(l,4)
                    +
                    526  & -f(li,2,k)*slon(l,4))
                    +
                    527  gs(ijk2)=gs(ijk2)+2*(f(lr,2,k)*clon(l,3)
                    +
                    528  & -f(li,2,k)*slon(l,3))
                    +
                    529  gs(ijk3)=gs(ijk3)+2*(f(lr,2,k)*clon(l,2)
                    +
                    530  & -f(li,2,k)*slon(l,2))
                    +
                    531  gs(ijk4)=gs(ijk4)+2*(f(lr,2,k)*clon(l,1)
                    +
                    532  & -f(li,2,k)*slon(l,1))
                    +
                    533  gs(ijk5)=gs(ijk5)+2*(f(lr,2,k)*clon(l,8)
                    +
                    534  & -f(li,2,k)*slon(l,8))
                    +
                    535  gs(ijk6)=gs(ijk6)+2*(f(lr,2,k)*clon(l,7)
                    +
                    536  & -f(li,2,k)*slon(l,7))
                    +
                    537  gs(ijk7)=gs(ijk7)+2*(f(lr,2,k)*clon(l,6)
                    +
                    538  & -f(li,2,k)*slon(l,6))
                    +
                    539  gs(ijk8)=gs(ijk8)+2*(f(lr,2,k)*clon(l,5)
                    +
                    540  & -f(li,2,k)*slon(l,5))
                    +
                    541  ENDDO
                    +
                    542  ENDDO
                    +
                    543  ENDIF
                    +
                    544  ENDDO
                    +
                    545  ENDDO
                    +
                    546 
                    +
                    547  END
                    +
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    +
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    +
                    subroutine sptgps(IROMB, MAXWV, KMAX, NPS, KWSKIP, KGSKIP, NISKIP, NJSKIP, TRUE, XMESH, ORIENT, WAVE, GN, GS)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to sca...
                    Definition: sptgps.f:81
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpsd_8f.html b/ver-5.0.0/sptgpsd_8f.html new file mode 100644 index 00000000..887d8868 --- /dev/null +++ b/ver-5.0.0/sptgpsd_8f.html @@ -0,0 +1,282 @@ + + + + + + + +NCEPLIBS-ip: sptgpsd.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgpsd.f File Reference
                    +
                    +
                    + +

                    Transform spectral to polar stereographic gradients. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgpsd (IROMB, MAXWV, KMAX, NPS, KWSKIP, KGSKIP, NISKIP, NJSKIP, TRUE, XMESH, ORIENT, WAVE, XN, YN, XS, YS)
                     This subprogram performs a spherical transform from spectral coefficients of scalar fields to gradient fields on a pair of polar stereographic grids. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral to polar stereographic gradients.

                    +

                    +Program history log:

                    + + + + + + + +
                    Date Programmer Comments
                    96-02-29 IREDELL Initial.
                    1998-12-15 IREDELL OpenMP directives inserted.
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgpsd.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgpsd()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgpsd ( IROMB,
                     MAXWV,
                     KMAX,
                     NPS,
                     KWSKIP,
                     KGSKIP,
                     NISKIP,
                     NJSKIP,
                     TRUE,
                     XMESH,
                     ORIENT,
                    real, dimension(*) WAVE,
                    real, dimension(*) XN,
                    real, dimension(*) YN,
                    real, dimension(*) XS,
                    real, dimension(*) YS 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of scalar fields to gradient fields on a pair of polar stereographic grids.

                    +

                    The wave-space can be either triangular or rhomboidal. The wave and grid fields may have general indexing, but each wave field is in sequential 'ibm order', i.e., with zonal wavenumber as the slower index. The two square polar stereographic grids are centered on the respective poles, with the orientation longitude of the southern hemisphere grid 180 degrees opposite that of the northern hemisphere grid. The vectors are automatically rotated to be resolved relative to the respective polar stereographic grids.

                    +

                    The transform is made efficient by combining points in eight sectors of each polar stereographic grid, numbered as in the following diagram. The pole and the sector boundaries are treated specially in the code. Unfortunately, this approach induces some hairy indexing and code loquacity, for which the developer apologizes.

                    +
                       \ 4 | 5 /
                    +    \  |  /
                    +   3 \ | / 6
                    +      \|/
                    +   ----+----
                    +      /|\
                    +   2 / | \ 7
                    +    /  |  \
                    +   / 1 | 8 \

                    The transforms are all multiprocessed over sector points. transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + +
                    IROMBSpectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVSpectral truncation
                    KMAXNumber of fields to transform
                    NPSOdd order of the polar stereographic grids
                    KWSKIPSkip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    KGSKIPSkip number between grid fields (defaults to NPS*NPS if KGSKIP=0)
                    NISKIPSkip number between grid i-points (defaults to 1 if NISKIP=0)
                    NJSKIPSkip number between grid j-points (defaults to NPS if NJSKIP=0)
                    TRUELatitude at which PS grid is true (usually 60.)
                    XMESHGrid length at true latitude (M)
                    ORIENTLongitude at bottom of northern PS grid (southern PS grid will have opposite orientation.)
                    WAVEWave fields
                    XNNorthern polar stereographic x-gradients
                    YNNorthern polar stereographic y-gradients
                    XSSouthern polar stereographic x-gradients
                    YSSouthern polar stereographic y-gradients
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 71 of file sptgpsd.f.

                    + +

                    References splaplac(), sptgpsv(), and spwget().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpsd_8f.js b/ver-5.0.0/sptgpsd_8f.js new file mode 100644 index 00000000..1b5e1ff3 --- /dev/null +++ b/ver-5.0.0/sptgpsd_8f.js @@ -0,0 +1,4 @@ +var sptgpsd_8f = +[ + [ "sptgpsd", "sptgpsd_8f.html#ad6d10c3360c47558a8116b2f5666ed30", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgpsd_8f_source.html b/ver-5.0.0/sptgpsd_8f_source.html new file mode 100644 index 00000000..3c361ef9 --- /dev/null +++ b/ver-5.0.0/sptgpsd_8f_source.html @@ -0,0 +1,203 @@ + + + + + + + +NCEPLIBS-ip: sptgpsd.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgpsd.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral to polar stereographic gradients
                    +
                    3 C> ### Program history log:
                    +
                    4 C> Date | Programmer | Comments
                    +
                    5 C> -----|------------|----------
                    +
                    6 C> 96-02-29 | IREDELL | Initial.
                    +
                    7 C> 1998-12-15 | IREDELL | OpenMP directives inserted.
                    +
                    8 C> @author IREDELL @date 96-02-29
                    +
                    9 
                    +
                    10 C> This subprogram performs a spherical transform
                    +
                    11 C> from spectral coefficients of scalar fields
                    +
                    12 C> to gradient fields on a pair of polar stereographic grids.
                    +
                    13 C> The wave-space can be either triangular or rhomboidal.
                    +
                    14 C> The wave and grid fields may have general indexing,
                    +
                    15 C> but each wave field is in sequential 'ibm order',
                    +
                    16 C> i.e., with zonal wavenumber as the slower index.
                    +
                    17 C> The two square polar stereographic grids are centered
                    +
                    18 C> on the respective poles, with the orientation longitude
                    +
                    19 C> of the southern hemisphere grid 180 degrees opposite
                    +
                    20 C> that of the northern hemisphere grid.
                    +
                    21 C> The vectors are automatically rotated to be resolved
                    +
                    22 C> relative to the respective polar stereographic grids.
                    +
                    23 C>
                    +
                    24 C> The transform is made efficient by combining points in eight
                    +
                    25 C> sectors of each polar stereographic grid, numbered as in the
                    +
                    26 C> following diagram. The pole and the sector boundaries are
                    +
                    27 C> treated specially in the code. Unfortunately, this approach
                    +
                    28 C> induces some hairy indexing and code loquacity, for which
                    +
                    29 C> the developer apologizes.
                    +
                    30 C>
                    +
                    31 C> \verbatim
                    +
                    32 C> \ 4 | 5 /
                    +
                    33 C> \ | /
                    +
                    34 C> 3 \ | / 6
                    +
                    35 C> \|/
                    +
                    36 C> ----+----
                    +
                    37 C> /|\
                    +
                    38 C> 2 / | \ 7
                    +
                    39 C> / | \
                    +
                    40 C> / 1 | 8 \
                    +
                    41 C> \endverbatim
                    +
                    42 C>
                    +
                    43 C> The transforms are all multiprocessed over sector points.
                    +
                    44 C> transform several fields at a time to improve vectorization.
                    +
                    45 C> Subprogram can be called from a multiprocessing environment.
                    +
                    46 C>
                    +
                    47 C> @param IROMB Spectral domain shape
                    +
                    48 C> (0 for triangular, 1 for rhomboidal)
                    +
                    49 C> @param MAXWV Spectral truncation
                    +
                    50 C> @param KMAX Number of fields to transform
                    +
                    51 C> @param NPS Odd order of the polar stereographic grids
                    +
                    52 C> @param KWSKIP Skip number between wave fields
                    +
                    53 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    +
                    54 C> @param KGSKIP Skip number between grid fields
                    +
                    55 C> (defaults to NPS*NPS if KGSKIP=0)
                    +
                    56 C> @param NISKIP Skip number between grid i-points
                    +
                    57 C> (defaults to 1 if NISKIP=0)
                    +
                    58 C> @param NJSKIP Skip number between grid j-points
                    +
                    59 C> (defaults to NPS if NJSKIP=0)
                    +
                    60 C> @param TRUE Latitude at which PS grid is true (usually 60.)
                    +
                    61 C> @param XMESH Grid length at true latitude (M)
                    +
                    62 C> @param ORIENT Longitude at bottom of northern PS grid
                    +
                    63 C> (southern PS grid will have opposite orientation.)
                    +
                    64 C> @param WAVE Wave fields
                    +
                    65 C> @param XN Northern polar stereographic x-gradients
                    +
                    66 C> @param YN Northern polar stereographic y-gradients
                    +
                    67 C> @param XS Southern polar stereographic x-gradients
                    +
                    68 C> @param YS Southern polar stereographic y-gradients
                    +
                    69 C>
                    +
                    70 C> @author IREDELL @date 96-02-29
                    +
                    71  SUBROUTINE sptgpsd(IROMB,MAXWV,KMAX,NPS,
                    +
                    72  & KWSKIP,KGSKIP,NISKIP,NJSKIP,
                    +
                    73  & TRUE,XMESH,ORIENT,WAVE,XN,YN,XS,YS)
                    +
                    74 
                    +
                    75  REAL WAVE(*),XN(*),YN(*),XS(*),YS(*)
                    +
                    76  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    77  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    78  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    79  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    80  REAL WD((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    81  REAL WZ((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    82 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    83 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    84  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    85  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    86  mdim=2*mx+1
                    +
                    87  kw=kwskip
                    +
                    88  IF(kw.EQ.0) kw=2*mx
                    +
                    89 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    90 C CALCULATE GRADIENTS
                    +
                    91 C$OMP PARALLEL DO PRIVATE(KWS)
                    +
                    92  DO k=1,kmax
                    +
                    93  kws=(k-1)*kw
                    +
                    94  CALL splaplac(iromb,maxwv,enn1,wave(kws+1),wd(1,k),1)
                    +
                    95  wz(1:2*mx,k)=0.
                    +
                    96  ENDDO
                    +
                    97  CALL sptgpsv(iromb,maxwv,kmax,nps,mdim,kgskip,niskip,njskip,
                    +
                    98  & true,xmesh,orient,wd,wz,xn,yn,xs,ys)
                    +
                    99 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    100  END
                    +
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    +
                    subroutine sptgpsd(IROMB, MAXWV, KMAX, NPS, KWSKIP, KGSKIP, NISKIP, NJSKIP, TRUE, XMESH, ORIENT, WAVE, XN, YN, XS, YS)
                    This subprogram performs a spherical transform from spectral coefficients of scalar fields to gradien...
                    Definition: sptgpsd.f:74
                    +
                    subroutine sptgpsv(IROMB, MAXWV, KMAX, NPS, KWSKIP, KGSKIP, NISKIP, NJSKIP, TRUE, XMESH, ORIENT, WAVED, WAVEZ, UN, VN, US, VS)
                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to...
                    Definition: sptgpsv.f:83
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpsv_8f.html b/ver-5.0.0/sptgpsv_8f.html new file mode 100644 index 00000000..a16d2f9a --- /dev/null +++ b/ver-5.0.0/sptgpsv_8f.html @@ -0,0 +1,299 @@ + + + + + + + +NCEPLIBS-ip: sptgpsv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgpsv.f File Reference
                    +
                    +
                    + +

                    Transform spectral vector to polar stereo. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgpsv (IROMB, MAXWV, KMAX, NPS, KWSKIP, KGSKIP, NISKIP, NJSKIP, TRUE, XMESH, ORIENT, WAVED, WAVEZ, UN, VN, US, VS)
                     This subprogram performs a spherical transform from spectral coefficients of divergences and curls to vector fields on a pair of polar stereographic grids. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral vector to polar stereo.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    96-02-29 Iredell Initial.
                    1998-12-15 Iredell Openmp directives inserted.
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgpsv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgpsv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgpsv ( IROMB,
                     MAXWV,
                     KMAX,
                     NPS,
                     KWSKIP,
                     KGSKIP,
                     NISKIP,
                     NJSKIP,
                     TRUE,
                     XMESH,
                     ORIENT,
                    real, dimension(*) WAVED,
                    real, dimension(*) WAVEZ,
                    real, dimension(*) UN,
                    real, dimension(*) VN,
                    real, dimension(*) US,
                    real, dimension(*) VS 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to vector fields on a pair of polar stereographic grids.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The wave and grid fields may have general indexing, but each wave field is in sequential 'IBM order', i.e. with zonal wavenumber as the slower index.

                    +

                    The two square polar stereographic grids are centered on the respective poles, with the orientation longitude of the southern hemisphere grid 180 degrees opposite that of the northern hemisphere grid.

                    +

                    The vectors are automatically rotated to be resolved relative to the respective polar stereographic grids.

                    +

                    The transform is made efficient by combining points in eight sectors of each polar stereographic grid,
                    + numbered as in the diagram below. The pole and the sector boundaries
                    + are treated specially in the code.
                    + Unfortunately, this approach induces some hairy indexing and code loquacity, for which the developer apologizes.

                    +
                    +              \ 4 | 5 /
                    +               \  |  /
                    +              3 \ | / 6
                    +                 |/
                    +              ----+----
                    +                 /|\
                    +              2 / | \ 7
                    +               /  |  \
                    +              / 1 | 8 \
                    + 

                    The transforms are all multiprocessed over sector points. transform several fields at a time to improve vectorization. subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    KMAXnumber of fields to transform.
                    NPSodd order of the polar stereographic grids
                    KWSKIPskip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    KGSKIPskip number between grid fields (defaults to NPS*NPS if KGSKIP=0)
                    NISKIPskip number between grid i-points (defaults to 1 if NISKIP=0)
                    NJSKIPskip number between grid j-points (defaults to NPS if NJSKIP=0)
                    TRUElatitude at which ps grid is true (usually 60.)
                    XMESHgrid length at true latitude (m)
                    ORIENTlongitude at bottom of northern ps grid (southern ps grid will have opposite orientation.)
                    WAVEDwave divergence fields
                    WAVEZwave vorticity fields
                    UNnorthern polar stereographic u-winds
                    VNnorthern polar stereographic v-winds
                    USsouthern polar stereographic u-winds
                    VSsouthern polar stereographic v-winds
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 80 of file sptgpsv.f.

                    + +

                    References spdz2uv(), splegend(), spsynth(), and spwget().

                    + +

                    Referenced by sptgpsd(), and sptrunsv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpsv_8f.js b/ver-5.0.0/sptgpsv_8f.js new file mode 100644 index 00000000..ec835636 --- /dev/null +++ b/ver-5.0.0/sptgpsv_8f.js @@ -0,0 +1,4 @@ +var sptgpsv_8f = +[ + [ "sptgpsv", "sptgpsv_8f.html#af2bf2335047ec277730564dbfa859079", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgpsv_8f_source.html b/ver-5.0.0/sptgpsv_8f_source.html new file mode 100644 index 00000000..4792ddcb --- /dev/null +++ b/ver-5.0.0/sptgpsv_8f_source.html @@ -0,0 +1,1038 @@ + + + + + + + +NCEPLIBS-ip: sptgpsv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgpsv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral vector to polar stereo.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | Iredell | Initial.
                    +
                    8 C> 1998-12-15 | Iredell | Openmp directives inserted.
                    +
                    9 C>
                    +
                    10 C> @author Iredell @date 96-02-29
                    +
                    11 
                    +
                    12 C> This subprogram performs a spherical transform
                    +
                    13 C> from spectral coefficients of divergences and curls
                    +
                    14 C> to vector fields on a pair of polar stereographic grids.
                    +
                    15 C> The wave-space can be either triangular or rhomboidal.
                    +
                    16 C>
                    +
                    17 C> The wave and grid fields may have general indexing,
                    +
                    18 C> but each wave field is in sequential 'IBM order',
                    +
                    19 C> i.e. with zonal wavenumber as the slower index.
                    +
                    20 C>
                    +
                    21 C> The two square polar stereographic grids are centered
                    +
                    22 C> on the respective poles, with the orientation longitude
                    +
                    23 C> of the southern hemisphere grid 180 degrees opposite
                    +
                    24 C> that of the northern hemisphere grid.
                    +
                    25 C>
                    +
                    26 C> The vectors are automatically rotated to be resolved
                    +
                    27 C> relative to the respective polar stereographic grids.
                    +
                    28 C>
                    +
                    29 C> The transform is made efficient
                    +
                    30 C> by combining points in eight sectors
                    +
                    31 C> of each polar stereographic grid,
                    +
                    32 C> numbered as in the diagram below.
                    +
                    33 C> The pole and the sector boundaries
                    +
                    34 C> are treated specially in the code.
                    +
                    35 C> Unfortunately, this approach induces
                    +
                    36 C> some hairy indexing and code loquacity,
                    +
                    37 C> for which the developer apologizes.
                    +
                    38 C>
                    +
                    39 C> <pre>
                    +
                    40 C> \ 4 | 5 /
                    +
                    41 C> \ | /
                    +
                    42 C> 3 \ | / 6
                    +
                    43 C> \|/
                    +
                    44 C> ----+----
                    +
                    45 C> /|\
                    +
                    46 C> 2 / | \ 7
                    +
                    47 C> / | \
                    +
                    48 C> / 1 | 8 \
                    +
                    49 C> </pre>
                    +
                    50 C>
                    +
                    51 C> The transforms are all multiprocessed over sector points.
                    +
                    52 C> transform several fields at a time to improve vectorization.
                    +
                    53 C> subprogram can be called from a multiprocessing environment.
                    +
                    54 C>
                    +
                    55 C> @param IROMB spectral domain shape
                    +
                    56 C> (0 for triangular, 1 for rhomboidal)
                    +
                    57 C> @param MAXWV spectral truncation
                    +
                    58 C> @param KMAX number of fields to transform.
                    +
                    59 C> @param NPS odd order of the polar stereographic grids
                    +
                    60 C> @param KWSKIP skip number between wave fields
                    +
                    61 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    +
                    62 C> @param KGSKIP skip number between grid fields
                    +
                    63 C> (defaults to NPS*NPS if KGSKIP=0)
                    +
                    64 C> @param NISKIP skip number between grid i-points
                    +
                    65 C> (defaults to 1 if NISKIP=0)
                    +
                    66 C> @param NJSKIP skip number between grid j-points
                    +
                    67 C> (defaults to NPS if NJSKIP=0)
                    +
                    68 C> @param TRUE latitude at which ps grid is true (usually 60.)
                    +
                    69 C> @param XMESH grid length at true latitude (m)
                    +
                    70 C> @param ORIENT longitude at bottom of northern ps grid
                    +
                    71 C> (southern ps grid will have opposite orientation.)
                    +
                    72 C> @param WAVED wave divergence fields
                    +
                    73 C> @param WAVEZ wave vorticity fields
                    +
                    74 C> @param UN northern polar stereographic u-winds
                    +
                    75 C> @param VN northern polar stereographic v-winds
                    +
                    76 C> @param US southern polar stereographic u-winds
                    +
                    77 C> @param VS southern polar stereographic v-winds
                    +
                    78 C>
                    +
                    79 C> @author Iredell @date 96-02-29
                    +
                    80  SUBROUTINE sptgpsv(IROMB,MAXWV,KMAX,NPS,
                    +
                    81  & KWSKIP,KGSKIP,NISKIP,NJSKIP,
                    +
                    82  & TRUE,XMESH,ORIENT,WAVED,WAVEZ,UN,VN,US,VS)
                    +
                    83 
                    +
                    84  REAL WAVED(*),WAVEZ(*),UN(*),VN(*),US(*),VS(*)
                    +
                    85  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    86  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    87  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    88  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    89  INTEGER MP(2*KMAX)
                    +
                    90  REAL SLON(MAXWV,8),CLON(MAXWV,8),SROT(0:3),CROT(0:3)
                    +
                    91  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,2*KMAX)
                    +
                    92  REAL WTOP(2*(MAXWV+1),2*KMAX)
                    +
                    93  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
                    +
                    94  REAL F(2*MAXWV+3,2,2*KMAX)
                    +
                    95  DATA srot/0.,1.,0.,-1./,crot/1.,0.,-1.,0./
                    +
                    96  parameter(rerth=6.3712e6)
                    +
                    97  parameter(pi=3.14159265358979,dpr=180./pi)
                    +
                    98 
                    +
                    99 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    100  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    101  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    102  mxtop=maxwv+1
                    +
                    103  mdim=2*mx+1
                    +
                    104  idim=2*maxwv+3
                    +
                    105  kw=kwskip
                    +
                    106  kg=kgskip
                    +
                    107  ni=niskip
                    +
                    108  nj=njskip
                    +
                    109  IF(kw.EQ.0) kw=2*mx
                    +
                    110  IF(kg.EQ.0) kg=nps*nps
                    +
                    111  IF(ni.EQ.0) ni=1
                    +
                    112  IF(nj.EQ.0) nj=nps
                    +
                    113  mp=1
                    +
                    114  nph=(nps-1)/2
                    +
                    115  gq=((1.+sin(true/dpr))*rerth/xmesh)**2
                    +
                    116  srh=sqrt(0.5)
                    +
                    117 
                    +
                    118 C CALCULATE SPECTRAL WINDS
                    +
                    119 C$OMP PARALLEL DO PRIVATE(KWS)
                    +
                    120  DO k=1,kmax
                    +
                    121  kws=(k-1)*kw
                    +
                    122  CALL spdz2uv(iromb,maxwv,enn1,elonn1,eon,eontop,
                    +
                    123  & waved(kws+1),wavez(kws+1),
                    +
                    124  & w(1,k),w(1,kmax+k),wtop(1,k),wtop(1,kmax+k))
                    +
                    125  ENDDO
                    +
                    126 
                    +
                    127 C CALCULATE POLE POINT
                    +
                    128  i1=nph+1
                    +
                    129  j1=nph+1
                    +
                    130  ij1=(i1-1)*ni+(j1-1)*nj+1
                    +
                    131  slat1=1.
                    +
                    132  clat1=0.
                    +
                    133  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    134  & pln,plntop)
                    +
                    135  CALL spsynth(iromb,maxwv,2*maxwv,idim,mdim,2*mxtop,2*kmax,
                    +
                    136  & clat1,pln,plntop,mp,w,wtop,f)
                    +
                    137  coso=cos(orient/dpr)
                    +
                    138  sino=sin(orient/dpr)
                    +
                    139 CDIR$ IVDEP
                    +
                    140  DO k=1,kmax
                    +
                    141  ku=k
                    +
                    142  kv=k+kmax
                    +
                    143  ijk1=ij1+(k-1)*kg
                    +
                    144  un(ijk1)=2*( coso*f(3,1,ku)+sino*f(3,1,kv))
                    +
                    145  vn(ijk1)=2*(-sino*f(3,1,ku)+coso*f(3,1,kv))
                    +
                    146  us(ijk1)=2*( coso*f(3,2,ku)-sino*f(3,2,kv))
                    +
                    147  vs(ijk1)=2*( sino*f(3,2,ku)+coso*f(3,2,kv))
                    +
                    148  ENDDO
                    +
                    149 
                    +
                    150 C CALCULATE POINTS ALONG THE ROW AND COLUMN OF THE POLE,
                    +
                    151 C STARTING AT THE ORIENTATION LONGITUDE AND GOING CLOCKWISE.
                    +
                    152 C$OMP PARALLEL DO PRIVATE(I1,J2,I2,J3,I3,J4,I4,J5,I5,J6,I6,J7,I7,J8,I8)
                    +
                    153 C$OMP& PRIVATE(IJ1,IJ2,IJ3,IJ4,IJ5,IJ6,IJ7,IJ8)
                    +
                    154 C$OMP& PRIVATE(IJK1,IJK2,IJK3,IJK4,IJK5,IJK6,IJK7,IJK8)
                    +
                    155 C$OMP& PRIVATE(DJ1,DI1,RQ,RR,RADLON,RADLON1,RADLON2,SLAT1,CLAT1)
                    +
                    156 C$OMP& PRIVATE(PLN,PLNTOP,F,SLON,CLON,KU,KV,LR,LI)
                    +
                    157  DO j1=1,nph
                    +
                    158  i1=nph+1
                    +
                    159  radlon=orient/dpr
                    +
                    160  j3=nps+1-i1
                    +
                    161  i3=j1
                    +
                    162  j5=nps+1-j1
                    +
                    163  i5=nps+1-i1
                    +
                    164  j7=i1
                    +
                    165  i7=nps+1-j1
                    +
                    166  ij1=(i1-1)*ni+(j1-1)*nj+1
                    +
                    167  ij3=(i3-1)*ni+(j3-1)*nj+1
                    +
                    168  ij5=(i5-1)*ni+(j5-1)*nj+1
                    +
                    169  ij7=(i7-1)*ni+(j7-1)*nj+1
                    +
                    170  di1=i1-nph-1
                    +
                    171  dj1=j1-nph-1
                    +
                    172  rq=di1**2+dj1**2
                    +
                    173  slat1=(gq-rq)/(gq+rq)
                    +
                    174  clat1=sqrt(1.-slat1**2)
                    +
                    175  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    176  & pln,plntop)
                    +
                    177  CALL spsynth(iromb,maxwv,2*maxwv,idim,mdim,2*mxtop,2*kmax,
                    +
                    178  & clat1,pln,plntop,mp,w,wtop,f)
                    +
                    179  DO l=1,maxwv
                    +
                    180  slon(l,1)=sin(l*radlon)
                    +
                    181  clon(l,1)=cos(l*radlon)
                    +
                    182  slon(l,3)=slon(l,1)*crot(mod(1*l,4))
                    +
                    183  & -clon(l,1)*srot(mod(1*l,4))
                    +
                    184  clon(l,3)=clon(l,1)*crot(mod(1*l,4))
                    +
                    185  & +slon(l,1)*srot(mod(1*l,4))
                    +
                    186  slon(l,5)=slon(l,1)*crot(mod(2*l,4))
                    +
                    187  & -clon(l,1)*srot(mod(2*l,4))
                    +
                    188  clon(l,5)=clon(l,1)*crot(mod(2*l,4))
                    +
                    189  & +slon(l,1)*srot(mod(2*l,4))
                    +
                    190  slon(l,7)=slon(l,1)*crot(mod(3*l,4))
                    +
                    191  & -clon(l,1)*srot(mod(3*l,4))
                    +
                    192  clon(l,7)=clon(l,1)*crot(mod(3*l,4))
                    +
                    193  & +slon(l,1)*srot(mod(3*l,4))
                    +
                    194  ENDDO
                    +
                    195 CDIR$ IVDEP
                    +
                    196  DO k=1,kmax
                    +
                    197  ku=k
                    +
                    198  kv=k+kmax
                    +
                    199  ijk1=ij1+(k-1)*kg
                    +
                    200  ijk3=ij3+(k-1)*kg
                    +
                    201  ijk5=ij5+(k-1)*kg
                    +
                    202  ijk7=ij7+(k-1)*kg
                    +
                    203  un(ijk1)= f(1,1,ku)
                    +
                    204  vn(ijk1)= f(1,1,kv)
                    +
                    205  un(ijk3)= f(1,1,kv)
                    +
                    206  vn(ijk3)=-f(1,1,ku)
                    +
                    207  un(ijk5)=-f(1,1,ku)
                    +
                    208  vn(ijk5)=-f(1,1,kv)
                    +
                    209  un(ijk7)=-f(1,1,kv)
                    +
                    210  vn(ijk7)= f(1,1,ku)
                    +
                    211  us(ijk1)=-f(1,2,ku)
                    +
                    212  vs(ijk1)=-f(1,2,kv)
                    +
                    213  us(ijk3)=-f(1,2,kv)
                    +
                    214  vs(ijk3)= f(1,2,ku)
                    +
                    215  us(ijk5)= f(1,2,ku)
                    +
                    216  vs(ijk5)= f(1,2,kv)
                    +
                    217  us(ijk7)= f(1,2,kv)
                    +
                    218  vs(ijk7)=-f(1,2,ku)
                    +
                    219  ENDDO
                    +
                    220  IF(kmax.EQ.1) THEN
                    +
                    221  ku=1
                    +
                    222  kv=2
                    +
                    223  DO l=1,maxwv
                    +
                    224  lr=2*l+1
                    +
                    225  li=2*l+2
                    +
                    226  un(ij1)=un(ij1)+2*(f(lr,1,ku)*clon(l,1)
                    +
                    227  & -f(li,1,ku)*slon(l,1))
                    +
                    228  vn(ij1)=vn(ij1)+2*(f(lr,1,kv)*clon(l,1)
                    +
                    229  & -f(li,1,kv)*slon(l,1))
                    +
                    230  un(ij3)=un(ij3)+2*(f(lr,1,kv)*clon(l,3)
                    +
                    231  & -f(li,1,kv)*slon(l,3))
                    +
                    232  vn(ij3)=vn(ij3)-2*(f(lr,1,ku)*clon(l,3)
                    +
                    233  & -f(li,1,ku)*slon(l,3))
                    +
                    234  un(ij5)=un(ij5)-2*(f(lr,1,ku)*clon(l,5)
                    +
                    235  & -f(li,1,ku)*slon(l,5))
                    +
                    236  vn(ij5)=vn(ij5)-2*(f(lr,1,kv)*clon(l,5)
                    +
                    237  & -f(li,1,kv)*slon(l,5))
                    +
                    238  un(ij7)=un(ij7)-2*(f(lr,1,kv)*clon(l,7)
                    +
                    239  & -f(li,1,kv)*slon(l,7))
                    +
                    240  vn(ij7)=vn(ij7)+2*(f(lr,1,ku)*clon(l,7)
                    +
                    241  & -f(li,1,ku)*slon(l,7))
                    +
                    242  us(ij1)=us(ij1)-2*(f(lr,2,ku)*clon(l,5)
                    +
                    243  & -f(li,2,ku)*slon(l,5))
                    +
                    244  vs(ij1)=vs(ij1)-2*(f(lr,2,kv)*clon(l,5)
                    +
                    245  & -f(li,2,kv)*slon(l,5))
                    +
                    246  us(ij3)=us(ij3)-2*(f(lr,2,kv)*clon(l,3)
                    +
                    247  & -f(li,2,kv)*slon(l,3))
                    +
                    248  vs(ij3)=vs(ij3)+2*(f(lr,2,ku)*clon(l,3)
                    +
                    249  & -f(li,2,ku)*slon(l,3))
                    +
                    250  us(ij5)=us(ij5)+2*(f(lr,2,ku)*clon(l,1)
                    +
                    251  & -f(li,2,ku)*slon(l,1))
                    +
                    252  vs(ij5)=vs(ij5)+2*(f(lr,2,kv)*clon(l,1)
                    +
                    253  & -f(li,2,kv)*slon(l,1))
                    +
                    254  us(ij7)=us(ij7)+2*(f(lr,2,kv)*clon(l,7)
                    +
                    255  & -f(li,2,kv)*slon(l,7))
                    +
                    256  vs(ij7)=vs(ij7)-2*(f(lr,2,ku)*clon(l,7)
                    +
                    257  & -f(li,2,ku)*slon(l,7))
                    +
                    258  ENDDO
                    +
                    259  ELSE
                    +
                    260  DO l=1,maxwv
                    +
                    261  lr=2*l+1
                    +
                    262  li=2*l+2
                    +
                    263 CDIR$ IVDEP
                    +
                    264  DO k=1,kmax
                    +
                    265  ku=k
                    +
                    266  kv=k+kmax
                    +
                    267  ijk1=ij1+(k-1)*kg
                    +
                    268  ijk3=ij3+(k-1)*kg
                    +
                    269  ijk5=ij5+(k-1)*kg
                    +
                    270  ijk7=ij7+(k-1)*kg
                    +
                    271  un(ijk1)=un(ijk1)+2*(f(lr,1,ku)*clon(l,1)
                    +
                    272  & -f(li,1,ku)*slon(l,1))
                    +
                    273  vn(ijk1)=vn(ijk1)+2*(f(lr,1,kv)*clon(l,1)
                    +
                    274  & -f(li,1,kv)*slon(l,1))
                    +
                    275  un(ijk3)=un(ijk3)+2*(f(lr,1,kv)*clon(l,3)
                    +
                    276  & -f(li,1,kv)*slon(l,3))
                    +
                    277  vn(ijk3)=vn(ijk3)-2*(f(lr,1,ku)*clon(l,3)
                    +
                    278  & -f(li,1,ku)*slon(l,3))
                    +
                    279  un(ijk5)=un(ijk5)-2*(f(lr,1,ku)*clon(l,5)
                    +
                    280  & -f(li,1,ku)*slon(l,5))
                    +
                    281  vn(ijk5)=vn(ijk5)-2*(f(lr,1,kv)*clon(l,5)
                    +
                    282  & -f(li,1,kv)*slon(l,5))
                    +
                    283  un(ijk7)=un(ijk7)-2*(f(lr,1,kv)*clon(l,7)
                    +
                    284  & -f(li,1,kv)*slon(l,7))
                    +
                    285  vn(ijk7)=vn(ijk7)+2*(f(lr,1,ku)*clon(l,7)
                    +
                    286  & -f(li,1,ku)*slon(l,7))
                    +
                    287  us(ijk1)=us(ijk1)-2*(f(lr,2,ku)*clon(l,5)
                    +
                    288  & -f(li,2,ku)*slon(l,5))
                    +
                    289  vs(ijk1)=vs(ijk1)-2*(f(lr,2,kv)*clon(l,5)
                    +
                    290  & -f(li,2,kv)*slon(l,5))
                    +
                    291  us(ijk3)=us(ijk3)-2*(f(lr,2,kv)*clon(l,3)
                    +
                    292  & -f(li,2,kv)*slon(l,3))
                    +
                    293  vs(ijk3)=vs(ijk3)+2*(f(lr,2,ku)*clon(l,3)
                    +
                    294  & -f(li,2,ku)*slon(l,3))
                    +
                    295  us(ijk5)=us(ijk5)+2*(f(lr,2,ku)*clon(l,1)
                    +
                    296  & -f(li,2,ku)*slon(l,1))
                    +
                    297  vs(ijk5)=vs(ijk5)+2*(f(lr,2,kv)*clon(l,1)
                    +
                    298  & -f(li,2,kv)*slon(l,1))
                    +
                    299  us(ijk7)=us(ijk7)+2*(f(lr,2,kv)*clon(l,7)
                    +
                    300  & -f(li,2,kv)*slon(l,7))
                    +
                    301  vs(ijk7)=vs(ijk7)-2*(f(lr,2,ku)*clon(l,7)
                    +
                    302  & -f(li,2,ku)*slon(l,7))
                    +
                    303  ENDDO
                    +
                    304  ENDDO
                    +
                    305  ENDIF
                    +
                    306  ENDDO
                    +
                    307 
                    +
                    308 C CALCULATE POINTS ON THE MAIN DIAGONALS THROUGH THE POLE,
                    +
                    309 C STARTING CLOCKWISE OF THE ORIENTATION LONGITUDE AND GOING CLOCKWISE.
                    +
                    310 C$OMP PARALLEL DO PRIVATE(I1,J2,I2,J3,I3,J4,I4,J5,I5,J6,I6,J7,I7,J8,I8)
                    +
                    311 C$OMP& PRIVATE(IJ1,IJ2,IJ3,IJ4,IJ5,IJ6,IJ7,IJ8)
                    +
                    312 C$OMP& PRIVATE(IJK1,IJK2,IJK3,IJK4,IJK5,IJK6,IJK7,IJK8)
                    +
                    313 C$OMP& PRIVATE(DJ1,DI1,RQ,RR,RADLON,RADLON1,RADLON2,SLAT1,CLAT1)
                    +
                    314 C$OMP& PRIVATE(PLN,PLNTOP,F,SLON,CLON,KU,KV,LR,LI)
                    +
                    315  DO j1=1,nph
                    +
                    316  i1=j1
                    +
                    317  radlon=(orient-45)/dpr
                    +
                    318  j3=nps+1-i1
                    +
                    319  i3=j1
                    +
                    320  j5=nps+1-j1
                    +
                    321  i5=nps+1-i1
                    +
                    322  j7=i1
                    +
                    323  i7=nps+1-j1
                    +
                    324  ij1=(i1-1)*ni+(j1-1)*nj+1
                    +
                    325  ij3=(i3-1)*ni+(j3-1)*nj+1
                    +
                    326  ij5=(i5-1)*ni+(j5-1)*nj+1
                    +
                    327  ij7=(i7-1)*ni+(j7-1)*nj+1
                    +
                    328  di1=i1-nph-1
                    +
                    329  dj1=j1-nph-1
                    +
                    330  rq=di1**2+dj1**2
                    +
                    331  slat1=(gq-rq)/(gq+rq)
                    +
                    332  clat1=sqrt(1.-slat1**2)
                    +
                    333  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    334  & pln,plntop)
                    +
                    335  CALL spsynth(iromb,maxwv,2*maxwv,idim,mdim,2*mxtop,2*kmax,
                    +
                    336  & clat1,pln,plntop,mp,w,wtop,f)
                    +
                    337  DO l=1,maxwv
                    +
                    338  slon(l,1)=sin(l*radlon)
                    +
                    339  clon(l,1)=cos(l*radlon)
                    +
                    340  slon(l,3)=slon(l,1)*crot(mod(1*l,4))
                    +
                    341  & -clon(l,1)*srot(mod(1*l,4))
                    +
                    342  clon(l,3)=clon(l,1)*crot(mod(1*l,4))
                    +
                    343  & +slon(l,1)*srot(mod(1*l,4))
                    +
                    344  slon(l,5)=slon(l,1)*crot(mod(2*l,4))
                    +
                    345  & -clon(l,1)*srot(mod(2*l,4))
                    +
                    346  clon(l,5)=clon(l,1)*crot(mod(2*l,4))
                    +
                    347  & +slon(l,1)*srot(mod(2*l,4))
                    +
                    348  slon(l,7)=slon(l,1)*crot(mod(3*l,4))
                    +
                    349  & -clon(l,1)*srot(mod(3*l,4))
                    +
                    350  clon(l,7)=clon(l,1)*crot(mod(3*l,4))
                    +
                    351  & +slon(l,1)*srot(mod(3*l,4))
                    +
                    352  ENDDO
                    +
                    353 CDIR$ IVDEP
                    +
                    354  DO k=1,kmax
                    +
                    355  ku=k
                    +
                    356  kv=k+kmax
                    +
                    357  ijk1=ij1+(k-1)*kg
                    +
                    358  ijk3=ij3+(k-1)*kg
                    +
                    359  ijk5=ij5+(k-1)*kg
                    +
                    360  ijk7=ij7+(k-1)*kg
                    +
                    361  un(ijk1)=srh*( f(1,1,ku)+f(1,1,kv))
                    +
                    362  vn(ijk1)=srh*(-f(1,1,ku)+f(1,1,kv))
                    +
                    363  un(ijk3)=srh*(-f(1,1,ku)+f(1,1,kv))
                    +
                    364  vn(ijk3)=srh*(-f(1,1,ku)-f(1,1,kv))
                    +
                    365  un(ijk5)=srh*(-f(1,1,ku)-f(1,1,kv))
                    +
                    366  vn(ijk5)=srh*( f(1,1,ku)-f(1,1,kv))
                    +
                    367  un(ijk7)=srh*( f(1,1,ku)-f(1,1,kv))
                    +
                    368  vn(ijk7)=srh*( f(1,1,ku)+f(1,1,kv))
                    +
                    369  us(ijk1)=srh*(-f(1,2,ku)-f(1,2,kv))
                    +
                    370  vs(ijk1)=srh*( f(1,2,ku)-f(1,2,kv))
                    +
                    371  us(ijk3)=srh*( f(1,2,ku)-f(1,2,kv))
                    +
                    372  vs(ijk3)=srh*( f(1,2,ku)+f(1,2,kv))
                    +
                    373  us(ijk5)=srh*( f(1,2,ku)+f(1,2,kv))
                    +
                    374  vs(ijk5)=srh*(-f(1,2,ku)+f(1,2,kv))
                    +
                    375  us(ijk7)=srh*(-f(1,2,ku)+f(1,2,kv))
                    +
                    376  vs(ijk7)=srh*(-f(1,2,ku)-f(1,2,kv))
                    +
                    377  ENDDO
                    +
                    378  IF(kmax.EQ.1) THEN
                    +
                    379  ku=1
                    +
                    380  kv=2
                    +
                    381  DO l=1,maxwv
                    +
                    382  lr=2*l+1
                    +
                    383  li=2*l+2
                    +
                    384  un(ij1)=un(ij1)+2*srh*(( f(lr,1,ku)+f(lr,1,kv))
                    +
                    385  & *clon(l,1)
                    +
                    386  & -( f(li,1,ku)+f(li,1,kv))
                    +
                    387  & *slon(l,1))
                    +
                    388  vn(ij1)=vn(ij1)+2*srh*((-f(lr,1,ku)+f(lr,1,kv))
                    +
                    389  & *clon(l,1)
                    +
                    390  & -(-f(li,1,ku)+f(li,1,kv))
                    +
                    391  & *slon(l,1))
                    +
                    392  un(ij3)=un(ij3)+2*srh*((-f(lr,1,ku)+f(lr,1,kv))
                    +
                    393  & *clon(l,3)
                    +
                    394  & -(-f(li,1,ku)+f(li,1,kv))
                    +
                    395  & *slon(l,3))
                    +
                    396  vn(ij3)=vn(ij3)+2*srh*((-f(lr,1,ku)-f(lr,1,kv))
                    +
                    397  & *clon(l,3)
                    +
                    398  & -(-f(li,1,ku)-f(li,1,kv))
                    +
                    399  & *slon(l,3))
                    +
                    400  un(ij5)=un(ij5)+2*srh*((-f(lr,1,ku)-f(lr,1,kv))
                    +
                    401  & *clon(l,5)
                    +
                    402  & -(-f(li,1,ku)-f(li,1,kv))
                    +
                    403  & *slon(l,5))
                    +
                    404  vn(ij5)=vn(ij5)+2*srh*(( f(lr,1,ku)-f(lr,1,kv))
                    +
                    405  & *clon(l,5)
                    +
                    406  & -( f(li,1,ku)-f(li,1,kv))
                    +
                    407  & *slon(l,5))
                    +
                    408  un(ij7)=un(ij7)+2*srh*(( f(lr,1,ku)-f(lr,1,kv))
                    +
                    409  & *clon(l,7)
                    +
                    410  & -( f(li,1,ku)-f(li,1,kv))
                    +
                    411  & *slon(l,7))
                    +
                    412  vn(ij7)=vn(ij7)+2*srh*(( f(lr,1,ku)+f(lr,1,kv))
                    +
                    413  & *clon(l,7)
                    +
                    414  & -( f(li,1,ku)+f(li,1,kv))
                    +
                    415  & *slon(l,7))
                    +
                    416  us(ij1)=us(ij1)+2*srh*((-f(lr,2,ku)-f(lr,2,kv))
                    +
                    417  & *clon(l,3)
                    +
                    418  & -(-f(li,2,ku)-f(li,2,kv))
                    +
                    419  & *slon(l,3))
                    +
                    420  vs(ij1)=vs(ij1)+2*srh*(( f(lr,2,ku)-f(lr,2,kv))
                    +
                    421  & *clon(l,3)
                    +
                    422  & -( f(li,2,ku)-f(li,2,kv))
                    +
                    423  & *slon(l,3))
                    +
                    424  us(ij3)=us(ij3)+2*srh*(( f(lr,2,ku)-f(lr,2,kv))
                    +
                    425  & *clon(l,1)
                    +
                    426  & -( f(li,2,ku)-f(li,2,kv))
                    +
                    427  & *slon(l,1))
                    +
                    428  vs(ij3)=vs(ij3)+2*srh*(( f(lr,2,ku)+f(lr,2,kv))
                    +
                    429  & *clon(l,1)
                    +
                    430  & -( f(li,2,ku)+f(li,2,kv))
                    +
                    431  & *slon(l,1))
                    +
                    432  us(ij5)=us(ij5)+2*srh*(( f(lr,2,ku)+f(lr,2,kv))
                    +
                    433  & *clon(l,7)
                    +
                    434  & -( f(li,2,ku)+f(li,2,kv))
                    +
                    435  & *slon(l,7))
                    +
                    436  vs(ij5)=vs(ij5)+2*srh*((-f(lr,2,ku)+f(lr,2,kv))
                    +
                    437  & *clon(l,7)
                    +
                    438  & -(-f(li,2,ku)+f(li,2,kv))
                    +
                    439  & *slon(l,7))
                    +
                    440  us(ij7)=us(ij7)+2*srh*((-f(lr,2,ku)+f(lr,2,kv))
                    +
                    441  & *clon(l,5)
                    +
                    442  & -(-f(li,2,ku)+f(li,2,kv))
                    +
                    443  & *slon(l,5))
                    +
                    444  vs(ij7)=vs(ij7)+2*srh*((-f(lr,2,ku)-f(lr,2,kv))
                    +
                    445  & *clon(l,5)
                    +
                    446  & -(-f(li,2,ku)-f(li,2,kv))
                    +
                    447  & *slon(l,5))
                    +
                    448  ENDDO
                    +
                    449  ELSE
                    +
                    450  DO l=1,maxwv
                    +
                    451  lr=2*l+1
                    +
                    452  li=2*l+2
                    +
                    453 CDIR$ IVDEP
                    +
                    454  DO k=1,kmax
                    +
                    455  ku=k
                    +
                    456  kv=k+kmax
                    +
                    457  ijk1=ij1+(k-1)*kg
                    +
                    458  ijk3=ij3+(k-1)*kg
                    +
                    459  ijk5=ij5+(k-1)*kg
                    +
                    460  ijk7=ij7+(k-1)*kg
                    +
                    461  un(ijk1)=un(ijk1)+2*srh*(( f(lr,1,ku)+f(lr,1,kv))
                    +
                    462  & *clon(l,1)
                    +
                    463  & -( f(li,1,ku)+f(li,1,kv))
                    +
                    464  & *slon(l,1))
                    +
                    465  vn(ijk1)=vn(ijk1)+2*srh*((-f(lr,1,ku)+f(lr,1,kv))
                    +
                    466  & *clon(l,1)
                    +
                    467  & -(-f(li,1,ku)+f(li,1,kv))
                    +
                    468  & *slon(l,1))
                    +
                    469  un(ijk3)=un(ijk3)+2*srh*((-f(lr,1,ku)+f(lr,1,kv))
                    +
                    470  & *clon(l,3)
                    +
                    471  & -(-f(li,1,ku)+f(li,1,kv))
                    +
                    472  & *slon(l,3))
                    +
                    473  vn(ijk3)=vn(ijk3)+2*srh*((-f(lr,1,ku)-f(lr,1,kv))
                    +
                    474  & *clon(l,3)
                    +
                    475  & -(-f(li,1,ku)-f(li,1,kv))
                    +
                    476  & *slon(l,3))
                    +
                    477  un(ijk5)=un(ijk5)+2*srh*((-f(lr,1,ku)-f(lr,1,kv))
                    +
                    478  & *clon(l,5)
                    +
                    479  & -(-f(li,1,ku)-f(li,1,kv))
                    +
                    480  & *slon(l,5))
                    +
                    481  vn(ijk5)=vn(ijk5)+2*srh*(( f(lr,1,ku)-f(lr,1,kv))
                    +
                    482  & *clon(l,5)
                    +
                    483  & -( f(li,1,ku)-f(li,1,kv))
                    +
                    484  & *slon(l,5))
                    +
                    485  un(ijk7)=un(ijk7)+2*srh*(( f(lr,1,ku)-f(lr,1,kv))
                    +
                    486  & *clon(l,7)
                    +
                    487  & -( f(li,1,ku)-f(li,1,kv))
                    +
                    488  & *slon(l,7))
                    +
                    489  vn(ijk7)=vn(ijk7)+2*srh*(( f(lr,1,ku)+f(lr,1,kv))
                    +
                    490  & *clon(l,7)
                    +
                    491  & -( f(li,1,ku)+f(li,1,kv))
                    +
                    492  & *slon(l,7))
                    +
                    493  us(ijk1)=us(ijk1)+2*srh*((-f(lr,2,ku)-f(lr,2,kv))
                    +
                    494  & *clon(l,3)
                    +
                    495  & -(-f(li,2,ku)-f(li,2,kv))
                    +
                    496  & *slon(l,3))
                    +
                    497  vs(ijk1)=vs(ijk1)+2*srh*(( f(lr,2,ku)-f(lr,2,kv))
                    +
                    498  & *clon(l,3)
                    +
                    499  & -( f(li,2,ku)-f(li,2,kv))
                    +
                    500  & *slon(l,3))
                    +
                    501  us(ijk3)=us(ijk3)+2*srh*(( f(lr,2,ku)-f(lr,2,kv))
                    +
                    502  & *clon(l,1)
                    +
                    503  & -( f(li,2,ku)-f(li,2,kv))
                    +
                    504  & *slon(l,1))
                    +
                    505  vs(ijk3)=vs(ijk3)+2*srh*(( f(lr,2,ku)+f(lr,2,kv))
                    +
                    506  & *clon(l,1)
                    +
                    507  & -( f(li,2,ku)+f(li,2,kv))
                    +
                    508  & *slon(l,1))
                    +
                    509  us(ijk5)=us(ijk5)+2*srh*(( f(lr,2,ku)+f(lr,2,kv))
                    +
                    510  & *clon(l,7)
                    +
                    511  & -( f(li,2,ku)+f(li,2,kv))
                    +
                    512  & *slon(l,7))
                    +
                    513  vs(ijk5)=vs(ijk5)+2*srh*((-f(lr,2,ku)+f(lr,2,kv))
                    +
                    514  & *clon(l,7)
                    +
                    515  & -(-f(li,2,ku)+f(li,2,kv))
                    +
                    516  & *slon(l,7))
                    +
                    517  us(ijk7)=us(ijk7)+2*srh*((-f(lr,2,ku)+f(lr,2,kv))
                    +
                    518  & *clon(l,5)
                    +
                    519  & -(-f(li,2,ku)+f(li,2,kv))
                    +
                    520  & *slon(l,5))
                    +
                    521  vs(ijk7)=vs(ijk7)+2*srh*((-f(lr,2,ku)-f(lr,2,kv))
                    +
                    522  & *clon(l,5)
                    +
                    523  & -(-f(li,2,ku)-f(li,2,kv))
                    +
                    524  & *slon(l,5))
                    +
                    525  ENDDO
                    +
                    526  ENDDO
                    +
                    527  ENDIF
                    +
                    528  ENDDO
                    +
                    529 
                    +
                    530 C CALCULATE THE REMAINDER OF THE POLAR STEREOGRAPHIC DOMAIN,
                    +
                    531 C STARTING AT THE SECTOR JUST CLOCKWISE OF THE ORIENTATION LONGITUDE
                    +
                    532 C AND GOING CLOCKWISE UNTIL ALL EIGHT SECTORS ARE DONE.
                    +
                    533 C$OMP PARALLEL DO PRIVATE(I1,J2,I2,J3,I3,J4,I4,J5,I5,J6,I6,J7,I7,J8,I8)
                    +
                    534 C$OMP& PRIVATE(IJ1,IJ2,IJ3,IJ4,IJ5,IJ6,IJ7,IJ8)
                    +
                    535 C$OMP& PRIVATE(IJK1,IJK2,IJK3,IJK4,IJK5,IJK6,IJK7,IJK8)
                    +
                    536 C$OMP& PRIVATE(DJ1,DI1,RQ,RR,RADLON,RADLON1,RADLON2,SLAT1,CLAT1)
                    +
                    537 C$OMP& PRIVATE(PLN,PLNTOP,F,SLON,CLON,KU,KV,LR,LI)
                    +
                    538  DO j1=1,nph-1
                    +
                    539  DO i1=j1+1,nph
                    +
                    540  j2=i1
                    +
                    541  i2=j1
                    +
                    542  j3=nps+1-i1
                    +
                    543  i3=j1
                    +
                    544  j4=nps+1-j1
                    +
                    545  i4=i1
                    +
                    546  j5=nps+1-j1
                    +
                    547  i5=nps+1-i1
                    +
                    548  j6=nps+1-i1
                    +
                    549  i6=nps+1-j1
                    +
                    550  j7=i1
                    +
                    551  i7=nps+1-j1
                    +
                    552  j8=j1
                    +
                    553  i8=nps+1-i1
                    +
                    554  ij1=(i1-1)*ni+(j1-1)*nj+1
                    +
                    555  ij2=(i2-1)*ni+(j2-1)*nj+1
                    +
                    556  ij3=(i3-1)*ni+(j3-1)*nj+1
                    +
                    557  ij4=(i4-1)*ni+(j4-1)*nj+1
                    +
                    558  ij5=(i5-1)*ni+(j5-1)*nj+1
                    +
                    559  ij6=(i6-1)*ni+(j6-1)*nj+1
                    +
                    560  ij7=(i7-1)*ni+(j7-1)*nj+1
                    +
                    561  ij8=(i8-1)*ni+(j8-1)*nj+1
                    +
                    562  di1=i1-nph-1
                    +
                    563  dj1=j1-nph-1
                    +
                    564  rq=di1**2+dj1**2
                    +
                    565  rr=sqrt(1/rq)
                    +
                    566  slat1=(gq-rq)/(gq+rq)
                    +
                    567  clat1=sqrt(1.-slat1**2)
                    +
                    568  radlon1=orient/dpr+atan(-di1/dj1)
                    +
                    569  radlon2=(orient-45)/dpr*2-radlon1
                    +
                    570  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    571  & pln,plntop)
                    +
                    572  CALL spsynth(iromb,maxwv,2*maxwv,idim,mdim,2*mxtop,2*kmax,
                    +
                    573  & clat1,pln,plntop,mp,w,wtop,f)
                    +
                    574  DO l=1,maxwv
                    +
                    575  slon(l,1)=sin(l*radlon1)
                    +
                    576  clon(l,1)=cos(l*radlon1)
                    +
                    577  slon(l,2)=sin(l*radlon2)
                    +
                    578  clon(l,2)=cos(l*radlon2)
                    +
                    579  slon(l,3)=slon(l,1)*crot(mod(1*l,4))
                    +
                    580  & -clon(l,1)*srot(mod(1*l,4))
                    +
                    581  clon(l,3)=clon(l,1)*crot(mod(1*l,4))
                    +
                    582  & +slon(l,1)*srot(mod(1*l,4))
                    +
                    583  slon(l,4)=slon(l,2)*crot(mod(1*l,4))
                    +
                    584  & -clon(l,2)*srot(mod(1*l,4))
                    +
                    585  clon(l,4)=clon(l,2)*crot(mod(1*l,4))
                    +
                    586  & +slon(l,2)*srot(mod(1*l,4))
                    +
                    587  slon(l,5)=slon(l,1)*crot(mod(2*l,4))
                    +
                    588  & -clon(l,1)*srot(mod(2*l,4))
                    +
                    589  clon(l,5)=clon(l,1)*crot(mod(2*l,4))
                    +
                    590  & +slon(l,1)*srot(mod(2*l,4))
                    +
                    591  slon(l,6)=slon(l,2)*crot(mod(2*l,4))
                    +
                    592  & -clon(l,2)*srot(mod(2*l,4))
                    +
                    593  clon(l,6)=clon(l,2)*crot(mod(2*l,4))
                    +
                    594  & +slon(l,2)*srot(mod(2*l,4))
                    +
                    595  slon(l,7)=slon(l,1)*crot(mod(3*l,4))
                    +
                    596  & -clon(l,1)*srot(mod(3*l,4))
                    +
                    597  clon(l,7)=clon(l,1)*crot(mod(3*l,4))
                    +
                    598  & +slon(l,1)*srot(mod(3*l,4))
                    +
                    599  slon(l,8)=slon(l,2)*crot(mod(3*l,4))
                    +
                    600  & -clon(l,2)*srot(mod(3*l,4))
                    +
                    601  clon(l,8)=clon(l,2)*crot(mod(3*l,4))
                    +
                    602  & +slon(l,2)*srot(mod(3*l,4))
                    +
                    603  ENDDO
                    +
                    604 CDIR$ IVDEP
                    +
                    605  DO k=1,kmax
                    +
                    606  ku=k
                    +
                    607  kv=k+kmax
                    +
                    608  ijk1=ij1+(k-1)*kg
                    +
                    609  ijk2=ij2+(k-1)*kg
                    +
                    610  ijk3=ij3+(k-1)*kg
                    +
                    611  ijk4=ij4+(k-1)*kg
                    +
                    612  ijk5=ij5+(k-1)*kg
                    +
                    613  ijk6=ij6+(k-1)*kg
                    +
                    614  ijk7=ij7+(k-1)*kg
                    +
                    615  ijk8=ij8+(k-1)*kg
                    +
                    616  un(ijk1)=rr*(-dj1*f(1,1,ku)-di1*f(1,1,kv))
                    +
                    617  vn(ijk1)=rr*( di1*f(1,1,ku)-dj1*f(1,1,kv))
                    +
                    618  un(ijk2)=rr*(-di1*f(1,1,ku)-dj1*f(1,1,kv))
                    +
                    619  vn(ijk2)=rr*( dj1*f(1,1,ku)-di1*f(1,1,kv))
                    +
                    620  un(ijk3)=rr*( di1*f(1,1,ku)-dj1*f(1,1,kv))
                    +
                    621  vn(ijk3)=rr*( dj1*f(1,1,ku)+di1*f(1,1,kv))
                    +
                    622  un(ijk4)=rr*( dj1*f(1,1,ku)-di1*f(1,1,kv))
                    +
                    623  vn(ijk4)=rr*( di1*f(1,1,ku)+dj1*f(1,1,kv))
                    +
                    624  un(ijk5)=rr*( dj1*f(1,1,ku)+di1*f(1,1,kv))
                    +
                    625  vn(ijk5)=rr*(-di1*f(1,1,ku)+dj1*f(1,1,kv))
                    +
                    626  un(ijk6)=rr*( di1*f(1,1,ku)+dj1*f(1,1,kv))
                    +
                    627  vn(ijk6)=rr*(-dj1*f(1,1,ku)+di1*f(1,1,kv))
                    +
                    628  un(ijk7)=rr*(-di1*f(1,1,ku)+dj1*f(1,1,kv))
                    +
                    629  vn(ijk7)=rr*(-dj1*f(1,1,ku)-di1*f(1,1,kv))
                    +
                    630  un(ijk8)=rr*(-dj1*f(1,1,ku)+di1*f(1,1,kv))
                    +
                    631  vn(ijk8)=rr*(-di1*f(1,1,ku)-dj1*f(1,1,kv))
                    +
                    632  us(ijk1)=rr*( dj1*f(1,2,ku)+di1*f(1,2,kv))
                    +
                    633  vs(ijk1)=rr*(-di1*f(1,2,ku)+dj1*f(1,2,kv))
                    +
                    634  us(ijk2)=rr*( di1*f(1,2,ku)+dj1*f(1,2,kv))
                    +
                    635  vs(ijk2)=rr*(-dj1*f(1,2,ku)+di1*f(1,2,kv))
                    +
                    636  us(ijk3)=rr*(-di1*f(1,2,ku)+dj1*f(1,2,kv))
                    +
                    637  vs(ijk3)=rr*(-dj1*f(1,2,ku)-di1*f(1,2,kv))
                    +
                    638  us(ijk4)=rr*(-dj1*f(1,2,ku)+di1*f(1,2,kv))
                    +
                    639  vs(ijk4)=rr*(-di1*f(1,2,ku)-dj1*f(1,2,kv))
                    +
                    640  us(ijk5)=rr*(-dj1*f(1,2,ku)-di1*f(1,2,kv))
                    +
                    641  vs(ijk5)=rr*( di1*f(1,2,ku)-dj1*f(1,2,kv))
                    +
                    642  us(ijk6)=rr*(-di1*f(1,2,ku)-dj1*f(1,2,kv))
                    +
                    643  vs(ijk6)=rr*( dj1*f(1,2,ku)-di1*f(1,2,kv))
                    +
                    644  us(ijk7)=rr*( di1*f(1,2,ku)-dj1*f(1,2,kv))
                    +
                    645  vs(ijk7)=rr*( dj1*f(1,2,ku)+di1*f(1,2,kv))
                    +
                    646  us(ijk8)=rr*( dj1*f(1,2,ku)-di1*f(1,2,kv))
                    +
                    647  vs(ijk8)=rr*( di1*f(1,2,ku)+dj1*f(1,2,kv))
                    +
                    648  ENDDO
                    +
                    649  IF(kmax.EQ.1) THEN
                    +
                    650  ku=1
                    +
                    651  kv=2
                    +
                    652  DO l=1,maxwv
                    +
                    653  lr=2*l+1
                    +
                    654  li=2*l+2
                    +
                    655  un(ij1)=un(ij1)+2*rr*((-dj1*f(lr,1,ku)-di1*f(lr,1,kv))
                    +
                    656  & *clon(l,1)
                    +
                    657  & -(-dj1*f(li,1,ku)-di1*f(li,1,kv))
                    +
                    658  & *slon(l,1))
                    +
                    659  vn(ij1)=vn(ij1)+2*rr*(( di1*f(lr,1,ku)-dj1*f(lr,1,kv))
                    +
                    660  & *clon(l,1)
                    +
                    661  & -( di1*f(li,1,ku)-dj1*f(li,1,kv))
                    +
                    662  & *slon(l,1))
                    +
                    663  un(ij2)=un(ij2)+2*rr*((-di1*f(lr,1,ku)-dj1*f(lr,1,kv))
                    +
                    664  & *clon(l,2)
                    +
                    665  & -(-di1*f(li,1,ku)-dj1*f(li,1,kv))
                    +
                    666  & *slon(l,2))
                    +
                    667  vn(ij2)=vn(ij2)+2*rr*(( dj1*f(lr,1,ku)-di1*f(lr,1,kv))
                    +
                    668  & *clon(l,2)
                    +
                    669  & -( dj1*f(li,1,ku)-di1*f(li,1,kv))
                    +
                    670  & *slon(l,2))
                    +
                    671  un(ij3)=un(ij3)+2*rr*(( di1*f(lr,1,ku)-dj1*f(lr,1,kv))
                    +
                    672  & *clon(l,3)
                    +
                    673  & -( di1*f(li,1,ku)-dj1*f(li,1,kv))
                    +
                    674  & *slon(l,3))
                    +
                    675  vn(ij3)=vn(ij3)+2*rr*(( dj1*f(lr,1,ku)+di1*f(lr,1,kv))
                    +
                    676  & *clon(l,3)
                    +
                    677  & -( dj1*f(li,1,ku)+di1*f(li,1,kv))
                    +
                    678  & *slon(l,3))
                    +
                    679  un(ij4)=un(ij4)+2*rr*(( dj1*f(lr,1,ku)-di1*f(lr,1,kv))
                    +
                    680  & *clon(l,4)
                    +
                    681  & -( dj1*f(li,1,ku)-di1*f(li,1,kv))
                    +
                    682  & *slon(l,4))
                    +
                    683  vn(ij4)=vn(ij4)+2*rr*(( di1*f(lr,1,ku)+dj1*f(lr,1,kv))
                    +
                    684  & *clon(l,4)
                    +
                    685  & -( di1*f(li,1,ku)+dj1*f(li,1,kv))
                    +
                    686  & *slon(l,4))
                    +
                    687  un(ij5)=un(ij5)+2*rr*(( dj1*f(lr,1,ku)+di1*f(lr,1,kv))
                    +
                    688  & *clon(l,5)
                    +
                    689  & -( dj1*f(li,1,ku)+di1*f(li,1,kv))
                    +
                    690  & *slon(l,5))
                    +
                    691  vn(ij5)=vn(ij5)+2*rr*((-di1*f(lr,1,ku)+dj1*f(lr,1,kv))
                    +
                    692  & *clon(l,5)
                    +
                    693  & -(-di1*f(li,1,ku)+dj1*f(li,1,kv))
                    +
                    694  & *slon(l,5))
                    +
                    695  un(ij6)=un(ij6)+2*rr*(( di1*f(lr,1,ku)+dj1*f(lr,1,kv))
                    +
                    696  & *clon(l,6)
                    +
                    697  & -( di1*f(li,1,ku)+dj1*f(li,1,kv))
                    +
                    698  & *slon(l,6))
                    +
                    699  vn(ij6)=vn(ij6)+2*rr*((-dj1*f(lr,1,ku)+di1*f(lr,1,kv))
                    +
                    700  & *clon(l,6)
                    +
                    701  & -(-dj1*f(li,1,ku)+di1*f(li,1,kv))
                    +
                    702  & *slon(l,6))
                    +
                    703  un(ij7)=un(ij7)+2*rr*((-di1*f(lr,1,ku)+dj1*f(lr,1,kv))
                    +
                    704  & *clon(l,7)
                    +
                    705  & -(-di1*f(li,1,ku)+dj1*f(li,1,kv))
                    +
                    706  & *slon(l,7))
                    +
                    707  vn(ij7)=vn(ij7)+2*rr*((-dj1*f(lr,1,ku)-di1*f(lr,1,kv))
                    +
                    708  & *clon(l,7)
                    +
                    709  & -(-dj1*f(li,1,ku)-di1*f(li,1,kv))
                    +
                    710  & *slon(l,7))
                    +
                    711  un(ij8)=un(ij8)+2*rr*((-dj1*f(lr,1,ku)+di1*f(lr,1,kv))
                    +
                    712  & *clon(l,8)
                    +
                    713  & -(-dj1*f(li,1,ku)+di1*f(li,1,kv))
                    +
                    714  & *slon(l,8))
                    +
                    715  vn(ij8)=vn(ij8)+2*rr*((-di1*f(lr,1,ku)-dj1*f(lr,1,kv))
                    +
                    716  & *clon(l,8)
                    +
                    717  & -(-di1*f(li,1,ku)-dj1*f(li,1,kv))
                    +
                    718  & *slon(l,8))
                    +
                    719  us(ij1)=us(ij1)+2*rr*(( dj1*f(lr,2,ku)+di1*f(lr,2,kv))
                    +
                    720  & *clon(l,4)
                    +
                    721  & -( dj1*f(li,2,ku)+di1*f(li,2,kv))
                    +
                    722  & *slon(l,4))
                    +
                    723  vs(ij1)=vs(ij1)+2*rr*((-di1*f(lr,2,ku)+dj1*f(lr,2,kv))
                    +
                    724  & *clon(l,4)
                    +
                    725  & -(-di1*f(li,2,ku)+dj1*f(li,2,kv))
                    +
                    726  & *slon(l,4))
                    +
                    727  us(ij2)=us(ij2)+2*rr*(( di1*f(lr,2,ku)+dj1*f(lr,2,kv))
                    +
                    728  & *clon(l,3)
                    +
                    729  & -( di1*f(li,2,ku)+dj1*f(li,2,kv))
                    +
                    730  & *slon(l,3))
                    +
                    731  vs(ij2)=vs(ij2)+2*rr*((-dj1*f(lr,2,ku)+di1*f(lr,2,kv))
                    +
                    732  & *clon(l,3)
                    +
                    733  & -(-dj1*f(li,2,ku)+di1*f(li,2,kv))
                    +
                    734  & *slon(l,3))
                    +
                    735  us(ij3)=us(ij3)+2*rr*((-di1*f(lr,2,ku)+dj1*f(lr,2,kv))
                    +
                    736  & *clon(l,2)
                    +
                    737  & -(-di1*f(li,2,ku)+dj1*f(li,2,kv))
                    +
                    738  & *slon(l,2))
                    +
                    739  vs(ij3)=vs(ij3)+2*rr*((-dj1*f(lr,2,ku)-di1*f(lr,2,kv))
                    +
                    740  & *clon(l,2)
                    +
                    741  & -(-dj1*f(li,2,ku)-di1*f(li,2,kv))
                    +
                    742  & *slon(l,2))
                    +
                    743  us(ij4)=us(ij4)+2*rr*((-dj1*f(lr,2,ku)+di1*f(lr,2,kv))
                    +
                    744  & *clon(l,1)
                    +
                    745  & -(-dj1*f(li,2,ku)+di1*f(li,2,kv))
                    +
                    746  & *slon(l,1))
                    +
                    747  vs(ij4)=vs(ij4)+2*rr*((-di1*f(lr,2,ku)-dj1*f(lr,2,kv))
                    +
                    748  & *clon(l,1)
                    +
                    749  & -(-di1*f(li,2,ku)-dj1*f(li,2,kv))
                    +
                    750  & *slon(l,1))
                    +
                    751  us(ij5)=us(ij5)+2*rr*((-dj1*f(lr,2,ku)-di1*f(lr,2,kv))
                    +
                    752  & *clon(l,8)
                    +
                    753  & -(-dj1*f(li,2,ku)-di1*f(li,2,kv))
                    +
                    754  & *slon(l,8))
                    +
                    755  vs(ij5)=vs(ij5)+2*rr*(( di1*f(lr,2,ku)-dj1*f(lr,2,kv))
                    +
                    756  & *clon(l,8)
                    +
                    757  & -( di1*f(li,2,ku)-dj1*f(li,2,kv))
                    +
                    758  & *slon(l,8))
                    +
                    759  us(ij6)=us(ij6)+2*rr*((-di1*f(lr,2,ku)-dj1*f(lr,2,kv))
                    +
                    760  & *clon(l,7)
                    +
                    761  & -(-di1*f(li,2,ku)-dj1*f(li,2,kv))
                    +
                    762  & *slon(l,7))
                    +
                    763  vs(ij6)=vs(ij6)+2*rr*(( dj1*f(lr,2,ku)-di1*f(lr,2,kv))
                    +
                    764  & *clon(l,7)
                    +
                    765  & -( dj1*f(li,2,ku)-di1*f(li,2,kv))
                    +
                    766  & *slon(l,7))
                    +
                    767  us(ij7)=us(ij7)+2*rr*(( di1*f(lr,2,ku)-dj1*f(lr,2,kv))
                    +
                    768  & *clon(l,6)
                    +
                    769  & -( di1*f(li,2,ku)-dj1*f(li,2,kv))
                    +
                    770  & *slon(l,6))
                    +
                    771  vs(ij7)=vs(ij7)+2*rr*(( dj1*f(lr,2,ku)+di1*f(lr,2,kv))
                    +
                    772  & *clon(l,6)
                    +
                    773  & -( dj1*f(li,2,ku)+di1*f(li,2,kv))
                    +
                    774  & *slon(l,6))
                    +
                    775  us(ij8)=us(ij8)+2*rr*(( dj1*f(lr,2,ku)-di1*f(lr,2,kv))
                    +
                    776  & *clon(l,5)
                    +
                    777  & -( dj1*f(li,2,ku)-di1*f(li,2,kv))
                    +
                    778  & *slon(l,5))
                    +
                    779  vs(ij8)=vs(ij8)+2*rr*(( di1*f(lr,2,ku)+dj1*f(lr,2,kv))
                    +
                    780  & *clon(l,5)
                    +
                    781  & -( di1*f(li,2,ku)+dj1*f(li,2,kv))
                    +
                    782  & *slon(l,5))
                    +
                    783  ENDDO
                    +
                    784  ELSE
                    +
                    785  DO l=1,maxwv
                    +
                    786  lr=2*l+1
                    +
                    787  li=2*l+2
                    +
                    788 CDIR$ IVDEP
                    +
                    789  DO k=1,kmax
                    +
                    790  ku=k
                    +
                    791  kv=k+kmax
                    +
                    792  ijk1=ij1+(k-1)*kg
                    +
                    793  ijk2=ij2+(k-1)*kg
                    +
                    794  ijk3=ij3+(k-1)*kg
                    +
                    795  ijk4=ij4+(k-1)*kg
                    +
                    796  ijk5=ij5+(k-1)*kg
                    +
                    797  ijk6=ij6+(k-1)*kg
                    +
                    798  ijk7=ij7+(k-1)*kg
                    +
                    799  ijk8=ij8+(k-1)*kg
                    +
                    800  un(ijk1)=un(ijk1)+2*rr*((-dj1*f(lr,1,ku)-di1*f(lr,1,kv))
                    +
                    801  & *clon(l,1)
                    +
                    802  & -(-dj1*f(li,1,ku)-di1*f(li,1,kv))
                    +
                    803  & *slon(l,1))
                    +
                    804  vn(ijk1)=vn(ijk1)+2*rr*(( di1*f(lr,1,ku)-dj1*f(lr,1,kv))
                    +
                    805  & *clon(l,1)
                    +
                    806  & -( di1*f(li,1,ku)-dj1*f(li,1,kv))
                    +
                    807  & *slon(l,1))
                    +
                    808  un(ijk2)=un(ijk2)+2*rr*((-di1*f(lr,1,ku)-dj1*f(lr,1,kv))
                    +
                    809  & *clon(l,2)
                    +
                    810  & -(-di1*f(li,1,ku)-dj1*f(li,1,kv))
                    +
                    811  & *slon(l,2))
                    +
                    812  vn(ijk2)=vn(ijk2)+2*rr*(( dj1*f(lr,1,ku)-di1*f(lr,1,kv))
                    +
                    813  & *clon(l,2)
                    +
                    814  & -( dj1*f(li,1,ku)-di1*f(li,1,kv))
                    +
                    815  & *slon(l,2))
                    +
                    816  un(ijk3)=un(ijk3)+2*rr*(( di1*f(lr,1,ku)-dj1*f(lr,1,kv))
                    +
                    817  & *clon(l,3)
                    +
                    818  & -( di1*f(li,1,ku)-dj1*f(li,1,kv))
                    +
                    819  & *slon(l,3))
                    +
                    820  vn(ijk3)=vn(ijk3)+2*rr*(( dj1*f(lr,1,ku)+di1*f(lr,1,kv))
                    +
                    821  & *clon(l,3)
                    +
                    822  & -( dj1*f(li,1,ku)+di1*f(li,1,kv))
                    +
                    823  & *slon(l,3))
                    +
                    824  un(ijk4)=un(ijk4)+2*rr*(( dj1*f(lr,1,ku)-di1*f(lr,1,kv))
                    +
                    825  & *clon(l,4)
                    +
                    826  & -( dj1*f(li,1,ku)-di1*f(li,1,kv))
                    +
                    827  & *slon(l,4))
                    +
                    828  vn(ijk4)=vn(ijk4)+2*rr*(( di1*f(lr,1,ku)+dj1*f(lr,1,kv))
                    +
                    829  & *clon(l,4)
                    +
                    830  & -( di1*f(li,1,ku)+dj1*f(li,1,kv))
                    +
                    831  & *slon(l,4))
                    +
                    832  un(ijk5)=un(ijk5)+2*rr*(( dj1*f(lr,1,ku)+di1*f(lr,1,kv))
                    +
                    833  & *clon(l,5)
                    +
                    834  & -( dj1*f(li,1,ku)+di1*f(li,1,kv))
                    +
                    835  & *slon(l,5))
                    +
                    836  vn(ijk5)=vn(ijk5)+2*rr*((-di1*f(lr,1,ku)+dj1*f(lr,1,kv))
                    +
                    837  & *clon(l,5)
                    +
                    838  & -(-di1*f(li,1,ku)+dj1*f(li,1,kv))
                    +
                    839  & *slon(l,5))
                    +
                    840  un(ijk6)=un(ijk6)+2*rr*(( di1*f(lr,1,ku)+dj1*f(lr,1,kv))
                    +
                    841  & *clon(l,6)
                    +
                    842  & -( di1*f(li,1,ku)+dj1*f(li,1,kv))
                    +
                    843  & *slon(l,6))
                    +
                    844  vn(ijk6)=vn(ijk6)+2*rr*((-dj1*f(lr,1,ku)+di1*f(lr,1,kv))
                    +
                    845  & *clon(l,6)
                    +
                    846  & -(-dj1*f(li,1,ku)+di1*f(li,1,kv))
                    +
                    847  & *slon(l,6))
                    +
                    848  un(ijk7)=un(ijk7)+2*rr*((-di1*f(lr,1,ku)+dj1*f(lr,1,kv))
                    +
                    849  & *clon(l,7)
                    +
                    850  & -(-di1*f(li,1,ku)+dj1*f(li,1,kv))
                    +
                    851  & *slon(l,7))
                    +
                    852  vn(ijk7)=vn(ijk7)+2*rr*((-dj1*f(lr,1,ku)-di1*f(lr,1,kv))
                    +
                    853  & *clon(l,7)
                    +
                    854  & -(-dj1*f(li,1,ku)-di1*f(li,1,kv))
                    +
                    855  & *slon(l,7))
                    +
                    856  un(ijk8)=un(ijk8)+2*rr*((-dj1*f(lr,1,ku)+di1*f(lr,1,kv))
                    +
                    857  & *clon(l,8)
                    +
                    858  & -(-dj1*f(li,1,ku)+di1*f(li,1,kv))
                    +
                    859  & *slon(l,8))
                    +
                    860  vn(ijk8)=vn(ijk8)+2*rr*((-di1*f(lr,1,ku)-dj1*f(lr,1,kv))
                    +
                    861  & *clon(l,8)
                    +
                    862  & -(-di1*f(li,1,ku)-dj1*f(li,1,kv))
                    +
                    863  & *slon(l,8))
                    +
                    864  us(ijk1)=us(ijk1)+2*rr*(( dj1*f(lr,2,ku)+di1*f(lr,2,kv))
                    +
                    865  & *clon(l,4)
                    +
                    866  & -( dj1*f(li,2,ku)+di1*f(li,2,kv))
                    +
                    867  & *slon(l,4))
                    +
                    868  vs(ijk1)=vs(ijk1)+2*rr*((-di1*f(lr,2,ku)+dj1*f(lr,2,kv))
                    +
                    869  & *clon(l,4)
                    +
                    870  & -(-di1*f(li,2,ku)+dj1*f(li,2,kv))
                    +
                    871  & *slon(l,4))
                    +
                    872  us(ijk2)=us(ijk2)+2*rr*(( di1*f(lr,2,ku)+dj1*f(lr,2,kv))
                    +
                    873  & *clon(l,3)
                    +
                    874  & -( di1*f(li,2,ku)+dj1*f(li,2,kv))
                    +
                    875  & *slon(l,3))
                    +
                    876  vs(ijk2)=vs(ijk2)+2*rr*((-dj1*f(lr,2,ku)+di1*f(lr,2,kv))
                    +
                    877  & *clon(l,3)
                    +
                    878  & -(-dj1*f(li,2,ku)+di1*f(li,2,kv))
                    +
                    879  & *slon(l,3))
                    +
                    880  us(ijk3)=us(ijk3)+2*rr*((-di1*f(lr,2,ku)+dj1*f(lr,2,kv))
                    +
                    881  & *clon(l,2)
                    +
                    882  & -(-di1*f(li,2,ku)+dj1*f(li,2,kv))
                    +
                    883  & *slon(l,2))
                    +
                    884  vs(ijk3)=vs(ijk3)+2*rr*((-dj1*f(lr,2,ku)-di1*f(lr,2,kv))
                    +
                    885  & *clon(l,2)
                    +
                    886  & -(-dj1*f(li,2,ku)-di1*f(li,2,kv))
                    +
                    887  & *slon(l,2))
                    +
                    888  us(ijk4)=us(ijk4)+2*rr*((-dj1*f(lr,2,ku)+di1*f(lr,2,kv))
                    +
                    889  & *clon(l,1)
                    +
                    890  & -(-dj1*f(li,2,ku)+di1*f(li,2,kv))
                    +
                    891  & *slon(l,1))
                    +
                    892  vs(ijk4)=vs(ijk4)+2*rr*((-di1*f(lr,2,ku)-dj1*f(lr,2,kv))
                    +
                    893  & *clon(l,1)
                    +
                    894  & -(-di1*f(li,2,ku)-dj1*f(li,2,kv))
                    +
                    895  & *slon(l,1))
                    +
                    896  us(ijk5)=us(ijk5)+2*rr*((-dj1*f(lr,2,ku)-di1*f(lr,2,kv))
                    +
                    897  & *clon(l,8)
                    +
                    898  & -(-dj1*f(li,2,ku)-di1*f(li,2,kv))
                    +
                    899  & *slon(l,8))
                    +
                    900  vs(ijk5)=vs(ijk5)+2*rr*(( di1*f(lr,2,ku)-dj1*f(lr,2,kv))
                    +
                    901  & *clon(l,8)
                    +
                    902  & -( di1*f(li,2,ku)-dj1*f(li,2,kv))
                    +
                    903  & *slon(l,8))
                    +
                    904  us(ijk6)=us(ijk6)+2*rr*((-di1*f(lr,2,ku)-dj1*f(lr,2,kv))
                    +
                    905  & *clon(l,7)
                    +
                    906  & -(-di1*f(li,2,ku)-dj1*f(li,2,kv))
                    +
                    907  & *slon(l,7))
                    +
                    908  vs(ijk6)=vs(ijk6)+2*rr*(( dj1*f(lr,2,ku)-di1*f(lr,2,kv))
                    +
                    909  & *clon(l,7)
                    +
                    910  & -( dj1*f(li,2,ku)-di1*f(li,2,kv))
                    +
                    911  & *slon(l,7))
                    +
                    912  us(ijk7)=us(ijk7)+2*rr*(( di1*f(lr,2,ku)-dj1*f(lr,2,kv))
                    +
                    913  & *clon(l,6)
                    +
                    914  & -( di1*f(li,2,ku)-dj1*f(li,2,kv))
                    +
                    915  & *slon(l,6))
                    +
                    916  vs(ijk7)=vs(ijk7)+2*rr*(( dj1*f(lr,2,ku)+di1*f(lr,2,kv))
                    +
                    917  & *clon(l,6)
                    +
                    918  & -( dj1*f(li,2,ku)+di1*f(li,2,kv))
                    +
                    919  & *slon(l,6))
                    +
                    920  us(ijk8)=us(ijk8)+2*rr*(( dj1*f(lr,2,ku)-di1*f(lr,2,kv))
                    +
                    921  & *clon(l,5)
                    +
                    922  & -( dj1*f(li,2,ku)-di1*f(li,2,kv))
                    +
                    923  & *slon(l,5))
                    +
                    924  vs(ijk8)=vs(ijk8)+2*rr*(( di1*f(lr,2,ku)+dj1*f(lr,2,kv))
                    +
                    925  & *clon(l,5)
                    +
                    926  & -( di1*f(li,2,ku)+dj1*f(li,2,kv))
                    +
                    927  & *slon(l,5))
                    +
                    928  ENDDO
                    +
                    929  ENDDO
                    +
                    930  ENDIF
                    +
                    931  ENDDO
                    +
                    932  ENDDO
                    +
                    933 
                    +
                    934  END
                    +
                    subroutine spdz2uv(I, M, ENN1, ELONN1, EON, EONTOP, D, Z, U, V, UTOP, VTOP)
                    Computes the wind components from divergence and vorticity in spectral space.
                    Definition: spdz2uv.f:49
                    +
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    +
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    +
                    subroutine sptgpsv(IROMB, MAXWV, KMAX, NPS, KWSKIP, KGSKIP, NISKIP, NJSKIP, TRUE, XMESH, ORIENT, WAVED, WAVEZ, UN, VN, US, VS)
                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to...
                    Definition: sptgpsv.f:83
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpt_8f.html b/ver-5.0.0/sptgpt_8f.html new file mode 100644 index 00000000..71aec305 --- /dev/null +++ b/ver-5.0.0/sptgpt_8f.html @@ -0,0 +1,252 @@ + + + + + + + +NCEPLIBS-ip: sptgpt.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgpt.f File Reference
                    +
                    +
                    + +

                    Transform spectral scalar to station points. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgpt (IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVE, GP)
                     This subprogram performs a spherical transform from spectral coefficients of scalar quantities to specified sets of station points on the globe. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral scalar to station points.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-02-29 Iredell Initial.
                    1998-12-15 Iredell Openmp directives inserted.
                    2003-06-30 Iredell Use spfftpt().
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgpt.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgpt()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgpt ( IROMB,
                     MAXWV,
                     KMAX,
                     NMAX,
                     KWSKIP,
                     KGSKIP,
                     NRSKIP,
                     NGSKIP,
                    real, dimension(*) RLAT,
                    real, dimension(*) RLON,
                    real, dimension(*) WAVE,
                    real, dimension(*) GP 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to specified sets of station points on the globe.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The wave and point fields may have general indexing, but each wave field is in sequential 'IBM order', i.e. with zonal wavenumber as the slower index.

                    +

                    The transforms are all multiprocessed over stations.

                    +

                    Transform several fields at a time to improve vectorization.

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    KMAXnumber of fields to transform.
                    NMAXnumber of station points to return
                    KWSKIPskip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    KGSKIPskip number between station point sets (defaults to NMAX if KGSKIP=0)
                    NRSKIPskip number between station lats and lons (defaults to 1 if NRSKIP=0)
                    NGSKIPskip number between station points (defaults to 1 if NGSKIP=0)
                    RLATstation latitudes in degrees
                    RLONstation longitudes in degrees
                    WAVEwave fields
                    GPstation point sets
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 48 of file sptgpt.f.

                    + +

                    References spfftpt(), splegend(), spsynth(), and spwget().

                    + +

                    Referenced by sptrung(), and sptrungv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgpt_8f.js b/ver-5.0.0/sptgpt_8f.js new file mode 100644 index 00000000..708e1051 --- /dev/null +++ b/ver-5.0.0/sptgpt_8f.js @@ -0,0 +1,4 @@ +var sptgpt_8f = +[ + [ "sptgpt", "sptgpt_8f.html#a1b8d333bcc601e5b7e8d3dd1369f54b1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgpt_8f_source.html b/ver-5.0.0/sptgpt_8f_source.html new file mode 100644 index 00000000..b873a634 --- /dev/null +++ b/ver-5.0.0/sptgpt_8f_source.html @@ -0,0 +1,208 @@ + + + + + + + +NCEPLIBS-ip: sptgpt.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgpt.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral scalar to station points.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | Iredell | Initial.
                    +
                    8 C> 1998-12-15 | Iredell | Openmp directives inserted.
                    +
                    9 C> 2003-06-30 | Iredell | Use spfftpt().
                    +
                    10 C>
                    +
                    11 C> @author Iredell @date 96-02-29
                    +
                    12 
                    +
                    13 C> This subprogram performs a spherical transform
                    +
                    14 c> from spectral coefficients of scalar quantities
                    +
                    15 c> to specified sets of station points on the globe.
                    +
                    16 C>
                    +
                    17 C> The wave-space can be either triangular or rhomboidal.
                    +
                    18 C>
                    +
                    19 C> The wave and point fields may have general indexing,
                    +
                    20 c> but each wave field is in sequential 'IBM order',
                    +
                    21 c> i.e. with zonal wavenumber as the slower index.
                    +
                    22 C>
                    +
                    23 C> The transforms are all multiprocessed over stations.
                    +
                    24 C>
                    +
                    25 C> Transform several fields at a time to improve vectorization.
                    +
                    26 C>
                    +
                    27 C> Subprogram can be called from a multiprocessing environment.
                    +
                    28 C>
                    +
                    29 C> @param IROMB spectral domain shape
                    +
                    30 C> (0 for triangular, 1 for rhomboidal)
                    +
                    31 C> @param MAXWV spectral truncation
                    +
                    32 C> @param KMAX number of fields to transform.
                    +
                    33 C> @param NMAX number of station points to return
                    +
                    34 C> @param KWSKIP skip number between wave fields
                    +
                    35 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    +
                    36 C> @param KGSKIP skip number between station point sets
                    +
                    37 C> (defaults to NMAX if KGSKIP=0)
                    +
                    38 C> @param NRSKIP skip number between station lats and lons
                    +
                    39 C> (defaults to 1 if NRSKIP=0)
                    +
                    40 C> @param NGSKIP skip number between station points
                    +
                    41 C> (defaults to 1 if NGSKIP=0)
                    +
                    42 C> @param RLAT station latitudes in degrees
                    +
                    43 C> @param RLON station longitudes in degrees
                    +
                    44 C> @param WAVE wave fields
                    +
                    45 C> @param GP station point sets
                    +
                    46 C>
                    +
                    47 C> @author Iredell @date 96-02-29
                    +
                    48  SUBROUTINE sptgpt(IROMB,MAXWV,KMAX,NMAX,
                    +
                    49  & KWSKIP,KGSKIP,NRSKIP,NGSKIP,
                    +
                    50  & RLAT,RLON,WAVE,GP)
                    +
                    51 
                    +
                    52  REAL RLAT(*),RLON(*),WAVE(*),GP(*)
                    +
                    53  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    54  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    55  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    56  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    57  INTEGER MP(KMAX)
                    +
                    58  REAL WTOP(2*(MAXWV+1),KMAX)
                    +
                    59  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
                    +
                    60  REAL F(2*MAXWV+3,2,KMAX)
                    +
                    61  parameter(pi=3.14159265358979)
                    +
                    62 
                    +
                    63 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    64  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    65  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    66  mxtop=maxwv+1
                    +
                    67  idim=2*maxwv+3
                    +
                    68  kw=kwskip
                    +
                    69  kg=kgskip
                    +
                    70  nr=nrskip
                    +
                    71  ng=ngskip
                    +
                    72  IF(kw.EQ.0) kw=2*mx
                    +
                    73  IF(kg.EQ.0) kg=nmax
                    +
                    74  IF(nr.EQ.0) nr=1
                    +
                    75  IF(ng.EQ.0) ng=1
                    +
                    76  mp=0
                    +
                    77 C$OMP PARALLEL DO
                    +
                    78  DO k=1,kmax
                    +
                    79  wtop(1:2*mxtop,k)=0
                    +
                    80  ENDDO
                    +
                    81 
                    +
                    82 C CALCULATE STATION FIELDS
                    +
                    83 C$OMP PARALLEL DO PRIVATE(RADLAT,SLAT1,CLAT1)
                    +
                    84 C$OMP& PRIVATE(PLN,PLNTOP,F,NK)
                    +
                    85  DO n=1,nmax
                    +
                    86  radlat=pi/180*rlat((n-1)*nr+1)
                    +
                    87  IF(rlat((n-1)*nr+1).GE.89.9995) THEN
                    +
                    88  slat1=1.
                    +
                    89  clat1=0.
                    +
                    90  ELSEIF(rlat((n-1)*nr+1).LE.-89.9995) THEN
                    +
                    91  slat1=-1.
                    +
                    92  clat1=0.
                    +
                    93  ELSE
                    +
                    94  slat1=sin(radlat)
                    +
                    95  clat1=cos(radlat)
                    +
                    96  ENDIF
                    +
                    97  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    98  & pln,plntop)
                    +
                    99  CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
                    +
                    100  & clat1,pln,plntop,mp,wave,wtop,f)
                    +
                    101  CALL spfftpt(maxwv,1,2*maxwv+3,kg,kmax,rlon((n-1)*nr+1),
                    +
                    102  & f,gp((n-1)*ng+1))
                    +
                    103  ENDDO
                    +
                    104  END
                    +
                    subroutine spfftpt(M, N, INCW, INCG, KMAX, RLON, W, G)
                    This subprogram computes a slow Fourier transform from Fourier space to a set of gridpoints.
                    Definition: spfftpt.f:23
                    +
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    +
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    +
                    subroutine sptgpt(IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVE, GP)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to spe...
                    Definition: sptgpt.f:51
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgptd_8f.html b/ver-5.0.0/sptgptd_8f.html new file mode 100644 index 00000000..35b6d8e5 --- /dev/null +++ b/ver-5.0.0/sptgptd_8f.html @@ -0,0 +1,255 @@ + + + + + + + +NCEPLIBS-ip: sptgptd.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgptd.f File Reference
                    +
                    +
                    + +

                    Transform spectral to station point gradients. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgptd (IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVE, XP, YP)
                     This subprogram performs a spherical transform from spectral coefficients of scalar fields to specified sets of station point gradients on the globe. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral to station point gradients.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    96-02-29 Iredell Initial.
                    1998-12-15 Iredell Openmp directives inserted.
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgptd.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgptd()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgptd ( IROMB,
                     MAXWV,
                     KMAX,
                     NMAX,
                     KWSKIP,
                     KGSKIP,
                     NRSKIP,
                     NGSKIP,
                    real, dimension(*) RLAT,
                    real, dimension(*) RLON,
                    real, dimension(*) WAVE,
                    real, dimension(*) XP,
                    real, dimension(*) YP 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of scalar fields to specified sets of station point gradients on the globe.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The wave and point fields may have general indexing, but each wave field is in sequential 'IBM order', i.e. with zonal wavenumber as the slower index.

                    +

                    The transforms are all multiprocessed over stations.

                    +

                    Transform several fields at a time to improve vectorization.

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    KMAXnumber of fields to transform.
                    NMAXnumber of station points to return
                    KWSKIPskip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    KGSKIPskip number between station point sets (defaults to NMAX if KGSKIP=0)
                    NRSKIPskip number between station lats and lons (defaults to 1 if NRSKIP=0)
                    NGSKIPskip number between station points (defaults to 1 if NGSKIP=0)
                    RLATstation latitudes in degrees
                    RLONstation longitudes in degrees
                    WAVEwave fields
                    XPstation point x-gradient sets
                    YPstation point y-gradient sets
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 48 of file sptgptd.f.

                    + +

                    References splaplac(), sptgptv(), and spwget().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgptd_8f.js b/ver-5.0.0/sptgptd_8f.js new file mode 100644 index 00000000..437951b8 --- /dev/null +++ b/ver-5.0.0/sptgptd_8f.js @@ -0,0 +1,4 @@ +var sptgptd_8f = +[ + [ "sptgptd", "sptgptd_8f.html#a64d1fe761662182ca3495531152d1cd3", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgptd_8f_source.html b/ver-5.0.0/sptgptd_8f_source.html new file mode 100644 index 00000000..9a34783f --- /dev/null +++ b/ver-5.0.0/sptgptd_8f_source.html @@ -0,0 +1,180 @@ + + + + + + + +NCEPLIBS-ip: sptgptd.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgptd.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral to station point gradients.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | Iredell | Initial.
                    +
                    8 C> 1998-12-15 | Iredell | Openmp directives inserted.
                    +
                    9 C>
                    +
                    10 C> @author Iredell @date 96-02-29
                    +
                    11 
                    +
                    12 C> This subprogram performs a spherical transform
                    +
                    13 c> from spectral coefficients of scalar fields
                    +
                    14 c> to specified sets of station point gradients on the globe.
                    +
                    15 C>
                    +
                    16 C> The wave-space can be either triangular or rhomboidal.
                    +
                    17 C>
                    +
                    18 C> The wave and point fields may have general indexing,
                    +
                    19 c> but each wave field is in sequential 'IBM order',
                    +
                    20 c> i.e. with zonal wavenumber as the slower index.
                    +
                    21 C>
                    +
                    22 C> The transforms are all multiprocessed over stations.
                    +
                    23 C>
                    +
                    24 C> Transform several fields at a time to improve vectorization.
                    +
                    25 C>
                    +
                    26 C> Subprogram can be called from a multiprocessing environment.
                    +
                    27 C>
                    +
                    28 C> @param IROMB spectral domain shape
                    +
                    29 c> (0 for triangular, 1 for rhomboidal)
                    +
                    30 C> @param MAXWV spectral truncation
                    +
                    31 C> @param KMAX number of fields to transform.
                    +
                    32 C> @param NMAX number of station points to return
                    +
                    33 C> @param KWSKIP skip number between wave fields
                    +
                    34 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    +
                    35 C> @param KGSKIP skip number between station point sets
                    +
                    36 C> (defaults to NMAX if KGSKIP=0)
                    +
                    37 C> @param NRSKIP skip number between station lats and lons
                    +
                    38 C> (defaults to 1 if NRSKIP=0)
                    +
                    39 C> @param NGSKIP skip number between station points
                    +
                    40 c> (defaults to 1 if NGSKIP=0)
                    +
                    41 C> @param RLAT station latitudes in degrees
                    +
                    42 C> @param RLON station longitudes in degrees
                    +
                    43 C> @param WAVE wave fields
                    +
                    44 C> @param XP station point x-gradient sets
                    +
                    45 C> @param YP station point y-gradient sets
                    +
                    46 C>
                    +
                    47 C> @author Iredell @date 96-02-29
                    +
                    48  SUBROUTINE sptgptd(IROMB,MAXWV,KMAX,NMAX,
                    +
                    49  & KWSKIP,KGSKIP,NRSKIP,NGSKIP,
                    +
                    50  & RLAT,RLON,WAVE,XP,YP)
                    +
                    51 
                    +
                    52  REAL RLAT(*),RLON(*),WAVE(*),XP(*),YP(*)
                    +
                    53  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    54  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    55  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    56  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    57  REAL WD((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    58  REAL WZ((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    59 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    60 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    61  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    62  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    63  mdim=2*mx+1
                    +
                    64  kw=kwskip
                    +
                    65  IF(kw.EQ.0) kw=2*mx
                    +
                    66 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    67 C CALCULATE STATION FIELDS
                    +
                    68 C$OMP PARALLEL DO PRIVATE(KWS)
                    +
                    69  DO k=1,kmax
                    +
                    70  kws=(k-1)*kw
                    +
                    71  CALL splaplac(iromb,maxwv,enn1,wave(kws+1),wd(1,k),1)
                    +
                    72  wz(1:2*mx,k)=0.
                    +
                    73  ENDDO
                    +
                    74  CALL sptgptv(iromb,maxwv,kmax,nmax,mdim,kgskip,nrskip,ngskip,
                    +
                    75  & rlat,rlon,wd,wz,xp,yp)
                    +
                    76 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    77  END
                    +
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    +
                    subroutine sptgptd(IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVE, XP, YP)
                    This subprogram performs a spherical transform from spectral coefficients of scalar fields to specifi...
                    Definition: sptgptd.f:51
                    +
                    subroutine sptgptv(IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVED, WAVEZ, UP, VP)
                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to...
                    Definition: sptgptv.f:54
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgptsd_8f.html b/ver-5.0.0/sptgptsd_8f.html new file mode 100644 index 00000000..b3a36610 --- /dev/null +++ b/ver-5.0.0/sptgptsd_8f.html @@ -0,0 +1,266 @@ + + + + + + + +NCEPLIBS-ip: sptgptsd.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgptsd.f File Reference
                    +
                    +
                    + +

                    Transform spectral scalar to station points. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgptsd (IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVE, GP, XP, YP)
                     This subprogram performs a spherical transform from spectral coefficients of scalar quantities to specified sets of station point values and their gradients on the globe. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral scalar to station points.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-02-29 Iredell Initial.
                    1998-12-15 Iredell Openmp directives inserted.
                    1999-08-18 Iredell Openmp directive typo fixed.
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgptsd.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgptsd()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgptsd ( IROMB,
                     MAXWV,
                     KMAX,
                     NMAX,
                     KWSKIP,
                     KGSKIP,
                     NRSKIP,
                     NGSKIP,
                    real, dimension(*) RLAT,
                    real, dimension(*) RLON,
                    real, dimension(*) WAVE,
                    real, dimension(*) GP,
                    real, dimension(*) XP,
                    real, dimension(*) YP 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to specified sets of station point values and their gradients on the globe.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The wave and point fields may have general indexing, but each wave field is in sequential 'IBM order', i.e. with zonal wavenumber as the slower index.

                    +

                    The transforms are all multiprocessed over stations.

                    +

                    Transform several fields at a time to improve vectorization.

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    KMAXnumber of fields to transform.
                    NMAXnumber of station points to return
                    KWSKIPskip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    KGSKIPskip number between station point sets (defaults to NMAX if KGSKIP=0)
                    NRSKIPskip number between station lats and lons (defaults to 1 if NRSKIP=0)
                    NGSKIPskip number between station points (defaults to 1 if NGSKIP=0)
                    RLATstation latitudes in degrees
                    RLONstation longitudes in degrees
                    WAVEwave fields
                    GPstation point sets
                    XPstation point x-gradient sets
                    YPstation point y-gradient sets
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 52 of file sptgptsd.f.

                    + +

                    References spfftpt(), spgradx(), spgrady(), splegend(), spsynth(), and spwget().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgptsd_8f.js b/ver-5.0.0/sptgptsd_8f.js new file mode 100644 index 00000000..ccdb5de0 --- /dev/null +++ b/ver-5.0.0/sptgptsd_8f.js @@ -0,0 +1,4 @@ +var sptgptsd_8f = +[ + [ "sptgptsd", "sptgptsd_8f.html#ad3ab15089a57b493cc74443ea3b3d88f", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgptsd_8f_source.html b/ver-5.0.0/sptgptsd_8f_source.html new file mode 100644 index 00000000..78844f24 --- /dev/null +++ b/ver-5.0.0/sptgptsd_8f_source.html @@ -0,0 +1,236 @@ + + + + + + + +NCEPLIBS-ip: sptgptsd.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgptsd.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral scalar to station points.
                    +
                    3 C> @author Iredell @date 96-02-29
                    +
                    4 C>
                    +
                    5 C> ### Program History Log
                    +
                    6 C> Date | Programmer | Comments
                    +
                    7 C> -----|------------|---------
                    +
                    8 C> 96-02-29 | Iredell | Initial.
                    +
                    9 C> 1998-12-15 | Iredell | Openmp directives inserted.
                    +
                    10 C> 1999-08-18 | Iredell | Openmp directive typo fixed.
                    +
                    11 C>
                    +
                    12 C> @author Iredell @date 96-02-29
                    +
                    13 
                    +
                    14 C> This subprogram performs a spherical transform
                    +
                    15 C> from spectral coefficients of scalar quantities
                    +
                    16 C> to specified sets of station point values
                    +
                    17 C> and their gradients on the globe.
                    +
                    18 C>
                    +
                    19 C> The wave-space can be either triangular or rhomboidal.
                    +
                    20 C>
                    +
                    21 C> The wave and point fields may have general indexing,
                    +
                    22 C> but each wave field is in sequential 'IBM order',
                    +
                    23 C> i.e. with zonal wavenumber as the slower index.
                    +
                    24 C>
                    +
                    25 C> The transforms are all multiprocessed over stations.
                    +
                    26 C>
                    +
                    27 C> Transform several fields at a time to improve vectorization.
                    +
                    28 C>
                    +
                    29 C> Subprogram can be called from a multiprocessing environment.
                    +
                    30 C>
                    +
                    31 C> @param IROMB spectral domain shape
                    +
                    32 C> (0 for triangular, 1 for rhomboidal)
                    +
                    33 C> @param MAXWV spectral truncation
                    +
                    34 C> @param KMAX number of fields to transform.
                    +
                    35 C> @param NMAX number of station points to return
                    +
                    36 C> @param KWSKIP skip number between wave fields
                    +
                    37 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    +
                    38 C> @param KGSKIP skip number between station point sets
                    +
                    39 C> (defaults to NMAX if KGSKIP=0)
                    +
                    40 C> @param NRSKIP skip number between station lats and lons
                    +
                    41 C> (defaults to 1 if NRSKIP=0)
                    +
                    42 C> @param NGSKIP skip number between station points
                    +
                    43 C> (defaults to 1 if NGSKIP=0)
                    +
                    44 C> @param RLAT station latitudes in degrees
                    +
                    45 C> @param RLON station longitudes in degrees
                    +
                    46 C> @param WAVE wave fields
                    +
                    47 C> @param GP station point sets
                    +
                    48 C> @param XP station point x-gradient sets
                    +
                    49 C> @param YP station point y-gradient sets
                    +
                    50 C>
                    +
                    51 C> @author Iredell @date 96-02-29
                    +
                    52  SUBROUTINE sptgptsd(IROMB,MAXWV,KMAX,NMAX,
                    +
                    53  & KWSKIP,KGSKIP,NRSKIP,NGSKIP,
                    +
                    54  & RLAT,RLON,WAVE,GP,XP,YP)
                    +
                    55 
                    +
                    56  REAL RLAT(*),RLON(*),WAVE(*)
                    +
                    57  REAL GP(*),XP(*),YP(*)
                    +
                    58  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    59  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    60  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    61  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    62  INTEGER MP(2*KMAX)
                    +
                    63  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2,2*KMAX)
                    +
                    64  REAL WTOP(2*(MAXWV+1),2*KMAX)
                    +
                    65  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
                    +
                    66  REAL F(2*MAXWV+2,2,3*KMAX),G(3*KMAX)
                    +
                    67  parameter(pi=3.14159265358979)
                    +
                    68 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    69 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    70  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    71  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    72  mxtop=maxwv+1
                    +
                    73  mdim=2*mx
                    +
                    74  idim=2*maxwv+2
                    +
                    75  kw=kwskip
                    +
                    76  kg=kgskip
                    +
                    77  nr=nrskip
                    +
                    78  ng=ngskip
                    +
                    79  IF(kw.EQ.0) kw=2*mx
                    +
                    80  IF(kg.EQ.0) kg=nmax
                    +
                    81  IF(nr.EQ.0) nr=1
                    +
                    82  IF(ng.EQ.0) ng=1
                    +
                    83  mp(1:kmax)=10
                    +
                    84  mp(kmax+1:2*kmax)=1
                    +
                    85 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    86 C CALCULATE SPECTRAL WINDS
                    +
                    87 C$OMP PARALLEL DO PRIVATE(KWS,KS,KY)
                    +
                    88  DO k=1,kmax
                    +
                    89  kws=(k-1)*kw
                    +
                    90  ks=0*kmax+k
                    +
                    91  ky=1*kmax+k
                    +
                    92  DO i=1,2*mx
                    +
                    93  w(i,ks)=wave(kws+i)
                    +
                    94  ENDDO
                    +
                    95  DO i=1,2*mxtop
                    +
                    96  wtop(i,ks)=0
                    +
                    97  ENDDO
                    +
                    98  CALL spgrady(iromb,maxwv,enn1,eon,eontop,
                    +
                    99  & wave(kws+1),w(1,ky),wtop(1,ky))
                    +
                    100  ENDDO
                    +
                    101 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    102 C CALCULATE STATION FIELDS
                    +
                    103 C$OMP PARALLEL DO PRIVATE(KS,KY,KX,SLAT1,CLAT1)
                    +
                    104 C$OMP& PRIVATE(PLN,PLNTOP,F,G,NK)
                    +
                    105  DO n=1,nmax
                    +
                    106  IF(abs(rlat((n-1)*nr+1)).GE.89.9995) THEN
                    +
                    107  slat1=sign(1.,rlat((n-1)*nr+1))
                    +
                    108  clat1=0.
                    +
                    109  ELSE
                    +
                    110  slat1=sin(pi/180*rlat((n-1)*nr+1))
                    +
                    111  clat1=cos(pi/180*rlat((n-1)*nr+1))
                    +
                    112  ENDIF
                    +
                    113  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    114  & pln,plntop)
                    +
                    115  CALL spsynth(iromb,maxwv,2*maxwv,idim,mdim,2*mxtop,2*kmax,
                    +
                    116  & clat1,pln,plntop,mp,w,wtop,f)
                    +
                    117  CALL spgradx(maxwv,idim,kmax,mp,clat1,f(1,1,1),f(1,1,2*kmax+1))
                    +
                    118  CALL spfftpt(maxwv,1,idim,1,3*kmax,rlon((n-1)*nr+1),f,g)
                    +
                    119  DO k=1,kmax
                    +
                    120  ks=0*kmax+k
                    +
                    121  ky=1*kmax+k
                    +
                    122  kx=2*kmax+k
                    +
                    123  nk=(n-1)*ng+(k-1)*kg+1
                    +
                    124  gp(nk)=g(ks)
                    +
                    125  xp(nk)=g(kx)
                    +
                    126  yp(nk)=g(ky)
                    +
                    127  ENDDO
                    +
                    128  ENDDO
                    +
                    129 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    130  END
                    +
                    subroutine spfftpt(M, N, INCW, INCG, KMAX, RLON, W, G)
                    This subprogram computes a slow Fourier transform from Fourier space to a set of gridpoints.
                    Definition: spfftpt.f:23
                    +
                    subroutine spgradx(M, INCW, KMAX, MP, CLAT, W, WX)
                    This subprogram computes the x-gradient of fields in complex Fourier space.
                    Definition: spgradx.f:38
                    +
                    subroutine spgrady(I, M, ENN1, EON, EONTOP, Q, QDY, QDYTOP)
                    Computes the horizontal vector y-gradient of a scalar field in spectral space.
                    Definition: spgrady.f:32
                    +
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    +
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    +
                    subroutine sptgptsd(IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVE, GP, XP, YP)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to spe...
                    Definition: sptgptsd.f:55
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgptv_8f.html b/ver-5.0.0/sptgptv_8f.html new file mode 100644 index 00000000..ec850798 --- /dev/null +++ b/ver-5.0.0/sptgptv_8f.html @@ -0,0 +1,268 @@ + + + + + + + +NCEPLIBS-ip: sptgptv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgptv.f File Reference
                    +
                    +
                    + +

                    Transform spectral vector to station points. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgptv (IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVED, WAVEZ, UP, VP)
                     This subprogram performs a spherical transform from spectral coefficients of divergences and curls to specified sets of station point vectors on the globe. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral vector to station points.

                    +

                    +Program History Log

                    + + + + + + + + + + + +
                    Date Programmer Comments
                    96-02-29 IREDELL Initial
                    1998-12-15 IREDELL Openmp directives inserted
                    1999-08-18 IREDELL Openmp directive typo fixed
                    2003-06-30 IREDELL use spfftpt()
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgptv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgptv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgptv ( IROMB,
                     MAXWV,
                     KMAX,
                     NMAX,
                     KWSKIP,
                     KGSKIP,
                     NRSKIP,
                     NGSKIP,
                    real, dimension(*) RLAT,
                    real, dimension(*) RLON,
                    real, dimension(*) WAVED,
                    real, dimension(*) WAVEZ,
                    real, dimension(*) UP,
                    real, dimension(*) VP 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to specified sets of station point vectors on the globe.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The wave and point fields may have general indexing, but each wave field is in sequential 'IBM order', i.e. with zonal wavenumber as the slower index.

                    +

                    The transforms are all multiprocessed over stations.

                    +

                    Transform several fields at a time to improve vectorization.

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    KMAXnumber of fields to transform.
                    NMAXnumber of station points to return
                    KWSKIPskip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) IF KWSKIP=0)
                    KGSKIPskip number between station point sets (defaults to NMAX IF KGSKIP=0)
                    NRSKIPskip number between station lats and lons (defaults to 1 if NRSKIP=0)
                    NGSKIPskip number between station points (defaults to 1 if NGSKIP=0)
                    RLATstation latitudes in degrees
                    RLONstation longitudes in degrees
                    WAVEDwave divergence fields
                    WAVEZwave vorticity fields
                    UPstation point u-wind sets
                    VPstation point v-wind sets
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 51 of file sptgptv.f.

                    + +

                    References spdz2uv(), spfftpt(), splegend(), spsynth(), and spwget().

                    + +

                    Referenced by sptgptd(), and sptrungv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgptv_8f.js b/ver-5.0.0/sptgptv_8f.js new file mode 100644 index 00000000..59a8e5b1 --- /dev/null +++ b/ver-5.0.0/sptgptv_8f.js @@ -0,0 +1,4 @@ +var sptgptv_8f = +[ + [ "sptgptv", "sptgptv_8f.html#a9af8a22564d132a887a5237f30710f13", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgptv_8f_source.html b/ver-5.0.0/sptgptv_8f_source.html new file mode 100644 index 00000000..bc2c949a --- /dev/null +++ b/ver-5.0.0/sptgptv_8f_source.html @@ -0,0 +1,227 @@ + + + + + + + +NCEPLIBS-ip: sptgptv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgptv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral vector to station points.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | IREDELL | Initial
                    +
                    8 C> 1998-12-15 | IREDELL | Openmp directives inserted
                    +
                    9 C> 1999-08-18 | IREDELL | Openmp directive typo fixed
                    +
                    10 C> 2003-06-30 | IREDELL | use spfftpt()
                    +
                    11 C>
                    +
                    12 C> @author IREDELL @date 96-02-29
                    +
                    13 
                    +
                    14 C> This subprogram performs a spherical transform
                    +
                    15 C> from spectral coefficients of divergences and curls
                    +
                    16 C> to specified sets of station point vectors on the globe.
                    +
                    17 C>
                    +
                    18 C> The wave-space can be either triangular or rhomboidal.
                    +
                    19 C>
                    +
                    20 C> The wave and point fields may have general indexing,
                    +
                    21 C> but each wave field is in sequential 'IBM order',
                    +
                    22 C> i.e. with zonal wavenumber as the slower index.
                    +
                    23 C>
                    +
                    24 C> The transforms are all multiprocessed over stations.
                    +
                    25 C>
                    +
                    26 C> Transform several fields at a time to improve vectorization.
                    +
                    27 C>
                    +
                    28 C> Subprogram can be called from a multiprocessing environment.
                    +
                    29 C>
                    +
                    30 C> @param IROMB spectral domain shape
                    +
                    31 c> (0 for triangular, 1 for rhomboidal)
                    +
                    32 C> @param MAXWV spectral truncation
                    +
                    33 C> @param KMAX number of fields to transform.
                    +
                    34 C> @param NMAX number of station points to return
                    +
                    35 C> @param KWSKIP skip number between wave fields
                    +
                    36 c> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) IF KWSKIP=0)
                    +
                    37 C> @param KGSKIP skip number between station point sets
                    +
                    38 c> (defaults to NMAX IF KGSKIP=0)
                    +
                    39 C> @param NRSKIP skip number between station lats and lons
                    +
                    40 c> (defaults to 1 if NRSKIP=0)
                    +
                    41 C> @param NGSKIP skip number between station points
                    +
                    42 c> (defaults to 1 if NGSKIP=0)
                    +
                    43 C> @param RLAT station latitudes in degrees
                    +
                    44 C> @param RLON station longitudes in degrees
                    +
                    45 C> @param WAVED wave divergence fields
                    +
                    46 C> @param WAVEZ wave vorticity fields
                    +
                    47 C> @param UP station point u-wind sets
                    +
                    48 C> @param VP station point v-wind sets
                    +
                    49 C>
                    +
                    50 C> @author IREDELL @date 96-02-29
                    +
                    51  SUBROUTINE sptgptv(IROMB,MAXWV,KMAX,NMAX,
                    +
                    52  & KWSKIP,KGSKIP,NRSKIP,NGSKIP,
                    +
                    53  & RLAT,RLON,WAVED,WAVEZ,UP,VP)
                    +
                    54 
                    +
                    55  REAL RLAT(*),RLON(*),WAVED(*),WAVEZ(*),UP(*),VP(*)
                    +
                    56  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    57  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    58  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    59  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    60  INTEGER MP(2*KMAX)
                    +
                    61  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,2*KMAX)
                    +
                    62  REAL WTOP(2*(MAXWV+1),2*KMAX)
                    +
                    63  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
                    +
                    64  REAL F(2*MAXWV+3,2,2*KMAX)
                    +
                    65  REAL G(2*KMAX)
                    +
                    66  parameter(pi=3.14159265358979)
                    +
                    67 
                    +
                    68 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    69  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    70  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    71  mxtop=maxwv+1
                    +
                    72  mdim=2*mx+1
                    +
                    73  idim=2*maxwv+3
                    +
                    74  kw=kwskip
                    +
                    75  kg=kgskip
                    +
                    76  nr=nrskip
                    +
                    77  ng=ngskip
                    +
                    78  IF(kw.EQ.0) kw=2*mx
                    +
                    79  IF(kg.EQ.0) kg=nmax
                    +
                    80  IF(nr.EQ.0) nr=1
                    +
                    81  IF(ng.EQ.0) ng=1
                    +
                    82  mp=1
                    +
                    83 
                    +
                    84 C CALCULATE SPECTRAL WINDS
                    +
                    85 C$OMP PARALLEL DO PRIVATE(KWS)
                    +
                    86  DO k=1,kmax
                    +
                    87  kws=(k-1)*kw
                    +
                    88  CALL spdz2uv(iromb,maxwv,enn1,elonn1,eon,eontop,
                    +
                    89  & waved(kws+1),wavez(kws+1),
                    +
                    90  & w(1,k),w(1,kmax+k),wtop(1,k),wtop(1,kmax+k))
                    +
                    91  ENDDO
                    +
                    92 
                    +
                    93 C CALCULATE STATION FIELDS
                    +
                    94 C$OMP PARALLEL DO PRIVATE(KU,KV,RADLAT,SLAT1,CLAT1)
                    +
                    95 C$OMP& PRIVATE(PLN,PLNTOP,F,G,NK)
                    +
                    96  DO n=1,nmax
                    +
                    97  radlat=pi/180*rlat((n-1)*nr+1)
                    +
                    98  IF(rlat((n-1)*nr+1).GE.89.9995) THEN
                    +
                    99  slat1=1.
                    +
                    100  clat1=0.
                    +
                    101  ELSEIF(rlat((n-1)*nr+1).LE.-89.9995) THEN
                    +
                    102  slat1=-1.
                    +
                    103  clat1=0.
                    +
                    104  ELSE
                    +
                    105  slat1=sin(radlat)
                    +
                    106  clat1=cos(radlat)
                    +
                    107  ENDIF
                    +
                    108  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    109  & pln,plntop)
                    +
                    110  CALL spsynth(iromb,maxwv,2*maxwv,idim,mdim,2*mxtop,2*kmax,
                    +
                    111  & clat1,pln,plntop,mp,w,wtop,f)
                    +
                    112  CALL spfftpt(maxwv,1,2*maxwv+3,1,2*kmax,rlon((n-1)*nr+1),f,g)
                    +
                    113  DO k=1,kmax
                    +
                    114  ku=k
                    +
                    115  kv=k+kmax
                    +
                    116  nk=(n-1)*ng+(k-1)*kg+1
                    +
                    117  up(nk)=g(ku)
                    +
                    118  vp(nk)=g(kv)
                    +
                    119  ENDDO
                    +
                    120  ENDDO
                    +
                    121 
                    +
                    122  END
                    +
                    subroutine spdz2uv(I, M, ENN1, ELONN1, EON, EONTOP, D, Z, U, V, UTOP, VTOP)
                    Computes the wind components from divergence and vorticity in spectral space.
                    Definition: spdz2uv.f:49
                    +
                    subroutine spfftpt(M, N, INCW, INCG, KMAX, RLON, W, G)
                    This subprogram computes a slow Fourier transform from Fourier space to a set of gridpoints.
                    Definition: spfftpt.f:23
                    +
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    +
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    +
                    subroutine sptgptv(IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVED, WAVEZ, UP, VP)
                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to...
                    Definition: sptgptv.f:54
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgptvd_8f.html b/ver-5.0.0/sptgptvd_8f.html new file mode 100644 index 00000000..0519a396 --- /dev/null +++ b/ver-5.0.0/sptgptvd_8f.html @@ -0,0 +1,313 @@ + + + + + + + +NCEPLIBS-ip: sptgptvd.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptgptvd.f File Reference
                    +
                    +
                    + +

                    Transform spectral vector to station points. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptgptvd (IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVED, WAVEZ, DP, ZP, UP, VP, UXP, VXP, UYP, VYP)
                     This subprogram performs a spherical transform from spectral coefficients of divergences and curls to specified sets of station point vectors and their gradients on the globe. More...
                     
                    +

                    Detailed Description

                    +

                    Transform spectral vector to station points.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-02-29 Iredell Initial.
                    1998-12-15 Iredell Openmp directives inserted.
                    1999-08-18 Iredell Openmp directive typo fixed.
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptgptvd.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptgptvd()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptgptvd ( IROMB,
                     MAXWV,
                     KMAX,
                     NMAX,
                     KWSKIP,
                     KGSKIP,
                     NRSKIP,
                     NGSKIP,
                    real, dimension(*) RLAT,
                    real, dimension(*) RLON,
                    real, dimension(*) WAVED,
                    real, dimension(*) WAVEZ,
                    real, dimension(*) DP,
                    real, dimension(*) ZP,
                    real, dimension(*) UP,
                    real, dimension(*) VP,
                    real, dimension(*) UXP,
                    real, dimension(*) VXP,
                    real, dimension(*) UYP,
                    real, dimension(*) VYP 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to specified sets of station point vectors and their gradients on the globe.

                    +
                    + DP=(D(UP)/DLON+D(VP*CLAT)/DLAT)/(R*CLAT)
                    + ZP=(D(VP)/DLON-D(UP*CLAT)/DLAT)/(R*CLAT)
                    + UXP=D(UP*CLAT)/DLON/(R*CLAT)
                    + VXP=D(VP*CLAT)/DLON/(R*CLAT)
                    + UYP=D(UP*CLAT)/DLAT/R
                    + VYP=D(VP*CLAT)/DLAT/R
                    + 

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The wave and point fields may have general indexing, but each wave field is in sequential 'IBM order', i.e. with zonal wavenumber as the slower index.

                    +

                    The transforms are all multiprocessed over stations.

                    +

                    Transform several fields at a time to improve vectorization.

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    KMAXnumber of fields to transform.
                    NMAXnumber of station points to return
                    KWSKIPskip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) IF KWSKIP=0)
                    KGSKIPskip number between station point sets (defaults to NMAX if KGSKIP=0)
                    NRSKIPskip number between station lats and lons (defaults to 1 if NRSKIP=0)
                    NGSKIPskip number between station points (defaults to 1 if NGSKIP=0)
                    RLATstation latitudes in degrees
                    RLONstation longitudes in degrees
                    WAVEDwave divergence fields
                    WAVEZwave vorticity fields
                    DPstation point divergence sets
                    ZPstation point vorticity sets
                    UPstation point u-wind sets
                    VPstation point v-wind sets
                    UXPstation point u-wind x-gradient sets
                    VXPstation point v-wind x-gradient sets
                    UYPstation point u-wind y-gradient sets
                    VYPstation point v-wind y-gradient sets
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 66 of file sptgptvd.f.

                    + +

                    References spdz2uv(), spfftpt(), spgradx(), splegend(), spsynth(), and spwget().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptgptvd_8f.js b/ver-5.0.0/sptgptvd_8f.js new file mode 100644 index 00000000..9a2bc046 --- /dev/null +++ b/ver-5.0.0/sptgptvd_8f.js @@ -0,0 +1,4 @@ +var sptgptvd_8f = +[ + [ "sptgptvd", "sptgptvd_8f.html#ae03c6c76cad685ae1ed32d74bcba6753", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptgptvd_8f_source.html b/ver-5.0.0/sptgptvd_8f_source.html new file mode 100644 index 00000000..f599caeb --- /dev/null +++ b/ver-5.0.0/sptgptvd_8f_source.html @@ -0,0 +1,266 @@ + + + + + + + +NCEPLIBS-ip: sptgptvd.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptgptvd.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Transform spectral vector to station points.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | Iredell | Initial.
                    +
                    8 C> 1998-12-15 | Iredell | Openmp directives inserted.
                    +
                    9 C> 1999-08-18 | Iredell | Openmp directive typo fixed.
                    +
                    10 C>
                    +
                    11 C> @author Iredell @date 96-02-29
                    +
                    12 
                    +
                    13 C> This subprogram performs a spherical transform
                    +
                    14 C> from spectral coefficients of divergences and curls
                    +
                    15 C> to specified sets of station point vectors and their
                    +
                    16 C> gradients on the globe.
                    +
                    17 C>
                    +
                    18 C> <pre>
                    +
                    19 C> DP=(D(UP)/DLON+D(VP*CLAT)/DLAT)/(R*CLAT)
                    +
                    20 C> ZP=(D(VP)/DLON-D(UP*CLAT)/DLAT)/(R*CLAT)
                    +
                    21 C> UXP=D(UP*CLAT)/DLON/(R*CLAT)
                    +
                    22 C> VXP=D(VP*CLAT)/DLON/(R*CLAT)
                    +
                    23 C> UYP=D(UP*CLAT)/DLAT/R
                    +
                    24 C> VYP=D(VP*CLAT)/DLAT/R
                    +
                    25 C> </pre>
                    +
                    26 C>
                    +
                    27 C> The wave-space can be either triangular or rhomboidal.
                    +
                    28 C>
                    +
                    29 C> The wave and point fields may have general indexing,
                    +
                    30 C> but each wave field is in sequential 'IBM order',
                    +
                    31 C> i.e. with zonal wavenumber as the slower index.
                    +
                    32 C>
                    +
                    33 C> The transforms are all multiprocessed over stations.
                    +
                    34 C>
                    +
                    35 C> Transform several fields at a time to improve vectorization.
                    +
                    36 C>
                    +
                    37 C> Subprogram can be called from a multiprocessing environment.
                    +
                    38 C>
                    +
                    39 C> @param IROMB spectral domain shape
                    +
                    40 C> (0 for triangular, 1 for rhomboidal)
                    +
                    41 C> @param MAXWV spectral truncation
                    +
                    42 C> @param KMAX number of fields to transform.
                    +
                    43 C> @param NMAX number of station points to return
                    +
                    44 C> @param KWSKIP skip number between wave fields
                    +
                    45 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) IF KWSKIP=0)
                    +
                    46 C> @param KGSKIP skip number between station point sets
                    +
                    47 C> (defaults to NMAX if KGSKIP=0)
                    +
                    48 C> @param NRSKIP skip number between station lats and lons
                    +
                    49 C> (defaults to 1 if NRSKIP=0)
                    +
                    50 C> @param NGSKIP skip number between station points
                    +
                    51 C> (defaults to 1 if NGSKIP=0)
                    +
                    52 C> @param RLAT station latitudes in degrees
                    +
                    53 C> @param RLON station longitudes in degrees
                    +
                    54 C> @param WAVED wave divergence fields
                    +
                    55 C> @param WAVEZ wave vorticity fields
                    +
                    56 C> @param DP station point divergence sets
                    +
                    57 C> @param ZP station point vorticity sets
                    +
                    58 C> @param UP station point u-wind sets
                    +
                    59 C> @param VP station point v-wind sets
                    +
                    60 C> @param UXP station point u-wind x-gradient sets
                    +
                    61 C> @param VXP station point v-wind x-gradient sets
                    +
                    62 C> @param UYP station point u-wind y-gradient sets
                    +
                    63 C> @param VYP station point v-wind y-gradient sets
                    +
                    64 C>
                    +
                    65 C> @author Iredell @date 96-02-29
                    +
                    66  SUBROUTINE sptgptvd(IROMB,MAXWV,KMAX,NMAX,
                    +
                    67  & KWSKIP,KGSKIP,NRSKIP,NGSKIP,
                    +
                    68  & RLAT,RLON,WAVED,WAVEZ,
                    +
                    69  & DP,ZP,UP,VP,UXP,VXP,UYP,VYP)
                    +
                    70 
                    +
                    71  REAL RLAT(*),RLON(*),WAVED(*),WAVEZ(*)
                    +
                    72  REAL DP(*),ZP(*),UP(*),VP(*),UXP(*),VXP(*),UYP(*),VYP(*)
                    +
                    73  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    74  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    75  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    76  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    77  INTEGER MP(4*KMAX)
                    +
                    78  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2,4*KMAX)
                    +
                    79  REAL WTOP(2*(MAXWV+1),4*KMAX)
                    +
                    80  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
                    +
                    81  REAL F(2*MAXWV+2,2,6*KMAX),G(6*KMAX)
                    +
                    82  parameter(pi=3.14159265358979)
                    +
                    83 
                    +
                    84 C CALCULATE PRELIMINARY CONSTANTS
                    +
                    85  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    86  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    87  mxtop=maxwv+1
                    +
                    88  mdim=2*mx
                    +
                    89  idim=2*maxwv+2
                    +
                    90  kw=kwskip
                    +
                    91  kg=kgskip
                    +
                    92  nr=nrskip
                    +
                    93  ng=ngskip
                    +
                    94  IF(kw.EQ.0) kw=2*mx
                    +
                    95  IF(kg.EQ.0) kg=nmax
                    +
                    96  IF(nr.EQ.0) nr=1
                    +
                    97  IF(ng.EQ.0) ng=1
                    +
                    98  mp(1:2*kmax)=0
                    +
                    99  mp(2*kmax+1:4*kmax)=1
                    +
                    100 
                    +
                    101 C CALCULATE SPECTRAL WINDS
                    +
                    102 C$OMP PARALLEL DO PRIVATE(KWS,KD,KZ,KU,KV)
                    +
                    103  DO k=1,kmax
                    +
                    104  kws=(k-1)*kw
                    +
                    105  kd=0*kmax+k
                    +
                    106  kz=1*kmax+k
                    +
                    107  ku=2*kmax+k
                    +
                    108  kv=3*kmax+k
                    +
                    109  DO i=1,2*mx
                    +
                    110  w(i,kd)=waved(kws+i)
                    +
                    111  w(i,kz)=wavez(kws+i)
                    +
                    112  ENDDO
                    +
                    113  DO i=1,2*mxtop
                    +
                    114  wtop(i,kd)=0
                    +
                    115  wtop(i,kz)=0
                    +
                    116  ENDDO
                    +
                    117  CALL spdz2uv(iromb,maxwv,enn1,elonn1,eon,eontop,
                    +
                    118  & waved(kws+1),wavez(kws+1),
                    +
                    119  & w(1,ku),w(1,kv),wtop(1,ku),wtop(1,kv))
                    +
                    120  ENDDO
                    +
                    121 
                    +
                    122 C CALCULATE STATION FIELDS
                    +
                    123 C$OMP PARALLEL DO PRIVATE(KD,KZ,KU,KV,KUX,KVX,SLAT1,CLAT1)
                    +
                    124 C$OMP& PRIVATE(PLN,PLNTOP,F,G,NK)
                    +
                    125  DO n=1,nmax
                    +
                    126  ku=2*kmax+1
                    +
                    127  kux=4*kmax+1
                    +
                    128  IF(abs(rlat((n-1)*nr+1)).GE.89.9995) THEN
                    +
                    129  slat1=sign(1.,rlat((n-1)*nr+1))
                    +
                    130  clat1=0.
                    +
                    131  ELSE
                    +
                    132  slat1=sin(pi/180*rlat((n-1)*nr+1))
                    +
                    133  clat1=cos(pi/180*rlat((n-1)*nr+1))
                    +
                    134  ENDIF
                    +
                    135  CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
                    +
                    136  & pln,plntop)
                    +
                    137  CALL spsynth(iromb,maxwv,2*maxwv,idim,mdim,2*mxtop,4*kmax,
                    +
                    138  & clat1,pln,plntop,mp,w,wtop,f)
                    +
                    139  CALL spgradx(maxwv,idim,2*kmax,mp(2*kmax+1),clat1,
                    +
                    140  & f(1,1,2*kmax+1),f(1,1,4*kmax+1))
                    +
                    141  CALL spfftpt(maxwv,1,idim,1,6*kmax,rlon((n-1)*nr+1),f,g)
                    +
                    142  DO k=1,kmax
                    +
                    143  kd=0*kmax+k
                    +
                    144  kz=1*kmax+k
                    +
                    145  ku=2*kmax+k
                    +
                    146  kv=3*kmax+k
                    +
                    147  kux=4*kmax+k
                    +
                    148  kvx=5*kmax+k
                    +
                    149  nk=(n-1)*ng+(k-1)*kg+1
                    +
                    150  dp(nk)=g(kd)
                    +
                    151  zp(nk)=g(kz)
                    +
                    152  up(nk)=g(ku)
                    +
                    153  vp(nk)=g(kv)
                    +
                    154  uxp(nk)=g(kux)
                    +
                    155  vxp(nk)=g(kvx)
                    +
                    156  uyp(nk)=g(kvx)-clat1*g(kz)
                    +
                    157  vyp(nk)=clat1*g(kd)-g(kux)
                    +
                    158  ENDDO
                    +
                    159  ENDDO
                    +
                    160  END
                    +
                    subroutine spdz2uv(I, M, ENN1, ELONN1, EON, EONTOP, D, Z, U, V, UTOP, VTOP)
                    Computes the wind components from divergence and vorticity in spectral space.
                    Definition: spdz2uv.f:49
                    +
                    subroutine spfftpt(M, N, INCW, INCG, KMAX, RLON, W, G)
                    This subprogram computes a slow Fourier transform from Fourier space to a set of gridpoints.
                    Definition: spfftpt.f:23
                    +
                    subroutine spgradx(M, INCW, KMAX, MP, CLAT, W, WX)
                    This subprogram computes the x-gradient of fields in complex Fourier space.
                    Definition: spgradx.f:38
                    +
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    +
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    +
                    subroutine sptgptvd(IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVED, WAVEZ, DP, ZP, UP, VP, UXP, VXP, UYP, VYP)
                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to...
                    Definition: sptgptvd.f:70
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptran_8f.html b/ver-5.0.0/sptran_8f.html new file mode 100644 index 00000000..ebd2b075 --- /dev/null +++ b/ver-5.0.0/sptran_8f.html @@ -0,0 +1,323 @@ + + + + + + + +NCEPLIBS-ip: sptran.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptran.f File Reference
                    +
                    +
                    + +

                    Perform a scalar spherical transform. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptran (IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDN, GRIDS, IDIR)
                     This subprogram performs a spherical transform between spectral coefficients of scalar quantities and fields on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform a scalar spherical transform.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    96-02-29 IREDELL Initial
                    1998-12-15 IREDELL Generic fft used, openmp directives inserted
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptran.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptran()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptran ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                     KMAX,
                     IPRIME,
                     ISKIP,
                     JNSKIP,
                     JSSKIP,
                     KWSKIP,
                     KGSKIP,
                     JBEG,
                     JEND,
                     JCPU,
                    real, dimension(*) WAVE,
                    real, dimension(*) GRIDN,
                    real, dimension(*) GRIDS,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and fields on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid.

                    +

                    The wave and grid fields may have general indexing, but each wave field is in sequential 'IBM order', i.e. with zonal wavenumber as the slower index.

                    +

                    Transforms are done in latitude pairs for efficiency; thus grid arrays for each hemisphere must be passed. If so requested, just a subset of the latitude pairs may be transformed in each invocation of the subprogram.

                    +

                    The transforms are all multiprocessed over latitude except the transform from Fourier to spectral is multiprocessed over zonal wavenumber to ensure reproducibility.

                    +

                    Transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid,
                    • +
                    • IDRT=0 for equally-spaced grid including poles,
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes.
                    JMAXnumber of latitudes.
                    KMAXnumber of fields to transform.
                    IPRIMElongitude index for the prime meridian. (defaults to 1 if IPRIME=0)
                    ISKIPskip number between longitudes (defaults to 1 if ISKIP=0)
                    JNSKIPskip number between n.h. latitudes from north (defaults to imax if JNSKIP=0)
                    JSSKIPskip number between s.h. latitudes from south (defaults to -imax if JSSKIP=0)
                    KWSKIPskip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) IF KWSKIP=0)
                    KGSKIPskip number between grid fields (defaults to IMAX*JMAX IF KGSKIP=0)
                    JBEGlatitude index (from pole) to begin transform (defaults to 1 if JBEG=0) (if JBEG=0 and IDIR<0, wave is zeroed before transform)
                    JENDlatitude index (from pole) to end transform (defaults to (JMAX+1)/2 IF JEND=0)
                    JCPUnumber of cpus over which to multiprocess
                    [out]WAVEwave fields if IDIR>0
                    [out]gridnn.h. grid fields (starting at jbeg) if IDIR<0
                    [out]gridss.h. grid fields (starting at jbeg) if IDIR<0
                    IDIRtransform flag (idir>0 for wave to grid, idir<0 for grid to wave)
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 84 of file sptran.f.

                    + +

                    References ncpus(), and sptranf().

                    + +

                    Referenced by sptrun(), sptrund(), sptrung(), sptrunl(), sptrunm(), sptruns(), and sptrunv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptran_8f.js b/ver-5.0.0/sptran_8f.js new file mode 100644 index 00000000..ec95a0ac --- /dev/null +++ b/ver-5.0.0/sptran_8f.js @@ -0,0 +1,4 @@ +var sptran_8f = +[ + [ "sptran", "sptran_8f.html#af7610e42f0dcd199b8cf80f851dcfed0", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptran_8f_source.html b/ver-5.0.0/sptran_8f_source.html new file mode 100644 index 00000000..18552512 --- /dev/null +++ b/ver-5.0.0/sptran_8f_source.html @@ -0,0 +1,224 @@ + + + + + + + +NCEPLIBS-ip: sptran.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptran.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform a scalar spherical transform.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | IREDELL | Initial
                    +
                    8 C> 1998-12-15 | IREDELL | Generic fft used, openmp directives inserted
                    +
                    9 C>
                    +
                    10 C> @author IREDELL @date 96-02-29
                    +
                    11 
                    +
                    12 C> This subprogram performs a spherical transform between spectral
                    +
                    13 C> coefficients of scalar quantities and fields on a global
                    +
                    14 C> cylindrical grid.
                    +
                    15 C>
                    +
                    16 C> The wave-space can be either triangular or
                    +
                    17 C> rhomboidal.
                    +
                    18 C>
                    +
                    19 C> The grid-space can be either an equally-spaced grid
                    +
                    20 C> (with or without pole points) or a Gaussian grid.
                    +
                    21 C>
                    +
                    22 C> The wave and grid fields may have general indexing,
                    +
                    23 C> but each wave field is in sequential 'IBM order',
                    +
                    24 C> i.e. with zonal wavenumber as the slower index.
                    +
                    25 C>
                    +
                    26 C> Transforms are done in latitude pairs for efficiency;
                    +
                    27 C> thus grid arrays for each hemisphere must be passed.
                    +
                    28 C> If so requested, just a subset of the latitude pairs
                    +
                    29 C> may be transformed in each invocation of the subprogram.
                    +
                    30 C>
                    +
                    31 C> The transforms are all multiprocessed over latitude except
                    +
                    32 C> the transform from Fourier to spectral is multiprocessed
                    +
                    33 C> over zonal wavenumber to ensure reproducibility.
                    +
                    34 C>
                    +
                    35 C> Transform several fields at a time to improve vectorization.
                    +
                    36 C> Subprogram can be called from a multiprocessing environment.
                    +
                    37 C>
                    +
                    38 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    39 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    40 C> ----------------------- |--------- |-------------
                    +
                    41 C> IMAX | 2*MAXWV+2 | 3*MAXWV/2*2+2
                    +
                    42 C> JMAX (IDRT=4,IROMB=0) | 1*MAXWV+1 | 3*MAXWV/2+1
                    +
                    43 C> JMAX (IDRT=4,IROMB=1) | 2*MAXWV+1 | 5*MAXWV/2+1
                    +
                    44 C> JMAX (IDRT=0,IROMB=0) | 2*MAXWV+3 | 3*MAXWV/2*2+3
                    +
                    45 C> JMAX (IDRT=0,IROMB=1) | 4*MAXWV+3 | 5*MAXWV/2*2+3
                    +
                    46 C> JMAX (IDRT=256,IROMB=0) | 2*MAXWV+1 | 3*MAXWV/2*2+1
                    +
                    47 C> JMAX (IDRT=256,IROMB=1) | 4*MAXWV+1 | 5*MAXWV/2*2+1
                    +
                    48 C>
                    +
                    49 C> @param IROMB spectral domain shape
                    +
                    50 c> (0 for triangular, 1 for rhomboidal)
                    +
                    51 C> @param MAXWV spectral truncation
                    +
                    52 C> @param IDRT grid identifier
                    +
                    53 C> - IDRT=4 for Gaussian grid,
                    +
                    54 C> - IDRT=0 for equally-spaced grid including poles,
                    +
                    55 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    56 C> @param IMAX even number of longitudes.
                    +
                    57 C> @param JMAX number of latitudes.
                    +
                    58 C> @param KMAX number of fields to transform.
                    +
                    59 C> @param IPRIME longitude index for the prime meridian.
                    +
                    60 C> (defaults to 1 if IPRIME=0)
                    +
                    61 C> @param ISKIP skip number between longitudes
                    +
                    62 C> (defaults to 1 if ISKIP=0)
                    +
                    63 C> @param JNSKIP skip number between n.h. latitudes from north
                    +
                    64 C> (defaults to imax if JNSKIP=0)
                    +
                    65 C> @param JSSKIP skip number between s.h. latitudes from south
                    +
                    66 c> (defaults to -imax if JSSKIP=0)
                    +
                    67 C> @param KWSKIP skip number between wave fields
                    +
                    68 c> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) IF KWSKIP=0)
                    +
                    69 C> @param KGSKIP skip number between grid fields
                    +
                    70 c> (defaults to IMAX*JMAX IF KGSKIP=0)
                    +
                    71 C> @param JBEG latitude index (from pole) to begin transform
                    +
                    72 c> (defaults to 1 if JBEG=0)
                    +
                    73 C> (if JBEG=0 and IDIR<0, wave is zeroed before transform)
                    +
                    74 C> @param JEND latitude index (from pole) to end transform
                    +
                    75 c> (defaults to (JMAX+1)/2 IF JEND=0)
                    +
                    76 C> @param JCPU number of cpus over which to multiprocess
                    +
                    77 C> @param[out] WAVE wave fields if IDIR>0
                    +
                    78 C> @param[out] gridn n.h. grid fields (starting at jbeg) if IDIR<0
                    +
                    79 C> @param[out] grids s.h. grid fields (starting at jbeg) if IDIR<0
                    +
                    80 C> @param IDIR transform flag
                    +
                    81 C> (idir>0 for wave to grid, idir<0 for grid to wave)
                    +
                    82 C>
                    +
                    83 C> @author IREDELL @date 96-02-29
                    +
                    84  SUBROUTINE sptran(IROMB,MAXWV,IDRT,IMAX,JMAX,KMAX,
                    +
                    85  & IPRIME,ISKIP,JNSKIP,JSSKIP,KWSKIP,KGSKIP,
                    +
                    86  & JBEG,JEND,JCPU,
                    +
                    87  & WAVE,GRIDN,GRIDS,IDIR)
                    +
                    88 
                    +
                    89  REAL WAVE(*),GRIDN(*),GRIDS(*)
                    +
                    90 
                    +
                    91  MX=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    92  ip=iprime
                    +
                    93  is=iskip
                    +
                    94  jn=jnskip
                    +
                    95  js=jsskip
                    +
                    96  kw=kwskip
                    +
                    97  kg=kgskip
                    +
                    98  jb=jbeg
                    +
                    99  je=jend
                    +
                    100  jc=jcpu
                    +
                    101  IF(ip.EQ.0) ip=1
                    +
                    102  IF(is.EQ.0) is=1
                    +
                    103  IF(jn.EQ.0) jn=imax
                    +
                    104  IF(js.EQ.0) js=-jn
                    +
                    105  IF(kw.EQ.0) kw=2*mx
                    +
                    106  IF(kg.EQ.0) kg=imax*jmax
                    +
                    107  IF(jb.EQ.0) jb=1
                    +
                    108  IF(je.EQ.0) je=(jmax+1)/2
                    +
                    109  IF(jc.EQ.0) jc=ncpus()
                    +
                    110 
                    +
                    111  IF(idir.LT.0.AND.jbeg.EQ.0) THEN
                    +
                    112  DO k=1,kmax
                    +
                    113  kws=(k-1)*kw
                    +
                    114  wave(kws+1:kws+2*mx)=0
                    +
                    115  ENDDO
                    +
                    116  ENDIF
                    +
                    117 
                    +
                    118  CALL sptranf(iromb,maxwv,idrt,imax,jmax,kmax,
                    +
                    119  & ip,is,jn,js,kw,kg,jb,je,jc,
                    +
                    120  & wave,gridn,grids,idir)
                    +
                    121 
                    +
                    122  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptran(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptran.f:88
                    +
                    subroutine sptranf(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IP, IS, JN, JS, KW, KG, JB, JE, JC, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptranf.f:77
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrand_8f.html b/ver-5.0.0/sptrand_8f.html new file mode 100644 index 00000000..08fa5cdd --- /dev/null +++ b/ver-5.0.0/sptrand_8f.html @@ -0,0 +1,346 @@ + + + + + + + +NCEPLIBS-ip: sptrand.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptrand.f File Reference
                    +
                    +
                    + +

                    Perform a gradient spherical transform. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptrand (IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDMN, GRIDXN, GRIDXS, GRIDYN, GRIDYS, IDIR)
                     This subprogram performs a spherical transform between spectral coefficients of scalar fields and their means and gradients on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform a gradient spherical transform.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    96-02-29 IREDELL Initial
                    1998-12-15 IREDELL openmp directives inserted
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptrand.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptrand()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptrand ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                     KMAX,
                     IPRIME,
                     ISKIP,
                     JNSKIP,
                     JSSKIP,
                     KWSKIP,
                     KGSKIP,
                     JBEG,
                     JEND,
                     JCPU,
                    real, dimension(*) WAVE,
                    real, dimension(kmax) GRIDMN,
                    real, dimension(*) GRIDXN,
                    real, dimension(*) GRIDXS,
                    real, dimension(*) GRIDYN,
                    real, dimension(*) GRIDYS,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform between spectral coefficients of scalar fields and their means and gradients on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid.

                    +

                    The wave and grid fields may have general indexing, but each wave field is in sequential 'IBM order', i.e. with zonal wavenumber as the slower index.

                    +

                    Transforms are done in latitude pairs for efficiency; thus grid arrays for each hemisphere must be passed. if so requested, just a subset of the latitude pairs may be transformed in each invocation of the subprogram.

                    +

                    The transforms are all multiprocessed over latitude except the transform from Fourier to spectral is multiprocessed over zonal wavenumber to ensure reproducibility.

                    +

                    Transform several fields at a time to improve vectorization.

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid
                    • +
                    • IDRT=0 for equally-spaced grid including poles
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes.
                    JMAXnumber of latitudes.
                    KMAXnumber of fields to transform.
                    IPRIMElongitude index for the prime meridian. (defaults to 1 if IPRIME=0)
                    ISKIPskip number between longitudes (defaults to 1 if ISKIP=0)
                    JNSKIPskip number between n.h. latitudes from north (defaults to IMAX if JNSKIP=0)
                    JSSKIPskip number between s.h. latitudes from south (defaults to -IMAX if JSSKIP=0)
                    KWSKIPskip number between wave fields (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    KGSKIPskip number between grid fields (defaults to IMAX*JMAX if KGSKIP=0)
                    JBEGlatitude index (from pole) to begin transform (defaults to 1 if JBEG=0). If JBEG=0 and IDIR<0, wave is zeroed before transform.
                    JENDlatitude index (from pole) to end transform (defaults to (JMAX+1)/2 if JEND=0)
                    JCPUnumber of cpus over which to multiprocess
                    [out]WAVEwave fields if IDIR>0
                    [out]GRIDMNglobal means if IDIR<0
                    [out]GRIDXNn.h. x-gradients (starting at JBEG) if IDIR<0
                    [out]GRIDXSs.h. x-gradients (starting at JBEG) if IDIR<0 [GRIDX=(D(WAVE)/DLAM)/(CLAT*RERTH)]
                    +
                    [out]GRIDYNn.h. y-gradients (starting at JBEG) if IDIR<0
                    [out]GRIDYSs.h. y-gradients (starting at JBEG) if IDIR<0 [GRIDY=(D(WAVE)/DPHI)/RERTH]
                    IDIRtransform flag (IDIR>0 for wave to grid, IDIR<0 for grid to wave)
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 88 of file sptrand.f.

                    + +

                    References splaplac(), sptranv(), and spwget().

                    + +

                    Referenced by sptezd(), sptezmd(), and sptrund().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrand_8f.js b/ver-5.0.0/sptrand_8f.js new file mode 100644 index 00000000..c01144d7 --- /dev/null +++ b/ver-5.0.0/sptrand_8f.js @@ -0,0 +1,4 @@ +var sptrand_8f = +[ + [ "sptrand", "sptrand_8f.html#ae810abad32bcbdfb8345a30e50bcc1ef", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptrand_8f_source.html b/ver-5.0.0/sptrand_8f_source.html new file mode 100644 index 00000000..291d35d6 --- /dev/null +++ b/ver-5.0.0/sptrand_8f_source.html @@ -0,0 +1,253 @@ + + + + + + + +NCEPLIBS-ip: sptrand.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptrand.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform a gradient spherical transform.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | IREDELL | Initial
                    +
                    8 C> 1998-12-15 | IREDELL | openmp directives inserted
                    +
                    9 C>
                    +
                    10 C> @author Iredell @date 96-02-29
                    +
                    11 
                    +
                    12 C> This subprogram performs a spherical transform
                    +
                    13 C> between spectral coefficients of scalar fields
                    +
                    14 C> and their means and gradients on a global cylindrical grid.
                    +
                    15 C>
                    +
                    16 C> The wave-space can be either triangular or rhomboidal.
                    +
                    17 C>
                    +
                    18 C> The grid-space can be either an equally-spaced grid
                    +
                    19 C> (with or without pole points) or a Gaussian grid.
                    +
                    20 C>
                    +
                    21 C> The wave and grid fields may have general indexing,
                    +
                    22 C> but each wave field is in sequential 'IBM order',
                    +
                    23 C> i.e. with zonal wavenumber as the slower index.
                    +
                    24 C>
                    +
                    25 C> Transforms are done in latitude pairs for efficiency;
                    +
                    26 C> thus grid arrays for each hemisphere must be passed.
                    +
                    27 C> if so requested, just a subset of the latitude pairs
                    +
                    28 C> may be transformed in each invocation of the subprogram.
                    +
                    29 C>
                    +
                    30 C> The transforms are all multiprocessed over latitude except
                    +
                    31 C> the transform from Fourier to spectral is multiprocessed
                    +
                    32 C> over zonal wavenumber to ensure reproducibility.
                    +
                    33 C>
                    +
                    34 C> Transform several fields at a time to improve vectorization.
                    +
                    35 C>
                    +
                    36 C> Subprogram can be called from a multiprocessing environment.
                    +
                    37 C>
                    +
                    38 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    39 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    40 C> ----------------------- |--------- |-------------
                    +
                    41 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    42 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    43 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    44 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    45 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    46 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    47 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    48 C>
                    +
                    49 C> @param IROMB spectral domain shape
                    +
                    50 C> (0 for triangular, 1 for rhomboidal)
                    +
                    51 C> @param MAXWV spectral truncation
                    +
                    52 C> @param IDRT grid identifier
                    +
                    53 C> - IDRT=4 for Gaussian grid
                    +
                    54 C> - IDRT=0 for equally-spaced grid including poles
                    +
                    55 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    56 C> @param IMAX even number of longitudes.
                    +
                    57 C> @param JMAX number of latitudes.
                    +
                    58 C> @param KMAX number of fields to transform.
                    +
                    59 C> @param IPRIME longitude index for the prime meridian.
                    +
                    60 C> (defaults to 1 if IPRIME=0)
                    +
                    61 C> @param ISKIP skip number between longitudes
                    +
                    62 C> (defaults to 1 if ISKIP=0)
                    +
                    63 C> @param JNSKIP skip number between n.h. latitudes from north
                    +
                    64 C> (defaults to IMAX if JNSKIP=0)
                    +
                    65 C> @param JSSKIP skip number between s.h. latitudes from south
                    +
                    66 C> (defaults to -IMAX if JSSKIP=0)
                    +
                    67 C> @param KWSKIP skip number between wave fields
                    +
                    68 C> (defaults to (MAXWV+1)*((IROMB+1)*MAXWV+2) if KWSKIP=0)
                    +
                    69 C> @param KGSKIP skip number between grid fields
                    +
                    70 C> (defaults to IMAX*JMAX if KGSKIP=0)
                    +
                    71 C> @param JBEG latitude index (from pole) to begin transform
                    +
                    72 C> (defaults to 1 if JBEG=0). If JBEG=0 and IDIR<0, wave is zeroed before transform.
                    +
                    73 C> @param JEND latitude index (from pole) to end transform
                    +
                    74 C> (defaults to (JMAX+1)/2 if JEND=0)
                    +
                    75 C> @param JCPU number of cpus over which to multiprocess
                    +
                    76 C> @param[out] WAVE wave fields if IDIR>0
                    +
                    77 C> @param[out] GRIDMN global means if IDIR<0
                    +
                    78 C> @param[out] GRIDXN n.h. x-gradients (starting at JBEG) if IDIR<0
                    +
                    79 C> @param[out] GRIDXS s.h. x-gradients (starting at JBEG) if IDIR<0
                    +
                    80 C> [GRIDX=(D(WAVE)/DLAM)/(CLAT*RERTH)]
                    +
                    81 C> @param[out] GRIDYN n.h. y-gradients (starting at JBEG) if IDIR<0
                    +
                    82 C> @param[out] GRIDYS s.h. y-gradients (starting at JBEG) if IDIR<0
                    +
                    83 C> [GRIDY=(D(WAVE)/DPHI)/RERTH]
                    +
                    84 C> @param IDIR transform flag
                    +
                    85 C> (IDIR>0 for wave to grid, IDIR<0 for grid to wave)
                    +
                    86 C>
                    +
                    87 C> @author Iredell @date 96-02-29
                    +
                    88  SUBROUTINE sptrand(IROMB,MAXWV,IDRT,IMAX,JMAX,KMAX,
                    +
                    89  & IPRIME,ISKIP,JNSKIP,JSSKIP,KWSKIP,KGSKIP,
                    +
                    90  & JBEG,JEND,JCPU,
                    +
                    91  & WAVE,GRIDMN,GRIDXN,GRIDXS,GRIDYN,GRIDYS,IDIR)
                    +
                    92 
                    +
                    93  REAL WAVE(*),GRIDMN(KMAX),GRIDXN(*),GRIDXS(*),GRIDYN(*),GRIDYS(*)
                    +
                    94  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    95  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    96  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    97  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    98  REAL WD((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    99  REAL WZ((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    100 
                    +
                    101 C SET PARAMETERS
                    +
                    102  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    103  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    104  mdim=2*mx+1
                    +
                    105  kw=kwskip
                    +
                    106  IF(kw.EQ.0) kw=2*mx
                    +
                    107 
                    +
                    108 C TRANSFORM WAVE TO GRID
                    +
                    109  IF(idir.GT.0) THEN
                    +
                    110 C$OMP PARALLEL DO PRIVATE(KWS)
                    +
                    111  DO k=1,kmax
                    +
                    112  kws=(k-1)*kw
                    +
                    113  gridmn(k)=wave(kws+1)/sqrt(2.)
                    +
                    114  CALL splaplac(iromb,maxwv,enn1,wave(kws+1),wd(1,k),1)
                    +
                    115  wz(1:2*mx,k)=0.
                    +
                    116  ENDDO
                    +
                    117  CALL sptranv(iromb,maxwv,idrt,imax,jmax,kmax,
                    +
                    118  & iprime,iskip,jnskip,jsskip,mdim,kgskip,
                    +
                    119  & jbeg,jend,jcpu,
                    +
                    120  & wd,wz,gridxn,gridxs,gridyn,gridys,idir)
                    +
                    121 
                    +
                    122 C TRANSFORM GRID TO WAVE
                    +
                    123  ELSE
                    +
                    124 C$OMP PARALLEL DO
                    +
                    125  DO k=1,kmax
                    +
                    126  wd(1:2*mx,k)=0.
                    +
                    127  wz(1:2*mx,k)=0.
                    +
                    128  ENDDO
                    +
                    129  CALL sptranv(iromb,maxwv,idrt,imax,jmax,kmax,
                    +
                    130  & iprime,iskip,jnskip,jsskip,mdim,kgskip,
                    +
                    131  & jbeg,jend,jcpu,
                    +
                    132  & wd,wz,gridxn,gridxs,gridyn,gridys,idir)
                    +
                    133  IF(jbeg.EQ.0) THEN
                    +
                    134 C$OMP PARALLEL DO PRIVATE(KWS)
                    +
                    135  DO k=1,kmax
                    +
                    136  kws=(k-1)*kw
                    +
                    137  CALL splaplac(iromb,maxwv,enn1,wave(kws+1),wd(1,k),-1)
                    +
                    138  wave(kws+1)=gridmn(k)*sqrt(2.)
                    +
                    139  ENDDO
                    +
                    140  ELSE
                    +
                    141 C$OMP PARALLEL DO PRIVATE(KWS)
                    +
                    142  DO k=1,kmax
                    +
                    143  kws=(k-1)*kw
                    +
                    144  CALL splaplac(iromb,maxwv,enn1,wz(1,k),wd(1,k),-1)
                    +
                    145  wave(kws+1:kws+2*mx)=wave(kws+1:kws+2*mx)+wz(1:2*mx,k)
                    +
                    146  wave(kws+1)=gridmn(k)*sqrt(2.)
                    +
                    147  ENDDO
                    +
                    148  ENDIF
                    +
                    149  ENDIF
                    +
                    150  END
                    +
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    +
                    subroutine sptrand(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDMN, GRIDXN, GRIDXS, GRIDYN, GRIDYS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar fields and the...
                    Definition: sptrand.f:92
                    +
                    subroutine sptranv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranv.f:91
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptranf0_8f.html b/ver-5.0.0/sptranf0_8f.html new file mode 100644 index 00000000..9ea80dac --- /dev/null +++ b/ver-5.0.0/sptranf0_8f.html @@ -0,0 +1,290 @@ + + + + + + + +NCEPLIBS-ip: sptranf0.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptranf0.f File Reference
                    +
                    +
                    + +

                    Sptranf spectral initialization. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptranf0 (IROMB, MAXWV, IDRT, IMAX, JMAX, JB, JE, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP, AFFT, CLAT, SLAT, WLAT, PLN, PLNTOP)
                     This subprogram performs an initialization for subprogram sptranf(). More...
                     
                    +

                    Detailed Description

                    +

                    Sptranf spectral initialization.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptranf0.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptranf0()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptranf0 ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                     JB,
                     JE,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) EPS,
                    real, dimension(maxwv+1) EPSTOP,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) ENN1,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) ELONN1,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) EON,
                    real, dimension(maxwv+1) EONTOP,
                    real(8), dimension(50000+4*imax) AFFT,
                    real, dimension(jb:je) CLAT,
                    real, dimension(jb:je) SLAT,
                    real, dimension(jb:je) WLAT,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2,jb:je) PLN,
                    real, dimension(maxwv+1,jb:je) PLNTOP 
                    )
                    +
                    + +

                    This subprogram performs an initialization for subprogram sptranf().

                    +

                    Use this subprogram outside the sptranf() family context at your own risk.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid,
                    • +
                    • IDRT=0 for equally-spaced grid including poles,
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes
                    JMAXnumber of latitudes
                    JBlatitude index (from pole) to begin transform
                    JElatitude index (from pole) to end transform
                    EPS
                    EPSTOP
                    ENN1
                    ELONN1
                    EON
                    EONTOP
                    AFFTauxiliary array if IDIR=0
                    CLATcosines of latitude
                    SLATsines of latitude
                    WLATGaussian weights
                    PLNLegendre polynomials
                    PLNTOPLegendre polynomial over top
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 34 of file sptranf0.f.

                    + +

                    References spffte(), splat(), splegend(), and spwget().

                    + +

                    Referenced by sptranf(), and sptranfv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptranf0_8f.js b/ver-5.0.0/sptranf0_8f.js new file mode 100644 index 00000000..68775895 --- /dev/null +++ b/ver-5.0.0/sptranf0_8f.js @@ -0,0 +1,4 @@ +var sptranf0_8f = +[ + [ "sptranf0", "sptranf0_8f.html#aaf9f9002ccd7074dc04dbc40a5aad9f0", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptranf0_8f_source.html b/ver-5.0.0/sptranf0_8f_source.html new file mode 100644 index 00000000..18aed35a --- /dev/null +++ b/ver-5.0.0/sptranf0_8f_source.html @@ -0,0 +1,168 @@ + + + + + + + +NCEPLIBS-ip: sptranf0.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptranf0.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Sptranf spectral initialization.
                    +
                    3 C> @author IREDELL @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram performs an initialization for
                    +
                    6 C> subprogram sptranf(). Use this subprogram outside
                    +
                    7 C> the sptranf() family context at your own risk.
                    +
                    8 C>
                    +
                    9 C> @param IROMB spectral domain shape
                    +
                    10 c> (0 for triangular, 1 for rhomboidal)
                    +
                    11 C> @param MAXWV spectral truncation
                    +
                    12 C> @param IDRT grid identifier
                    +
                    13 C> - IDRT=4 for Gaussian grid,
                    +
                    14 C> - IDRT=0 for equally-spaced grid including poles,
                    +
                    15 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    16 C> @param IMAX even number of longitudes
                    +
                    17 C> @param JMAX number of latitudes
                    +
                    18 C> @param JB latitude index (from pole) to begin transform
                    +
                    19 C> @param JE latitude index (from pole) to end transform
                    +
                    20 C> @param EPS
                    +
                    21 C> @param EPSTOP
                    +
                    22 C> @param ENN1
                    +
                    23 C> @param ELONN1
                    +
                    24 C> @param EON
                    +
                    25 C> @param EONTOP
                    +
                    26 C> @param AFFT auxiliary array if IDIR=0
                    +
                    27 C> @param CLAT cosines of latitude
                    +
                    28 C> @param SLAT sines of latitude
                    +
                    29 C> @param WLAT Gaussian weights
                    +
                    30 C> @param PLN Legendre polynomials
                    +
                    31 C> @param PLNTOP Legendre polynomial over top
                    +
                    32 C>
                    +
                    33 C> @author IREDELL @date 96-02-29
                    +
                    34  SUBROUTINE sptranf0(IROMB,MAXWV,IDRT,IMAX,JMAX,JB,JE,
                    +
                    35  & EPS,EPSTOP,ENN1,ELONN1,EON,EONTOP,
                    +
                    36  & AFFT,CLAT,SLAT,WLAT,PLN,PLNTOP)
                    +
                    37 
                    +
                    38  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    39  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    40  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    41  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    42  REAL(8) AFFT(50000+4*IMAX)
                    +
                    43  REAL CLAT(JB:JE),SLAT(JB:JE),WLAT(JB:JE)
                    +
                    44  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2,JB:JE)
                    +
                    45  REAL PLNTOP(MAXWV+1,JB:JE)
                    +
                    46  REAL SLATX(JMAX),WLATX(JMAX)
                    +
                    47 
                    +
                    48  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    49  CALL spffte(imax,(imax+2)/2,imax,2,0.,0.,0,afft)
                    +
                    50  CALL splat(idrt,jmax,slatx,wlatx)
                    +
                    51  jhe=(jmax+1)/2
                    +
                    52  IF(jhe.GT.jmax/2) wlatx(jhe)=wlatx(jhe)/2
                    +
                    53  DO j=jb,je
                    +
                    54  clat(j)=sqrt(1.-slatx(j)**2)
                    +
                    55  slat(j)=slatx(j)
                    +
                    56  wlat(j)=wlatx(j)
                    +
                    57  ENDDO
                    +
                    58 C$OMP PARALLEL DO
                    +
                    59  DO j=jb,je
                    +
                    60  CALL splegend(iromb,maxwv,slat(j),clat(j),eps,epstop,
                    +
                    61  & pln(1,j),plntop(1,j))
                    +
                    62  ENDDO
                    +
                    63 
                    +
                    64  END
                    +
                    subroutine spffte(IMAX, INCW, INCG, KMAX, W, G, IDIR, AFFT)
                    This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space...
                    Definition: spffte.f:49
                    +
                    subroutine splat(IDRT, JMAX, SLAT, WLAT)
                    Computes cosines of colatitude and Gaussian weights for one of the following specific global sets of ...
                    Definition: splat.F:46
                    +
                    subroutine splegend(I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP)
                    Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
                    Definition: splegend.f:45
                    +
                    subroutine sptranf0(IROMB, MAXWV, IDRT, IMAX, JMAX, JB, JE, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP, AFFT, CLAT, SLAT, WLAT, PLN, PLNTOP)
                    This subprogram performs an initialization for subprogram sptranf().
                    Definition: sptranf0.f:37
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptranf1_8f.html b/ver-5.0.0/sptranf1_8f.html new file mode 100644 index 00000000..876c5a68 --- /dev/null +++ b/ver-5.0.0/sptranf1_8f.html @@ -0,0 +1,325 @@ + + + + + + + +NCEPLIBS-ip: sptranf1.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptranf1.f File Reference
                    +
                    +
                    + +

                    Sptranf spectral transform. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptranf1 (IROMB, MAXWV, IDRT, IMAX, JMAX, JB, JE, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP, AFFT, CLAT, SLAT, WLAT, PLN, PLNTOP, MP, W, WTOP, G, IDIR)
                     This subprogram performs an single latitude transform for subprogram sptranf(). More...
                     
                    +

                    Detailed Description

                    +

                    Sptranf spectral transform.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptranf1.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptranf1()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptranf1 ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                     JB,
                     JE,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) EPS,
                    real, dimension(maxwv+1) EPSTOP,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) ENN1,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) ELONN1,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) EON,
                    real, dimension(maxwv+1) EONTOP,
                    real(8), dimension(50000+4*imax) AFFT,
                    real, dimension(jb:je) CLAT,
                    real, dimension(jb:je) SLAT,
                    real, dimension(jb:je) WLAT,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2,jb:je) PLN,
                    real, dimension(maxwv+1,jb:je) PLNTOP,
                     MP,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)) W,
                    real, dimension(2*(maxwv+1)) WTOP,
                    real, dimension(imax,2,jb:je) G,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs an single latitude transform for subprogram sptranf().

                    +

                    Use this subprogram outside the sptranf() family context at your own risk.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid,
                    • +
                    • IDRT=0 for equally-spaced grid including poles,
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes
                    JMAXnumber of latitudes
                    JBlatitude index (from pole) to begin transform
                    JElatitude index (from pole) to end transform
                    EPS
                    EPSTOP
                    ENN1
                    ELONN1
                    EON
                    EONTOP
                    CLATcosines of latitude
                    SLATsines of latitude
                    WLATGaussian weights
                    AFFTauxiliary array if IDIR=0
                    PLNLegendre polynomials
                    PLNTOPLegendre polynomial over top
                    MPidentifier (0 for scalar, 1 for vector)
                    [out]Wwave field if IDIR>0
                    [out]WTOPwave field over top if IDIR>0
                    [out]Ggrid field if IDIR<0
                    IDIRtransform flag (IDIR>0 for wave to grid, IDIR<0 for grid to wave)
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 40 of file sptranf1.f.

                    + +

                    References spanaly(), spffte(), and spsynth().

                    + +

                    Referenced by sptranf(), and sptranfv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptranf1_8f.js b/ver-5.0.0/sptranf1_8f.js new file mode 100644 index 00000000..2123eae8 --- /dev/null +++ b/ver-5.0.0/sptranf1_8f.js @@ -0,0 +1,4 @@ +var sptranf1_8f = +[ + [ "sptranf1", "sptranf1_8f.html#ad7cec2fd6729ca84b1fac3436f9730e6", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptranf1_8f_source.html b/ver-5.0.0/sptranf1_8f_source.html new file mode 100644 index 00000000..0c0f8374 --- /dev/null +++ b/ver-5.0.0/sptranf1_8f_source.html @@ -0,0 +1,179 @@ + + + + + + + +NCEPLIBS-ip: sptranf1.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptranf1.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Sptranf spectral transform.
                    +
                    3 C> @author Iredell @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram performs an single latitude transform for
                    +
                    6 C> subprogram sptranf(). Use this subprogram outside
                    +
                    7 C> the sptranf() family context at your own risk.
                    +
                    8 C>
                    +
                    9 C> @param IROMB spectral domain shape
                    +
                    10 C> (0 for triangular, 1 for rhomboidal)
                    +
                    11 C> @param MAXWV spectral truncation
                    +
                    12 C> @param IDRT grid identifier
                    +
                    13 C> - IDRT=4 for Gaussian grid,
                    +
                    14 C> - IDRT=0 for equally-spaced grid including poles,
                    +
                    15 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    16 C> @param IMAX even number of longitudes
                    +
                    17 C> @param JMAX number of latitudes
                    +
                    18 C> @param JB latitude index (from pole) to begin transform
                    +
                    19 C> @param JE latitude index (from pole) to end transform
                    +
                    20 C> @param EPS
                    +
                    21 C> @param EPSTOP
                    +
                    22 C> @param ENN1
                    +
                    23 C> @param ELONN1
                    +
                    24 C> @param EON
                    +
                    25 C> @param EONTOP
                    +
                    26 C> @param CLAT cosines of latitude
                    +
                    27 C> @param SLAT sines of latitude
                    +
                    28 C> @param WLAT Gaussian weights
                    +
                    29 C> @param AFFT auxiliary array if IDIR=0
                    +
                    30 C> @param PLN Legendre polynomials
                    +
                    31 C> @param PLNTOP Legendre polynomial over top
                    +
                    32 C> @param MP identifier (0 for scalar, 1 for vector)
                    +
                    33 C> @param[out] W wave field if IDIR>0
                    +
                    34 C> @param[out] WTOP wave field over top if IDIR>0
                    +
                    35 C> @param[out] G grid field if IDIR<0
                    +
                    36 C> @param IDIR transform flag
                    +
                    37 C> (IDIR>0 for wave to grid, IDIR<0 for grid to wave)
                    +
                    38 C>
                    +
                    39 C> @author Iredell @date 96-02-29
                    +
                    40  SUBROUTINE sptranf1(IROMB,MAXWV,IDRT,IMAX,JMAX,JB,JE,
                    +
                    41  & EPS,EPSTOP,ENN1,ELONN1,EON,EONTOP,
                    +
                    42  & AFFT,CLAT,SLAT,WLAT,PLN,PLNTOP,MP,
                    +
                    43  & W,WTOP,G,IDIR)
                    +
                    44 
                    +
                    45  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    46  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    47  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    48  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    49  REAL(8) AFFT(50000+4*IMAX)
                    +
                    50  REAL CLAT(JB:JE),SLAT(JB:JE),WLAT(JB:JE)
                    +
                    51  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2,JB:JE)
                    +
                    52  REAL PLNTOP(MAXWV+1,JB:JE)
                    +
                    53  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2))
                    +
                    54  REAL WTOP(2*(MAXWV+1))
                    +
                    55  REAL G(IMAX,2,JB:JE)
                    +
                    56  REAL F(IMAX+2,2)
                    +
                    57 
                    +
                    58  kw=(maxwv+1)*((iromb+1)*maxwv+2)
                    +
                    59  kwtop=2*(maxwv+1)
                    +
                    60  IF(idir.GT.0) THEN
                    +
                    61  DO j=jb,je
                    +
                    62  CALL spsynth(iromb,maxwv,imax,imax+2,kw,kwtop,1,
                    +
                    63  & clat(j),pln(1,j),plntop(1,j),mp,
                    +
                    64  & w,wtop,f)
                    +
                    65  CALL spffte(imax,(imax+2)/2,imax,2,f,g(1,1,j),+1,afft)
                    +
                    66  ENDDO
                    +
                    67  ELSE
                    +
                    68  DO j=jb,je
                    +
                    69  CALL spffte(imax,(imax+2)/2,imax,2,f,g(1,1,j),-1,afft)
                    +
                    70  CALL spanaly(iromb,maxwv,imax,imax+2,kw,kwtop,1,
                    +
                    71  & wlat(j),clat(j),pln(1,j),plntop(1,j),mp,
                    +
                    72  & f,w,wtop)
                    +
                    73  ENDDO
                    +
                    74  ENDIF
                    +
                    75 
                    +
                    76  END
                    +
                    subroutine spanaly(I, M, IM, IX, NC, NCTOP, KM, WGT, CLAT, PLN, PLNTOP, MP, F, SPC, SPCTOP)
                    Analyzes spectral coefficients from Fourier coefficients for a latitude pair (Northern and Southern h...
                    Definition: spanaly.f:37
                    +
                    subroutine spffte(IMAX, INCW, INCG, KMAX, W, G, IDIR, AFFT)
                    This subprogram performs multiple fast Fourier transforms between complex amplitudes in Fourier space...
                    Definition: spffte.f:49
                    +
                    subroutine spsynth(I, M, IM, IX, NC, NCTOP, KM, CLAT, PLN, PLNTOP, MP, SPC, SPCTOP, F)
                    Synthesizes Fourier coefficients from spectral coefficients for a latitude pair (Northern and Souther...
                    Definition: spsynth.f:39
                    +
                    subroutine sptranf1(IROMB, MAXWV, IDRT, IMAX, JMAX, JB, JE, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP, AFFT, CLAT, SLAT, WLAT, PLN, PLNTOP, MP, W, WTOP, G, IDIR)
                    This subprogram performs an single latitude transform for subprogram sptranf().
                    Definition: sptranf1.f:44
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptranf_8f.html b/ver-5.0.0/sptranf_8f.html new file mode 100644 index 00000000..d02bb2b6 --- /dev/null +++ b/ver-5.0.0/sptranf_8f.html @@ -0,0 +1,324 @@ + + + + + + + +NCEPLIBS-ip: sptranf.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptranf.f File Reference
                    +
                    +
                    + +

                    Perform a scalar spherical transform. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptranf (IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IP, IS, JN, JS, KW, KG, JB, JE, JC, WAVE, GRIDN, GRIDS, IDIR)
                     This subprogram performs a spherical transform between spectral coefficients of scalar quantities and fields on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform a scalar spherical transform.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-02-29 Iredell Initial.
                    1998-12-15 Iredell Generic fft used, openmp directives inserted
                    2013-01-16 Iredell, Mirvis Fixing afft negative sharing effect
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptranf.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptranf()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptranf ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                     KMAX,
                     IP,
                     IS,
                     JN,
                     JS,
                     KW,
                     KG,
                     JB,
                     JE,
                     JC,
                    real, dimension(*) WAVE,
                    real, dimension(*) GRIDN,
                    real, dimension(*) GRIDS,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and fields on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal. The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid.

                    +

                    The wave and grid fields may have general indexing, but each wave field is in sequential 'ibm order', i.e. with zonal wavenumber as the slower index.

                    +

                    Transforms are done in latitude pairs for efficiency; thus grid arrays for each hemisphere must be passed.

                    +

                    If so requested, just a subset of the latitude pairs may be transformed in each invocation of the subprogram. The transforms are all multiprocessed over latitude except the transform from fourier to spectral is multiprocessed over zonal wavenumber to ensure reproducibility.

                    +

                    Transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid,
                    • +
                    • IDRT=0 for equally-spaced grid including poles
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes.
                    JMAXnumber of latitudes.
                    KMAXnumber of fields to transform.
                    IPlongitude index for the prime meridian
                    ISskip number between longitudes
                    JNskip number between n.h. latitudes from north
                    JSskip number between s.h. latitudes from south
                    KWskip number between wave fields
                    KGskip number between grid fields
                    JBlatitude index (from pole) to begin transform
                    JElatitude index (from pole) to end transform
                    JCnumber of cpus over which to multiprocess
                    [out]WAVEwave fields if IDIR>0
                    [out]GRIDNn.h. grid fields (starting at JB) if IDIR<0
                    [out]GRIDSs.h. grid fields (starting at JB) if IDIR<0
                    IDIRtransform flag (IDIR>0 for wave to grid, IDIR<0 for grid to wave)
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 74 of file sptranf.f.

                    + +

                    References sptranf0(), and sptranf1().

                    + +

                    Referenced by sptez(), sptezm(), and sptran().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptranf_8f.js b/ver-5.0.0/sptranf_8f.js new file mode 100644 index 00000000..5f0a52f8 --- /dev/null +++ b/ver-5.0.0/sptranf_8f.js @@ -0,0 +1,4 @@ +var sptranf_8f = +[ + [ "sptranf", "sptranf_8f.html#acf086b5141203e48bdb7250441a16c8c", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptranf_8f_source.html b/ver-5.0.0/sptranf_8f_source.html new file mode 100644 index 00000000..d7823863 --- /dev/null +++ b/ver-5.0.0/sptranf_8f_source.html @@ -0,0 +1,263 @@ + + + + + + + +NCEPLIBS-ip: sptranf.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptranf.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform a scalar spherical transform
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | Iredell | Initial.
                    +
                    8 C> 1998-12-15 | Iredell | Generic fft used, openmp directives inserted
                    +
                    9 C> 2013-01-16 | Iredell, Mirvis | Fixing afft negative sharing effect
                    +
                    10 C>
                    +
                    11 C> @author Iredell @date 96-02-29
                    +
                    12 
                    +
                    13 C> This subprogram performs a spherical transform between spectral
                    +
                    14 C> coefficients of scalar quantities and fields on a global
                    +
                    15 C> cylindrical grid.
                    +
                    16 C>
                    +
                    17 C> The wave-space can be either triangular or
                    +
                    18 C> rhomboidal. The grid-space can be either an equally-spaced grid
                    +
                    19 C> (with or without pole points) or a Gaussian grid.
                    +
                    20 C>
                    +
                    21 C> The wave and grid fields may have general indexing,
                    +
                    22 C> but each wave field is in sequential 'ibm order',
                    +
                    23 C> i.e. with zonal wavenumber as the slower index.
                    +
                    24 C>
                    +
                    25 C> Transforms are done in latitude pairs for efficiency;
                    +
                    26 C> thus grid arrays for each hemisphere must be passed.
                    +
                    27 C>
                    +
                    28 C> If so requested, just a subset of the latitude pairs
                    +
                    29 C> may be transformed in each invocation of the subprogram.
                    +
                    30 C> The transforms are all multiprocessed over latitude except
                    +
                    31 C> the transform from fourier to spectral is multiprocessed
                    +
                    32 C> over zonal wavenumber to ensure reproducibility.
                    +
                    33 C>
                    +
                    34 C> Transform several fields at a time to improve vectorization.
                    +
                    35 C> Subprogram can be called from a multiprocessing environment.
                    +
                    36 C>
                    +
                    37 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    38 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    39 C> ----------------------- |--------- |-------------
                    +
                    40 C> IMAX | 2*MAXWV+2 | 3*MAXWV/2*2+2
                    +
                    41 C> JMAX (IDRT=4,IROMB=0) | 1*MAXWV+1 | 3*MAXWV/2+1
                    +
                    42 C> JMAX (IDRT=4,IROMB=1) | 2*MAXWV+1 | 5*MAXWV/2+1
                    +
                    43 C> JMAX (IDRT=0,IROMB=0) | 2*MAXWV+3 | 3*MAXWV/2*2+3
                    +
                    44 C> JMAX (IDRT=0,IROMB=1) | 4*MAXWV+3 | 5*MAXWV/2*2+3
                    +
                    45 C> JMAX (IDRT=256,IROMB=0) | 2*MAXWV+1 | 3*MAXWV/2*2+1
                    +
                    46 C> JMAX (IDRT=256,IROMB=1) | 4*MAXWV+1 | 5*MAXWV/2*2+1
                    +
                    47 C>
                    +
                    48 C> @param IROMB spectral domain shape
                    +
                    49 c> (0 for triangular, 1 for rhomboidal)
                    +
                    50 C> @param MAXWV spectral truncation
                    +
                    51 C> @param IDRT grid identifier
                    +
                    52 C> - IDRT=4 for Gaussian grid,
                    +
                    53 C> - IDRT=0 for equally-spaced grid including poles
                    +
                    54 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    55 C> @param IMAX even number of longitudes.
                    +
                    56 C> @param JMAX number of latitudes.
                    +
                    57 C> @param KMAX number of fields to transform.
                    +
                    58 C> @param IP longitude index for the prime meridian
                    +
                    59 C> @param IS skip number between longitudes
                    +
                    60 C> @param JN skip number between n.h. latitudes from north
                    +
                    61 C> @param JS skip number between s.h. latitudes from south
                    +
                    62 C> @param KW skip number between wave fields
                    +
                    63 C> @param KG skip number between grid fields
                    +
                    64 C> @param JB latitude index (from pole) to begin transform
                    +
                    65 C> @param JE latitude index (from pole) to end transform
                    +
                    66 C> @param JC number of cpus over which to multiprocess
                    +
                    67 C> @param[out] WAVE wave fields if IDIR>0
                    +
                    68 C> @param[out] GRIDN n.h. grid fields (starting at JB) if IDIR<0
                    +
                    69 C> @param[out] GRIDS s.h. grid fields (starting at JB) if IDIR<0
                    +
                    70 C> @param IDIR transform flag
                    +
                    71 C> (IDIR>0 for wave to grid, IDIR<0 for grid to wave)
                    +
                    72 C>
                    +
                    73 C> @author Iredell @date 96-02-29
                    +
                    74  SUBROUTINE sptranf(IROMB,MAXWV,IDRT,IMAX,JMAX,KMAX,
                    +
                    75  & IP,IS,JN,JS,KW,KG,JB,JE,JC,
                    +
                    76  & WAVE,GRIDN,GRIDS,IDIR)
                    +
                    77 
                    +
                    78  REAL WAVE(*),GRIDN(*),GRIDS(*)
                    +
                    79  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    80  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    81  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    82  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    83  REAL(8) AFFT(50000+4*IMAX), AFFT_TMP(50000+4*IMAX)
                    +
                    84  REAL CLAT(JB:JE),SLAT(JB:JE),WLAT(JB:JE)
                    +
                    85  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2,JB:JE)
                    +
                    86  REAL PLNTOP(MAXWV+1,JB:JE)
                    +
                    87  REAL WTOP(2*(MAXWV+1))
                    +
                    88  REAL G(IMAX,2)
                    +
                    89 ! write(0,*) 'sptranf top'
                    +
                    90 
                    +
                    91 C SET PARAMETERS
                    +
                    92  mp=0
                    +
                    93  CALL sptranf0(iromb,maxwv,idrt,imax,jmax,jb,je,
                    +
                    94  & eps,epstop,enn1,elonn1,eon,eontop,
                    +
                    95  & afft,clat,slat,wlat,pln,plntop)
                    +
                    96 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    97 C TRANSFORM WAVE TO GRID
                    +
                    98  IF(idir.GT.0) THEN
                    +
                    99 C$OMP PARALLEL DO PRIVATE(AFFT_TMP,KWS,WTOP,G,IJKN,IJKS)
                    +
                    100  DO k=1,kmax
                    +
                    101  afft_tmp=afft
                    +
                    102  kws=(k-1)*kw
                    +
                    103  wtop=0
                    +
                    104  DO j=jb,je
                    +
                    105  CALL sptranf1(iromb,maxwv,idrt,imax,jmax,j,j,
                    +
                    106  & eps,epstop,enn1,elonn1,eon,eontop,
                    +
                    107  & afft_tmp,clat(j),slat(j),wlat(j),
                    +
                    108  & pln(1,j),plntop(1,j),mp,
                    +
                    109  & wave(kws+1),wtop,g,idir)
                    +
                    110  IF(ip.EQ.1.AND.is.EQ.1) THEN
                    +
                    111  DO i=1,imax
                    +
                    112  ijkn=i+(j-jb)*jn+(k-1)*kg
                    +
                    113  ijks=i+(j-jb)*js+(k-1)*kg
                    +
                    114  gridn(ijkn)=g(i,1)
                    +
                    115  grids(ijks)=g(i,2)
                    +
                    116  ENDDO
                    +
                    117  ELSE
                    +
                    118  DO i=1,imax
                    +
                    119  ijkn=mod(i+ip-2,imax)*is+(j-jb)*jn+(k-1)*kg+1
                    +
                    120  ijks=mod(i+ip-2,imax)*is+(j-jb)*js+(k-1)*kg+1
                    +
                    121  gridn(ijkn)=g(i,1)
                    +
                    122  grids(ijks)=g(i,2)
                    +
                    123  ENDDO
                    +
                    124  ENDIF
                    +
                    125  ENDDO
                    +
                    126  ENDDO
                    +
                    127 
                    +
                    128 C TRANSFORM GRID TO WAVE
                    +
                    129  ELSE
                    +
                    130 C$OMP PARALLEL DO PRIVATE(AFFT_TMP,KWS,WTOP,G,IJKN,IJKS)
                    +
                    131  DO k=1,kmax
                    +
                    132  afft_tmp=afft
                    +
                    133  kws=(k-1)*kw
                    +
                    134  wtop=0
                    +
                    135  DO j=jb,je
                    +
                    136  IF(wlat(j).GT.0.) THEN
                    +
                    137  IF(ip.EQ.1.AND.is.EQ.1) THEN
                    +
                    138  DO i=1,imax
                    +
                    139  ijkn=i+(j-jb)*jn+(k-1)*kg
                    +
                    140  ijks=i+(j-jb)*js+(k-1)*kg
                    +
                    141  g(i,1)=gridn(ijkn)
                    +
                    142  g(i,2)=grids(ijks)
                    +
                    143  ENDDO
                    +
                    144  ELSE
                    +
                    145  DO i=1,imax
                    +
                    146  ijkn=mod(i+ip-2,imax)*is+(j-jb)*jn+(k-1)*kg+1
                    +
                    147  ijks=mod(i+ip-2,imax)*is+(j-jb)*js+(k-1)*kg+1
                    +
                    148  g(i,1)=gridn(ijkn)
                    +
                    149  g(i,2)=grids(ijks)
                    +
                    150  ENDDO
                    +
                    151  ENDIF
                    +
                    152  CALL sptranf1(iromb,maxwv,idrt,imax,jmax,j,j,
                    +
                    153  & eps,epstop,enn1,elonn1,eon,eontop,
                    +
                    154  & afft_tmp,clat(j),slat(j),wlat(j),
                    +
                    155  & pln(1,j),plntop(1,j),mp,
                    +
                    156  & wave(kws+1),wtop,g,idir)
                    +
                    157  ENDIF
                    +
                    158  ENDDO
                    +
                    159  ENDDO
                    +
                    160  ENDIF
                    +
                    161  END
                    +
                    subroutine sptranf0(IROMB, MAXWV, IDRT, IMAX, JMAX, JB, JE, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP, AFFT, CLAT, SLAT, WLAT, PLN, PLNTOP)
                    This subprogram performs an initialization for subprogram sptranf().
                    Definition: sptranf0.f:37
                    +
                    subroutine sptranf1(IROMB, MAXWV, IDRT, IMAX, JMAX, JB, JE, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP, AFFT, CLAT, SLAT, WLAT, PLN, PLNTOP, MP, W, WTOP, G, IDIR)
                    This subprogram performs an single latitude transform for subprogram sptranf().
                    Definition: sptranf1.f:44
                    +
                    subroutine sptranf(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IP, IS, JN, JS, KW, KG, JB, JE, JC, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptranf.f:77
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptranfv_8f.html b/ver-5.0.0/sptranfv_8f.html new file mode 100644 index 00000000..752e5b5f --- /dev/null +++ b/ver-5.0.0/sptranfv_8f.html @@ -0,0 +1,347 @@ + + + + + + + +NCEPLIBS-ip: sptranfv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptranfv.f File Reference
                    +
                    +
                    + +

                    Perform a vector spherical transform. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptranfv (IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IP, IS, JN, JS, KW, KG, JB, JE, JC, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                     This subprogram performs a spherical transform between spectral coefficients of divergences and curls and vector fields on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform a vector spherical transform.

                    +

                    +Program History Log

                    + + + + + + + + + +
                    Date Programmer Comments
                    96-02-29 Iredell Initial.
                    1998-12-15 Iredell Generic fft used, openmp directives inserted
                    2013-01-16 Iredell & MIRVIS Fixing afft negative sharing effect during omp loops
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptranfv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptranfv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptranfv ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                     KMAX,
                     IP,
                     IS,
                     JN,
                     JS,
                     KW,
                     KG,
                     JB,
                     JE,
                     JC,
                    real, dimension(*) WAVED,
                    real, dimension(*) WAVEZ,
                    real, dimension(*) GRIDUN,
                    real, dimension(*) GRIDUS,
                    real, dimension(*) GRIDVN,
                    real, dimension(*) GRIDVS,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls and vector fields on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid.

                    +

                    The wave and grid fields may have general indexing, but each wave field is in sequential 'ibm order', i.e. with zonal wavenumber as the slower index.

                    +

                    Transforms are done in latitude pairs for efficiency; thus grid arrays for each hemisphere must be passed. if so requested, just a subset of the latitude pairs may be transformed in each invocation of the subprogram.

                    +

                    The transforms are all multiprocessed over latitude except the transform from fourier to spectral is multiprocessed over zonal wavenumber to ensure reproducibility.

                    +

                    Transform several fields at a time to improve vectorization. subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    IDRTgrid identifier
                      +
                    • IDRT=4 for Gaussian grid
                    • +
                    • IDRT=0 for equally-spaced grid including poles
                    • +
                    • IDRT=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXeven number of longitudes.
                    JMAXnumber of latitudes.
                    KMAXnumber of fields to transform.
                    IPlongitude index for the prime meridian
                    ISskip number between longitudes
                    JNskip number between n.h. latitudes from north
                    JSskip number between s.h. latitudes from south
                    KWskip number between wave fields
                    KGskip number between grid fields
                    JBlatitude index (from pole) to begin transform
                    JElatitude index (from pole) to end transform
                    JCnumber of cpus over which to multiprocess
                    [out]WAVEDwave divergence fields if IDIR>0 [WAVED=(D(GRIDU)/DLAM+D(CLAT*GRIDV)/DPHI)/(CLAT*RERTH)]
                    [out]WAVEZwave vorticity fields if IDIR>0 [WAVEZ=(D(GRIDV)/DLAM-D(CLAT*GRIDU)/DPHI)/(CLAT*RERTH)]
                    +
                    [out]GRIDUNN.H. grid u-winds (starting at jb) if IDIR<0
                    [out]GRIDUSS.H. grid u-winds (starting at jb) if IDIR<0
                    [out]GRIDVNN.H. grid v-winds (starting at jb) if IDIR<0
                    [out]GRIDVSS.H. grid v-winds (starting at jb) if IDIR<0
                    IDIRtransform flag (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 80 of file sptranfv.f.

                    + +

                    References spdz2uv(), sptranf0(), sptranf1(), and spuv2dz().

                    + +

                    Referenced by sptezmv(), sptezv(), and sptranv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptranfv_8f.js b/ver-5.0.0/sptranfv_8f.js new file mode 100644 index 00000000..7311d700 --- /dev/null +++ b/ver-5.0.0/sptranfv_8f.js @@ -0,0 +1,4 @@ +var sptranfv_8f = +[ + [ "sptranfv", "sptranfv_8f.html#a1a7aabbd358d4fe984dac6813c98b106", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptranfv_8f_source.html b/ver-5.0.0/sptranfv_8f_source.html new file mode 100644 index 00000000..c74a3db8 --- /dev/null +++ b/ver-5.0.0/sptranfv_8f_source.html @@ -0,0 +1,300 @@ + + + + + + + +NCEPLIBS-ip: sptranfv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptranfv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform a vector spherical transform
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | Iredell | Initial.
                    +
                    8 C> 1998-12-15 | Iredell | Generic fft used, openmp directives inserted
                    +
                    9 C> 2013-01-16 | Iredell & MIRVIS | Fixing afft negative sharing effect during omp loops
                    +
                    10 C>
                    +
                    11 C> @author Iredell @date 96-02-29
                    +
                    12 
                    +
                    13 C> This subprogram performs a spherical transform
                    +
                    14 C> between spectral coefficients of divergences and curls
                    +
                    15 C> and vector fields on a global cylindrical grid.
                    +
                    16 C>
                    +
                    17 C> The wave-space can be either triangular or rhomboidal.
                    +
                    18 C>
                    +
                    19 C> The grid-space can be either an equally-spaced grid
                    +
                    20 C> (with or without pole points) or a Gaussian grid.
                    +
                    21 C>
                    +
                    22 C> The wave and grid fields may have general indexing,
                    +
                    23 C> but each wave field is in sequential 'ibm order',
                    +
                    24 C> i.e. with zonal wavenumber as the slower index.
                    +
                    25 C>
                    +
                    26 C> Transforms are done in latitude pairs for efficiency;
                    +
                    27 C> thus grid arrays for each hemisphere must be passed.
                    +
                    28 C> if so requested, just a subset of the latitude pairs
                    +
                    29 C> may be transformed in each invocation of the subprogram.
                    +
                    30 C>
                    +
                    31 C> The transforms are all multiprocessed over latitude except
                    +
                    32 C> the transform from fourier to spectral is multiprocessed
                    +
                    33 C> over zonal wavenumber to ensure reproducibility.
                    +
                    34 C>
                    +
                    35 C> Transform several fields at a time to improve vectorization.
                    +
                    36 C> subprogram can be called from a multiprocessing environment.
                    +
                    37 C>
                    +
                    38 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    39 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    40 C> ----------------------- |--------- |-------------
                    +
                    41 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    42 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    43 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    44 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    45 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    46 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    47 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    48 C>
                    +
                    49 C> @param IROMB spectral domain shape
                    +
                    50 C> (0 for triangular, 1 for rhomboidal)
                    +
                    51 C> @param MAXWV spectral truncation
                    +
                    52 C> @param IDRT grid identifier
                    +
                    53 C> - IDRT=4 for Gaussian grid
                    +
                    54 C> - IDRT=0 for equally-spaced grid including poles
                    +
                    55 C> - IDRT=256 for equally-spaced grid excluding poles
                    +
                    56 C> @param IMAX even number of longitudes.
                    +
                    57 C> @param JMAX number of latitudes.
                    +
                    58 C> @param KMAX number of fields to transform.
                    +
                    59 C> @param IP longitude index for the prime meridian
                    +
                    60 C> @param IS skip number between longitudes
                    +
                    61 C> @param JN skip number between n.h. latitudes from north
                    +
                    62 C> @param JS skip number between s.h. latitudes from south
                    +
                    63 C> @param KW skip number between wave fields
                    +
                    64 C> @param KG skip number between grid fields
                    +
                    65 C> @param JB latitude index (from pole) to begin transform
                    +
                    66 C> @param JE latitude index (from pole) to end transform
                    +
                    67 C> @param JC number of cpus over which to multiprocess
                    +
                    68 C> @param[out] WAVED wave divergence fields if IDIR>0
                    +
                    69 C> [WAVED=(D(GRIDU)/DLAM+D(CLAT*GRIDV)/DPHI)/(CLAT*RERTH)]
                    +
                    70 C> @param[out] WAVEZ wave vorticity fields if IDIR>0
                    +
                    71 C> [WAVEZ=(D(GRIDV)/DLAM-D(CLAT*GRIDU)/DPHI)/(CLAT*RERTH)]
                    +
                    72 C> @param[out] GRIDUN N.H. grid u-winds (starting at jb) if IDIR<0
                    +
                    73 C> @param[out] GRIDUS S.H. grid u-winds (starting at jb) if IDIR<0
                    +
                    74 C> @param[out] GRIDVN N.H. grid v-winds (starting at jb) if IDIR<0
                    +
                    75 C> @param[out] GRIDVS S.H. grid v-winds (starting at jb) if IDIR<0
                    +
                    76 C> @param IDIR transform flag
                    +
                    77 C> (IDIR>0 for wave to grid, IDIR<0 for grid to wave).
                    +
                    78 C>
                    +
                    79 C> @author Iredell @date 96-02-29
                    +
                    80  SUBROUTINE sptranfv(IROMB,MAXWV,IDRT,IMAX,JMAX,KMAX,
                    +
                    81  & IP,IS,JN,JS,KW,KG,JB,JE,JC,
                    +
                    82  & WAVED,WAVEZ,GRIDUN,GRIDUS,GRIDVN,GRIDVS,IDIR)
                    +
                    83 
                    +
                    84  REAL WAVED(*),WAVEZ(*),GRIDUN(*),GRIDUS(*),GRIDVN(*),GRIDVS(*)
                    +
                    85  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    86  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    87  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    88  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    89  REAL(8) AFFT(50000+4*IMAX), AFFT_TMP(50000+4*IMAX)
                    +
                    90  REAL CLAT(JB:JE),SLAT(JB:JE),WLAT(JB:JE)
                    +
                    91  REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2,JB:JE)
                    +
                    92  REAL PLNTOP(MAXWV+1,JB:JE)
                    +
                    93  INTEGER MP(2)
                    +
                    94  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2,2)
                    +
                    95  REAL WTOP(2*(MAXWV+1),2)
                    +
                    96  REAL G(IMAX,2,2)
                    +
                    97  REAL WINC((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2,2)
                    +
                    98 
                    +
                    99 C SET PARAMETERS
                    +
                    100  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    101  mp=1
                    +
                    102  CALL sptranf0(iromb,maxwv,idrt,imax,jmax,jb,je,
                    +
                    103  & eps,epstop,enn1,elonn1,eon,eontop,
                    +
                    104  & afft,clat,slat,wlat,pln,plntop)
                    +
                    105 
                    +
                    106 C TRANSFORM WAVE TO GRID
                    +
                    107  IF(idir.GT.0) THEN
                    +
                    108 C$OMP PARALLEL DO PRIVATE(AFFT_TMP,KWS,W,WTOP,G,IJKN,IJKS)
                    +
                    109  DO k=1,kmax
                    +
                    110  afft_tmp=afft
                    +
                    111  kws=(k-1)*kw
                    +
                    112  CALL spdz2uv(iromb,maxwv,enn1,elonn1,eon,eontop,
                    +
                    113  & waved(kws+1),wavez(kws+1),
                    +
                    114  & w(1,1),w(1,2),wtop(1,1),wtop(1,2))
                    +
                    115  DO j=jb,je
                    +
                    116  CALL sptranf1(iromb,maxwv,idrt,imax,jmax,j,j,
                    +
                    117  & eps,epstop,enn1,elonn1,eon,eontop,
                    +
                    118  & afft_tmp,clat(j),slat(j),wlat(j),
                    +
                    119  & pln(1,j),plntop(1,j),mp,
                    +
                    120  & w(1,1),wtop(1,1),g(1,1,1),idir)
                    +
                    121  CALL sptranf1(iromb,maxwv,idrt,imax,jmax,j,j,
                    +
                    122  & eps,epstop,enn1,elonn1,eon,eontop,
                    +
                    123  & afft_tmp,clat(j),slat(j),wlat(j),
                    +
                    124  & pln(1,j),plntop(1,j),mp,
                    +
                    125  & w(1,2),wtop(1,2),g(1,1,2),idir)
                    +
                    126  IF(ip.EQ.1.AND.is.EQ.1) THEN
                    +
                    127  DO i=1,imax
                    +
                    128  ijkn=i+(j-jb)*jn+(k-1)*kg
                    +
                    129  ijks=i+(j-jb)*js+(k-1)*kg
                    +
                    130  gridun(ijkn)=g(i,1,1)
                    +
                    131  gridus(ijks)=g(i,2,1)
                    +
                    132  gridvn(ijkn)=g(i,1,2)
                    +
                    133  gridvs(ijks)=g(i,2,2)
                    +
                    134  ENDDO
                    +
                    135  ELSE
                    +
                    136  DO i=1,imax
                    +
                    137  ijkn=mod(i+ip-2,imax)*is+(j-jb)*jn+(k-1)*kg+1
                    +
                    138  ijks=mod(i+ip-2,imax)*is+(j-jb)*js+(k-1)*kg+1
                    +
                    139  gridun(ijkn)=g(i,1,1)
                    +
                    140  gridus(ijks)=g(i,2,1)
                    +
                    141  gridvn(ijkn)=g(i,1,2)
                    +
                    142  gridvs(ijks)=g(i,2,2)
                    +
                    143  ENDDO
                    +
                    144  ENDIF
                    +
                    145  ENDDO
                    +
                    146  ENDDO
                    +
                    147 
                    +
                    148 C TRANSFORM GRID TO WAVE
                    +
                    149  ELSE
                    +
                    150 C$OMP PARALLEL DO PRIVATE(AFFT_TMP,KWS,W,WTOP,G,IJKN,IJKS,WINC)
                    +
                    151  DO k=1,kmax
                    +
                    152  afft_tmp=afft
                    +
                    153  kws=(k-1)*kw
                    +
                    154  w=0
                    +
                    155  wtop=0
                    +
                    156  DO j=jb,je
                    +
                    157  IF(wlat(j).GT.0.) THEN
                    +
                    158  IF(ip.EQ.1.AND.is.EQ.1) THEN
                    +
                    159  DO i=1,imax
                    +
                    160  ijkn=i+(j-jb)*jn+(k-1)*kg
                    +
                    161  ijks=i+(j-jb)*js+(k-1)*kg
                    +
                    162  g(i,1,1)=gridun(ijkn)/clat(j)**2
                    +
                    163  g(i,2,1)=gridus(ijks)/clat(j)**2
                    +
                    164  g(i,1,2)=gridvn(ijkn)/clat(j)**2
                    +
                    165  g(i,2,2)=gridvs(ijks)/clat(j)**2
                    +
                    166  ENDDO
                    +
                    167  ELSE
                    +
                    168  DO i=1,imax
                    +
                    169  ijkn=mod(i+ip-2,imax)*is+(j-jb)*jn+(k-1)*kg+1
                    +
                    170  ijks=mod(i+ip-2,imax)*is+(j-jb)*js+(k-1)*kg+1
                    +
                    171  g(i,1,1)=gridun(ijkn)/clat(j)**2
                    +
                    172  g(i,2,1)=gridus(ijks)/clat(j)**2
                    +
                    173  g(i,1,2)=gridvn(ijkn)/clat(j)**2
                    +
                    174  g(i,2,2)=gridvs(ijks)/clat(j)**2
                    +
                    175  ENDDO
                    +
                    176  ENDIF
                    +
                    177  CALL sptranf1(iromb,maxwv,idrt,imax,jmax,j,j,
                    +
                    178  & eps,epstop,enn1,elonn1,eon,eontop,
                    +
                    179  & afft_tmp,clat(j),slat(j),wlat(j),
                    +
                    180  & pln(1,j),plntop(1,j),mp,
                    +
                    181  & w(1,1),wtop(1,1),g(1,1,1),idir)
                    +
                    182  CALL sptranf1(iromb,maxwv,idrt,imax,jmax,j,j,
                    +
                    183  & eps,epstop,enn1,elonn1,eon,eontop,
                    +
                    184  & afft_tmp,clat(j),slat(j),wlat(j),
                    +
                    185  & pln(1,j),plntop(1,j),mp,
                    +
                    186  & w(1,2),wtop(1,2),g(1,1,2),idir)
                    +
                    187  ENDIF
                    +
                    188  ENDDO
                    +
                    189  CALL spuv2dz(iromb,maxwv,enn1,elonn1,eon,eontop,
                    +
                    190  & w(1,1),w(1,2),wtop(1,1),wtop(1,2),
                    +
                    191  & winc(1,1),winc(1,2))
                    +
                    192  waved(kws+1:kws+2*mx)=waved(kws+1:kws+2*mx)+winc(1:2*mx,1)
                    +
                    193  wavez(kws+1:kws+2*mx)=wavez(kws+1:kws+2*mx)+winc(1:2*mx,2)
                    +
                    194  ENDDO
                    +
                    195  ENDIF
                    +
                    196  END
                    +
                    subroutine spdz2uv(I, M, ENN1, ELONN1, EON, EONTOP, D, Z, U, V, UTOP, VTOP)
                    Computes the wind components from divergence and vorticity in spectral space.
                    Definition: spdz2uv.f:49
                    +
                    subroutine sptranf0(IROMB, MAXWV, IDRT, IMAX, JMAX, JB, JE, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP, AFFT, CLAT, SLAT, WLAT, PLN, PLNTOP)
                    This subprogram performs an initialization for subprogram sptranf().
                    Definition: sptranf0.f:37
                    +
                    subroutine sptranf1(IROMB, MAXWV, IDRT, IMAX, JMAX, JB, JE, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP, AFFT, CLAT, SLAT, WLAT, PLN, PLNTOP, MP, W, WTOP, G, IDIR)
                    This subprogram performs an single latitude transform for subprogram sptranf().
                    Definition: sptranf1.f:44
                    +
                    subroutine sptranfv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IP, IS, JN, JS, KW, KG, JB, JE, JC, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranfv.f:83
                    +
                    subroutine spuv2dz(I, M, ENN1, ELONN1, EON, EONTOP, U, V, UTOP, VTOP, D, Z)
                    Computes the divergence and vorticity from wind components in spectral space.
                    Definition: spuv2dz.f:49
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptranv_8f.html b/ver-5.0.0/sptranv_8f.html new file mode 100644 index 00000000..c9f687ed --- /dev/null +++ b/ver-5.0.0/sptranv_8f.html @@ -0,0 +1,349 @@ + + + + + + + +NCEPLIBS-ip: sptranv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptranv.f File Reference
                    +
                    +
                    + +

                    Perform a vector spherical transform. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptranv (IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                     This subprogram performs a spherical transform between spectral coefficients of divergences and curls and vector fields on a global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Perform a vector spherical transform.

                    +

                    +Program History Log

                    + + + + + + + +
                    Date Programmer Comments
                    96-02-29 IREDELL Initial.
                    1998-12-15 IREDELL Generic fft used, openmp directives inserted
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptranv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptranv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptranv ( IROMB,
                     MAXWV,
                     IDRT,
                     IMAX,
                     JMAX,
                     KMAX,
                     IPRIME,
                     ISKIP,
                     JNSKIP,
                     JSSKIP,
                     KWSKIP,
                     KGSKIP,
                     JBEG,
                     JEND,
                     JCPU,
                    real, dimension(*) WAVED,
                    real, dimension(*) WAVEZ,
                    real, dimension(*) GRIDUN,
                    real, dimension(*) GRIDUS,
                    real, dimension(*) GRIDVN,
                    real, dimension(*) GRIDVS,
                     IDIR 
                    )
                    +
                    + +

                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls and vector fields on a global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid. the wave and grid fields may have general indexing, but each wave field is in sequential 'ibm order', i.e. with zonal wavenumber as the slower index.

                    +

                    Transforms are done in latitude pairs for efficiency; thus grid arrays for each hemisphere must be passed. If so requested, just a subset of the latitude pairs may be transformed in each invocation of the subprogram.

                    +

                    The transforms are all multiprocessed over latitude except the transform from fourier to spectral is multiprocessed over zonal wavenumber to ensure reproducibility.

                    +

                    Transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + +
                    IROMBSPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    MAXWVSPECTRAL TRUNCATION
                    IDRTGRID IDENTIFIER
                      +
                    • IDRT=4 FOR GAUSSIAN GRID,
                    • +
                    • IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    • +
                    • IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES
                    • +
                    +
                    IMAXEVEN NUMBER OF LONGITUDES.
                    JMAXNUMBER OF LATITUDES.
                    KMAXNUMBER OF FIELDS TO TRANSFORM.
                    IPRIMELONGITUDE INDEX FOR THE PRIME MERIDIAN. (DEFAULTS TO 1 IF IPRIME=0)
                    ISKIPSKIP NUMBER BETWEEN LONGITUDES (DEFAULTS TO 1 IF ISKIP=0)
                    JNSKIPSKIP NUMBER BETWEEN N.H. LATITUDES FROM NORTH (DEFAULTS TO IMAX IF JNSKIP=0)
                    JSSKIPSKIP NUMBER BETWEEN S.H. LATITUDES FROM SOUTH (DEFAULTS TO -IMAX IF JSSKIP=0)
                    KWSKIPSKIP NUMBER BETWEEN WAVE FIELDS (DEFAULTS TO (MAXWV+1)*((IROMB+1)*MAXWV+2) IF KWSKIP=0)
                    KGSKIPSKIP NUMBER BETWEEN GRID FIELDS (DEFAULTS TO IMAX*JMAX IF KGSKIP=0)
                    JBEGLATITUDE INDEX (FROM POLE) TO BEGIN TRANSFORM
                      +
                    • DEFAULTS TO 1 IF JBEG=0
                    • +
                    • IF JBEG=0 AND IDIR<0, WAVE IS ZEROED BEFORE TRANSFORM
                    • +
                    +
                    JENDLATITUDE INDEX (FROM POLE) TO END TRANSFORM (DEFAULTS TO (JMAX+1)/2 IF JEND=0)
                    JCPUNUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                    [out]WAVED(*) WAVE DIVERGENCE FIELDS IF IDIR>0 [WAVED=(D(GRIDU)/DLAM+D(CLAT*GRIDV)/DPHI)/(CLAT*RERTH)]
                    [out]WAVEZ(*) WAVE VORTICITY FIELDS IF IDIR>0 [WAVEZ=(D(GRIDV)/DLAM-D(CLAT*GRIDU)/DPHI)/(CLAT*RERTH)]
                    [out]GRIDUNN.H. GRID U-WINDS (STARTING AT JBEG) IF IDIR<0
                    [out]GRIDUSS.H. GRID U-WINDS (STARTING AT JBEG) IF IDIR<0
                    [out]GRIDVNN.H. GRID V-WINDS (STARTING AT JBEG) IF IDIR<0
                    [out]GRIDVSS.H. GRID V-WINDS (STARTING AT JBEG) IF IDIR<0
                    IDIRTRANSFORM FLAG
                      +
                    • IDIR>0 FOR WAVE TO GRID,
                    • +
                    • IDIR<0 FOR GRID TO WAVE
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 87 of file sptranv.f.

                    + +

                    References ncpus(), and sptranfv().

                    + +

                    Referenced by sptrand(), sptrungv(), sptrunmv(), sptrunsv(), and sptrunv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptranv_8f.js b/ver-5.0.0/sptranv_8f.js new file mode 100644 index 00000000..ef79c537 --- /dev/null +++ b/ver-5.0.0/sptranv_8f.js @@ -0,0 +1,4 @@ +var sptranv_8f = +[ + [ "sptranv", "sptranv_8f.html#a7d6aaa3ed70df1dfaf8dd4443b7190c1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptranv_8f_source.html b/ver-5.0.0/sptranv_8f_source.html new file mode 100644 index 00000000..b0ac5987 --- /dev/null +++ b/ver-5.0.0/sptranv_8f_source.html @@ -0,0 +1,228 @@ + + + + + + + +NCEPLIBS-ip: sptranv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptranv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Perform a vector spherical transform.
                    +
                    3 C>
                    +
                    4 C> ### Program History Log
                    +
                    5 C> Date | Programmer | Comments
                    +
                    6 C> -----|------------|---------
                    +
                    7 C> 96-02-29 | IREDELL | Initial.
                    +
                    8 C> 1998-12-15 | IREDELL | Generic fft used, openmp directives inserted
                    +
                    9 C>
                    +
                    10 C> @author IREDELL @date 96-02-29
                    +
                    11 
                    +
                    12 C> This subprogram performs a spherical transform
                    +
                    13 C> between spectral coefficients of divergences and curls
                    +
                    14 C> and vector fields on a global cylindrical grid.
                    +
                    15 C>
                    +
                    16 C> The wave-space can be either triangular or rhomboidal.
                    +
                    17 C>
                    +
                    18 C> The grid-space can be either an equally-spaced grid
                    +
                    19 C> (with or without pole points) or a Gaussian grid.
                    +
                    20 C> the wave and grid fields may have general indexing,
                    +
                    21 C> but each wave field is in sequential 'ibm order',
                    +
                    22 C> i.e. with zonal wavenumber as the slower index.
                    +
                    23 C>
                    +
                    24 C> Transforms are done in latitude pairs for efficiency;
                    +
                    25 C> thus grid arrays for each hemisphere must be passed.
                    +
                    26 C> If so requested, just a subset of the latitude pairs
                    +
                    27 C> may be transformed in each invocation of the subprogram.
                    +
                    28 C>
                    +
                    29 C> The transforms are all multiprocessed over latitude except
                    +
                    30 C> the transform from fourier to spectral is multiprocessed
                    +
                    31 C> over zonal wavenumber to ensure reproducibility.
                    +
                    32 C>
                    +
                    33 C> Transform several fields at a time to improve vectorization.
                    +
                    34 C> Subprogram can be called from a multiprocessing environment.
                    +
                    35 C>
                    +
                    36 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    37 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    38 C> ----------------------- |--------- |-------------
                    +
                    39 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    40 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    41 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    42 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    43 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    44 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    45 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    46 C>
                    +
                    47 C> @param IROMB SPECTRAL DOMAIN SHAPE
                    +
                    48 C> (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    +
                    49 C> @param MAXWV SPECTRAL TRUNCATION
                    +
                    50 C> @param IDRT GRID IDENTIFIER
                    +
                    51 C> - IDRT=4 FOR GAUSSIAN GRID,
                    +
                    52 C> - IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    53 C> - IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES
                    +
                    54 C> @param IMAX EVEN NUMBER OF LONGITUDES.
                    +
                    55 C> @param JMAX NUMBER OF LATITUDES.
                    +
                    56 C> @param KMAX NUMBER OF FIELDS TO TRANSFORM.
                    +
                    57 C> @param IPRIME LONGITUDE INDEX FOR THE PRIME MERIDIAN.
                    +
                    58 C> (DEFAULTS TO 1 IF IPRIME=0)
                    +
                    59 C> @param ISKIP SKIP NUMBER BETWEEN LONGITUDES
                    +
                    60 C> (DEFAULTS TO 1 IF ISKIP=0)
                    +
                    61 C> @param JNSKIP SKIP NUMBER BETWEEN N.H. LATITUDES FROM NORTH
                    +
                    62 C> (DEFAULTS TO IMAX IF JNSKIP=0)
                    +
                    63 C> @param JSSKIP SKIP NUMBER BETWEEN S.H. LATITUDES FROM SOUTH
                    +
                    64 C> (DEFAULTS TO -IMAX IF JSSKIP=0)
                    +
                    65 C> @param KWSKIP SKIP NUMBER BETWEEN WAVE FIELDS
                    +
                    66 C> (DEFAULTS TO (MAXWV+1)*((IROMB+1)*MAXWV+2) IF KWSKIP=0)
                    +
                    67 C> @param KGSKIP SKIP NUMBER BETWEEN GRID FIELDS
                    +
                    68 C> (DEFAULTS TO IMAX*JMAX IF KGSKIP=0)
                    +
                    69 C> @param JBEG LATITUDE INDEX (FROM POLE) TO BEGIN TRANSFORM
                    +
                    70 C> - DEFAULTS TO 1 IF JBEG=0
                    +
                    71 C> - IF JBEG=0 AND IDIR<0, WAVE IS ZEROED BEFORE TRANSFORM
                    +
                    72 C> @param JEND LATITUDE INDEX (FROM POLE) TO END TRANSFORM
                    +
                    73 C> (DEFAULTS TO (JMAX+1)/2 IF JEND=0)
                    +
                    74 C> @param JCPU NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                    +
                    75 C> @param[out] WAVED (*) WAVE DIVERGENCE FIELDS IF IDIR>0
                    +
                    76 C> [WAVED=(D(GRIDU)/DLAM+D(CLAT*GRIDV)/DPHI)/(CLAT*RERTH)]
                    +
                    77 C> @param[out] WAVEZ (*) WAVE VORTICITY FIELDS IF IDIR>0
                    +
                    78 C> [WAVEZ=(D(GRIDV)/DLAM-D(CLAT*GRIDU)/DPHI)/(CLAT*RERTH)]
                    +
                    79 C> @param[out] GRIDUN N.H. GRID U-WINDS (STARTING AT JBEG) IF IDIR<0
                    +
                    80 C> @param[out] GRIDUS S.H. GRID U-WINDS (STARTING AT JBEG) IF IDIR<0
                    +
                    81 C> @param[out] GRIDVN N.H. GRID V-WINDS (STARTING AT JBEG) IF IDIR<0
                    +
                    82 C> @param[out] GRIDVS S.H. GRID V-WINDS (STARTING AT JBEG) IF IDIR<0
                    +
                    83 C> @param IDIR TRANSFORM FLAG
                    +
                    84 C> - IDIR>0 FOR WAVE TO GRID,
                    +
                    85 C> - IDIR<0 FOR GRID TO WAVE
                    +
                    86 C>
                    +
                    87  SUBROUTINE sptranv(IROMB,MAXWV,IDRT,IMAX,JMAX,KMAX,
                    +
                    88  & IPRIME,ISKIP,JNSKIP,JSSKIP,KWSKIP,KGSKIP,
                    +
                    89  & JBEG,JEND,JCPU,
                    +
                    90  & WAVED,WAVEZ,GRIDUN,GRIDUS,GRIDVN,GRIDVS,IDIR)
                    +
                    91 
                    +
                    92  REAL WAVED(*),WAVEZ(*),GRIDUN(*),GRIDUS(*),GRIDVN(*),GRIDVS(*)
                    +
                    93 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    94  MX=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    95  ip=iprime
                    +
                    96  is=iskip
                    +
                    97  jn=jnskip
                    +
                    98  js=jsskip
                    +
                    99  kw=kwskip
                    +
                    100  kg=kgskip
                    +
                    101  jb=jbeg
                    +
                    102  je=jend
                    +
                    103  jc=jcpu
                    +
                    104  IF(ip.EQ.0) ip=1
                    +
                    105  IF(is.EQ.0) is=1
                    +
                    106  IF(jn.EQ.0) jn=imax
                    +
                    107  IF(js.EQ.0) js=-jn
                    +
                    108  IF(kw.EQ.0) kw=2*mx
                    +
                    109  IF(kg.EQ.0) kg=imax*jmax
                    +
                    110  IF(jb.EQ.0) jb=1
                    +
                    111  IF(je.EQ.0) je=(jmax+1)/2
                    +
                    112  IF(jc.EQ.0) jc=ncpus()
                    +
                    113 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    114  IF(idir.LT.0.AND.jbeg.EQ.0) THEN
                    +
                    115  DO k=1,kmax
                    +
                    116  kws=(k-1)*kw
                    +
                    117  waved(kws+1:kws+2*mx)=0
                    +
                    118  wavez(kws+1:kws+2*mx)=0
                    +
                    119  ENDDO
                    +
                    120  ENDIF
                    +
                    121 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    122  CALL sptranfv(iromb,maxwv,idrt,imax,jmax,kmax,
                    +
                    123  & ip,is,jn,js,kw,kg,jb,je,jc,
                    +
                    124  & waved,wavez,gridun,gridus,gridvn,gridvs,idir)
                    +
                    125 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    126  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptranfv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IP, IS, JN, JS, KW, KG, JB, JE, JC, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranfv.f:83
                    +
                    subroutine sptranv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranv.f:91
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrun_8f.html b/ver-5.0.0/sptrun_8f.html new file mode 100644 index 00000000..be942950 --- /dev/null +++ b/ver-5.0.0/sptrun_8f.html @@ -0,0 +1,317 @@ + + + + + + + +NCEPLIBS-ip: sptrun.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptrun.f File Reference
                    +
                    +
                    + +

                    Truncate gridded scalar fields. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptrun (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRIDI, GRIDO)
                     This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to a possibly different global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Truncate gridded scalar fields.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptrun.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptrun()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptrun ( IROMB,
                     MAXWV,
                     IDRTI,
                     IMAXI,
                     JMAXI,
                     IDRTO,
                     IMAXO,
                     JMAXO,
                     KMAX,
                     IPRIME,
                     ISKIPI,
                     JSKIPI,
                     KSKIPI,
                     ISKIPO,
                     JSKIPO,
                     KSKIPO,
                     JCPU,
                    real, dimension(*) GRIDI,
                    real, dimension(*) GRIDO 
                    )
                    +
                    + +

                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to a possibly different global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal. either grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid. the grid fields may have general indexing. the transforms are all multiprocessed. Transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +

                    Remarks: Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    Dimension Linear Quadratic
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    IROMBSpectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVSpectral truncation
                    IDRTIInput grid identifier
                      +
                    • IDRTI=4 for Gaussian grid
                    • +
                    • IDRTI=0 for equally-spaced grid including poles
                    • +
                    • IDRTI=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXIEven number of input longitudes
                    JMAXINumber of input latitudes
                    IDRTOOutput grid identifier
                      +
                    • IDRTO=4 for Gaussian grid
                    • +
                    • IDRTO=0 for equally-spaced grid including poles
                    • +
                    • IDRTO=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXOEven number of output longitudes
                    JMAXONumber of output latitudes
                    KMAXNumber of fields to transform
                    IPRIMEInput longitude index for the prime meridian.
                      +
                    • Defaults to 1 if IPRIME=0
                    • +
                    • Output longitude index for prime meridian assumed 1
                    • +
                    +
                    ISKIPISkip number between input longitudes (defaults to 1 if ISKIPI=0)
                    JSKIPISkip number between input latitudes from south (defaults to -IMAXI if JSKIPI=0)
                    KSKIPISkip number between input grid fields (defaults to IMAXI*JMAXI if KSKIPI=0)
                    ISKIPOSkip number between output longitudes (defaults to 1 if ISKIPO=0)
                    JSKIPOSkip number between output latitudes from south (defaults to -IMAXO if JSKIPO=0)
                    KSKIPOSkip number between output grid fields (defaults to IMAXO*JMAXO if KSKIPO=0)
                    JCPUNumber of CPUs over which to multiprocess (defaults to environment NCPUS if JCPU=0)
                    GRIDIInput grid fields
                    GRIDOOutput grid fields (may overlay input fields if grid shape is appropriate)
                    +
                    +
                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 55 of file sptrun.f.

                    + +

                    References ncpus(), and sptran().

                    + +

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrun_8f.js b/ver-5.0.0/sptrun_8f.js new file mode 100644 index 00000000..0409c09b --- /dev/null +++ b/ver-5.0.0/sptrun_8f.js @@ -0,0 +1,4 @@ +var sptrun_8f = +[ + [ "sptrun", "sptrun_8f.html#a1f04574fbd5018f73b68bd2cd0ffc473", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptrun_8f_source.html b/ver-5.0.0/sptrun_8f_source.html new file mode 100644 index 00000000..89f40431 --- /dev/null +++ b/ver-5.0.0/sptrun_8f_source.html @@ -0,0 +1,187 @@ + + + + + + + +NCEPLIBS-ip: sptrun.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptrun.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Truncate gridded scalar fields
                    +
                    3 C> @author IREDELL @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram spectrally truncates scalar fields on a global
                    +
                    6 C> cylindrical grid, returning the fields to a possibly different
                    +
                    7 C> global cylindrical grid. The wave-space can be either triangular
                    +
                    8 C> or rhomboidal. either grid-space can be either an equally-spaced
                    +
                    9 C> grid (with or without pole points) or a Gaussian grid. the grid
                    +
                    10 C> fields may have general indexing. the transforms are all
                    +
                    11 C> multiprocessed. Transform several fields at a time to improve
                    +
                    12 C> vectorization. Subprogram can be called from a multiprocessing
                    +
                    13 C> environment.
                    +
                    14 C>
                    +
                    15 C> Remarks: Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    16 C> Dimension | Linear | Quadratic
                    +
                    17 C> ----------------------- | --------- | -------------
                    +
                    18 C> IMAX | 2*MAXWV+2 | 3*MAXWV/2*2+2
                    +
                    19 C> JMAX (IDRT=4,IROMB=0) | 1*MAXWV+1 | 3*MAXWV/2+1
                    +
                    20 C> JMAX (IDRT=4,IROMB=1) | 2*MAXWV+1 | 5*MAXWV/2+1
                    +
                    21 C> JMAX (IDRT=0,IROMB=0) | 2*MAXWV+3 | 3*MAXWV/2*2+3
                    +
                    22 C> JMAX (IDRT=0,IROMB=1) | 4*MAXWV+3 | 5*MAXWV/2*2+3
                    +
                    23 C> JMAX (IDRT=256,IROMB=0) | 2*MAXWV+1 | 3*MAXWV/2*2+1
                    +
                    24 C> JMAX (IDRT=256,IROMB=1) | 4*MAXWV+1 | 5*MAXWV/2*2+1
                    +
                    25 C>
                    +
                    26 C> @param IROMB Spectral domain shape (0 for triangular, 1 for rhomboidal)
                    +
                    27 C> @param MAXWV Spectral truncation
                    +
                    28 C> @param IDRTI Input grid identifier
                    +
                    29 C> - IDRTI=4 for Gaussian grid
                    +
                    30 C> - IDRTI=0 for equally-spaced grid including poles
                    +
                    31 C> - IDRTI=256 for equally-spaced grid excluding poles
                    +
                    32 C> @param IMAXI Even number of input longitudes
                    +
                    33 C> @param JMAXI Number of input latitudes
                    +
                    34 C> @param IDRTO Output grid identifier
                    +
                    35 C> - IDRTO=4 for Gaussian grid
                    +
                    36 C> - IDRTO=0 for equally-spaced grid including poles
                    +
                    37 C> - IDRTO=256 for equally-spaced grid excluding poles
                    +
                    38 C> @param IMAXO Even number of output longitudes
                    +
                    39 C> @param JMAXO Number of output latitudes
                    +
                    40 C> @param KMAX Number of fields to transform
                    +
                    41 C> @param IPRIME Input longitude index for the prime meridian.
                    +
                    42 C> - Defaults to 1 if IPRIME=0
                    +
                    43 C> - Output longitude index for prime meridian assumed 1
                    +
                    44 C> @param ISKIPI Skip number between input longitudes (defaults to 1 if ISKIPI=0)
                    +
                    45 C> @param JSKIPI Skip number between input latitudes from south (defaults to -IMAXI if JSKIPI=0)
                    +
                    46 C> @param KSKIPI Skip number between input grid fields (defaults to IMAXI*JMAXI if KSKIPI=0)
                    +
                    47 C> @param ISKIPO Skip number between output longitudes (defaults to 1 if ISKIPO=0)
                    +
                    48 C> @param JSKIPO Skip number between output latitudes from south (defaults to -IMAXO if JSKIPO=0)
                    +
                    49 C> @param KSKIPO Skip number between output grid fields (defaults to IMAXO*JMAXO if KSKIPO=0)
                    +
                    50 C> @param JCPU Number of CPUs over which to multiprocess (defaults to environment NCPUS if JCPU=0)
                    +
                    51 C> @param GRIDI Input grid fields
                    +
                    52 C> @param GRIDO Output grid fields (may overlay input fields if grid shape is appropriate)
                    +
                    53 C>
                    +
                    54 C> @author IREDELL @date 96-02-29
                    +
                    55  SUBROUTINE sptrun(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,IDRTO,IMAXO,JMAXO,
                    +
                    56  & KMAX,IPRIME,ISKIPI,JSKIPI,KSKIPI,
                    +
                    57  & ISKIPO,JSKIPO,KSKIPO,JCPU,GRIDI,GRIDO)
                    +
                    58  REAL GRIDI(*),GRIDO(*)
                    +
                    59  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    60 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    61 C TRANSFORM INPUT GRID TO WAVE
                    +
                    62  jc=jcpu
                    +
                    63  IF(jc.EQ.0) jc=ncpus()
                    +
                    64  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    65  mdim=2*mx+1
                    +
                    66  jn=-jskipi
                    +
                    67  IF(jn.EQ.0) jn=imaxi
                    +
                    68  js=-jn
                    +
                    69  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    70  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    71  CALL sptran(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    72  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    73  & w,gridi(inp),gridi(isp),-1)
                    +
                    74 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    75 C TRANSFORM WAVE TO OUTPUT
                    +
                    76  jn=-jskipo
                    +
                    77  IF(jn.EQ.0) jn=imaxo
                    +
                    78  js=-jn
                    +
                    79  inp=(jmaxo-1)*max(0,-jn)+1
                    +
                    80  isp=(jmaxo-1)*max(0,-js)+1
                    +
                    81  CALL sptran(iromb,maxwv,idrto,imaxo,jmaxo,kmax,
                    +
                    82  & 0,iskipo,jn,js,mdim,kskipo,0,0,jc,
                    +
                    83  & w,grido(inp),grido(isp),1)
                    +
                    84 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    85  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptran(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptran.f:88
                    +
                    subroutine sptrun(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRIDI, GRIDO)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptrun.f:58
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrund_8f.html b/ver-5.0.0/sptrund_8f.html new file mode 100644 index 00000000..d02110c0 --- /dev/null +++ b/ver-5.0.0/sptrund_8f.html @@ -0,0 +1,318 @@ + + + + + + + +NCEPLIBS-ip: sptrund.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptrund.f File Reference
                    +
                    +
                    + +

                    Spectrally truncate to gradients. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptrund (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRID, GRIDMN, GRIDX, GRIDY)
                     THIS SUBPROGRAM SPECTRALLY TRUNCATES SCALAR FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THEIR MEANS AND GRADIENTS TO A POSSIBLY DIFFERENT GLOBAL CYLINDRICAL GRID. More...
                     
                    +

                    Detailed Description

                    +

                    Spectrally truncate to gradients.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptrund.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptrund()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptrund ( IROMB,
                     MAXWV,
                     IDRTI,
                     IMAXI,
                     JMAXI,
                     IDRTO,
                     IMAXO,
                     JMAXO,
                     KMAX,
                     IPRIME,
                     ISKIPI,
                     JSKIPI,
                     KSKIPI,
                     ISKIPO,
                     JSKIPO,
                     KSKIPO,
                     JCPU,
                    real, dimension(*) GRID,
                     GRIDMN,
                    real, dimension(*) GRIDX,
                    real, dimension(*) GRIDY 
                    )
                    +
                    + +

                    THIS SUBPROGRAM SPECTRALLY TRUNCATES SCALAR FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THEIR MEANS AND GRADIENTS TO A POSSIBLY DIFFERENT GLOBAL CYLINDRICAL GRID.

                    +

                    THE WAVE-SPACE CAN BE EITHER TRIANGULAR OR RHOMBOIDAL. EITHER GRID-SPACE CAN BE EITHER AN EQUALLY-SPACED GRID (WITH OR WITHOUT POLE POINTS) OR A GAUSSIAN GRID. THE GRID FIELDS MAY HAVE GENERAL INDEXING. THE TRANSFORMS ARE ALL MULTIPROCESSED. OVER ZONAL WAVENUMBER TO ENSURE REPRODUCIBILITY. TRANSFORM SEVERAL FIELDS AT A TIME TO IMPROVE VECTORIZATION. SUBPROGRAM CAN BE CALLED FROM A MULTIPROCESSING ENVIRONMENT.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + +
                    IROMB- INTEGER SPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    MAXWV- INTEGER SPECTRAL TRUNCATION
                    IDRTI- INTEGER INPUT GRID IDENTIFIER (IDRTI=4 FOR GAUSSIAN GRID, IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXI- INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    JMAXI- INTEGER NUMBER OF INPUT LATITUDES.
                    IDRTO- INTEGER OUTPUT GRID IDENTIFIER (IDRTO=4 FOR GAUSSIAN GRID, IDRTO=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTO=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXO- INTEGER EVEN NUMBER OF OUTPUT LONGITUDES.
                    JMAXO- INTEGER NUMBER OF OUTPUT LATITUDES.
                    KMAX- INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    IPRIME- INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN. (DEFAULTS TO 1 IF IPRIME=0) (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    ISKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPI=0)
                    JSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    KSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    ISKIPO- INTEGER SKIP NUMBER BETWEEN OUTPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPO=0)
                    JSKIPO- INTEGER SKIP NUMBER BETWEEN OUTPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXO IF JSKIPO=0)
                    KSKIPO- INTEGER SKIP NUMBER BETWEEN OUTPUT GRID FIELDS (DEFAULTS TO IMAXO*JMAXO IF KSKIPO=0)
                    JCPU- INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    GRID- REAL (*) INPUT GRID FIELDS
                    GRIDMN- REAL (KMAX) OUTPUT GLOBAL MEANS
                    GRIDX- REAL (*) OUTPUT X-GRADIENTS
                    GRIDY- REAL (*) OUTPUT Y-GRADIENTS
                    +
                    +
                    +

                    SUBPROGRAMS CALLED:

                      +
                    • SPTRAN PERFORM A SCALAR SPHERICAL TRANSFORM
                    • +
                    • SPTRAND PERFORM A GRADIENT SPHERICAL TRANSFORM
                    • +
                    • NCPUS GETS ENVIRONMENT NUMBER OF CPUS
                    • +
                    +

                    REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    + +

                    Definition at line 71 of file sptrund.f.

                    + +

                    References ncpus(), sptran(), and sptrand().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrund_8f.js b/ver-5.0.0/sptrund_8f.js new file mode 100644 index 00000000..20c45793 --- /dev/null +++ b/ver-5.0.0/sptrund_8f.js @@ -0,0 +1,4 @@ +var sptrund_8f = +[ + [ "sptrund", "sptrund_8f.html#a2636d99e658dfabd4b85f15a76fca480", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptrund_8f_source.html b/ver-5.0.0/sptrund_8f_source.html new file mode 100644 index 00000000..9400222f --- /dev/null +++ b/ver-5.0.0/sptrund_8f_source.html @@ -0,0 +1,208 @@ + + + + + + + +NCEPLIBS-ip: sptrund.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptrund.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C>
                    +
                    3 C> Spectrally truncate to gradients
                    +
                    4 C> @author IREDELL @date 96-02-29
                    +
                    5 
                    +
                    6 C> THIS SUBPROGRAM SPECTRALLY TRUNCATES SCALAR FIELDS
                    +
                    7 C> ON A GLOBAL CYLINDRICAL GRID, RETURNING THEIR MEANS AND
                    +
                    8 C> GRADIENTS TO A POSSIBLY DIFFERENT GLOBAL CYLINDRICAL GRID.
                    +
                    9 C> THE WAVE-SPACE CAN BE EITHER TRIANGULAR OR RHOMBOIDAL.
                    +
                    10 C> EITHER GRID-SPACE CAN BE EITHER AN EQUALLY-SPACED GRID
                    +
                    11 C> (WITH OR WITHOUT POLE POINTS) OR A GAUSSIAN GRID.
                    +
                    12 C> THE GRID FIELDS MAY HAVE GENERAL INDEXING.
                    +
                    13 C> THE TRANSFORMS ARE ALL MULTIPROCESSED.
                    +
                    14 C> OVER ZONAL WAVENUMBER TO ENSURE REPRODUCIBILITY.
                    +
                    15 C> TRANSFORM SEVERAL FIELDS AT A TIME TO IMPROVE VECTORIZATION.
                    +
                    16 C> SUBPROGRAM CAN BE CALLED FROM A MULTIPROCESSING ENVIRONMENT.
                    +
                    17 C>
                    +
                    18 C> @param IROMB - INTEGER SPECTRAL DOMAIN SHAPE
                    +
                    19 C> (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    +
                    20 C> @param MAXWV - INTEGER SPECTRAL TRUNCATION
                    +
                    21 C> @param IDRTI - INTEGER INPUT GRID IDENTIFIER
                    +
                    22 C> (IDRTI=4 FOR GAUSSIAN GRID,
                    +
                    23 C> IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    24 C> IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    25 C> @param IMAXI - INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    +
                    26 C> @param JMAXI - INTEGER NUMBER OF INPUT LATITUDES.
                    +
                    27 C> @param IDRTO - INTEGER OUTPUT GRID IDENTIFIER
                    +
                    28 C> (IDRTO=4 FOR GAUSSIAN GRID,
                    +
                    29 C> IDRTO=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    30 C> IDRTO=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    31 C> @param IMAXO - INTEGER EVEN NUMBER OF OUTPUT LONGITUDES.
                    +
                    32 C> @param JMAXO - INTEGER NUMBER OF OUTPUT LATITUDES.
                    +
                    33 C> @param KMAX - INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    +
                    34 C> @param IPRIME - INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN.
                    +
                    35 C> (DEFAULTS TO 1 IF IPRIME=0)
                    +
                    36 C> (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    +
                    37 C> @param ISKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES
                    +
                    38 C> (DEFAULTS TO 1 IF ISKIPI=0)
                    +
                    39 C> @param JSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH
                    +
                    40 C> (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    +
                    41 C> @param KSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS
                    +
                    42 C> (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    +
                    43 C> @param ISKIPO - INTEGER SKIP NUMBER BETWEEN OUTPUT LONGITUDES
                    +
                    44 C> (DEFAULTS TO 1 IF ISKIPO=0)
                    +
                    45 C> @param JSKIPO - INTEGER SKIP NUMBER BETWEEN OUTPUT LATITUDES FROM SOUTH
                    +
                    46 C> (DEFAULTS TO -IMAXO IF JSKIPO=0)
                    +
                    47 C> @param KSKIPO - INTEGER SKIP NUMBER BETWEEN OUTPUT GRID FIELDS
                    +
                    48 C> (DEFAULTS TO IMAXO*JMAXO IF KSKIPO=0)
                    +
                    49 C> @param JCPU - INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                    +
                    50 C> (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    +
                    51 C> @param GRID - REAL (*) INPUT GRID FIELDS
                    +
                    52 C> @param GRIDMN - REAL (KMAX) OUTPUT GLOBAL MEANS
                    +
                    53 C> @param GRIDX - REAL (*) OUTPUT X-GRADIENTS
                    +
                    54 C> @param GRIDY - REAL (*) OUTPUT Y-GRADIENTS
                    +
                    55 C>
                    +
                    56 C> SUBPROGRAMS CALLED:
                    +
                    57 C> - SPTRAN PERFORM A SCALAR SPHERICAL TRANSFORM
                    +
                    58 C> - SPTRAND PERFORM A GRADIENT SPHERICAL TRANSFORM
                    +
                    59 C> - NCPUS GETS ENVIRONMENT NUMBER OF CPUS
                    +
                    60 C>
                    +
                    61 C> REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:
                    +
                    62 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    63 C> ----------------------- |--------- |-------------
                    +
                    64 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    65 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    66 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    67 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    68 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    69 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    70 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    71  SUBROUTINE sptrund(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,
                    +
                    72  & IDRTO,IMAXO,JMAXO,KMAX,
                    +
                    73  & IPRIME,ISKIPI,JSKIPI,KSKIPI,
                    +
                    74  & ISKIPO,JSKIPO,KSKIPO,JCPU,GRID,
                    +
                    75  & GRIDMN,GRIDX,GRIDY)
                    +
                    76 
                    +
                    77  REAL GRID(*),GRIDX(*),GRIDY(*)
                    +
                    78  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    79 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    80 C TRANSFORM INPUT GRID TO WAVE
                    +
                    81  jc=jcpu
                    +
                    82  IF(jc.EQ.0) jc=ncpus()
                    +
                    83  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    84  mdim=2*mx+1
                    +
                    85  jn=-jskipi
                    +
                    86  IF(jn.EQ.0) jn=imaxi
                    +
                    87  js=-jn
                    +
                    88  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    89  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    90  CALL sptran(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    91  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    92  & w,grid(inp),grid(isp),-1)
                    +
                    93 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    94 C TRANSFORM WAVE TO OUTPUT GRADIENTS
                    +
                    95  jn=-jskipo
                    +
                    96  IF(jn.EQ.0) jn=imaxo
                    +
                    97  js=-jn
                    +
                    98  inp=(jmaxo-1)*max(0,-jn)+1
                    +
                    99  isp=(jmaxo-1)*max(0,-js)+1
                    +
                    100  CALL sptrand(iromb,maxwv,idrto,imaxo,jmaxo,kmax,
                    +
                    101  & 0,iskipo,jn,js,mdim,kskipo,0,0,jc,
                    +
                    102  & w,gridmn,
                    +
                    103  & gridx(inp),gridx(isp),gridy(inp),gridy(isp),1)
                    +
                    104 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    105  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptran(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptran.f:88
                    +
                    subroutine sptrand(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDMN, GRIDXN, GRIDXS, GRIDYN, GRIDYS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar fields and the...
                    Definition: sptrand.f:92
                    +
                    subroutine sptrund(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRID, GRIDMN, GRIDX, GRIDY)
                    THIS SUBPROGRAM SPECTRALLY TRUNCATES SCALAR FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THEIR MEAN...
                    Definition: sptrund.f:76
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrung_8f.html b/ver-5.0.0/sptrung_8f.html new file mode 100644 index 00000000..15472f58 --- /dev/null +++ b/ver-5.0.0/sptrung_8f.html @@ -0,0 +1,306 @@ + + + + + + + +NCEPLIBS-ip: sptrung.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptrung.f File Reference
                    +
                    +
                    + +

                    Spectrally interpolate scalars to stations. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptrung (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NRSKIP, NGSKIP, JCPU, RLAT, RLON, GRIDI, GP)
                     This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to specified sets of station points on the globe. More...
                     
                    +

                    Detailed Description

                    +

                    Spectrally interpolate scalars to stations.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptrung.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptrung()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptrung ( IROMB,
                     MAXWV,
                     IDRTI,
                     IMAXI,
                     JMAXI,
                     KMAX,
                     NMAX,
                     IPRIME,
                     ISKIPI,
                     JSKIPI,
                     KSKIPI,
                     KGSKIP,
                     NRSKIP,
                     NGSKIP,
                     JCPU,
                    real, dimension(*) RLAT,
                    real, dimension(*) RLON,
                    real, dimension(*) GRIDI,
                    real, dimension(*) GP 
                    )
                    +
                    + +

                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to specified sets of station points on the globe.

                    +

                    The wave-space can be either triangular or rhomboidal. The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid. The grid and point fields may have general indexing. The transforms are all multiprocessed. Transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + +
                    IROMB- INTEGER SPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    MAXWV- INTEGER SPECTRAL TRUNCATION
                    IDRTI- INTEGER INPUT GRID IDENTIFIER (IDRTI=4 FOR GAUSSIAN GRID, IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXI- INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    JMAXI- INTEGER NUMBER OF INPUT LATITUDES.
                    KMAX- INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    NMAX- INTEGER NUMBER OF STATION POINTS TO RETURN
                    IPRIME- INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN. (DEFAULTS TO 1 IF IPRIME=0) (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    ISKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPI=0)
                    JSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    KSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    KGSKIP- INTEGER SKIP NUMBER BETWEEN STATION POINT SETS (DEFAULTS TO NMAX IF KGSKIP=0)
                    NRSKIP- INTEGER SKIP NUMBER BETWEEN STATION LATS AND LONS (DEFAULTS TO 1 IF NRSKIP=0)
                    NGSKIP- INTEGER SKIP NUMBER BETWEEN STATION POINTS (DEFAULTS TO 1 IF NGSKIP=0)
                    RLAT- REAL (*) STATION LATITUDES IN DEGREES
                    RLON- REAL (*) STATION LONGITUDES IN DEGREES
                    JCPU- INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    GRIDI- REAL (*) INPUT GRID FIELDS
                    [out]GP- REAL (*) STATION POINT SETS
                    +
                    +
                    +

                    SUBPROGRAMS CALLED:

                      +
                    • sptran() Perform a scalar spherical transform
                    • +
                    • sptgpt() Transform spectral scalar to station points
                    • +
                    • ncpus() Gets environment number of cpus
                    • +
                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    + +

                    Definition at line 65 of file sptrung.f.

                    + +

                    References ncpus(), sptgpt(), and sptran().

                    + +

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrung_8f.js b/ver-5.0.0/sptrung_8f.js new file mode 100644 index 00000000..2105f854 --- /dev/null +++ b/ver-5.0.0/sptrung_8f.js @@ -0,0 +1,4 @@ +var sptrung_8f = +[ + [ "sptrung", "sptrung_8f.html#af41b64dad4789617a315515ef885912c", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptrung_8f_source.html b/ver-5.0.0/sptrung_8f_source.html new file mode 100644 index 00000000..292f2034 --- /dev/null +++ b/ver-5.0.0/sptrung_8f_source.html @@ -0,0 +1,193 @@ + + + + + + + +NCEPLIBS-ip: sptrung.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptrung.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C>
                    +
                    3 C> Spectrally interpolate scalars to stations
                    +
                    4 C> @author IREDELL @date 96-02-29
                    +
                    5 
                    +
                    6 C> This subprogram spectrally truncates scalar fields on a global
                    +
                    7 C> cylindrical grid, returning the fields to specified sets of
                    +
                    8 C> station points on the globe. The wave-space can be either
                    +
                    9 C> triangular or rhomboidal. The grid-space can be either an
                    +
                    10 C> equally-spaced grid (with or without pole points) or a Gaussian
                    +
                    11 C> grid. The grid and point fields may have general indexing. The
                    +
                    12 C> transforms are all multiprocessed. Transform several fields at a
                    +
                    13 C> time to improve vectorization. Subprogram can be called from a
                    +
                    14 C> multiprocessing environment.
                    +
                    15 C>
                    +
                    16 C> @param IROMB - INTEGER SPECTRAL DOMAIN SHAPE
                    +
                    17 C> (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    +
                    18 C> @param MAXWV - INTEGER SPECTRAL TRUNCATION
                    +
                    19 C> @param IDRTI - INTEGER INPUT GRID IDENTIFIER
                    +
                    20 C> (IDRTI=4 FOR GAUSSIAN GRID,
                    +
                    21 C> IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    22 C> IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    23 C> @param IMAXI - INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    +
                    24 C> @param JMAXI - INTEGER NUMBER OF INPUT LATITUDES.
                    +
                    25 C> @param KMAX - INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    +
                    26 C> @param NMAX - INTEGER NUMBER OF STATION POINTS TO RETURN
                    +
                    27 C> @param IPRIME - INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN.
                    +
                    28 C> (DEFAULTS TO 1 IF IPRIME=0)
                    +
                    29 C> (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    +
                    30 C> @param ISKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES
                    +
                    31 C> (DEFAULTS TO 1 IF ISKIPI=0)
                    +
                    32 C> @param JSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH
                    +
                    33 C> (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    +
                    34 C> @param KSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS
                    +
                    35 C> (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    +
                    36 C> @param KGSKIP - INTEGER SKIP NUMBER BETWEEN STATION POINT SETS
                    +
                    37 C> (DEFAULTS TO NMAX IF KGSKIP=0)
                    +
                    38 C> @param NRSKIP - INTEGER SKIP NUMBER BETWEEN STATION LATS AND LONS
                    +
                    39 C> (DEFAULTS TO 1 IF NRSKIP=0)
                    +
                    40 C> @param NGSKIP - INTEGER SKIP NUMBER BETWEEN STATION POINTS
                    +
                    41 C> (DEFAULTS TO 1 IF NGSKIP=0)
                    +
                    42 C> @param RLAT - REAL (*) STATION LATITUDES IN DEGREES
                    +
                    43 C> @param RLON - REAL (*) STATION LONGITUDES IN DEGREES
                    +
                    44 C> @param JCPU - INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                    +
                    45 C> (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    +
                    46 C> @param GRIDI - REAL (*) INPUT GRID FIELDS
                    +
                    47 C> @param[out] GP - REAL (*) STATION POINT SETS
                    +
                    48 C>
                    +
                    49 C> SUBPROGRAMS CALLED:
                    +
                    50 C> - sptran() Perform a scalar spherical transform
                    +
                    51 C> - sptgpt() Transform spectral scalar to station points
                    +
                    52 C> - ncpus() Gets environment number of cpus
                    +
                    53 C>
                    +
                    54 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    55 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    56 C> ----------------------- |--------- |-------------
                    +
                    57 C> IMAX | 2*MAXWV+2 | 3*MAXWV/2*2+2
                    +
                    58 C> JMAX (IDRT=4,IROMB=0) | 1*MAXWV+1 | 3*MAXWV/2+1
                    +
                    59 C> JMAX (IDRT=4,IROMB=1) | 2*MAXWV+1 | 5*MAXWV/2+1
                    +
                    60 C> JMAX (IDRT=0,IROMB=0) | 2*MAXWV+3 | 3*MAXWV/2*2+3
                    +
                    61 C> JMAX (IDRT=0,IROMB=1) | 4*MAXWV+3 | 5*MAXWV/2*2+3
                    +
                    62 C> JMAX (IDRT=256,IROMB=0) | 2*MAXWV+1 | 3*MAXWV/2*2+1
                    +
                    63 C> JMAX (IDRT=256,IROMB=1) | 4*MAXWV+1 | 5*MAXWV/2*2+1
                    +
                    64 C>
                    +
                    65  SUBROUTINE sptrung(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,KMAX,NMAX,
                    +
                    66  & IPRIME,ISKIPI,JSKIPI,KSKIPI,KGSKIP,
                    +
                    67  & NRSKIP,NGSKIP,JCPU,RLAT,RLON,GRIDI,GP)
                    +
                    68 
                    +
                    69  REAL RLAT(*),RLON(*),GRIDI(*),GP(*)
                    +
                    70  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    71 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    72 C TRANSFORM INPUT GRID TO WAVE
                    +
                    73  jc=jcpu
                    +
                    74  IF(jc.EQ.0) jc=ncpus()
                    +
                    75  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    76  mdim=2*mx+1
                    +
                    77  jn=-jskipi
                    +
                    78  IF(jn.EQ.0) jn=imaxi
                    +
                    79  js=-jn
                    +
                    80  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    81  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    82  CALL sptran(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    83  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    84  & w,gridi(inp),gridi(isp),-1)
                    +
                    85 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    86 C TRANSFORM WAVE TO OUTPUT
                    +
                    87  CALL sptgpt(iromb,maxwv,kmax,nmax,mdim,kgskip,nrskip,ngskip,
                    +
                    88  & rlat,rlon,w,gp)
                    +
                    89 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    90  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptgpt(IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVE, GP)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to spe...
                    Definition: sptgpt.f:51
                    +
                    subroutine sptran(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptran.f:88
                    +
                    subroutine sptrung(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NRSKIP, NGSKIP, JCPU, RLAT, RLON, GRIDI, GP)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptrung.f:68
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrungv_8f.html b/ver-5.0.0/sptrungv_8f.html new file mode 100644 index 00000000..3da4ee8d --- /dev/null +++ b/ver-5.0.0/sptrungv_8f.html @@ -0,0 +1,376 @@ + + + + + + + +NCEPLIBS-ip: sptrungv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptrungv.f File Reference
                    +
                    +
                    + +

                    Spectrally interpolate vectors to stations. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptrungv (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NRSKIP, NGSKIP, JCPU, RLAT, RLON, GRIDUI, GRIDVI, LUV, UP, VP, LDZ, DP, ZP, LPS, PP, SP)
                     THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTORS FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELDS TO SPECIFIED SETS OF STATION POINTS ON THE GLOBE. More...
                     
                    +

                    Detailed Description

                    +

                    Spectrally interpolate vectors to stations.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptrungv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptrungv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptrungv ( IROMB,
                     MAXWV,
                     IDRTI,
                     IMAXI,
                     JMAXI,
                     KMAX,
                     NMAX,
                     IPRIME,
                     ISKIPI,
                     JSKIPI,
                     KSKIPI,
                     KGSKIP,
                     NRSKIP,
                     NGSKIP,
                     JCPU,
                    real, dimension(*) RLAT,
                    real, dimension(*) RLON,
                    real, dimension(*) GRIDUI,
                    real, dimension(*) GRIDVI,
                    logical LUV,
                    real, dimension(*) UP,
                    real, dimension(*) VP,
                    logical LDZ,
                    real, dimension(*) DP,
                    real, dimension(*) ZP,
                    logical LPS,
                    real, dimension(*) PP,
                    real, dimension(*) SP 
                    )
                    +
                    + +

                    THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTORS FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELDS TO SPECIFIED SETS OF STATION POINTS ON THE GLOBE.

                    +

                    THE WAVE-SPACE CAN BE EITHER TRIANGULAR OR RHOMBOIDAL. THE GRID-SPACE CAN BE EITHER AN EQUALLY-SPACED GRID (WITH OR WITHOUT POLE POINTS) OR A GAUSSIAN GRID. THE GRID AND POINT FIELDS MAY HAVE GENERAL INDEXING. THE TRANSFORMS ARE ALL MULTIPROCESSED. TRANSFORM SEVERAL FIELDS AT A TIME TO IMPROVE VECTORIZATION. SUBPROGRAM CAN BE CALLED FROM A MULTIPROCESSING ENVIRONMENT.

                    +

                    PROGRAM HISTORY LOG:

                      +
                    • 96-02-29 IREDELL
                    • +
                    • 1998-12-15 IREDELL OPENMP DIRECTIVES INSERTED
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    IROMB- INTEGER SPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    MAXWV- INTEGER SPECTRAL TRUNCATION
                    IDRTI- INTEGER INPUT GRID IDENTIFIER (IDRTI=4 FOR GAUSSIAN GRID, IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXI- INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    JMAXI- INTEGER NUMBER OF INPUT LATITUDES.
                    KMAX- INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    NMAX- INTEGER NUMBER OF STATION POINTS TO RETURN
                    IPRIME- INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN. (DEFAULTS TO 1 IF IPRIME=0) (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    ISKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPI=0)
                    JSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    KSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    KGSKIP- INTEGER SKIP NUMBER BETWEEN STATION POINT SETS (DEFAULTS TO NMAX IF KGSKIP=0)
                    NRSKIP- INTEGER SKIP NUMBER BETWEEN STATION LATS AND LONS (DEFAULTS TO 1 IF NRSKIP=0)
                    NGSKIP- INTEGER SKIP NUMBER BETWEEN STATION POINTS (DEFAULTS TO 1 IF NGSKIP=0)
                    RLAT- REAL (*) STATION LATITUDES IN DEGREES
                    RLON- REAL (*) STATION LONGITUDES IN DEGREES
                    JCPU- INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    GRIDUI- REAL (*) INPUT GRID U-WINDS
                    GRIDVI- REAL (*) INPUT GRID V-WINDS
                    LUV- LOGICAL FLAG WHETHER TO RETURN WINDS
                    LDZ- LOGICAL FLAG WHETHER TO RETURN DIVERGENCE AND VORTICITY
                    LPS- LOGICAL FLAG WHETHER TO RETURN POTENTIAL AND STREAMFCN
                    UP- REAL (*) STATION U-WINDS IF LUV
                    VP- REAL (*) STATION V-WINDS IF LUV
                    DP- REAL (*) STATION DIVERGENCES IF LDZ
                    ZP- REAL (*) STATION VORTICITIES IF LDZ
                    PP- REAL (*) STATION POTENTIALS IF LPS
                    SP- REAL (*) STATION STREAMFCNS IF LPS
                    +
                    +
                    +

                    SUBPROGRAMS CALLED:

                      +
                    • SPWGET GET WAVE-SPACE CONSTANTS
                    • +
                    • SPLAPLAC COMPUTE LAPLACIAN IN SPECTRAL SPACE
                    • +
                    • SPTRANV PERFORM A VECTOR SPHERICAL TRANSFORM
                    • +
                    • SPTGPT TRANSFORM SPECTRAL SCALAR TO STATION POINTS
                    • +
                    • SPTGPTV TRANSFORM SPECTRAL VECTOR TO STATION POINTS
                    • +
                    • NCPUS GETS ENVIRONMENT NUMBER OF CPUS
                    • +
                    +

                    REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    + +

                    Definition at line 81 of file sptrungv.f.

                    + +

                    References ncpus(), splaplac(), sptgpt(), sptgptv(), sptranv(), and spwget().

                    + +

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrungv_8f.js b/ver-5.0.0/sptrungv_8f.js new file mode 100644 index 00000000..c69c1059 --- /dev/null +++ b/ver-5.0.0/sptrungv_8f.js @@ -0,0 +1,4 @@ +var sptrungv_8f = +[ + [ "sptrungv", "sptrungv_8f.html#ab7bbe6ecde57394b15e5d4925cb07164", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptrungv_8f_source.html b/ver-5.0.0/sptrungv_8f_source.html new file mode 100644 index 00000000..c082002a --- /dev/null +++ b/ver-5.0.0/sptrungv_8f_source.html @@ -0,0 +1,247 @@ + + + + + + + +NCEPLIBS-ip: sptrungv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptrungv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C>
                    +
                    3 C> Spectrally interpolate vectors to stations
                    +
                    4 C> @author IREDELL @date 96-02-29
                    +
                    5 
                    +
                    6 C> THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTORS FIELDS
                    +
                    7 C> ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELDS
                    +
                    8 C> TO SPECIFIED SETS OF STATION POINTS ON THE GLOBE.
                    +
                    9 C> THE WAVE-SPACE CAN BE EITHER TRIANGULAR OR RHOMBOIDAL.
                    +
                    10 C> THE GRID-SPACE CAN BE EITHER AN EQUALLY-SPACED GRID
                    +
                    11 C> (WITH OR WITHOUT POLE POINTS) OR A GAUSSIAN GRID.
                    +
                    12 C> THE GRID AND POINT FIELDS MAY HAVE GENERAL INDEXING.
                    +
                    13 C> THE TRANSFORMS ARE ALL MULTIPROCESSED.
                    +
                    14 C> TRANSFORM SEVERAL FIELDS AT A TIME TO IMPROVE VECTORIZATION.
                    +
                    15 C> SUBPROGRAM CAN BE CALLED FROM A MULTIPROCESSING ENVIRONMENT.
                    +
                    16 C>
                    +
                    17 C> PROGRAM HISTORY LOG:
                    +
                    18 C> - 96-02-29 IREDELL
                    +
                    19 C> - 1998-12-15 IREDELL OPENMP DIRECTIVES INSERTED
                    +
                    20 C>
                    +
                    21 C> @param IROMB - INTEGER SPECTRAL DOMAIN SHAPE
                    +
                    22 C> (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    +
                    23 C> @param MAXWV - INTEGER SPECTRAL TRUNCATION
                    +
                    24 C> @param IDRTI - INTEGER INPUT GRID IDENTIFIER
                    +
                    25 C> (IDRTI=4 FOR GAUSSIAN GRID,
                    +
                    26 C> IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    27 C> IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    28 C> @param IMAXI - INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    +
                    29 C> @param JMAXI - INTEGER NUMBER OF INPUT LATITUDES.
                    +
                    30 C> @param KMAX - INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    +
                    31 C> @param NMAX - INTEGER NUMBER OF STATION POINTS TO RETURN
                    +
                    32 C> @param IPRIME - INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN.
                    +
                    33 C> (DEFAULTS TO 1 IF IPRIME=0)
                    +
                    34 C> (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    +
                    35 C> @param ISKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES
                    +
                    36 C> (DEFAULTS TO 1 IF ISKIPI=0)
                    +
                    37 C> @param JSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH
                    +
                    38 C> (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    +
                    39 C> @param KSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS
                    +
                    40 C> (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    +
                    41 C> @param KGSKIP - INTEGER SKIP NUMBER BETWEEN STATION POINT SETS
                    +
                    42 C> (DEFAULTS TO NMAX IF KGSKIP=0)
                    +
                    43 C> @param NRSKIP - INTEGER SKIP NUMBER BETWEEN STATION LATS AND LONS
                    +
                    44 C> (DEFAULTS TO 1 IF NRSKIP=0)
                    +
                    45 C> @param NGSKIP - INTEGER SKIP NUMBER BETWEEN STATION POINTS
                    +
                    46 C> (DEFAULTS TO 1 IF NGSKIP=0)
                    +
                    47 C> @param RLAT - REAL (*) STATION LATITUDES IN DEGREES
                    +
                    48 C> @param RLON - REAL (*) STATION LONGITUDES IN DEGREES
                    +
                    49 C> @param JCPU - INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                    +
                    50 C> (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    +
                    51 C> @param GRIDUI - REAL (*) INPUT GRID U-WINDS
                    +
                    52 C> @param GRIDVI - REAL (*) INPUT GRID V-WINDS
                    +
                    53 C> @param LUV - LOGICAL FLAG WHETHER TO RETURN WINDS
                    +
                    54 C> @param LDZ - LOGICAL FLAG WHETHER TO RETURN DIVERGENCE AND VORTICITY
                    +
                    55 C> @param LPS - LOGICAL FLAG WHETHER TO RETURN POTENTIAL AND STREAMFCN
                    +
                    56 C> @param UP - REAL (*) STATION U-WINDS IF LUV
                    +
                    57 C> @param VP - REAL (*) STATION V-WINDS IF LUV
                    +
                    58 C> @param DP - REAL (*) STATION DIVERGENCES IF LDZ
                    +
                    59 C> @param ZP - REAL (*) STATION VORTICITIES IF LDZ
                    +
                    60 C> @param PP - REAL (*) STATION POTENTIALS IF LPS
                    +
                    61 C> @param SP - REAL (*) STATION STREAMFCNS IF LPS
                    +
                    62 C>
                    +
                    63 C> SUBPROGRAMS CALLED:
                    +
                    64 C> - SPWGET GET WAVE-SPACE CONSTANTS
                    +
                    65 C> - SPLAPLAC COMPUTE LAPLACIAN IN SPECTRAL SPACE
                    +
                    66 C> - SPTRANV PERFORM A VECTOR SPHERICAL TRANSFORM
                    +
                    67 C> - SPTGPT TRANSFORM SPECTRAL SCALAR TO STATION POINTS
                    +
                    68 C> - SPTGPTV TRANSFORM SPECTRAL VECTOR TO STATION POINTS
                    +
                    69 C> - NCPUS GETS ENVIRONMENT NUMBER OF CPUS
                    +
                    70 C>
                    +
                    71 C> REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:
                    +
                    72 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    73 C> ----------------------- |--------- |-------------
                    +
                    74 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    75 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    76 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    77 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    78 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    79 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    80 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    81  SUBROUTINE sptrungv(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,KMAX,NMAX,
                    +
                    82  & IPRIME,ISKIPI,JSKIPI,KSKIPI,KGSKIP,
                    +
                    83  & NRSKIP,NGSKIP,JCPU,RLAT,RLON,GRIDUI,GRIDVI,
                    +
                    84  & LUV,UP,VP,LDZ,DP,ZP,LPS,PP,SP)
                    +
                    85 
                    +
                    86  LOGICAL LUV,LDZ,LPS
                    +
                    87  REAL RLAT(*),RLON(*),GRIDUI(*),GRIDVI(*)
                    +
                    88  REAL UP(*),VP(*),DP(*),ZP(*),PP(*),SP(*)
                    +
                    89  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    90  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    91  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    92  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    93  REAL WD((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    94  REAL WZ((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    95 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    96 C TRANSFORM INPUT GRID TO WAVE
                    +
                    97  jc=jcpu
                    +
                    98  IF(jc.EQ.0) jc=ncpus()
                    +
                    99  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    100  mdim=2*mx+1
                    +
                    101  jn=-jskipi
                    +
                    102  IF(jn.EQ.0) jn=imaxi
                    +
                    103  js=-jn
                    +
                    104  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    105  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    106  CALL sptranv(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    107  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    108  & wd,wz,
                    +
                    109  & gridui(inp),gridui(isp),gridvi(inp),gridvi(isp),-1)
                    +
                    110 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    111 C TRANSFORM WAVE TO OUTPUT WINDS
                    +
                    112  IF(luv) THEN
                    +
                    113  CALL sptgptv(iromb,maxwv,kmax,nmax,mdim,kgskip,nrskip,ngskip,
                    +
                    114  & rlat,rlon,wd,wz,up,vp)
                    +
                    115  ENDIF
                    +
                    116 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    117 C TRANSFORM WAVE TO OUTPUT DIVERGENCE AND VORTICITY
                    +
                    118  IF(ldz) THEN
                    +
                    119  CALL sptgpt(iromb,maxwv,kmax,nmax,mdim,kgskip,nrskip,ngskip,
                    +
                    120  & rlat,rlon,wd,dp)
                    +
                    121  CALL sptgpt(iromb,maxwv,kmax,nmax,mdim,kgskip,nrskip,ngskip,
                    +
                    122  & rlat,rlon,wz,zp)
                    +
                    123  ENDIF
                    +
                    124 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    125 C TRANSFORM WAVE TO OUTPUT POTENTIAL AND STREAMFUNCTION
                    +
                    126  IF(lps) THEN
                    +
                    127  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    128 C$OMP PARALLEL DO
                    +
                    129  DO k=1,kmax
                    +
                    130  CALL splaplac(iromb,maxwv,enn1,wd(1,k),wd(1,k),-1)
                    +
                    131  CALL splaplac(iromb,maxwv,enn1,wz(1,k),wz(1,k),-1)
                    +
                    132  wd(1:2,k)=0.
                    +
                    133  wz(1:2,k)=0.
                    +
                    134  ENDDO
                    +
                    135  CALL sptgpt(iromb,maxwv,kmax,nmax,mdim,kgskip,nrskip,ngskip,
                    +
                    136  & rlat,rlon,wd,pp)
                    +
                    137  CALL sptgpt(iromb,maxwv,kmax,nmax,mdim,kgskip,nrskip,ngskip,
                    +
                    138  & rlat,rlon,wz,sp)
                    +
                    139  ENDIF
                    +
                    140 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    141  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    +
                    subroutine sptgpt(IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVE, GP)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to spe...
                    Definition: sptgpt.f:51
                    +
                    subroutine sptgptv(IROMB, MAXWV, KMAX, NMAX, KWSKIP, KGSKIP, NRSKIP, NGSKIP, RLAT, RLON, WAVED, WAVEZ, UP, VP)
                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to...
                    Definition: sptgptv.f:54
                    +
                    subroutine sptranv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranv.f:91
                    +
                    subroutine sptrungv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NRSKIP, NGSKIP, JCPU, RLAT, RLON, GRIDUI, GRIDVI, LUV, UP, VP, LDZ, DP, ZP, LPS, PP, SP)
                    THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTORS FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELD...
                    Definition: sptrungv.f:85
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrunl_8f.html b/ver-5.0.0/sptrunl_8f.html new file mode 100644 index 00000000..ed3e4750 --- /dev/null +++ b/ver-5.0.0/sptrunl_8f.html @@ -0,0 +1,316 @@ + + + + + + + +NCEPLIBS-ip: sptrunl.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptrunl.f File Reference
                    +
                    +
                    + +

                    Spectrally truncate to laplacian. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptrunl (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, IDIR, GRIDI, GRIDO)
                     THIS SUBPROGRAM SPECTRALLY TRUNCATES SCALAR FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THEIR LAPLACIAN OR INVERSE TO A POSSIBLY DIFFERENT GLOBAL CYLINDRICAL GRID. More...
                     
                    +

                    Detailed Description

                    +

                    Spectrally truncate to laplacian.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptrunl.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptrunl()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptrunl ( IROMB,
                     MAXWV,
                     IDRTI,
                     IMAXI,
                     JMAXI,
                     IDRTO,
                     IMAXO,
                     JMAXO,
                     KMAX,
                     IPRIME,
                     ISKIPI,
                     JSKIPI,
                     KSKIPI,
                     ISKIPO,
                     JSKIPO,
                     KSKIPO,
                     JCPU,
                     IDIR,
                    real, dimension(*) GRIDI,
                    real, dimension(*) GRIDO 
                    )
                    +
                    + +

                    THIS SUBPROGRAM SPECTRALLY TRUNCATES SCALAR FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THEIR LAPLACIAN OR INVERSE TO A POSSIBLY DIFFERENT GLOBAL CYLINDRICAL GRID.

                    +

                    THE WAVE-SPACE CAN BE EITHER TRIANGULAR OR RHOMBOIDAL. EITHER GRID-SPACE CAN BE EITHER AN EQUALLY-SPACED GRID (WITH OR WITHOUT POLE POINTS) OR A GAUSSIAN GRID. THE GRID FIELDS MAY HAVE GENERAL INDEXING. THE TRANSFORMS ARE ALL MULTIPROCESSED. OVER ZONAL WAVENUMBER TO ENSURE REPRODUCIBILITY. TRANSFORM SEVERAL FIELDS AT A TIME TO IMPROVE VECTORIZATION. SUBPROGRAM CAN BE CALLED FROM A MULTIPROCESSING ENVIRONMENT.

                    +

                    PROGRAM HISTORY LOG:

                      +
                    • 96-02-29 IREDELL
                    • +
                    • 1998-12-15 IREDELL OPENMP DIRECTIVES INSERTED
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + +
                    IROMB- INTEGER SPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    MAXWV- INTEGER SPECTRAL TRUNCATION
                    IDRTI- INTEGER INPUT GRID IDENTIFIER (IDRTI=4 FOR GAUSSIAN GRID, IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXI- INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    JMAXI- INTEGER NUMBER OF INPUT LATITUDES.
                    IDRTO- INTEGER OUTPUT GRID IDENTIFIER (IDRTO=4 FOR GAUSSIAN GRID, IDRTO=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTO=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXO- INTEGER EVEN NUMBER OF OUTPUT LONGITUDES.
                    JMAXO- INTEGER NUMBER OF OUTPUT LATITUDES.
                    KMAX- INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    IPRIME- INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN. (DEFAULTS TO 1 IF IPRIME=0) (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    ISKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPI=0)
                    JSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    KSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    ISKIPO- INTEGER SKIP NUMBER BETWEEN OUTPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPO=0)
                    JSKIPO- INTEGER SKIP NUMBER BETWEEN OUTPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXO IF JSKIPO=0)
                    KSKIPO- INTEGER SKIP NUMBER BETWEEN OUTPUT GRID FIELDS (DEFAULTS TO IMAXO*JMAXO IF KSKIPO=0)
                    JCPU- INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    IDIR- INTEGER FLAG IDIR > 0 TO TAKE LAPLACIAN IDIR < 0 TO TAKE INVERSE LAPLACIAN
                    GRIDI- REAL (*) INPUT GRID FIELDS
                    GRIDO- REAL (*) OUTPUT GRID FIELDS (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    +
                    +
                    +

                    SUBPROGRAMS CALLED:

                      +
                    • SPWGET GET WAVE-SPACE CONSTANTS
                    • +
                    • SPLAPLAC COMPUTE LAPLACIAN IN SPECTRAL SPACE
                    • +
                    • SPTRAN PERFORM A SCALAR SPHERICAL TRANSFORM
                    • +
                    • NCPUS GETS ENVIRONMENT NUMBER OF CPUS
                    • +
                    +

                    REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    + +

                    Definition at line 78 of file sptrunl.f.

                    + +

                    References ncpus(), splaplac(), sptran(), and spwget().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrunl_8f.js b/ver-5.0.0/sptrunl_8f.js new file mode 100644 index 00000000..892c4e7f --- /dev/null +++ b/ver-5.0.0/sptrunl_8f.js @@ -0,0 +1,4 @@ +var sptrunl_8f = +[ + [ "sptrunl", "sptrunl_8f.html#a52c4250d24e52304e49aa1d82a93bdb8", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptrunl_8f_source.html b/ver-5.0.0/sptrunl_8f_source.html new file mode 100644 index 00000000..e443a7e4 --- /dev/null +++ b/ver-5.0.0/sptrunl_8f_source.html @@ -0,0 +1,219 @@ + + + + + + + +NCEPLIBS-ip: sptrunl.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptrunl.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C>
                    +
                    3 C> Spectrally truncate to laplacian
                    +
                    4 C> @author IREDELL @date 96-02-29
                    +
                    5 
                    +
                    6 C> THIS SUBPROGRAM SPECTRALLY TRUNCATES SCALAR FIELDS
                    +
                    7 C> ON A GLOBAL CYLINDRICAL GRID, RETURNING THEIR LAPLACIAN
                    +
                    8 C> OR INVERSE TO A POSSIBLY DIFFERENT GLOBAL CYLINDRICAL GRID.
                    +
                    9 C> THE WAVE-SPACE CAN BE EITHER TRIANGULAR OR RHOMBOIDAL.
                    +
                    10 C> EITHER GRID-SPACE CAN BE EITHER AN EQUALLY-SPACED GRID
                    +
                    11 C> (WITH OR WITHOUT POLE POINTS) OR A GAUSSIAN GRID.
                    +
                    12 C> THE GRID FIELDS MAY HAVE GENERAL INDEXING.
                    +
                    13 C> THE TRANSFORMS ARE ALL MULTIPROCESSED.
                    +
                    14 C> OVER ZONAL WAVENUMBER TO ENSURE REPRODUCIBILITY.
                    +
                    15 C> TRANSFORM SEVERAL FIELDS AT A TIME TO IMPROVE VECTORIZATION.
                    +
                    16 C> SUBPROGRAM CAN BE CALLED FROM A MULTIPROCESSING ENVIRONMENT.
                    +
                    17 C>
                    +
                    18 C> PROGRAM HISTORY LOG:
                    +
                    19 C> - 96-02-29 IREDELL
                    +
                    20 C> - 1998-12-15 IREDELL OPENMP DIRECTIVES INSERTED
                    +
                    21 C>
                    +
                    22 C> @param IROMB - INTEGER SPECTRAL DOMAIN SHAPE
                    +
                    23 C> (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    +
                    24 C> @param MAXWV - INTEGER SPECTRAL TRUNCATION
                    +
                    25 C> @param IDRTI - INTEGER INPUT GRID IDENTIFIER
                    +
                    26 C> (IDRTI=4 FOR GAUSSIAN GRID,
                    +
                    27 C> IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    28 C> IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    29 C> @param IMAXI - INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    +
                    30 C> @param JMAXI - INTEGER NUMBER OF INPUT LATITUDES.
                    +
                    31 C> @param IDRTO - INTEGER OUTPUT GRID IDENTIFIER
                    +
                    32 C> (IDRTO=4 FOR GAUSSIAN GRID,
                    +
                    33 C> IDRTO=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    34 C> IDRTO=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    35 C> @param IMAXO - INTEGER EVEN NUMBER OF OUTPUT LONGITUDES.
                    +
                    36 C> @param JMAXO - INTEGER NUMBER OF OUTPUT LATITUDES.
                    +
                    37 C> @param KMAX - INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    +
                    38 C> @param IPRIME - INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN.
                    +
                    39 C> (DEFAULTS TO 1 IF IPRIME=0)
                    +
                    40 C> (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    +
                    41 C> @param ISKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES
                    +
                    42 C> (DEFAULTS TO 1 IF ISKIPI=0)
                    +
                    43 C> @param JSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH
                    +
                    44 C> (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    +
                    45 C> @param KSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS
                    +
                    46 C> (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    +
                    47 C> @param ISKIPO - INTEGER SKIP NUMBER BETWEEN OUTPUT LONGITUDES
                    +
                    48 C> (DEFAULTS TO 1 IF ISKIPO=0)
                    +
                    49 C> @param JSKIPO - INTEGER SKIP NUMBER BETWEEN OUTPUT LATITUDES FROM SOUTH
                    +
                    50 C> (DEFAULTS TO -IMAXO IF JSKIPO=0)
                    +
                    51 C> @param KSKIPO - INTEGER SKIP NUMBER BETWEEN OUTPUT GRID FIELDS
                    +
                    52 C> (DEFAULTS TO IMAXO*JMAXO IF KSKIPO=0)
                    +
                    53 C> @param JCPU - INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                    +
                    54 C> (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    +
                    55 C> @param IDIR - INTEGER FLAG
                    +
                    56 C> IDIR > 0 TO TAKE LAPLACIAN
                    +
                    57 C> IDIR < 0 TO TAKE INVERSE LAPLACIAN
                    +
                    58 C> @param GRIDI - REAL (*) INPUT GRID FIELDS
                    +
                    59 C> @param GRIDO - REAL (*) OUTPUT GRID FIELDS
                    +
                    60 C> (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    +
                    61 C>
                    +
                    62 C> SUBPROGRAMS CALLED:
                    +
                    63 C> - SPWGET GET WAVE-SPACE CONSTANTS
                    +
                    64 C> - SPLAPLAC COMPUTE LAPLACIAN IN SPECTRAL SPACE
                    +
                    65 C> - SPTRAN PERFORM A SCALAR SPHERICAL TRANSFORM
                    +
                    66 C> - NCPUS GETS ENVIRONMENT NUMBER OF CPUS
                    +
                    67 C>
                    +
                    68 C> REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:
                    +
                    69 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    70 C> ----------------------- |--------- |-------------
                    +
                    71 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    72 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    73 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    74 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    75 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    76 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    77 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    78  SUBROUTINE sptrunl(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,
                    +
                    79  & IDRTO,IMAXO,JMAXO,KMAX,
                    +
                    80  & IPRIME,ISKIPI,JSKIPI,KSKIPI,
                    +
                    81  & ISKIPO,JSKIPO,KSKIPO,JCPU,IDIR,GRIDI,GRIDO)
                    +
                    82 
                    +
                    83  REAL GRIDI(*),GRIDO(*)
                    +
                    84  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    85  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    86  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    87  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    88  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    89 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    90 C TRANSFORM INPUT GRID TO WAVE
                    +
                    91  jc=jcpu
                    +
                    92  IF(jc.EQ.0) jc=ncpus()
                    +
                    93  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    94  mdim=2*mx+1
                    +
                    95  jn=-jskipi
                    +
                    96  IF(jn.EQ.0) jn=imaxi
                    +
                    97  js=-jn
                    +
                    98  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    99  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    100  CALL sptran(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    101  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    102  & w,gridi(inp),gridi(isp),-1)
                    +
                    103 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    104 C TAKE LAPLACIAN AND TRANSFORM WAVE TO OUTPUT GRID
                    +
                    105  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    106 C$OMP PARALLEL DO
                    +
                    107  DO k=1,kmax
                    +
                    108  CALL splaplac(iromb,maxwv,enn1,w(1,k),w(1,k),idir)
                    +
                    109  w(1:2,k)=0.
                    +
                    110  ENDDO
                    +
                    111  CALL sptran(iromb,maxwv,idrto,imaxo,jmaxo,kmax,
                    +
                    112  & 0,iskipo,jn,js,mdim,kskipo,0,0,jc,
                    +
                    113  & w,grido(inp),grido(isp),1)
                    +
                    114 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    115  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    +
                    subroutine sptran(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptran.f:88
                    +
                    subroutine sptrunl(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, IDIR, GRIDI, GRIDO)
                    THIS SUBPROGRAM SPECTRALLY TRUNCATES SCALAR FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THEIR LAPL...
                    Definition: sptrunl.f:82
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrunm_8f.html b/ver-5.0.0/sptrunm_8f.html new file mode 100644 index 00000000..8a699326 --- /dev/null +++ b/ver-5.0.0/sptrunm_8f.html @@ -0,0 +1,327 @@ + + + + + + + +NCEPLIBS-ip: sptrunm.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptrunm.f File Reference
                    +
                    +
                    + +

                    Spectrally interpolate scalars to Mercator. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptrunm (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, MI, MJ, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, RLAT1, RLON1, DLAT, DLON, GRIDI, GM)
                     This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to a Mercator grid. More...
                     
                    +

                    Detailed Description

                    +

                    Spectrally interpolate scalars to Mercator.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptrunm.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptrunm()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptrunm ( IROMB,
                     MAXWV,
                     IDRTI,
                     IMAXI,
                     JMAXI,
                     KMAX,
                     MI,
                     MJ,
                     IPRIME,
                     ISKIPI,
                     JSKIPI,
                     KSKIPI,
                     KGSKIP,
                     NISKIP,
                     NJSKIP,
                     JCPU,
                     RLAT1,
                     RLON1,
                     DLAT,
                     DLON,
                    real, dimension(*) GRIDI,
                    real, dimension(*) GM 
                    )
                    +
                    + +

                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to a Mercator grid.

                    +

                    The wave-space can be either triangular or rhomboidal. The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid. The grid fields may have general indexing. The transforms are all multiprocessed. Transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + +
                    IROMB- INTEGER SPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    MAXWV- INTEGER SPECTRAL TRUNCATION
                    IDRTI- INTEGER INPUT GRID IDENTIFIER (IDRTI=4 FOR GAUSSIAN GRID, IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXI- INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    JMAXI- INTEGER NUMBER OF INPUT LATITUDES.
                    KMAX- INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    MI- INTEGER NUMBER OF POINTS IN THE FASTER ZONAL DIRECTION
                    MJ- INTEGER NUMBER OF POINTS IN THE SLOWER MERID DIRECTION
                    IPRIME- INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN. (DEFAULTS TO 1 IF IPRIME=0) (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    ISKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPI=0)
                    JSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    KSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    KGSKIP- INTEGER SKIP NUMBER BETWEEN GRID FIELDS (DEFAULTS TO NPS*NPS IF KGSKIP=0)
                    NISKIP- INTEGER SKIP NUMBER BETWEEN GRID I-POINTS (DEFAULTS TO 1 IF NISKIP=0)
                    NJSKIP- INTEGER SKIP NUMBER BETWEEN GRID J-POINTS (DEFAULTS TO NPS IF NJSKIP=0)
                    JCPU- INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    RLAT1- REAL LATITUDE OF THE FIRST GRID POINT IN DEGREES
                    RLON1- REAL LONGITUDE OF THE FIRST GRID POINT IN DEGREES
                    DLAT- REAL LATITUDE INCREMENT IN DEGREES SUCH THAT D(PHI)/D(J)=DLAT*COS(PHI) WHERE J IS MERIDIONAL INDEX. DLAT IS NEGATIVE FOR GRIDS INDEXED SOUTHWARD. (IN TERMS OF GRID INCREMENT DY VALID AT LATITUDE RLATI, THE LATITUDE INCREMENT DLAT IS DETERMINED AS DLAT=DPR*DY/(RERTH*COS(RLATI/DPR)) WHERE DPR=180/PI AND RERTH IS EARTH'S RADIUS)
                    DLON- REAL LONGITUDE INCREMENT IN DEGREES SUCH THAT D(LAMBDA)/D(I)=DLON WHERE I IS ZONAL INDEX. DLON IS NEGATIVE FOR GRIDS INDEXED WESTWARD.
                    GRIDI- REAL (*) INPUT GRID FIELDS
                    GM- REAL (*) MERCATOR FIELDS
                    +
                    +
                    +

                    SUBPROGRAMS CALLED:

                      +
                    • sptran() Perform a scalar spherical transform
                    • +
                    • sptgpm() Transform spectral scalar to Mercator
                    • +
                    • ncpus() Gets environment number of cpus
                    • +
                    +

                    MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    + +

                    Definition at line 76 of file sptrunm.f.

                    + +

                    References ncpus(), sptgpm(), and sptran().

                    + +

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrunm_8f.js b/ver-5.0.0/sptrunm_8f.js new file mode 100644 index 00000000..285bd268 --- /dev/null +++ b/ver-5.0.0/sptrunm_8f.js @@ -0,0 +1,4 @@ +var sptrunm_8f = +[ + [ "sptrunm", "sptrunm_8f.html#a2a4e579890d3cf7f6a26091f544b6cb6", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptrunm_8f_source.html b/ver-5.0.0/sptrunm_8f_source.html new file mode 100644 index 00000000..938fb84a --- /dev/null +++ b/ver-5.0.0/sptrunm_8f_source.html @@ -0,0 +1,204 @@ + + + + + + + +NCEPLIBS-ip: sptrunm.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptrunm.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C>
                    +
                    3 C> Spectrally interpolate scalars to Mercator
                    +
                    4 C> @author IREDELL @date 96-02-29
                    +
                    5 
                    +
                    6 C> This subprogram spectrally truncates scalar fields on a global
                    +
                    7 C> cylindrical grid, returning the fields to a Mercator grid. The
                    +
                    8 C> wave-space can be either triangular or rhomboidal. The grid-space
                    +
                    9 C> can be either an equally-spaced grid (with or without pole
                    +
                    10 C> points) or a Gaussian grid. The grid fields may have general
                    +
                    11 C> indexing. The transforms are all multiprocessed. Transform
                    +
                    12 C> several fields at a time to improve vectorization. Subprogram can
                    +
                    13 C> be called from a multiprocessing environment.
                    +
                    14 C>
                    +
                    15 C>
                    +
                    16 C> @param IROMB - INTEGER SPECTRAL DOMAIN SHAPE
                    +
                    17 C> (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    +
                    18 C> @param MAXWV - INTEGER SPECTRAL TRUNCATION
                    +
                    19 C> @param IDRTI - INTEGER INPUT GRID IDENTIFIER
                    +
                    20 C> (IDRTI=4 FOR GAUSSIAN GRID,
                    +
                    21 C> IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    22 C> IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    23 C> @param IMAXI - INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    +
                    24 C> @param JMAXI - INTEGER NUMBER OF INPUT LATITUDES.
                    +
                    25 C> @param KMAX - INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    +
                    26 C> @param MI - INTEGER NUMBER OF POINTS IN THE FASTER ZONAL DIRECTION
                    +
                    27 C> @param MJ - INTEGER NUMBER OF POINTS IN THE SLOWER MERID DIRECTION
                    +
                    28 C> @param IPRIME - INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN.
                    +
                    29 C> (DEFAULTS TO 1 IF IPRIME=0)
                    +
                    30 C> (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    +
                    31 C> @param ISKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES
                    +
                    32 C> (DEFAULTS TO 1 IF ISKIPI=0)
                    +
                    33 C> @param JSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH
                    +
                    34 C> (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    +
                    35 C> @param KSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS
                    +
                    36 C> (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    +
                    37 C> @param KGSKIP - INTEGER SKIP NUMBER BETWEEN GRID FIELDS
                    +
                    38 C> (DEFAULTS TO NPS*NPS IF KGSKIP=0)
                    +
                    39 C> @param NISKIP - INTEGER SKIP NUMBER BETWEEN GRID I-POINTS
                    +
                    40 C> (DEFAULTS TO 1 IF NISKIP=0)
                    +
                    41 C> @param NJSKIP - INTEGER SKIP NUMBER BETWEEN GRID J-POINTS
                    +
                    42 C> (DEFAULTS TO NPS IF NJSKIP=0)
                    +
                    43 C> @param JCPU - INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                    +
                    44 C> (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    +
                    45 C> @param RLAT1 - REAL LATITUDE OF THE FIRST GRID POINT IN DEGREES
                    +
                    46 C> @param RLON1 - REAL LONGITUDE OF THE FIRST GRID POINT IN DEGREES
                    +
                    47 C> @param DLAT - REAL LATITUDE INCREMENT IN DEGREES SUCH THAT
                    +
                    48 C> D(PHI)/D(J)=DLAT*COS(PHI) WHERE J IS MERIDIONAL INDEX.
                    +
                    49 C> DLAT IS NEGATIVE FOR GRIDS INDEXED SOUTHWARD.
                    +
                    50 C> (IN TERMS OF GRID INCREMENT DY VALID AT LATITUDE RLATI,
                    +
                    51 C> THE LATITUDE INCREMENT DLAT IS DETERMINED AS
                    +
                    52 C> DLAT=DPR*DY/(RERTH*COS(RLATI/DPR))
                    +
                    53 C> WHERE DPR=180/PI AND RERTH IS EARTH'S RADIUS)
                    +
                    54 C> @param DLON - REAL LONGITUDE INCREMENT IN DEGREES SUCH THAT
                    +
                    55 C> D(LAMBDA)/D(I)=DLON WHERE I IS ZONAL INDEX.
                    +
                    56 C> DLON IS NEGATIVE FOR GRIDS INDEXED WESTWARD.
                    +
                    57 C> @param GRIDI - REAL (*) INPUT GRID FIELDS
                    +
                    58 C> @param GM - REAL (*) MERCATOR FIELDS
                    +
                    59 C>
                    +
                    60 C> SUBPROGRAMS CALLED:
                    +
                    61 C> - sptran() Perform a scalar spherical transform
                    +
                    62 C> - sptgpm() Transform spectral scalar to Mercator
                    +
                    63 C> - ncpus() Gets environment number of cpus
                    +
                    64 C>
                    +
                    65 C> MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:
                    +
                    66 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    67 C> ----------------------- |--------- |-------------
                    +
                    68 C> IMAX | 2*MAXWV+2 | 3*MAXWV/2*2+2
                    +
                    69 C> JMAX (IDRT=4,IROMB=0) | 1*MAXWV+1 | 3*MAXWV/2+1
                    +
                    70 C> JMAX (IDRT=4,IROMB=1) | 2*MAXWV+1 | 5*MAXWV/2+1
                    +
                    71 C> JMAX (IDRT=0,IROMB=0) | 2*MAXWV+3 | 3*MAXWV/2*2+3
                    +
                    72 C> JMAX (IDRT=0,IROMB=1) | 4*MAXWV+3 | 5*MAXWV/2*2+3
                    +
                    73 C> JMAX (IDRT=256,IROMB=0) | 2*MAXWV+1 | 3*MAXWV/2*2+1
                    +
                    74 C> JMAX (IDRT=256,IROMB=1) | 4*MAXWV+1 | 5*MAXWV/2*2+1
                    +
                    75 C>
                    +
                    76  SUBROUTINE sptrunm(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,KMAX,MI,MJ,
                    +
                    77  & IPRIME,ISKIPI,JSKIPI,KSKIPI,KGSKIP,
                    +
                    78  & NISKIP,NJSKIP,JCPU,RLAT1,RLON1,DLAT,DLON,
                    +
                    79  & GRIDI,GM)
                    +
                    80  REAL GRIDI(*),GM(*)
                    +
                    81  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    82 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    83 C TRANSFORM INPUT GRID TO WAVE
                    +
                    84  jc=jcpu
                    +
                    85  IF(jc.EQ.0) jc=ncpus()
                    +
                    86  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    87  mdim=2*mx+1
                    +
                    88  jn=-jskipi
                    +
                    89  IF(jn.EQ.0) jn=imaxi
                    +
                    90  js=-jn
                    +
                    91  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    92  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    93  CALL sptran(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    94  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    95  & w,gridi(inp),gridi(isp),-1)
                    +
                    96 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    97 C TRANSFORM WAVE TO OUTPUT
                    +
                    98  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    99  & rlat1,rlon1,dlat,dlon,w,gm)
                    +
                    100 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    101  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptgpm(IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVE, GM)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to sca...
                    Definition: sptgpm.f:56
                    +
                    subroutine sptran(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptran.f:88
                    +
                    subroutine sptrunm(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, MI, MJ, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, RLAT1, RLON1, DLAT, DLON, GRIDI, GM)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptrunm.f:80
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrunmv_8f.html b/ver-5.0.0/sptrunmv_8f.html new file mode 100644 index 00000000..ad58ea0a --- /dev/null +++ b/ver-5.0.0/sptrunmv_8f.html @@ -0,0 +1,394 @@ + + + + + + + +NCEPLIBS-ip: sptrunmv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptrunmv.f File Reference
                    +
                    +
                    + +

                    Spectrally interpolate vectors to Mercator. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptrunmv (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, MI, MJ, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, RLAT1, RLON1, DLAT, DLON, GRIDUI, GRIDVI, LUV, UM, VM, LDZ, DM, ZM, LPS, PM, SM)
                     THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTOR FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELDS TO A MERCATOR GRID. More...
                     
                    +

                    Detailed Description

                    +

                    Spectrally interpolate vectors to Mercator.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptrunmv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptrunmv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptrunmv ( IROMB,
                     MAXWV,
                     IDRTI,
                     IMAXI,
                     JMAXI,
                     KMAX,
                     MI,
                     MJ,
                     IPRIME,
                     ISKIPI,
                     JSKIPI,
                     KSKIPI,
                     KGSKIP,
                     NISKIP,
                     NJSKIP,
                     JCPU,
                     RLAT1,
                     RLON1,
                     DLAT,
                     DLON,
                    real, dimension(*) GRIDUI,
                    real, dimension(*) GRIDVI,
                    logical LUV,
                    real, dimension(*) UM,
                    real, dimension(*) VM,
                    logical LDZ,
                    real, dimension(*) DM,
                    real, dimension(*) ZM,
                    logical LPS,
                    real, dimension(*) PM,
                    real, dimension(*) SM 
                    )
                    +
                    + +

                    THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTOR FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELDS TO A MERCATOR GRID.

                    +

                    THE WAVE-SPACE CAN BE EITHER TRIANGULAR OR RHOMBOIDAL. THE GRID-SPACE CAN BE EITHER AN EQUALLY-SPACED GRID (WITH OR WITHOUT POLE POINTS) OR A GAUSSIAN GRID. THE GRID FIELDS MAY HAVE GENERAL INDEXING. THE TRANSFORMS ARE ALL MULTIPROCESSED. TRANSFORM SEVERAL FIELDS AT A TIME TO IMPROVE VECTORIZATION. SUBPROGRAM CAN BE CALLED FROM A MULTIPROCESSING ENVIRONMENT.

                    +

                    PROGRAM HISTORY LOG: 96-02-29 IREDELL 1998-12-15 IREDELL OPENMP DIRECTIVES INSERTED

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    IROMB- INTEGER SPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    MAXWV- INTEGER SPECTRAL TRUNCATION
                    IDRTI- INTEGER INPUT GRID IDENTIFIER (IDRTI=4 FOR GAUSSIAN GRID, IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXI- INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    JMAXI- INTEGER NUMBER OF INPUT LATITUDES.
                    KMAX- INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    MI- INTEGER NUMBER OF POINTS IN THE FASTER ZONAL DIRECTION
                    MJ- INTEGER NUMBER OF POINTS IN THE SLOWER MERID DIRECTION
                    IPRIME- INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN. (DEFAULTS TO 1 IF IPRIME=0) (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    ISKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPI=0)
                    JSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    KSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    KGSKIP- INTEGER SKIP NUMBER BETWEEN GRID FIELDS (DEFAULTS TO MI*MJ IF KGSKIP=0)
                    NISKIP- INTEGER SKIP NUMBER BETWEEN GRID I-POINTS (DEFAULTS TO 1 IF NISKIP=0)
                    NJSKIP- INTEGER SKIP NUMBER BETWEEN GRID J-POINTS (DEFAULTS TO MI IF NJSKIP=0)
                    JCPU- INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    RLAT1- REAL LATITUDE OF THE FIRST GRID POINT IN DEGREES
                    RLON1- REAL LONGITUDE OF THE FIRST GRID POINT IN DEGREES
                    DLAT- REAL LATITUDE INCREMENT IN DEGREES SUCH THAT D(PHI)/D(J)=DLAT*COS(PHI) WHERE J IS MERIDIONAL INDEX. DLAT IS NEGATIVE FOR GRIDS INDEXED SOUTHWARD. (IN TERMS OF GRID INCREMENT DY VALID AT LATITUDE RLATI, THE LATITUDE INCREMENT DLAT IS DETERMINED AS DLAT=DPR*DY/(RERTH*COS(RLATI/DPR)) WHERE DPR=180/PI AND RERTH IS EARTH'S RADIUS)
                    DLON- REAL LONGITUDE INCREMENT IN DEGREES SUCH THAT D(LAMBDA)/D(I)=DLON WHERE I IS ZONAL INDEX. DLON IS NEGATIVE FOR GRIDS INDEXED WESTWARD.
                    GRIDUI- REAL (*) INPUT GRID U-WINDS
                    GRIDVI- REAL (*) INPUT GRID V-WINDS
                    LUV- LOGICAL FLAG WHETHER TO RETURN WINDS
                    LDZ- LOGICAL FLAG WHETHER TO RETURN DIVERGENCE AND VORTICITY
                    LPS- LOGICAL FLAG WHETHER TO RETURN POTENTIAL AND STREAMFCN
                    UM- REAL (*) MERCATOR U-WINDS IF LUV
                    VM- REAL (*) MERCATOR V-WINDS IF LUV
                    DM- REAL (*) MERCATOR DIVERGENCES IF LDZ
                    ZM- REAL (*) MERCATOR VORTICITIES IF LDZ
                    PM- REAL (*) MERCATOR POTENTIALS IF LPS
                    SM- REAL (*) MERCATOR STREAMFCNS IF LPS
                    +
                    +
                    +

                    SUBPROGRAMS CALLED:

                      +
                    • SPWGET GET WAVE-SPACE CONSTANTS
                    • +
                    • SPLAPLAC COMPUTE LAPLACIAN IN SPECTRAL SPACE
                    • +
                    • SPTRANV PERFORM A VECTOR SPHERICAL TRANSFORM
                    • +
                    • SPTGPM TRANSFORM SPECTRAL SCALAR TO MERCATOR
                    • +
                    • SPTGPMV TRANSFORM SPECTRAL VECTOR TO MERCATOR
                    • +
                    • NCPUS GETS ENVIRONMENT NUMBER OF CPUS
                    • +
                    +

                    REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    + +

                    Definition at line 92 of file sptrunmv.f.

                    + +

                    References ncpus(), splaplac(), sptgpm(), sptgpmv(), sptranv(), and spwget().

                    + +

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrunmv_8f.js b/ver-5.0.0/sptrunmv_8f.js new file mode 100644 index 00000000..68c3d828 --- /dev/null +++ b/ver-5.0.0/sptrunmv_8f.js @@ -0,0 +1,4 @@ +var sptrunmv_8f = +[ + [ "sptrunmv", "sptrunmv_8f.html#a8b405d0621112d6852a3bb99602ac2fd", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptrunmv_8f_source.html b/ver-5.0.0/sptrunmv_8f_source.html new file mode 100644 index 00000000..7a37712d --- /dev/null +++ b/ver-5.0.0/sptrunmv_8f_source.html @@ -0,0 +1,259 @@ + + + + + + + +NCEPLIBS-ip: sptrunmv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptrunmv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C>
                    +
                    3 C> Spectrally interpolate vectors to Mercator
                    +
                    4 C> @author IREDELL @date 96-02-29
                    +
                    5 
                    +
                    6 C> THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTOR FIELDS
                    +
                    7 C> ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELDS
                    +
                    8 C> TO A MERCATOR GRID.
                    +
                    9 C> THE WAVE-SPACE CAN BE EITHER TRIANGULAR OR RHOMBOIDAL.
                    +
                    10 C> THE GRID-SPACE CAN BE EITHER AN EQUALLY-SPACED GRID
                    +
                    11 C> (WITH OR WITHOUT POLE POINTS) OR A GAUSSIAN GRID.
                    +
                    12 C> THE GRID FIELDS MAY HAVE GENERAL INDEXING.
                    +
                    13 C> THE TRANSFORMS ARE ALL MULTIPROCESSED.
                    +
                    14 C> TRANSFORM SEVERAL FIELDS AT A TIME TO IMPROVE VECTORIZATION.
                    +
                    15 C> SUBPROGRAM CAN BE CALLED FROM A MULTIPROCESSING ENVIRONMENT.
                    +
                    16 C>
                    +
                    17 C> PROGRAM HISTORY LOG:
                    +
                    18 C> 96-02-29 IREDELL
                    +
                    19 C> 1998-12-15 IREDELL OPENMP DIRECTIVES INSERTED
                    +
                    20 C>
                    +
                    21 C> @param IROMB - INTEGER SPECTRAL DOMAIN SHAPE
                    +
                    22 C> (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    +
                    23 C> @param MAXWV - INTEGER SPECTRAL TRUNCATION
                    +
                    24 C> @param IDRTI - INTEGER INPUT GRID IDENTIFIER
                    +
                    25 C> (IDRTI=4 FOR GAUSSIAN GRID,
                    +
                    26 C> IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    27 C> IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    28 C> @param IMAXI - INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    +
                    29 C> @param JMAXI - INTEGER NUMBER OF INPUT LATITUDES.
                    +
                    30 C> @param KMAX - INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    +
                    31 C> @param MI - INTEGER NUMBER OF POINTS IN THE FASTER ZONAL DIRECTION
                    +
                    32 C> @param MJ - INTEGER NUMBER OF POINTS IN THE SLOWER MERID DIRECTION
                    +
                    33 C> @param IPRIME - INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN.
                    +
                    34 C> (DEFAULTS TO 1 IF IPRIME=0)
                    +
                    35 C> (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    +
                    36 C> @param ISKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES
                    +
                    37 C> (DEFAULTS TO 1 IF ISKIPI=0)
                    +
                    38 C> @param JSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH
                    +
                    39 C> (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    +
                    40 C> @param KSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS
                    +
                    41 C> (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    +
                    42 C> @param KGSKIP - INTEGER SKIP NUMBER BETWEEN GRID FIELDS
                    +
                    43 C> (DEFAULTS TO MI*MJ IF KGSKIP=0)
                    +
                    44 C> @param NISKIP - INTEGER SKIP NUMBER BETWEEN GRID I-POINTS
                    +
                    45 C> (DEFAULTS TO 1 IF NISKIP=0)
                    +
                    46 C> @param NJSKIP - INTEGER SKIP NUMBER BETWEEN GRID J-POINTS
                    +
                    47 C> (DEFAULTS TO MI IF NJSKIP=0)
                    +
                    48 C> @param JCPU - INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                    +
                    49 C> (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    +
                    50 C> @param RLAT1 - REAL LATITUDE OF THE FIRST GRID POINT IN DEGREES
                    +
                    51 C> @param RLON1 - REAL LONGITUDE OF THE FIRST GRID POINT IN DEGREES
                    +
                    52 C> @param DLAT - REAL LATITUDE INCREMENT IN DEGREES SUCH THAT
                    +
                    53 C> D(PHI)/D(J)=DLAT*COS(PHI) WHERE J IS MERIDIONAL INDEX.
                    +
                    54 C> DLAT IS NEGATIVE FOR GRIDS INDEXED SOUTHWARD.
                    +
                    55 C> (IN TERMS OF GRID INCREMENT DY VALID AT LATITUDE RLATI,
                    +
                    56 C> THE LATITUDE INCREMENT DLAT IS DETERMINED AS
                    +
                    57 C> DLAT=DPR*DY/(RERTH*COS(RLATI/DPR))
                    +
                    58 C> WHERE DPR=180/PI AND RERTH IS EARTH'S RADIUS)
                    +
                    59 C> @param DLON - REAL LONGITUDE INCREMENT IN DEGREES SUCH THAT
                    +
                    60 C> D(LAMBDA)/D(I)=DLON WHERE I IS ZONAL INDEX.
                    +
                    61 C> DLON IS NEGATIVE FOR GRIDS INDEXED WESTWARD.
                    +
                    62 C> @param GRIDUI - REAL (*) INPUT GRID U-WINDS
                    +
                    63 C> @param GRIDVI - REAL (*) INPUT GRID V-WINDS
                    +
                    64 C> @param LUV - LOGICAL FLAG WHETHER TO RETURN WINDS
                    +
                    65 C> @param LDZ - LOGICAL FLAG WHETHER TO RETURN DIVERGENCE AND VORTICITY
                    +
                    66 C> @param LPS - LOGICAL FLAG WHETHER TO RETURN POTENTIAL AND STREAMFCN
                    +
                    67 C> @param UM - REAL (*) MERCATOR U-WINDS IF LUV
                    +
                    68 C> @param VM - REAL (*) MERCATOR V-WINDS IF LUV
                    +
                    69 C> @param DM - REAL (*) MERCATOR DIVERGENCES IF LDZ
                    +
                    70 C> @param ZM - REAL (*) MERCATOR VORTICITIES IF LDZ
                    +
                    71 C> @param PM - REAL (*) MERCATOR POTENTIALS IF LPS
                    +
                    72 C> @param SM - REAL (*) MERCATOR STREAMFCNS IF LPS
                    +
                    73 C>
                    +
                    74 C> SUBPROGRAMS CALLED:
                    +
                    75 C> - SPWGET GET WAVE-SPACE CONSTANTS
                    +
                    76 C> - SPLAPLAC COMPUTE LAPLACIAN IN SPECTRAL SPACE
                    +
                    77 C> - SPTRANV PERFORM A VECTOR SPHERICAL TRANSFORM
                    +
                    78 C> - SPTGPM TRANSFORM SPECTRAL SCALAR TO MERCATOR
                    +
                    79 C> - SPTGPMV TRANSFORM SPECTRAL VECTOR TO MERCATOR
                    +
                    80 C> - NCPUS GETS ENVIRONMENT NUMBER OF CPUS
                    +
                    81 C>
                    +
                    82 C> REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:
                    +
                    83 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    84 C> ----------------------- |--------- |-------------
                    +
                    85 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    86 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    87 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    88 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    89 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    90 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    91 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    92  SUBROUTINE sptrunmv(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,KMAX,MI,MJ,
                    +
                    93  & IPRIME,ISKIPI,JSKIPI,KSKIPI,KGSKIP,
                    +
                    94  & NISKIP,NJSKIP,JCPU,RLAT1,RLON1,DLAT,DLON,
                    +
                    95  & GRIDUI,GRIDVI,LUV,UM,VM,LDZ,DM,ZM,LPS,PM,SM)
                    +
                    96 
                    +
                    97  LOGICAL LUV,LDZ,LPS
                    +
                    98  REAL GRIDUI(*),GRIDVI(*)
                    +
                    99  REAL UM(*),VM(*),DM(*),ZM(*),PM(*),SM(*)
                    +
                    100  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    101  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    102  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    103  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    104  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    105  REAL WD((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    106  REAL WZ((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    107 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    108 C TRANSFORM INPUT GRID TO WAVE
                    +
                    109  jc=jcpu
                    +
                    110  IF(jc.EQ.0) jc=ncpus()
                    +
                    111  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    112  mdim=2*mx+1
                    +
                    113  jn=-jskipi
                    +
                    114  IF(jn.EQ.0) jn=imaxi
                    +
                    115  js=-jn
                    +
                    116  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    117  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    118  CALL sptranv(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    119  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    120  & wd,wz,
                    +
                    121  & gridui(inp),gridui(isp),gridvi(inp),gridvi(isp),-1)
                    +
                    122 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    123 C TRANSFORM WAVE TO OUTPUT WINDS
                    +
                    124  IF(luv) THEN
                    +
                    125  CALL sptgpmv(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    126  & rlat1,rlon1,dlat,dlon,wd,wz,um,vm)
                    +
                    127  ENDIF
                    +
                    128 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    129 C TRANSFORM WAVE TO OUTPUT DIVERGENCE AND VORTICITY
                    +
                    130  IF(ldz) THEN
                    +
                    131  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    132  & rlat1,rlon1,dlat,dlon,wd,dm)
                    +
                    133  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    134  & rlat1,rlon1,dlat,dlon,wz,zm)
                    +
                    135  ENDIF
                    +
                    136 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    137 C TRANSFORM WAVE TO OUTPUT POTENTIAL AND STREAMFUNCTION
                    +
                    138  IF(lps) THEN
                    +
                    139  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    140 C$OMP PARALLEL DO
                    +
                    141  DO k=1,kmax
                    +
                    142  CALL splaplac(iromb,maxwv,enn1,wd(1,k),wd(1,k),-1)
                    +
                    143  CALL splaplac(iromb,maxwv,enn1,wz(1,k),wz(1,k),-1)
                    +
                    144  wd(1:2,k)=0.
                    +
                    145  wz(1:2,k)=0.
                    +
                    146  ENDDO
                    +
                    147  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    148  & rlat1,rlon1,dlat,dlon,wd,pm)
                    +
                    149  CALL sptgpm(iromb,maxwv,kmax,mi,mj,mdim,kgskip,niskip,njskip,
                    +
                    150  & rlat1,rlon1,dlat,dlon,wz,sm)
                    +
                    151  ENDIF
                    +
                    152 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    153  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    +
                    subroutine sptgpm(IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVE, GM)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to sca...
                    Definition: sptgpm.f:56
                    +
                    subroutine sptgpmv(IROMB, MAXWV, KMAX, MI, MJ, KWSKIP, KGSKIP, NISKIP, NJSKIP, RLAT1, RLON1, DLAT, DLON, WAVED, WAVEZ, UM, VM)
                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to...
                    Definition: sptgpmv.f:63
                    +
                    subroutine sptranv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranv.f:91
                    +
                    subroutine sptrunmv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, MI, MJ, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, RLAT1, RLON1, DLAT, DLON, GRIDUI, GRIDVI, LUV, UM, VM, LDZ, DM, ZM, LPS, PM, SM)
                    THIS SUBPROGRAM SPECTRALLY TRUNCATES VECTOR FIELDS ON A GLOBAL CYLINDRICAL GRID, RETURNING THE FIELDS...
                    Definition: sptrunmv.f:96
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptruns_8f.html b/ver-5.0.0/sptruns_8f.html new file mode 100644 index 00000000..e397cd69 --- /dev/null +++ b/ver-5.0.0/sptruns_8f.html @@ -0,0 +1,321 @@ + + + + + + + +NCEPLIBS-ip: sptruns.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptruns.f File Reference
                    +
                    +
                    + +

                    Spectrally interpolate scalars to polar stereo. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptruns (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NPS, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, TRUE, XMESH, ORIENT, GRIDI, GN, GS)
                     This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to specific pairs of polar stereographic scalar fields. More...
                     
                    +

                    Detailed Description

                    +

                    Spectrally interpolate scalars to polar stereo.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptruns.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptruns()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptruns ( IROMB,
                     MAXWV,
                     IDRTI,
                     IMAXI,
                     JMAXI,
                     KMAX,
                     NPS,
                     IPRIME,
                     ISKIPI,
                     JSKIPI,
                     KSKIPI,
                     KGSKIP,
                     NISKIP,
                     NJSKIP,
                     JCPU,
                     TRUE,
                     XMESH,
                     ORIENT,
                    real, dimension(*) GRIDI,
                    real, dimension(*) GN,
                    real, dimension(*) GS 
                    )
                    +
                    + +

                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to specific pairs of polar stereographic scalar fields.

                    +

                    The wave-space can be either triangular or rhomboidal. The grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid. The grid fields may have general indexing. The transforms are all multiprocessed. Transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +

                    PROGRAM HISTORY LOG: 96-02-29 IREDELL

                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + +
                    IROMB- INTEGER SPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    MAXWV- INTEGER SPECTRAL TRUNCATION
                    IDRTI- INTEGER INPUT GRID IDENTIFIER (IDRTI=4 FOR GAUSSIAN GRID, IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXI- INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    JMAXI- INTEGER NUMBER OF INPUT LATITUDES.
                    KMAX- INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    NPS- INTEGER ODD ORDER OF THE POLAR STEREOGRAPHIC GRIDS
                    IPRIME- INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN. (DEFAULTS TO 1 IF IPRIME=0) (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    ISKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPI=0)
                    JSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    KSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    KGSKIP- INTEGER SKIP NUMBER BETWEEN GRID FIELDS (DEFAULTS TO NPS*NPS IF KGSKIP=0)
                    NISKIP- INTEGER SKIP NUMBER BETWEEN GRID I-POINTS (DEFAULTS TO 1 IF NISKIP=0)
                    NJSKIP- INTEGER SKIP NUMBER BETWEEN GRID J-POINTS (DEFAULTS TO NPS IF NJSKIP=0)
                    JCPU- INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    TRUE- REAL LATITUDE AT WHICH PS GRID IS TRUE (USUALLY 60.)
                    XMESH- REAL GRID LENGTH AT TRUE LATITUDE (M)
                    ORIENT- REAL LONGITUDE AT BOTTOM OF NORTHERN PS GRID (SOUTHERN PS GRID WILL HAVE OPPOSITE ORIENTATION.)
                    GRIDI- REAL (*) INPUT GRID FIELDS
                    GN- REAL (*) NORTHERN POLAR STEREOGRAPHIC FIELDS
                    GS- REAL (*) SOUTHERN POLAR STEREOGRAPHIC FIELDS
                    +
                    +
                    +

                    SUBPROGRAMS CALLED:

                      +
                    • sptran() Perform a scalar spherical transform
                    • +
                    • sptgps() Transform spectral scalar to polar stereo.
                    • +
                    • ncpus() Gets environment number of cpus
                    • +
                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    + +

                    Definition at line 71 of file sptruns.f.

                    + +

                    References ncpus(), sptgps(), and sptran().

                    + +

                    Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptruns_8f.js b/ver-5.0.0/sptruns_8f.js new file mode 100644 index 00000000..cc546092 --- /dev/null +++ b/ver-5.0.0/sptruns_8f.js @@ -0,0 +1,4 @@ +var sptruns_8f = +[ + [ "sptruns", "sptruns_8f.html#a34f156e2049105d012e445f8aa215444", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptruns_8f_source.html b/ver-5.0.0/sptruns_8f_source.html new file mode 100644 index 00000000..74712071 --- /dev/null +++ b/ver-5.0.0/sptruns_8f_source.html @@ -0,0 +1,199 @@ + + + + + + + +NCEPLIBS-ip: sptruns.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptruns.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C>
                    +
                    3 C> Spectrally interpolate scalars to polar stereo
                    +
                    4 C> @author IREDELL @date 96-02-29
                    +
                    5 
                    +
                    6 C> This subprogram spectrally truncates scalar fields on a global
                    +
                    7 C> cylindrical grid, returning the fields to specific pairs of polar
                    +
                    8 C> stereographic scalar fields. The wave-space can be either
                    +
                    9 C> triangular or rhomboidal. The grid-space can be either an
                    +
                    10 C> equally-spaced grid (with or without pole points) or a Gaussian
                    +
                    11 C> grid. The grid fields may have general indexing. The transforms
                    +
                    12 C> are all multiprocessed. Transform several fields at a time to
                    +
                    13 C> improve vectorization. Subprogram can be called from a
                    +
                    14 C> multiprocessing environment.
                    +
                    15 C>
                    +
                    16 C> PROGRAM HISTORY LOG:
                    +
                    17 C> 96-02-29 IREDELL
                    +
                    18 C>
                    +
                    19 C> @param IROMB - INTEGER SPECTRAL DOMAIN SHAPE
                    +
                    20 C> (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    +
                    21 C> @param MAXWV - INTEGER SPECTRAL TRUNCATION
                    +
                    22 C> @param IDRTI - INTEGER INPUT GRID IDENTIFIER
                    +
                    23 C> (IDRTI=4 FOR GAUSSIAN GRID,
                    +
                    24 C> IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    25 C> IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    26 C> @param IMAXI - INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    +
                    27 C> @param JMAXI - INTEGER NUMBER OF INPUT LATITUDES.
                    +
                    28 C> @param KMAX - INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    +
                    29 C> @param NPS - INTEGER ODD ORDER OF THE POLAR STEREOGRAPHIC GRIDS
                    +
                    30 C> @param IPRIME - INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN.
                    +
                    31 C> (DEFAULTS TO 1 IF IPRIME=0)
                    +
                    32 C> (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    +
                    33 C> @param ISKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES
                    +
                    34 C> (DEFAULTS TO 1 IF ISKIPI=0)
                    +
                    35 C> @param JSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH
                    +
                    36 C> (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    +
                    37 C> @param KSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS
                    +
                    38 C> (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    +
                    39 C> @param KGSKIP - INTEGER SKIP NUMBER BETWEEN GRID FIELDS
                    +
                    40 C> (DEFAULTS TO NPS*NPS IF KGSKIP=0)
                    +
                    41 C> @param NISKIP - INTEGER SKIP NUMBER BETWEEN GRID I-POINTS
                    +
                    42 C> (DEFAULTS TO 1 IF NISKIP=0)
                    +
                    43 C> @param NJSKIP - INTEGER SKIP NUMBER BETWEEN GRID J-POINTS
                    +
                    44 C> (DEFAULTS TO NPS IF NJSKIP=0)
                    +
                    45 C> @param JCPU - INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                    +
                    46 C> (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    +
                    47 C> @param TRUE - REAL LATITUDE AT WHICH PS GRID IS TRUE (USUALLY 60.)
                    +
                    48 C> @param XMESH - REAL GRID LENGTH AT TRUE LATITUDE (M)
                    +
                    49 C> @param ORIENT - REAL LONGITUDE AT BOTTOM OF NORTHERN PS GRID
                    +
                    50 C> (SOUTHERN PS GRID WILL HAVE OPPOSITE ORIENTATION.)
                    +
                    51 C> @param GRIDI - REAL (*) INPUT GRID FIELDS
                    +
                    52 C> @param GN - REAL (*) NORTHERN POLAR STEREOGRAPHIC FIELDS
                    +
                    53 C> @param GS - REAL (*) SOUTHERN POLAR STEREOGRAPHIC FIELDS
                    +
                    54 C>
                    +
                    55 C> SUBPROGRAMS CALLED:
                    +
                    56 C> - sptran() Perform a scalar spherical transform
                    +
                    57 C> - sptgps() Transform spectral scalar to polar stereo.
                    +
                    58 C> - ncpus() Gets environment number of cpus
                    +
                    59 C>
                    +
                    60 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    61 C> DIMENSION | LINEAR | QUADRATIC
                    +
                    62 C> ----------------------- | --------- | -------------
                    +
                    63 C> IMAX | 2*MAXWV+2 | 3*MAXWV/2*2+2
                    +
                    64 C> JMAX (IDRT=4,IROMB=0) | 1*MAXWV+1 | 3*MAXWV/2+1
                    +
                    65 C> JMAX (IDRT=4,IROMB=1) | 2*MAXWV+1 | 5*MAXWV/2+1
                    +
                    66 C> JMAX (IDRT=0,IROMB=0) | 2*MAXWV+3 | 3*MAXWV/2*2+3
                    +
                    67 C> JMAX (IDRT=0,IROMB=1) | 4*MAXWV+3 | 5*MAXWV/2*2+3
                    +
                    68 C> JMAX (IDRT=256,IROMB=0) | 2*MAXWV+1 | 3*MAXWV/2*2+1
                    +
                    69 C> JMAX (IDRT=256,IROMB=1) | 4*MAXWV+1 | 5*MAXWV/2*2+1
                    +
                    70 C>
                    +
                    71  SUBROUTINE sptruns(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,KMAX,NPS,
                    +
                    72  & IPRIME,ISKIPI,JSKIPI,KSKIPI,KGSKIP,
                    +
                    73  & NISKIP,NJSKIP,JCPU,TRUE,XMESH,ORIENT,
                    +
                    74  & GRIDI,GN,GS)
                    +
                    75  REAL GRIDI(*),GN(*),GS(*)
                    +
                    76  REAL W((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    77 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    78 C TRANSFORM INPUT GRID TO WAVE
                    +
                    79  jc=jcpu
                    +
                    80  IF(jc.EQ.0) jc=ncpus()
                    +
                    81  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    82  mdim=2*mx+1
                    +
                    83  jn=-jskipi
                    +
                    84  IF(jn.EQ.0) jn=imaxi
                    +
                    85  js=-jn
                    +
                    86  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    87  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    88  CALL sptran(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    89  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    90  & w,gridi(inp),gridi(isp),-1)
                    +
                    91 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    92 C TRANSFORM WAVE TO OUTPUT
                    +
                    93  CALL sptgps(iromb,maxwv,kmax,nps,mdim,kgskip,niskip,njskip,
                    +
                    94  & true,xmesh,orient,w,gn,gs)
                    +
                    95 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    96  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine sptgps(IROMB, MAXWV, KMAX, NPS, KWSKIP, KGSKIP, NISKIP, NJSKIP, TRUE, XMESH, ORIENT, WAVE, GN, GS)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to sca...
                    Definition: sptgps.f:81
                    +
                    subroutine sptran(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptran.f:88
                    +
                    subroutine sptruns(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NPS, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, TRUE, XMESH, ORIENT, GRIDI, GN, GS)
                    This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields...
                    Definition: sptruns.f:75
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrunsv_8f.html b/ver-5.0.0/sptrunsv_8f.html new file mode 100644 index 00000000..5195500e --- /dev/null +++ b/ver-5.0.0/sptrunsv_8f.html @@ -0,0 +1,426 @@ + + + + + + + +NCEPLIBS-ip: sptrunsv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptrunsv.f File Reference
                    +
                    +
                    + +

                    Spectrally interpolate vectors to polar stereo. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptrunsv (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NPS, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, TRUE, XMESH, ORIENT, GRIDUI, GRIDVI, LUV, UN, VN, US, VS, LDZ, DN, ZN, DS, ZS, LPS, PN, SN, PS, SS)
                     This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields to specific pairs of polar stereographic scalar fields. More...
                     
                    +

                    Detailed Description

                    +

                    Spectrally interpolate vectors to polar stereo.

                    +

                    96-02-29 | Iredell | Initial. 1998-12-15 | Iredell | Openmp directives inserted.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptrunsv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptrunsv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptrunsv ( IROMB,
                     MAXWV,
                     IDRTI,
                     IMAXI,
                     JMAXI,
                     KMAX,
                     NPS,
                     IPRIME,
                     ISKIPI,
                     JSKIPI,
                     KSKIPI,
                     KGSKIP,
                     NISKIP,
                     NJSKIP,
                     JCPU,
                     TRUE,
                     XMESH,
                     ORIENT,
                    real, dimension(*) GRIDUI,
                    real, dimension(*) GRIDVI,
                    logical LUV,
                    real, dimension(*) UN,
                    real, dimension(*) VN,
                    real, dimension(*) US,
                    real, dimension(*) VS,
                    logical LDZ,
                    real, dimension(*) DN,
                    real, dimension(*) ZN,
                    real, dimension(*) DS,
                    real, dimension(*) ZS,
                    logical LPS,
                    real, dimension(*) PN,
                    real, dimension(*) SN,
                    real, dimension(*) PS,
                    real, dimension(*) SS 
                    )
                    +
                    + +

                    This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields to specific pairs of polar stereographic scalar fields.

                    +

                    The wave-space can be either triangular or rhomboidal.

                    +

                    The grid-space can be either an equally-spaced grid (with or without pole points) or a gaussian grid.

                    +

                    The grid fields may have general indexing.

                    +

                    The transforms are all multiprocessed.

                    +

                    Transform several fields at a time to improve vectorization.

                    +

                    Subprogram can be called from a multiprocessing environment.

                    +

                    Minimum grid dimensions for unaliased transforms to spectral:

                    + + + + + + + + + + + + + + + + +
                    Dimension Linear Quadratic
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    IROMBinteger spectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVinteger spectral truncation
                    IDRTIinteger input grid identifier
                      +
                    • IDRTI=4 for Gaussian grid
                    • +
                    • IDRTI=0 for equally-spaced grid including poles
                    • +
                    • IDRTI=256 for equally-spaced grid excluding poles
                    • +
                    +
                    IMAXIinteger even number of input longitudes.
                    JMAXIinteger number of input latitudes.
                    KMAXinteger number of fields to transform.
                    NPSinteger odd order of the polar stereographic grids
                    IPRIMEinteger input longitude index for the prime meridian. (defaults to 1 if IPRIME=0) (output longitude index for prime meridian assumed 1.)
                    ISKIPIinteger skip number between input longitudes (defaults to 1 if ISKIPI=0)
                    JSKIPIinteger skip number between input latitudes from south (defaults to -IMAXI if JSKIPI=0)
                    KSKIPIinteger skip number between input grid fields (defaults to IMAXI*JMAXI if KSKIPI=0)
                    KGSKIPinteger skip number between grid fields (defaults to NPS*NPS if KGSKIP=0)
                    NISKIPinteger skip number between grid i-points (defaults to 1 if NISKIP=0)
                    NJSKIPinteger skip number between grid j-points (defaults to NPS if NJSKIP=0)
                    JCPUinteger number of cpus over which to multiprocess (defaults to environment NCPUS if JCPU=0)
                    TRUEreal latitude at which ps grid is true (usually 60.)
                    XMESHreal grid length at true latitude (m)
                    ORIENTreal longitude at bottom of Northern PS grid (Southern PS grid will have opposite orientation.)
                    GRIDUIreal input grid u-winds
                    GRIDVIreal input grid v-winds
                    LUVlogical flag whether to return winds
                    LDZlogical flag whether to return divergence and vorticity
                    LPSlogical flag whether to return potential and streamfcn
                    UNreal northern ps u-winds if luv
                    VNreal northern ps v-winds if luv
                    USreal southern ps u-winds if luv
                    VSreal southern ps v-winds if luv
                    DNreal northern divergences if ldz
                    ZNreal northern vorticities if ldz
                    DSreal southern divergences if ldz
                    ZSreal southern vorticities if ldz
                    PNreal northern potentials if lps
                    SNreal northern streamfcns if lps
                    PSreal southern potentials if lps
                    SSreal southern streamfcns if lps
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition at line 88 of file sptrunsv.f.

                    + +

                    References ncpus(), splaplac(), sptgps(), sptgpsv(), sptranv(), and spwget().

                    + +

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrunsv_8f.js b/ver-5.0.0/sptrunsv_8f.js new file mode 100644 index 00000000..af10490c --- /dev/null +++ b/ver-5.0.0/sptrunsv_8f.js @@ -0,0 +1,4 @@ +var sptrunsv_8f = +[ + [ "sptrunsv", "sptrunsv_8f.html#a1373b651b9dea586e33d3033aae68656", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptrunsv_8f_source.html b/ver-5.0.0/sptrunsv_8f_source.html new file mode 100644 index 00000000..0029e4ad --- /dev/null +++ b/ver-5.0.0/sptrunsv_8f_source.html @@ -0,0 +1,255 @@ + + + + + + + +NCEPLIBS-ip: sptrunsv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptrunsv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Spectrally interpolate vectors to polar stereo.
                    +
                    3 C>
                    +
                    4 C> 96-02-29 | Iredell | Initial.
                    +
                    5 C> 1998-12-15 | Iredell | Openmp directives inserted.
                    +
                    6 C>
                    +
                    7 C> @author Iredell @date 96-02-29
                    +
                    8 
                    +
                    9 C> This subprogram spectrally truncates vector fields
                    +
                    10 C> on a global cylindrical grid, returning the fields
                    +
                    11 C> to specific pairs of polar stereographic scalar fields.
                    +
                    12 C>
                    +
                    13 C> The wave-space can be either triangular or rhomboidal.
                    +
                    14 C>
                    +
                    15 C> The grid-space can be either an equally-spaced grid
                    +
                    16 C> (with or without pole points) or a gaussian grid.
                    +
                    17 C>
                    +
                    18 C> The grid fields may have general indexing.
                    +
                    19 C>
                    +
                    20 C> The transforms are all multiprocessed.
                    +
                    21 C>
                    +
                    22 C> Transform several fields at a time to improve vectorization.
                    +
                    23 C>
                    +
                    24 C> Subprogram can be called from a multiprocessing environment.
                    +
                    25 C>
                    +
                    26 C> Minimum grid dimensions for unaliased transforms to spectral:
                    +
                    27 C> Dimension |Linear |Quadratic
                    +
                    28 C> ----------------------- |--------- |-------------
                    +
                    29 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    30 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    31 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    32 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    33 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    34 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    35 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    36 C>
                    +
                    37 C> @param IROMB integer spectral domain shape
                    +
                    38 C> (0 for triangular, 1 for rhomboidal)
                    +
                    39 C> @param MAXWV integer spectral truncation
                    +
                    40 C> @param IDRTI integer input grid identifier
                    +
                    41 C> - IDRTI=4 for Gaussian grid
                    +
                    42 C> - IDRTI=0 for equally-spaced grid including poles
                    +
                    43 C> - IDRTI=256 for equally-spaced grid excluding poles
                    +
                    44 C> @param IMAXI integer even number of input longitudes.
                    +
                    45 C> @param JMAXI integer number of input latitudes.
                    +
                    46 C> @param KMAX integer number of fields to transform.
                    +
                    47 C> @param NPS integer odd order of the polar stereographic grids
                    +
                    48 C> @param IPRIME integer input longitude index for the prime meridian.
                    +
                    49 C> (defaults to 1 if IPRIME=0)
                    +
                    50 C> (output longitude index for prime meridian assumed 1.)
                    +
                    51 C> @param ISKIPI integer skip number between input longitudes
                    +
                    52 C> (defaults to 1 if ISKIPI=0)
                    +
                    53 C> @param JSKIPI integer skip number between input latitudes from south
                    +
                    54 C> (defaults to -IMAXI if JSKIPI=0)
                    +
                    55 C> @param KSKIPI integer skip number between input grid fields
                    +
                    56 C> (defaults to IMAXI*JMAXI if KSKIPI=0)
                    +
                    57 C> @param KGSKIP integer skip number between grid fields
                    +
                    58 C> (defaults to NPS*NPS if KGSKIP=0)
                    +
                    59 C> @param NISKIP integer skip number between grid i-points
                    +
                    60 C> (defaults to 1 if NISKIP=0)
                    +
                    61 C> @param NJSKIP integer skip number between grid j-points
                    +
                    62 C> (defaults to NPS if NJSKIP=0)
                    +
                    63 C> @param JCPU integer number of cpus over which to multiprocess
                    +
                    64 C> (defaults to environment NCPUS if JCPU=0)
                    +
                    65 C> @param TRUE real latitude at which ps grid is true (usually 60.)
                    +
                    66 C> @param XMESH real grid length at true latitude (m)
                    +
                    67 C> @param ORIENT real longitude at bottom of Northern PS grid
                    +
                    68 C> (Southern PS grid will have opposite orientation.)
                    +
                    69 C> @param GRIDUI real input grid u-winds
                    +
                    70 C> @param GRIDVI real input grid v-winds
                    +
                    71 C> @param LUV logical flag whether to return winds
                    +
                    72 C> @param LDZ logical flag whether to return divergence and vorticity
                    +
                    73 C> @param LPS logical flag whether to return potential and streamfcn
                    +
                    74 C> @param UN real northern ps u-winds if luv
                    +
                    75 C> @param VN real northern ps v-winds if luv
                    +
                    76 C> @param US real southern ps u-winds if luv
                    +
                    77 C> @param VS real southern ps v-winds if luv
                    +
                    78 C> @param DN real northern divergences if ldz
                    +
                    79 C> @param ZN real northern vorticities if ldz
                    +
                    80 C> @param DS real southern divergences if ldz
                    +
                    81 C> @param ZS real southern vorticities if ldz
                    +
                    82 C> @param PN real northern potentials if lps
                    +
                    83 C> @param SN real northern streamfcns if lps
                    +
                    84 C> @param PS real southern potentials if lps
                    +
                    85 C> @param SS real southern streamfcns if lps
                    +
                    86 C>
                    +
                    87 C> @author Iredell @date 96-02-29
                    +
                    88  SUBROUTINE sptrunsv(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,KMAX,NPS,
                    +
                    89  & IPRIME,ISKIPI,JSKIPI,KSKIPI,KGSKIP,
                    +
                    90  & NISKIP,NJSKIP,JCPU,TRUE,XMESH,ORIENT,
                    +
                    91  & GRIDUI,GRIDVI,
                    +
                    92  & LUV,UN,VN,US,VS,LDZ,DN,ZN,DS,ZS,
                    +
                    93  & LPS,PN,SN,PS,SS)
                    +
                    94  LOGICAL LUV,LDZ,LPS
                    +
                    95  REAL GRIDUI(*),GRIDVI(*)
                    +
                    96  REAL UN(*),VN(*),US(*),VS(*),DN(*),ZN(*),DS(*),ZS(*)
                    +
                    97  REAL PN(*),SN(*),PS(*),SS(*)
                    +
                    98  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    99  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    100  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    101  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    102  REAL WD((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    103  REAL WZ((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    104 
                    +
                    105 C TRANSFORM INPUT GRID TO WAVE
                    +
                    106  jc=jcpu
                    +
                    107  IF(jc.EQ.0) jc=ncpus()
                    +
                    108  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    109  mdim=2*mx+1
                    +
                    110  jn=-jskipi
                    +
                    111  IF(jn.EQ.0) jn=imaxi
                    +
                    112  js=-jn
                    +
                    113  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    114  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    115  CALL sptranv(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    116  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    117  & wd,wz,
                    +
                    118  & gridui(inp),gridui(isp),gridvi(inp),gridvi(isp),-1)
                    +
                    119 
                    +
                    120 C TRANSFORM WAVE TO OUTPUT WINDS
                    +
                    121  IF(luv) THEN
                    +
                    122  CALL sptgpsv(iromb,maxwv,kmax,nps,mdim,kgskip,niskip,njskip,
                    +
                    123  & true,xmesh,orient,wd,wz,un,vn,us,vs)
                    +
                    124  ENDIF
                    +
                    125 
                    +
                    126 C TRANSFORM WAVE TO OUTPUT DIVERGENCE AND VORTICITY
                    +
                    127  IF(ldz) THEN
                    +
                    128  CALL sptgps(iromb,maxwv,kmax,nps,mdim,kgskip,niskip,njskip,
                    +
                    129  & true,xmesh,orient,wd,dn,ds)
                    +
                    130  CALL sptgps(iromb,maxwv,kmax,nps,mdim,kgskip,niskip,njskip,
                    +
                    131  & true,xmesh,orient,wz,zn,zs)
                    +
                    132  ENDIF
                    +
                    133 
                    +
                    134 C TRANSFORM WAVE TO OUTPUT POTENTIAL AND STREAMFUNCTION
                    +
                    135  IF(lps) THEN
                    +
                    136  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    137 C$OMP PARALLEL DO
                    +
                    138  DO k=1,kmax
                    +
                    139  CALL splaplac(iromb,maxwv,enn1,wd(1,k),wd(1,k),-1)
                    +
                    140  CALL splaplac(iromb,maxwv,enn1,wz(1,k),wz(1,k),-1)
                    +
                    141  wd(1:2,k)=0.
                    +
                    142  wz(1:2,k)=0.
                    +
                    143  ENDDO
                    +
                    144  CALL sptgps(iromb,maxwv,kmax,nps,mdim,kgskip,niskip,njskip,
                    +
                    145  & true,xmesh,orient,wd,pn,ps)
                    +
                    146  CALL sptgps(iromb,maxwv,kmax,nps,mdim,kgskip,niskip,njskip,
                    +
                    147  & true,xmesh,orient,wz,sn,ss)
                    +
                    148  ENDIF
                    +
                    149  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    +
                    subroutine sptgps(IROMB, MAXWV, KMAX, NPS, KWSKIP, KGSKIP, NISKIP, NJSKIP, TRUE, XMESH, ORIENT, WAVE, GN, GS)
                    This subprogram performs a spherical transform from spectral coefficients of scalar quantities to sca...
                    Definition: sptgps.f:81
                    +
                    subroutine sptgpsv(IROMB, MAXWV, KMAX, NPS, KWSKIP, KGSKIP, NISKIP, NJSKIP, TRUE, XMESH, ORIENT, WAVED, WAVEZ, UN, VN, US, VS)
                    This subprogram performs a spherical transform from spectral coefficients of divergences and curls to...
                    Definition: sptgpsv.f:83
                    +
                    subroutine sptranv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranv.f:91
                    +
                    subroutine sptrunsv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NPS, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, TRUE, XMESH, ORIENT, GRIDUI, GRIDVI, LUV, UN, VN, US, VS, LDZ, DN, ZN, DS, ZS, LPS, PN, SN, PS, SS)
                    This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields...
                    Definition: sptrunsv.f:94
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrunv_8f.html b/ver-5.0.0/sptrunv_8f.html new file mode 100644 index 00000000..f43a3dd2 --- /dev/null +++ b/ver-5.0.0/sptrunv_8f.html @@ -0,0 +1,375 @@ + + + + + + + +NCEPLIBS-ip: sptrunv.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    sptrunv.f File Reference
                    +
                    +
                    + +

                    Spectrally truncate gridded vector fields. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine sptrunv (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRIDUI, GRIDVI, LUV, GRIDUO, GRIDVO, LDZ, GRIDDO, GRIDZO, LPS, GRIDPO, GRIDSO)
                     This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields to a possibly different global cylindrical grid. More...
                     
                    +

                    Detailed Description

                    +

                    Spectrally truncate gridded vector fields.

                    +
                    Author
                    IREDELL
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file sptrunv.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ sptrunv()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine sptrunv ( IROMB,
                     MAXWV,
                     IDRTI,
                     IMAXI,
                     JMAXI,
                     IDRTO,
                     IMAXO,
                     JMAXO,
                     KMAX,
                     IPRIME,
                     ISKIPI,
                     JSKIPI,
                     KSKIPI,
                     ISKIPO,
                     JSKIPO,
                     KSKIPO,
                     JCPU,
                    real, dimension(*) GRIDUI,
                    real, dimension(*) GRIDVI,
                    logical LUV,
                    real, dimension(*) GRIDUO,
                    real, dimension(*) GRIDVO,
                    logical LDZ,
                    real, dimension(*) GRIDDO,
                    real, dimension(*) GRIDZO,
                    logical LPS,
                    real, dimension(*) GRIDPO,
                    real, dimension(*) GRIDSO 
                    )
                    +
                    + +

                    This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields to a possibly different global cylindrical grid.

                    +

                    The wave-space can be either triangular or rhomboidal. Either grid-space can be either an equally-spaced grid (with or without pole points) or a Gaussian grid. The grid fields may have general indexing. The transforms are all multiprocessed. Over zonal wavenumber to ensure reproducibility. Transform several fields at a time to improve vectorization. Subprogram can be called from a multiprocessing environment.

                    +

                    PROGRAM HISTORY LOG:

                      +
                    • 96-02-29 IREDELL
                    • +
                    • 1998-12-15 IREDELL OPENMP DIRECTIVES INSERTED
                    • +
                    +
                    Parameters
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    IROMB- INTEGER SPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    MAXWV- INTEGER SPECTRAL TRUNCATION
                    IDRTI- INTEGER INPUT GRID IDENTIFIER (IDRTI=4 FOR GAUSSIAN GRID, IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXI- INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    JMAXI- INTEGER NUMBER OF INPUT LATITUDES.
                    IDRTO- INTEGER OUTPUT GRID IDENTIFIER (IDRTO=4 FOR GAUSSIAN GRID, IDRTO=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRTO=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    IMAXO- INTEGER EVEN NUMBER OF OUTPUT LONGITUDES.
                    JMAXO- INTEGER NUMBER OF OUTPUT LATITUDES.
                    KMAX- INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    IPRIME- INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN. (DEFAULTS TO 1 IF IPRIME=0) (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    ISKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPI=0)
                    JSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    KSKIPI- INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    ISKIPO- INTEGER SKIP NUMBER BETWEEN OUTPUT LONGITUDES (DEFAULTS TO 1 IF ISKIPO=0)
                    JSKIPO- INTEGER SKIP NUMBER BETWEEN OUTPUT LATITUDES FROM SOUTH (DEFAULTS TO -IMAXO IF JSKIPO=0)
                    KSKIPO- INTEGER SKIP NUMBER BETWEEN OUTPUT GRID FIELDS (DEFAULTS TO IMAXO*JMAXO IF KSKIPO=0)
                    JCPU- INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    GRIDUI- REAL (*) INPUT GRID U-WINDS
                    GRIDVI- REAL (*) INPUT GRID V-WINDS
                    LUV- LOGICAL FLAG WHETHER TO RETURN WINDS
                    LDZ- LOGICAL FLAG WHETHER TO RETURN DIVERGENCE AND VORTICITY
                    LPS- LOGICAL FLAG WHETHER TO RETURN POTENTIAL AND STREAMFCN
                    GRIDUO- REAL (*) OUTPUT U-WINDS IF LUV (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    GRIDVO- REAL (*) OUTPUT V-WINDS IF LUV (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    GRIDDO- REAL (*) OUTPUT DIVERGENCES IF LDZ (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    GRIDZO- REAL (*) OUTPUT VORTICITIES IF LDZ (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    GRIDPO- REAL (*) OUTPUT POTENTIALS IF LPS (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    GRIDSO- REAL (*) OUTPUT STREAMFCNS IF LPS (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    +
                    +
                    +

                    SUBPROGRAMS CALLED:

                      +
                    • SPWGET() GET WAVE-SPACE CONSTANTS
                    • +
                    • SPLAPLAC() COMPUTE LAPLACIAN IN SPECTRAL SPACE
                    • +
                    • SPTRAN() PERFORM A SCALAR SPHERICAL TRANSFORM
                    • +
                    • SPTRANV() PERFORM A VECTOR SPHERICAL TRANSFORM
                    • +
                    • NCPUS() GETS ENVIRONMENT NUMBER OF CPUS
                    • +
                    +

                    REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:

                    + + + + + + + + + + + + + + + + +
                    DIMENSION LINEAR QUADRATIC
                    IMAX 2*MAXWV+2 3*MAXWV/2*2+2
                    JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
                    JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
                    JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
                    JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
                    JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
                    JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
                    + +

                    Definition at line 90 of file sptrunv.f.

                    + +

                    References ncpus(), splaplac(), sptran(), sptranv(), and spwget().

                    + +

                    Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/sptrunv_8f.js b/ver-5.0.0/sptrunv_8f.js new file mode 100644 index 00000000..ce8c98f1 --- /dev/null +++ b/ver-5.0.0/sptrunv_8f.js @@ -0,0 +1,4 @@ +var sptrunv_8f = +[ + [ "sptrunv", "sptrunv_8f.html#a9aa39c13dd38585b3afb30cb2486817f", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/sptrunv_8f_source.html b/ver-5.0.0/sptrunv_8f_source.html new file mode 100644 index 00000000..c0f8849c --- /dev/null +++ b/ver-5.0.0/sptrunv_8f_source.html @@ -0,0 +1,267 @@ + + + + + + + +NCEPLIBS-ip: sptrunv.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    sptrunv.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C>
                    +
                    3 C> Spectrally truncate gridded vector fields
                    +
                    4 C> @author IREDELL @date 96-02-29
                    +
                    5 
                    +
                    6 C> This subprogram spectrally truncates vector fields
                    +
                    7 C> on a global cylindrical grid, returning the fields
                    +
                    8 C> to a possibly different global cylindrical grid.
                    +
                    9 C> The wave-space can be either triangular or rhomboidal.
                    +
                    10 C> Either grid-space can be either an equally-spaced grid
                    +
                    11 C> (with or without pole points) or a Gaussian grid.
                    +
                    12 C> The grid fields may have general indexing.
                    +
                    13 C> The transforms are all multiprocessed.
                    +
                    14 C> Over zonal wavenumber to ensure reproducibility.
                    +
                    15 C> Transform several fields at a time to improve vectorization.
                    +
                    16 C> Subprogram can be called from a multiprocessing environment.
                    +
                    17 C>
                    +
                    18 C> PROGRAM HISTORY LOG:
                    +
                    19 C> - 96-02-29 IREDELL
                    +
                    20 C> - 1998-12-15 IREDELL OPENMP DIRECTIVES INSERTED
                    +
                    21 C>
                    +
                    22 C> @param IROMB - INTEGER SPECTRAL DOMAIN SHAPE
                    +
                    23 C> (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
                    +
                    24 C> @param MAXWV - INTEGER SPECTRAL TRUNCATION
                    +
                    25 C> @param IDRTI - INTEGER INPUT GRID IDENTIFIER
                    +
                    26 C> (IDRTI=4 FOR GAUSSIAN GRID,
                    +
                    27 C> IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    28 C> IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    29 C> @param IMAXI - INTEGER EVEN NUMBER OF INPUT LONGITUDES.
                    +
                    30 C> @param JMAXI - INTEGER NUMBER OF INPUT LATITUDES.
                    +
                    31 C> @param IDRTO - INTEGER OUTPUT GRID IDENTIFIER
                    +
                    32 C> (IDRTO=4 FOR GAUSSIAN GRID,
                    +
                    33 C> IDRTO=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                    +
                    34 C> IDRTO=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
                    +
                    35 C> @param IMAXO - INTEGER EVEN NUMBER OF OUTPUT LONGITUDES.
                    +
                    36 C> @param JMAXO - INTEGER NUMBER OF OUTPUT LATITUDES.
                    +
                    37 C> @param KMAX - INTEGER NUMBER OF FIELDS TO TRANSFORM.
                    +
                    38 C> @param IPRIME - INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN.
                    +
                    39 C> (DEFAULTS TO 1 IF IPRIME=0)
                    +
                    40 C> (OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
                    +
                    41 C> @param ISKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES
                    +
                    42 C> (DEFAULTS TO 1 IF ISKIPI=0)
                    +
                    43 C> @param JSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH
                    +
                    44 C> (DEFAULTS TO -IMAXI IF JSKIPI=0)
                    +
                    45 C> @param KSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS
                    +
                    46 C> (DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
                    +
                    47 C> @param ISKIPO - INTEGER SKIP NUMBER BETWEEN OUTPUT LONGITUDES
                    +
                    48 C> (DEFAULTS TO 1 IF ISKIPO=0)
                    +
                    49 C> @param JSKIPO - INTEGER SKIP NUMBER BETWEEN OUTPUT LATITUDES FROM SOUTH
                    +
                    50 C> (DEFAULTS TO -IMAXO IF JSKIPO=0)
                    +
                    51 C> @param KSKIPO - INTEGER SKIP NUMBER BETWEEN OUTPUT GRID FIELDS
                    +
                    52 C> (DEFAULTS TO IMAXO*JMAXO IF KSKIPO=0)
                    +
                    53 C> @param JCPU - INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                    +
                    54 C> (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
                    +
                    55 C> @param GRIDUI - REAL (*) INPUT GRID U-WINDS
                    +
                    56 C> @param GRIDVI - REAL (*) INPUT GRID V-WINDS
                    +
                    57 C> @param LUV - LOGICAL FLAG WHETHER TO RETURN WINDS
                    +
                    58 C> @param LDZ - LOGICAL FLAG WHETHER TO RETURN DIVERGENCE AND VORTICITY
                    +
                    59 C> @param LPS - LOGICAL FLAG WHETHER TO RETURN POTENTIAL AND STREAMFCN
                    +
                    60 C> @param GRIDUO - REAL (*) OUTPUT U-WINDS IF LUV
                    +
                    61 C> (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    +
                    62 C> @param GRIDVO - REAL (*) OUTPUT V-WINDS IF LUV
                    +
                    63 C> (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    +
                    64 C> @param GRIDDO - REAL (*) OUTPUT DIVERGENCES IF LDZ
                    +
                    65 C> (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    +
                    66 C> @param GRIDZO - REAL (*) OUTPUT VORTICITIES IF LDZ
                    +
                    67 C> (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    +
                    68 C> @param GRIDPO - REAL (*) OUTPUT POTENTIALS IF LPS
                    +
                    69 C> (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    +
                    70 C> @param GRIDSO - REAL (*) OUTPUT STREAMFCNS IF LPS
                    +
                    71 C> (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
                    +
                    72 C>
                    +
                    73 C> SUBPROGRAMS CALLED:
                    +
                    74 C> - SPWGET() GET WAVE-SPACE CONSTANTS
                    +
                    75 C> - SPLAPLAC() COMPUTE LAPLACIAN IN SPECTRAL SPACE
                    +
                    76 C> - SPTRAN() PERFORM A SCALAR SPHERICAL TRANSFORM
                    +
                    77 C> - SPTRANV() PERFORM A VECTOR SPHERICAL TRANSFORM
                    +
                    78 C> - NCPUS() GETS ENVIRONMENT NUMBER OF CPUS
                    +
                    79 C>
                    +
                    80 C> REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:
                    +
                    81 C> DIMENSION |LINEAR |QUADRATIC
                    +
                    82 C> ----------------------- |--------- |-------------
                    +
                    83 C> IMAX |2*MAXWV+2 |3*MAXWV/2*2+2
                    +
                    84 C> JMAX (IDRT=4,IROMB=0) |1*MAXWV+1 |3*MAXWV/2+1
                    +
                    85 C> JMAX (IDRT=4,IROMB=1) |2*MAXWV+1 |5*MAXWV/2+1
                    +
                    86 C> JMAX (IDRT=0,IROMB=0) |2*MAXWV+3 |3*MAXWV/2*2+3
                    +
                    87 C> JMAX (IDRT=0,IROMB=1) |4*MAXWV+3 |5*MAXWV/2*2+3
                    +
                    88 C> JMAX (IDRT=256,IROMB=0) |2*MAXWV+1 |3*MAXWV/2*2+1
                    +
                    89 C> JMAX (IDRT=256,IROMB=1) |4*MAXWV+1 |5*MAXWV/2*2+1
                    +
                    90  SUBROUTINE sptrunv(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,
                    +
                    91  & IDRTO,IMAXO,JMAXO,KMAX,
                    +
                    92  & IPRIME,ISKIPI,JSKIPI,KSKIPI,
                    +
                    93  & ISKIPO,JSKIPO,KSKIPO,JCPU,GRIDUI,GRIDVI,
                    +
                    94  & LUV,GRIDUO,GRIDVO,LDZ,GRIDDO,GRIDZO,
                    +
                    95  & LPS,GRIDPO,GRIDSO)
                    +
                    96  LOGICAL LUV,LDZ,LPS
                    +
                    97  REAL GRIDUI(*),GRIDVI(*)
                    +
                    98  REAL GRIDUO(*),GRIDVO(*),GRIDDO(*),GRIDZO(*),GRIDPO(*),GRIDSO(*)
                    +
                    99  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    100  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    101  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    102  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    103  REAL WD((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    104  REAL WZ((MAXWV+1)*((IROMB+1)*MAXWV+2)/2*2+1,KMAX)
                    +
                    105 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    106 C TRANSFORM INPUT GRID TO WAVE
                    +
                    107  jc=jcpu
                    +
                    108  IF(jc.EQ.0) jc=ncpus()
                    +
                    109  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    110  mdim=2*mx+1
                    +
                    111  jn=-jskipi
                    +
                    112  IF(jn.EQ.0) jn=imaxi
                    +
                    113  js=-jn
                    +
                    114  inp=(jmaxi-1)*max(0,-jn)+1
                    +
                    115  isp=(jmaxi-1)*max(0,-js)+1
                    +
                    116  CALL sptranv(iromb,maxwv,idrti,imaxi,jmaxi,kmax,
                    +
                    117  & iprime,iskipi,jn,js,mdim,kskipi,0,0,jc,
                    +
                    118  & wd,wz,
                    +
                    119  & gridui(inp),gridui(isp),gridvi(inp),gridvi(isp),-1)
                    +
                    120 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    121 C TRANSFORM WAVE TO OUTPUT WINDS
                    +
                    122  jn=-jskipo
                    +
                    123  IF(jn.EQ.0) jn=imaxo
                    +
                    124  js=-jn
                    +
                    125  inp=(jmaxo-1)*max(0,-jn)+1
                    +
                    126  isp=(jmaxo-1)*max(0,-js)+1
                    +
                    127  IF(luv) THEN
                    +
                    128  CALL sptranv(iromb,maxwv,idrto,imaxo,jmaxo,kmax,
                    +
                    129  & 0,iskipo,jn,js,mdim,kskipo,0,0,jc,
                    +
                    130  & wd,wz,
                    +
                    131  & griduo(inp),griduo(isp),gridvo(inp),gridvo(isp),1)
                    +
                    132  ENDIF
                    +
                    133 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    134 C TRANSFORM WAVE TO OUTPUT DIVERGENCE AND VORTICITY
                    +
                    135  IF(ldz) THEN
                    +
                    136  CALL sptran(iromb,maxwv,idrto,imaxo,jmaxo,kmax,
                    +
                    137  & 0,iskipo,jn,js,mdim,kskipo,0,0,jc,
                    +
                    138  & wd,griddo(inp),griddo(isp),1)
                    +
                    139  CALL sptran(iromb,maxwv,idrto,imaxo,jmaxo,kmax,
                    +
                    140  & 0,iskipo,jn,js,mdim,kskipo,0,0,jc,
                    +
                    141  & wz,gridzo(inp),gridzo(isp),1)
                    +
                    142  ENDIF
                    +
                    143 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    144 C TRANSFORM WAVE TO OUTPUT POTENTIAL AND STREAMFUNCTION
                    +
                    145  IF(lps) THEN
                    +
                    146  CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    147 C$OMP PARALLEL DO
                    +
                    148  DO k=1,kmax
                    +
                    149  CALL splaplac(iromb,maxwv,enn1,wd(1,k),wd(1,k),-1)
                    +
                    150  CALL splaplac(iromb,maxwv,enn1,wz(1,k),wz(1,k),-1)
                    +
                    151  wd(1:2,k)=0.
                    +
                    152  wz(1:2,k)=0.
                    +
                    153  ENDDO
                    +
                    154  CALL sptran(iromb,maxwv,idrto,imaxo,jmaxo,kmax,
                    +
                    155  & 0,iskipo,jn,js,mdim,kskipo,0,0,jc,
                    +
                    156  & wd,gridpo(inp),gridpo(isp),1)
                    +
                    157  CALL sptran(iromb,maxwv,idrto,imaxo,jmaxo,kmax,
                    +
                    158  & 0,iskipo,jn,js,mdim,kskipo,0,0,jc,
                    +
                    159  & wz,gridso(inp),gridso(isp),1)
                    +
                    160  ENDIF
                    +
                    161 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    +
                    162  END
                    +
                    function ncpus()
                    Set number of CPUs - the number of processors over which to parallelize.
                    Definition: ncpus.F:24
                    +
                    subroutine splaplac(I, M, ENN1, Q, QD2, IDIR)
                    Computes the laplacian or the inverse laplacian of a scalar field in spectral space.
                    Definition: splaplac.f:25
                    +
                    subroutine sptran(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVE, GRIDN, GRIDS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of scalar quantities and...
                    Definition: sptran.f:88
                    +
                    subroutine sptranv(IROMB, MAXWV, IDRT, IMAX, JMAX, KMAX, IPRIME, ISKIP, JNSKIP, JSSKIP, KWSKIP, KGSKIP, JBEG, JEND, JCPU, WAVED, WAVEZ, GRIDUN, GRIDUS, GRIDVN, GRIDVS, IDIR)
                    This subprogram performs a spherical transform between spectral coefficients of divergences and curls...
                    Definition: sptranv.f:91
                    +
                    subroutine sptrunv(IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRIDUI, GRIDVI, LUV, GRIDUO, GRIDVO, LDZ, GRIDDO, GRIDZO, LPS, GRIDPO, GRIDSO)
                    This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields...
                    Definition: sptrunv.f:96
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spuv2dz_8f.html b/ver-5.0.0/spuv2dz_8f.html new file mode 100644 index 00000000..83f9967e --- /dev/null +++ b/ver-5.0.0/spuv2dz_8f.html @@ -0,0 +1,244 @@ + + + + + + + +NCEPLIBS-ip: spuv2dz.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spuv2dz.f File Reference
                    +
                    +
                    + +

                    Compute divergence and vorticity from winds. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spuv2dz (I, M, ENN1, ELONN1, EON, EONTOP, U, V, UTOP, VTOP, D, Z)
                     Computes the divergence and vorticity from wind components in spectral space. More...
                     
                    +

                    Detailed Description

                    +

                    Compute divergence and vorticity from winds.

                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition in file spuv2dz.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spuv2dz()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spuv2dz ( I,
                     M,
                    real, dimension((m+1)*((i+1)*m+2)/2) ENN1,
                    real, dimension((m+1)*((i+1)*m+2)/2) ELONN1,
                    real, dimension((m+1)*((i+1)*m+2)/2) EON,
                    real, dimension(m+1) EONTOP,
                    real, dimension((m+1)*((i+1)*m+2)) U,
                    real, dimension((m+1)*((i+1)*m+2)) V,
                    real, dimension(2*(m+1)) UTOP,
                    real, dimension(2*(m+1)) VTOP,
                    real, dimension((m+1)*((i+1)*m+2)) D,
                    real, dimension((m+1)*((i+1)*m+2)) Z 
                    )
                    +
                    + +

                    Computes the divergence and vorticity from wind components in spectral space.

                    +

                    Subprogram speps() should be called already.

                    +

                    If L is the zonal wavenumber, N is the total wavenumber, EPS(L,N)=SQRT((N**2-L**2)/(4*N**2-1)) and A is earth radius, then the divergence D is computed as:

                    + D(L,N)=I*L*A*U(L,N)
                    + +EPS(L,N+1)*N*A*V(L,N+1)-EPS(L,N)*(N+1)*A*V(L,N-1)
                    + 

                    and the vorticity Z is computed as:

                    + Z(L,N)=I*L*A*V(L,N)
                    + -EPS(L,N+1)*N*A*U(L,N+1)+EPS(L,N)*(N+1)*A*U(L,N-1)
                    + 

                    where U is the zonal wind and V is the meridional wind.

                    +

                    U and V are weighted by the secant of latitude.

                    +

                    Extra terms are used over top of the spectral domain.

                    +

                    Advantage is taken of the fact that EPS(L,L)=0 in order to vectorize over the entire spectral domain.

                    +
                    Parameters
                    + + + + + + + + + + + + + +
                    Iinteger spectral domain shape (0 for triangular, 1 for rhomboidal)
                    MINTEGER spectral truncation
                    ENN1((M+1)*((I+1)*M+2)/2) N*(N+1)/A**2
                    ELONN1((M+1)*((I+1)*M+2)/2) L/(N*(N+1))*A
                    EON((M+1)*((I+1)*M+2)/2) EPSILON/N*A
                    EONTOP(M+1) EPSILON/N*A over top
                    U((M+1)*((I+1)*M+2)) zonal wind (over coslat)
                    V((M+1)*((I+1)*M+2)) merid wind (over coslat)
                    UTOP(2*(M+1)) zonal wind (over coslat) over top
                    VTOP(2*(M+1)) merid wind (over coslat) over top
                    D((M+1)*((I+1)*M+2)) divergence
                    Z((M+1)*((I+1)*M+2)) vorticity
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition at line 48 of file spuv2dz.f.

                    + +

                    Referenced by sptranfv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spuv2dz_8f.js b/ver-5.0.0/spuv2dz_8f.js new file mode 100644 index 00000000..fb93c82c --- /dev/null +++ b/ver-5.0.0/spuv2dz_8f.js @@ -0,0 +1,4 @@ +var spuv2dz_8f = +[ + [ "spuv2dz", "spuv2dz_8f.html#a27edc2d10e0a76a45e4aaae58bf018b9", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spuv2dz_8f_source.html b/ver-5.0.0/spuv2dz_8f_source.html new file mode 100644 index 00000000..6ed36e93 --- /dev/null +++ b/ver-5.0.0/spuv2dz_8f_source.html @@ -0,0 +1,191 @@ + + + + + + + +NCEPLIBS-ip: spuv2dz.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spuv2dz.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Compute divergence and vorticity from winds.
                    +
                    3 C> @author Iredell @date 92-10-31
                    +
                    4 
                    +
                    5 C> Computes the divergence and vorticity from wind components
                    +
                    6 C> in spectral space.
                    +
                    7 C>
                    +
                    8 C> Subprogram speps() should be called already.
                    +
                    9 C>
                    +
                    10 C> If L is the zonal wavenumber, N is the total wavenumber,
                    +
                    11 C> EPS(L,N)=SQRT((N**2-L**2)/(4*N**2-1)) and A is earth radius,
                    +
                    12 C> then the divergence D is computed as:
                    +
                    13 C> <pre>
                    +
                    14 C> D(L,N)=I*L*A*U(L,N)
                    +
                    15 C> +EPS(L,N+1)*N*A*V(L,N+1)-EPS(L,N)*(N+1)*A*V(L,N-1)
                    +
                    16 C> </pre>
                    +
                    17 C>
                    +
                    18 C> and the vorticity Z is computed as:
                    +
                    19 C> <pre>
                    +
                    20 C> Z(L,N)=I*L*A*V(L,N)
                    +
                    21 C> -EPS(L,N+1)*N*A*U(L,N+1)+EPS(L,N)*(N+1)*A*U(L,N-1)
                    +
                    22 C> </pre>
                    +
                    23 C>
                    +
                    24 C> where U is the zonal wind and V is the meridional wind.
                    +
                    25 C>
                    +
                    26 C> U and V are weighted by the secant of latitude.
                    +
                    27 C>
                    +
                    28 C> Extra terms are used over top of the spectral domain.
                    +
                    29 C>
                    +
                    30 C> Advantage is taken of the fact that EPS(L,L)=0
                    +
                    31 C> in order to vectorize over the entire spectral domain.
                    +
                    32 C>
                    +
                    33 C> @param I integer spectral domain shape
                    +
                    34 C> (0 for triangular, 1 for rhomboidal)
                    +
                    35 C> @param M INTEGER spectral truncation
                    +
                    36 C> @param ENN1 ((M+1)*((I+1)*M+2)/2) N*(N+1)/A**2
                    +
                    37 C> @param ELONN1 ((M+1)*((I+1)*M+2)/2) L/(N*(N+1))*A
                    +
                    38 C> @param EON ((M+1)*((I+1)*M+2)/2) EPSILON/N*A
                    +
                    39 C> @param EONTOP (M+1) EPSILON/N*A over top
                    +
                    40 C> @param U ((M+1)*((I+1)*M+2)) zonal wind (over coslat)
                    +
                    41 C> @param V ((M+1)*((I+1)*M+2)) merid wind (over coslat)
                    +
                    42 C> @param UTOP (2*(M+1)) zonal wind (over coslat) over top
                    +
                    43 C> @param VTOP (2*(M+1)) merid wind (over coslat) over top
                    +
                    44 C> @param D ((M+1)*((I+1)*M+2)) divergence
                    +
                    45 C> @param Z ((M+1)*((I+1)*M+2)) vorticity
                    +
                    46 C>
                    +
                    47 C> @author Iredell @date 92-10-31
                    +
                    48  SUBROUTINE spuv2dz(I,M,ENN1,ELONN1,EON,EONTOP,U,V,UTOP,VTOP,D,Z)
                    +
                    49  REAL ENN1((M+1)*((I+1)*M+2)/2),ELONN1((M+1)*((I+1)*M+2)/2)
                    +
                    50  REAL EON((M+1)*((I+1)*M+2)/2),EONTOP(M+1)
                    +
                    51  REAL U((M+1)*((I+1)*M+2)),V((M+1)*((I+1)*M+2))
                    +
                    52  REAL UTOP(2*(M+1)),VTOP(2*(M+1))
                    +
                    53  REAL D((M+1)*((I+1)*M+2)),Z((M+1)*((I+1)*M+2))
                    +
                    54 
                    +
                    55 C COMPUTE TERMS FROM THE SPECTRAL DOMAIN
                    +
                    56  k=1
                    +
                    57  d(2*k-1)=0.
                    +
                    58  d(2*k)=0.
                    +
                    59  z(2*k-1)=0.
                    +
                    60  z(2*k)=0.
                    +
                    61  DO k=2,(m+1)*((i+1)*m+2)/2-1
                    +
                    62  d(2*k-1)=-elonn1(k)*u(2*k)+eon(k+1)*v(2*k+1)-eon(k)*v(2*k-3)
                    +
                    63  d(2*k)=elonn1(k)*u(2*k-1)+eon(k+1)*v(2*k+2)-eon(k)*v(2*k-2)
                    +
                    64  z(2*k-1)=-elonn1(k)*v(2*k)-eon(k+1)*u(2*k+1)+eon(k)*u(2*k-3)
                    +
                    65  z(2*k)=elonn1(k)*v(2*k-1)-eon(k+1)*u(2*k+2)+eon(k)*u(2*k-2)
                    +
                    66  ENDDO
                    +
                    67  k=(m+1)*((i+1)*m+2)/2
                    +
                    68  d(2*k-1)=-elonn1(k)*u(2*k)-eon(k)*v(2*k-3)
                    +
                    69  d(2*k)=elonn1(k)*u(2*k-1)-eon(k)*v(2*k-2)
                    +
                    70  z(2*k-1)=-elonn1(k)*v(2*k)+eon(k)*u(2*k-3)
                    +
                    71  z(2*k)=elonn1(k)*v(2*k-1)+eon(k)*u(2*k-2)
                    +
                    72 
                    +
                    73 C COMPUTE TERMS FROM OVER TOP OF THE SPECTRAL DOMAIN
                    +
                    74 CDIR$ IVDEP
                    +
                    75  DO l=0,m
                    +
                    76  k=l*(2*m+(i-1)*(l-1))/2+i*l+m+1
                    +
                    77  d(2*k-1)=d(2*k-1)+eontop(l+1)*vtop(2*l+1)
                    +
                    78  d(2*k)=d(2*k)+eontop(l+1)*vtop(2*l+2)
                    +
                    79  z(2*k-1)=z(2*k-1)-eontop(l+1)*utop(2*l+1)
                    +
                    80  z(2*k)=z(2*k)-eontop(l+1)*utop(2*l+2)
                    +
                    81  ENDDO
                    +
                    82 
                    +
                    83 C MULTIPLY BY LAPLACIAN TERM
                    +
                    84  DO k=2,(m+1)*((i+1)*m+2)/2
                    +
                    85  d(2*k-1)=d(2*k-1)*enn1(k)
                    +
                    86  d(2*k)=d(2*k)*enn1(k)
                    +
                    87  z(2*k-1)=z(2*k-1)*enn1(k)
                    +
                    88  z(2*k)=z(2*k)*enn1(k)
                    +
                    89  ENDDO
                    +
                    90  RETURN
                    +
                    91  END
                    +
                    subroutine spuv2dz(I, M, ENN1, ELONN1, EON, EONTOP, U, V, UTOP, VTOP, D, Z)
                    Computes the divergence and vorticity from wind components in spectral space.
                    Definition: spuv2dz.f:49
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spvar_8f.html b/ver-5.0.0/spvar_8f.html new file mode 100644 index 00000000..9ae5b7dd --- /dev/null +++ b/ver-5.0.0/spvar_8f.html @@ -0,0 +1,175 @@ + + + + + + + +NCEPLIBS-ip: spvar.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spvar.f File Reference
                    +
                    +
                    + +

                    Compute variance by total wavenumber. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spvar (I, M, Q, QVAR)
                     Computes the variances by total wavenumber of a scalar field in spectral space. More...
                     
                    +

                    Detailed Description

                    +

                    Compute variance by total wavenumber.

                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition in file spvar.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spvar()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spvar ( I,
                     M,
                    real, dimension((m+1)*((i+1)*m+2)) Q,
                    real, dimension(0:(i+1)*m) QVAR 
                    )
                    +
                    + +

                    Computes the variances by total wavenumber of a scalar field in spectral space.

                    +
                    Parameters
                    + + + + + +
                    Ispectral domain shape (0 for triangular, 1 for rhomboidal)
                    Mspectral truncation
                    Q((M+1)*((I+1)*M+2)) scalar field
                    QVAR(0:(I+1)*M) variances
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    92-10-31
                    + +

                    Definition at line 15 of file spvar.f.

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spvar_8f.js b/ver-5.0.0/spvar_8f.js new file mode 100644 index 00000000..4cfca763 --- /dev/null +++ b/ver-5.0.0/spvar_8f.js @@ -0,0 +1,4 @@ +var spvar_8f = +[ + [ "spvar", "spvar_8f.html#a840f95e09b8d930b38638a391933bee4", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spvar_8f_source.html b/ver-5.0.0/spvar_8f_source.html new file mode 100644 index 00000000..f79bdc57 --- /dev/null +++ b/ver-5.0.0/spvar_8f_source.html @@ -0,0 +1,135 @@ + + + + + + + +NCEPLIBS-ip: spvar.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spvar.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Compute variance by total wavenumber.
                    +
                    3 C> @author Iredell @date 92-10-31
                    +
                    4 
                    +
                    5 C> Computes the variances by total wavenumber
                    +
                    6 C> of a scalar field in spectral space.
                    +
                    7 C>
                    +
                    8 C> @param I spectral domain shape
                    +
                    9 C> (0 for triangular, 1 for rhomboidal)
                    +
                    10 C> @param M spectral truncation
                    +
                    11 C> @param Q ((M+1)*((I+1)*M+2)) scalar field
                    +
                    12 C> @param QVAR (0:(I+1)*M) variances
                    +
                    13 C>
                    +
                    14 C> @author Iredell @date 92-10-31
                    +
                    15  SUBROUTINE spvar(I,M,Q,QVAR)
                    +
                    16  REAL Q((M+1)*((I+1)*M+2))
                    +
                    17  REAL QVAR(0:(I+1)*M)
                    +
                    18 
                    +
                    19  l=0
                    +
                    20  DO n=0,m
                    +
                    21  ks=l*(2*m+(i-1)*(l-1))+2*n
                    +
                    22  qvar(n)=0.5*q(ks+1)**2
                    +
                    23  ENDDO
                    +
                    24  DO n=m+1,(i+1)*m
                    +
                    25  qvar(n)=0.
                    +
                    26  ENDDO
                    +
                    27  DO n=0,(i+1)*m
                    +
                    28  DO l=max(1,n-m),min(n,m)
                    +
                    29  ks=l*(2*m+(i-1)*(l-1))+2*n
                    +
                    30  qvar(n)=qvar(n)+q(ks+1)**2+q(ks+2)**2
                    +
                    31  ENDDO
                    +
                    32  ENDDO
                    +
                    33 
                    +
                    34  RETURN
                    +
                    35  END
                    +
                    subroutine spvar(I, M, Q, QVAR)
                    Computes the variances by total wavenumber of a scalar field in spectral space.
                    Definition: spvar.f:16
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spwget_8f.html b/ver-5.0.0/spwget_8f.html new file mode 100644 index 00000000..6cbd0401 --- /dev/null +++ b/ver-5.0.0/spwget_8f.html @@ -0,0 +1,208 @@ + + + + + + + +NCEPLIBS-ip: spwget.f File Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    spwget.f File Reference
                    +
                    +
                    + +

                    Get wave-space constants. +More...

                    + +

                    Go to the source code of this file.

                    + + + + + +

                    +Functions/Subroutines

                    subroutine spwget (IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                     This subprogram gets wave-space constants. More...
                     
                    +

                    Detailed Description

                    +

                    Get wave-space constants.

                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    + +

                    Definition in file spwget.f.

                    +

                    Function/Subroutine Documentation

                    + +

                    ◆ spwget()

                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    subroutine spwget ( IROMB,
                     MAXWV,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) EPS,
                    real, dimension(maxwv+1) EPSTOP,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) ENN1,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) ELONN1,
                    real, dimension((maxwv+1)*((iromb+1)*maxwv+2)/2) EON,
                    real, dimension(maxwv+1) EONTOP 
                    )
                    +
                    + +

                    This subprogram gets wave-space constants.

                    +
                    Parameters
                    + + + + + + + + + +
                    IROMBspectral domain shape (0 for triangular, 1 for rhomboidal)
                    MAXWVspectral truncation
                    EPS
                    EPSTOP
                    ENN1
                    ELONN1
                    EON
                    EONTOP
                    +
                    +
                    +
                    Author
                    Iredell
                    +
                    Date
                    96-02-29
                    +
                    + +

                    Definition at line 17 of file spwget.f.

                    + +

                    References speps().

                    + +

                    Referenced by sptgpm(), sptgpmd(), sptgpmv(), sptgps(), sptgpsd(), sptgpsv(), sptgpt(), sptgptd(), sptgptsd(), sptgptv(), sptgptvd(), sptrand(), sptranf0(), sptrungv(), sptrunl(), sptrunmv(), sptrunsv(), and sptrunv().

                    + +
                    +
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/spwget_8f.js b/ver-5.0.0/spwget_8f.js new file mode 100644 index 00000000..3fba636e --- /dev/null +++ b/ver-5.0.0/spwget_8f.js @@ -0,0 +1,4 @@ +var spwget_8f = +[ + [ "spwget", "spwget_8f.html#a9b6ce78350f7adf2fed874a18312c7a6", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/spwget_8f_source.html b/ver-5.0.0/spwget_8f_source.html new file mode 100644 index 00000000..4f2632a1 --- /dev/null +++ b/ver-5.0.0/spwget_8f_source.html @@ -0,0 +1,127 @@ + + + + + + + +NCEPLIBS-ip: spwget.f Source File + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    spwget.f
                    +
                    +
                    +Go to the documentation of this file.
                    1 C> @file
                    +
                    2 C> @brief Get wave-space constants.
                    +
                    3 C> @author Iredell @date 96-02-29
                    +
                    4 
                    +
                    5 C> This subprogram gets wave-space constants.
                    +
                    6 C>
                    +
                    7 C> @param IROMB spectral domain shape (0 for triangular, 1 for rhomboidal)
                    +
                    8 C> @param MAXWV spectral truncation
                    +
                    9 C> @param EPS
                    +
                    10 C> @param EPSTOP
                    +
                    11 C> @param ENN1
                    +
                    12 C> @param ELONN1
                    +
                    13 C> @param EON
                    +
                    14 C> @param EONTOP
                    +
                    15 C>
                    +
                    16 C> @author Iredell @date 96-02-29
                    +
                    17  SUBROUTINE spwget(IROMB,MAXWV,EPS,EPSTOP,ENN1,ELONN1,EON,EONTOP)
                    +
                    18  REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
                    +
                    19  REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    20  REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
                    +
                    21  REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
                    +
                    22 
                    +
                    23  mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
                    +
                    24  mxtop=maxwv+1
                    +
                    25  CALL speps(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
                    +
                    26  END
                    +
                    subroutine speps(I, M, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    Computes constant fields indexed in the spectral domain in "IBM ORDER" (Zonal wavenumber is the slowe...
                    Definition: speps.f:26
                    +
                    subroutine spwget(IROMB, MAXWV, EPS, EPSTOP, ENN1, ELONN1, EON, EONTOP)
                    This subprogram gets wave-space constants.
                    Definition: spwget.f:18
                    +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html b/ver-5.0.0/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html new file mode 100644 index 00000000..1805006f --- /dev/null +++ b/ver-5.0.0/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html @@ -0,0 +1,843 @@ + + + + + + + +NCEPLIBS-ip: ip_equid_cylind_grid_mod::ip_equid_cylind_grid Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_equid_cylind_grid_mod::ip_equid_cylind_grid Type Reference
                    +
                    +
                    +
                    +Inheritance diagram for ip_equid_cylind_grid_mod::ip_equid_cylind_grid:
                    +
                    +
                    + + +ip_grid_mod::ip_grid + +
                    + + + + + + + + + + + + + + + + + +

                    +Private Member Functions

                    procedure field_pos
                     Field position for a given grid point. More...
                     
                    procedure gdswzd => gdswzd_equid_cylind
                     See gdswzd_equid_cylind(). More...
                     
                    generic init => init_grib1, init_grib2
                     Init subprogram. More...
                     
                    procedure init_grib1
                     Init GRIB1. More...
                     
                    procedure init_grib2
                     Init GRIB2. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Private Attributes

                    class(ip_grid_descriptor), allocatable descriptor
                     Descriptor. More...
                     
                    real dlat
                     Di — i direction increment. More...
                     
                    real dlon
                     Dj — j direction increment. More...
                     
                    real eccen_squared
                     Eccentricity of the Earth squared (e^2). More...
                     
                    real hi
                     Scan mode in the 'i' direction. More...
                     
                    integer im
                     Number of x points. More...
                     
                    integer iwrap
                     x wraparound increment (0 if no wraparound). More...
                     
                    integer jm
                     Number of y points. More...
                     
                    integer jwrap1
                     y wraparound lower pivot point (0 if no wraparound). More...
                     
                    integer jwrap2
                     y wraparound upper pivot point (0 if no wraparound). More...
                     
                    integer kscan
                     Mass/wind flag for staggered diagonal (0 if mass; 1 if wind). More...
                     
                    integer nm
                     Total number of points. More...
                     
                    integer nscan
                     
                    integer nscan_field_pos
                     nscan for field_pos routine. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    real rlat1
                     Latitude of first grid point. More...
                     
                    real rlat2
                     Latitude of last grid point. More...
                     
                    real rlon1
                     Longitude of first grid point. More...
                     
                    real rlon2
                     Longitude of last grid point. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 26 of file ip_equid_cylind_grid_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ field_pos()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_mod::ip_grid::field_pos
                    +
                    +privateinherited
                    +
                    + +

                    Field position for a given grid point.

                    +
                    Returns
                    Integer position in grib field to locate grid point.
                    + +

                    Definition at line 82 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_equid_cylind_grid_mod::ip_equid_cylind_grid::gdswzd
                    +
                    +private
                    +
                    + +

                    See gdswzd_equid_cylind().

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 37 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    generic ip_grid_mod::ip_grid::init
                    +
                    +privateinherited
                    +
                    + +

                    Init subprogram.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 84 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib1
                    +
                    +private
                    +
                    + +

                    Init GRIB1.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 35 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_equid_cylind_grid_mod::ip_equid_cylind_grid::init_grib2
                    +
                    +private
                    +
                    + +

                    Init GRIB2.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 36 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ descriptor

                    + +
                    +
                    + + + + + +
                    + + + + +
                    class(ip_grid_descriptor), allocatable ip_grid_mod::ip_grid::descriptor
                    +
                    +privateinherited
                    +
                    + +

                    Descriptor.

                    + +

                    Definition at line 53 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dlat

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_equid_cylind_grid_mod::ip_equid_cylind_grid::dlat
                    +
                    +private
                    +
                    + +

                    Di — i direction increment.

                    +

                    GRIB2, Section 3, octets 64-67.

                    + +

                    Definition at line 32 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dlon

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_equid_cylind_grid_mod::ip_equid_cylind_grid::dlon
                    +
                    +private
                    +
                    + +

                    Dj — j direction increment.

                    +

                    GRIB2, Section 3, octets 68-71.

                    + +

                    Definition at line 33 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ eccen_squared

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::eccen_squared
                    +
                    +privateinherited
                    +
                    + +

                    Eccentricity of the Earth squared (e^2).

                    + +

                    Definition at line 72 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ hi

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_equid_cylind_grid_mod::ip_equid_cylind_grid::hi
                    +
                    +private
                    +
                    + +

                    Scan mode in the 'i' direction.

                    +

                    GRIB2, Section 3, octet 72.

                    + +

                    Definition at line 27 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ im

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::im
                    +
                    +privateinherited
                    +
                    + +

                    Number of x points.

                    + +

                    Definition at line 55 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ iwrap

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::iwrap
                    +
                    +privateinherited
                    +
                    + +

                    x wraparound increment (0 if no wraparound).

                    + +

                    Definition at line 68 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jm
                    +
                    +privateinherited
                    +
                    + +

                    Number of y points.

                    + +

                    Definition at line 56 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap1
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound lower pivot point (0 if no wraparound).

                    + +

                    Definition at line 69 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap2
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound upper pivot point (0 if no wraparound).

                    + +

                    Definition at line 70 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ kscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::kscan
                    +
                    +privateinherited
                    +
                    + +

                    Mass/wind flag for staggered diagonal (0 if mass; 1 if wind).

                    + +

                    Definition at line 64 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nm
                    +
                    +privateinherited
                    +
                    + +

                    Total number of points.

                    + +

                    Definition at line 57 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan
                    +
                    +privateinherited
                    +
                    +
                    Parameters
                    + + +
                    Scanningmode.
                      +
                    • 0 if x first then y;
                    • +
                    • 1 if y first then x;
                    • +
                    • 3 if staggered diagonal like projection 203.
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 63 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan_field_pos

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan_field_pos
                    +
                    +privateinherited
                    +
                    + +

                    nscan for field_pos routine.

                    +

                    Can be different than nscan due to differences in grib/grib2.

                    + +

                    Definition at line 66 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::rerth
                    +
                    +privateinherited
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 71 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlat1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlat1
                    +
                    +private
                    +
                    + +

                    Latitude of first grid point.

                    +

                    GRIB2, Section 3, octets 47-50.

                    + +

                    Definition at line 28 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlat2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlat2
                    +
                    +private
                    +
                    + +

                    Latitude of last grid point.

                    +

                    GRIB2, Section 3, octets 56-59.

                    + +

                    Definition at line 30 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon1
                    +
                    +private
                    +
                    + +

                    Longitude of first grid point.

                    +

                    GRIB2, Section 3, octets 51-54.

                    + +

                    Definition at line 29 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_equid_cylind_grid_mod::ip_equid_cylind_grid::rlon2
                    +
                    +private
                    +
                    + +

                    Longitude of last grid point.

                    +

                    GRIB2, Section 3, octets 60-63.

                    + +

                    Definition at line 31 of file ip_equid_cylind_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.js b/ver-5.0.0/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.js new file mode 100644 index 00000000..39a1c72a --- /dev/null +++ b/ver-5.0.0/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.js @@ -0,0 +1,27 @@ +var structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid = +[ + [ "field_pos", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179", null ], + [ "gdswzd", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa1023c3efed20a990b75f937bbcac6a3", null ], + [ "init", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c", null ], + [ "init_grib1", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a68fb7543888cc76885560709184e7d70", null ], + [ "init_grib2", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a8dd212953e754964770fa1c3d4bcd3db", null ], + [ "descriptor", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a4a2a0dab09f05931d12615b0ac74bc51", null ], + [ "dlat", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a6bd00527219fc596b2c2a7ba47fec719", null ], + [ "dlon", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ae675dc8c49e64700d941eadc31e8f4e7", null ], + [ "eccen_squared", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a180a5da6c470fac34b8439d4c0a32d2a", null ], + [ "hi", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#afb1ebcfab0d637688bcac84cbc8582fc", null ], + [ "im", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc", null ], + [ "iwrap", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ae179622b9a4c764a5ca90385330941ed", null ], + [ "jm", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a41a2a38288864520d8c50854d1843f87", null ], + [ "jwrap1", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a92976f110dd7e823799991137ac970a1", null ], + [ "jwrap2", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#ae70be8cebcd217a49be4da1cebfc19d2", null ], + [ "kscan", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a084603b1c052e76c3335fea2e887cfce", null ], + [ "nm", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30", null ], + [ "nscan", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18", null ], + [ "nscan_field_pos", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a0640093c52461763f904cc2f12c96b6c", null ], + [ "rerth", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8", null ], + [ "rlat1", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a493e017343795e89f794bae5229eb6a7", null ], + [ "rlat2", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#acfd62fa8199f9b57b555364bca920e42", null ], + [ "rlon1", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#aa927f5ecca3f2880ad88e60c8d4b8871", null ], + [ "rlon2", "structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.html#a1e5b9f8ab3de743b5e392478694154ea", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.png b/ver-5.0.0/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.png new file mode 100644 index 00000000..54429415 Binary files /dev/null and b/ver-5.0.0/structip__equid__cylind__grid__mod_1_1ip__equid__cylind__grid.png differ diff --git a/ver-5.0.0/structip__gaussian__grid__mod_1_1ip__gaussian__grid.html b/ver-5.0.0/structip__gaussian__grid__mod_1_1ip__gaussian__grid.html new file mode 100644 index 00000000..e4ccb16b --- /dev/null +++ b/ver-5.0.0/structip__gaussian__grid__mod_1_1ip__gaussian__grid.html @@ -0,0 +1,873 @@ + + + + + + + +NCEPLIBS-ip: ip_gaussian_grid_mod::ip_gaussian_grid Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_gaussian_grid_mod::ip_gaussian_grid Type Reference
                    +
                    +
                    +
                    +Inheritance diagram for ip_gaussian_grid_mod::ip_gaussian_grid:
                    +
                    +
                    + + +ip_grid_mod::ip_grid + +
                    + + + + + + + + + + + + + + + + + +

                    +Private Member Functions

                    procedure field_pos
                     Field position for a given grid point. More...
                     
                    procedure gdswzd => gdswzd_gaussian
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids. More...
                     
                    generic init => init_grib1, init_grib2
                     Init subprogram. More...
                     
                    procedure init_grib1
                     Initializes a gaussian grid given a grib1_descriptor object. More...
                     
                    procedure init_grib2
                     Initializes a gaussian grid given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Private Attributes

                    class(ip_grid_descriptor), allocatable descriptor
                     Descriptor. More...
                     
                    real dlon
                     "i"-direction increment. More...
                     
                    real eccen_squared
                     Eccentricity of the Earth squared (e^2). More...
                     
                    real hi
                     Scan mode flag in 'i' direction. More...
                     
                    integer im
                     Number of x points. More...
                     
                    integer iwrap
                     x wraparound increment (0 if no wraparound). More...
                     
                    integer jg
                     Number of parallels between the equator and pole times 2. More...
                     
                    integer jh
                     Scan mode flag in 'j' direction. More...
                     
                    integer jm
                     Number of y points. More...
                     
                    integer jscan
                     Scanning mode in the 'j' direction. More...
                     
                    integer jwrap1
                     y wraparound lower pivot point (0 if no wraparound). More...
                     
                    integer jwrap2
                     y wraparound upper pivot point (0 if no wraparound). More...
                     
                    integer kscan
                     Mass/wind flag for staggered diagonal (0 if mass; 1 if wind). More...
                     
                    integer nm
                     Total number of points. More...
                     
                    integer nscan
                     
                    integer nscan_field_pos
                     nscan for field_pos routine. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    real rlat1
                     Latitude of first grid point. More...
                     
                    real rlon1
                     Longitude of first grid point. More...
                     
                    real rlon2
                     Longitude of last grid point. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 24 of file ip_gaussian_grid_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ field_pos()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_mod::ip_grid::field_pos
                    +
                    +privateinherited
                    +
                    + +

                    Field position for a given grid point.

                    +
                    Returns
                    Integer position in grib field to locate grid point.
                    + +

                    Definition at line 82 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_gaussian_grid_mod::ip_gaussian_grid::gdswzd
                    +
                    +private
                    +
                    + +

                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 40 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    generic ip_grid_mod::ip_grid::init
                    +
                    +privateinherited
                    +
                    + +

                    Init subprogram.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 84 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_gaussian_grid_mod::ip_gaussian_grid::init_grib1
                    +
                    +private
                    +
                    + +

                    Initializes a gaussian grid given a grib1_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 35 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_gaussian_grid_mod::ip_gaussian_grid::init_grib2
                    +
                    +private
                    +
                    + +

                    Initializes a gaussian grid given a grib2_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 37 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ descriptor

                    + +
                    +
                    + + + + + +
                    + + + + +
                    class(ip_grid_descriptor), allocatable ip_grid_mod::ip_grid::descriptor
                    +
                    +privateinherited
                    +
                    + +

                    Descriptor.

                    + +

                    Definition at line 53 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dlon

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_gaussian_grid_mod::ip_gaussian_grid::dlon
                    +
                    +private
                    +
                    + +

                    "i"-direction increment.

                    +

                    GRIB2 Section 3, octets 64-67.

                    + +

                    Definition at line 26 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ eccen_squared

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::eccen_squared
                    +
                    +privateinherited
                    +
                    + +

                    Eccentricity of the Earth squared (e^2).

                    + +

                    Definition at line 72 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ hi

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_gaussian_grid_mod::ip_gaussian_grid::hi
                    +
                    +private
                    +
                    + +

                    Scan mode flag in 'i' direction.

                    +

                    When '1' points scan from W to E. When "-1" points scan from E to W.

                    + +

                    Definition at line 30 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ im

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::im
                    +
                    +privateinherited
                    +
                    + +

                    Number of x points.

                    + +

                    Definition at line 55 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ iwrap

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::iwrap
                    +
                    +privateinherited
                    +
                    + +

                    x wraparound increment (0 if no wraparound).

                    + +

                    Definition at line 68 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jg

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_gaussian_grid_mod::ip_gaussian_grid::jg
                    +
                    +private
                    +
                    + +

                    Number of parallels between the equator and pole times 2.

                    +

                    GRIB2 Section 3, octets 68-71.

                    + +

                    Definition at line 31 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jh

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_gaussian_grid_mod::ip_gaussian_grid::jh
                    +
                    +private
                    +
                    + +

                    Scan mode flag in 'j' direction.

                    +

                    When '1' points scan from N to S. When "-1" points scan from S to N.

                    + +

                    Definition at line 25 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jm
                    +
                    +privateinherited
                    +
                    + +

                    Number of y points.

                    + +

                    Definition at line 56 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_gaussian_grid_mod::ip_gaussian_grid::jscan
                    +
                    +private
                    +
                    + +

                    Scanning mode in the 'j' direction.

                    +

                    GRIB2 Section 3, octet 72.

                    + +

                    Definition at line 32 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap1
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound lower pivot point (0 if no wraparound).

                    + +

                    Definition at line 69 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap2
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound upper pivot point (0 if no wraparound).

                    + +

                    Definition at line 70 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ kscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::kscan
                    +
                    +privateinherited
                    +
                    + +

                    Mass/wind flag for staggered diagonal (0 if mass; 1 if wind).

                    + +

                    Definition at line 64 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nm
                    +
                    +privateinherited
                    +
                    + +

                    Total number of points.

                    + +

                    Definition at line 57 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan
                    +
                    +privateinherited
                    +
                    +
                    Parameters
                    + + +
                    Scanningmode.
                      +
                    • 0 if x first then y;
                    • +
                    • 1 if y first then x;
                    • +
                    • 3 if staggered diagonal like projection 203.
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 63 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan_field_pos

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan_field_pos
                    +
                    +privateinherited
                    +
                    + +

                    nscan for field_pos routine.

                    +

                    Can be different than nscan due to differences in grib/grib2.

                    + +

                    Definition at line 66 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::rerth
                    +
                    +privateinherited
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 71 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlat1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_gaussian_grid_mod::ip_gaussian_grid::rlat1
                    +
                    +private
                    +
                    + +

                    Latitude of first grid point.

                    +

                    GRIB2 Section 3, octets 47-50.

                    + +

                    Definition at line 27 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_gaussian_grid_mod::ip_gaussian_grid::rlon1
                    +
                    +private
                    +
                    + +

                    Longitude of first grid point.

                    +

                    GRIB2 Section 3, octets 51-54.

                    + +

                    Definition at line 28 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_gaussian_grid_mod::ip_gaussian_grid::rlon2
                    +
                    +private
                    +
                    + +

                    Longitude of last grid point.

                    +

                    GRIB2 Section 3, octets 60-63.

                    + +

                    Definition at line 29 of file ip_gaussian_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__gaussian__grid__mod_1_1ip__gaussian__grid.js b/ver-5.0.0/structip__gaussian__grid__mod_1_1ip__gaussian__grid.js new file mode 100644 index 00000000..ea089373 --- /dev/null +++ b/ver-5.0.0/structip__gaussian__grid__mod_1_1ip__gaussian__grid.js @@ -0,0 +1,28 @@ +var structip__gaussian__grid__mod_1_1ip__gaussian__grid = +[ + [ "field_pos", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179", null ], + [ "gdswzd", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a7ce52d987d2bd2442053042c03f96885", null ], + [ "init", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c", null ], + [ "init_grib1", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#afd3658924783d5dbbd3fe5f07d5b60a7", null ], + [ "init_grib2", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a378b72a1b6090acb90a36385ab9eda5a", null ], + [ "descriptor", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a4a2a0dab09f05931d12615b0ac74bc51", null ], + [ "dlon", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a35c454d320c59a6c71c4aebb881abcb8", null ], + [ "eccen_squared", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a180a5da6c470fac34b8439d4c0a32d2a", null ], + [ "hi", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#ae71229713fc9322e23140541993459fc", null ], + [ "im", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc", null ], + [ "iwrap", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#ae179622b9a4c764a5ca90385330941ed", null ], + [ "jg", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a110f99e158a977a1679133235fa06c34", null ], + [ "jh", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a549ccd3ce1f5c75d99e8e04d4d4341b4", null ], + [ "jm", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a41a2a38288864520d8c50854d1843f87", null ], + [ "jscan", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3e199827f764b162a14515e837c28903", null ], + [ "jwrap1", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a92976f110dd7e823799991137ac970a1", null ], + [ "jwrap2", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#ae70be8cebcd217a49be4da1cebfc19d2", null ], + [ "kscan", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a084603b1c052e76c3335fea2e887cfce", null ], + [ "nm", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30", null ], + [ "nscan", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18", null ], + [ "nscan_field_pos", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a0640093c52461763f904cc2f12c96b6c", null ], + [ "rerth", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8", null ], + [ "rlat1", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#acdf76c4b3444d0d85dbf9ee09b5f35fc", null ], + [ "rlon1", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a583517b74d3c1c1b354fefe0d6871c4d", null ], + [ "rlon2", "structip__gaussian__grid__mod_1_1ip__gaussian__grid.html#a3794a22c4866631c6b5bc6a8871e3e44", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__gaussian__grid__mod_1_1ip__gaussian__grid.png b/ver-5.0.0/structip__gaussian__grid__mod_1_1ip__gaussian__grid.png new file mode 100644 index 00000000..8937e993 Binary files /dev/null and b/ver-5.0.0/structip__gaussian__grid__mod_1_1ip__gaussian__grid.png differ diff --git a/ver-5.0.0/structip__grid__descriptor__mod_1_1grib1__descriptor.html b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib1__descriptor.html new file mode 100644 index 00000000..54b0689e --- /dev/null +++ b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib1__descriptor.html @@ -0,0 +1,249 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_descriptor_mod::grib1_descriptor Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_descriptor_mod::grib1_descriptor Type Reference
                    +
                    +
                    + +

                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array. + More...

                    +
                    +Inheritance diagram for ip_grid_descriptor_mod::grib1_descriptor:
                    +
                    +
                    + + +ip_grid_descriptor_mod::ip_grid_descriptor + +
                    + + + + + + + + +

                    +Private Member Functions

                    procedure is_same_grid
                     Test whether two grid descriptors are the same. More...
                     
                    procedure is_same_grid_grib1
                     Test whether two grid descriptors are the same. More...
                     
                    + + + + + + + +

                    +Private Attributes

                    integer, dimension(200) gds
                     Grib-1 grib descriptor section (GDS) More...
                     
                    integer grid_num
                     Integer representing the grid type (see *_GRID_ID_GRIB1/2 in ip_grid_mod). More...
                     
                    +

                    Detailed Description

                    +

                    Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.

                    +
                    Date
                    July 2021
                    + +

                    Definition at line 38 of file ip_grid_descriptor_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ is_same_grid()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_descriptor_mod::ip_grid_descriptor::is_same_grid
                    +
                    +privateinherited
                    +
                    + +

                    Test whether two grid descriptors are the same.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 32 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    + +

                    ◆ is_same_grid_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_descriptor_mod::grib1_descriptor::is_same_grid_grib1
                    +
                    +private
                    +
                    + +

                    Test whether two grid descriptors are the same.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 42 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ gds

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer, dimension(200) ip_grid_descriptor_mod::grib1_descriptor::gds
                    +
                    +private
                    +
                    + +

                    Grib-1 grib descriptor section (GDS)

                    + +

                    Definition at line 39 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    + +

                    ◆ grid_num

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_descriptor_mod::ip_grid_descriptor::grid_num
                    +
                    +privateinherited
                    +
                    + +

                    Integer representing the grid type (see *_GRID_ID_GRIB1/2 in ip_grid_mod).

                    + +

                    Definition at line 29 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__grid__descriptor__mod_1_1grib1__descriptor.js b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib1__descriptor.js new file mode 100644 index 00000000..af5c5429 --- /dev/null +++ b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib1__descriptor.js @@ -0,0 +1,7 @@ +var structip__grid__descriptor__mod_1_1grib1__descriptor = +[ + [ "is_same_grid", "structip__grid__descriptor__mod_1_1grib1__descriptor.html#a9da102dac348a63ffce6556ed5da81b6", null ], + [ "is_same_grid_grib1", "structip__grid__descriptor__mod_1_1grib1__descriptor.html#a33b4fc04d218c73e3c4d061163dcbc95", null ], + [ "gds", "structip__grid__descriptor__mod_1_1grib1__descriptor.html#a08920c194e39d562fbf527939f0ac6c9", null ], + [ "grid_num", "structip__grid__descriptor__mod_1_1grib1__descriptor.html#a6d4598dc4bbf46e059f636715cc390f1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__grid__descriptor__mod_1_1grib1__descriptor.png b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib1__descriptor.png new file mode 100644 index 00000000..1ca1b0c0 Binary files /dev/null and b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib1__descriptor.png differ diff --git a/ver-5.0.0/structip__grid__descriptor__mod_1_1grib2__descriptor.html b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib2__descriptor.html new file mode 100644 index 00000000..f8a20292 --- /dev/null +++ b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib2__descriptor.html @@ -0,0 +1,307 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_descriptor_mod::grib2_descriptor Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_descriptor_mod::grib2_descriptor Type Reference
                    +
                    +
                    + +

                    Grib-2 descriptor containing a grib2 GDT represented by an integer array. + More...

                    +
                    +Inheritance diagram for ip_grid_descriptor_mod::grib2_descriptor:
                    +
                    +
                    + + +ip_grid_descriptor_mod::ip_grid_descriptor + +
                    + + + + + + + + +

                    +Private Member Functions

                    procedure is_same_grid
                     Test whether two grid descriptors are the same. More...
                     
                    procedure is_same_grid_grib2
                     Test whether two grid descriptors are the same. More...
                     
                    + + + + + + + + + + + + + +

                    +Private Attributes

                    integer gdt_len
                     Length of the template. More...
                     
                    integer gdt_num
                     Grid number which represents grid type. More...
                     
                    integer, dimension(:), allocatable gdt_tmpl
                     Grib-2 grid definition template. More...
                     
                    integer grid_num
                     Integer representing the grid type (see *_GRID_ID_GRIB1/2 in ip_grid_mod). More...
                     
                    +

                    Detailed Description

                    +

                    Grib-2 descriptor containing a grib2 GDT represented by an integer array.

                    +
                    Date
                    July 2021
                    + +

                    Definition at line 47 of file ip_grid_descriptor_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ is_same_grid()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_descriptor_mod::ip_grid_descriptor::is_same_grid
                    +
                    +privateinherited
                    +
                    + +

                    Test whether two grid descriptors are the same.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 32 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    + +

                    ◆ is_same_grid_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_descriptor_mod::grib2_descriptor::is_same_grid_grib2
                    +
                    +private
                    +
                    + +

                    Test whether two grid descriptors are the same.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 53 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ gdt_len

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_descriptor_mod::grib2_descriptor::gdt_len
                    +
                    +private
                    +
                    + +

                    Length of the template.

                    + +

                    Definition at line 49 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdt_num

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_descriptor_mod::grib2_descriptor::gdt_num
                    +
                    +private
                    +
                    + +

                    Grid number which represents grid type.

                    + +

                    Definition at line 48 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdt_tmpl

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer, dimension(:), allocatable ip_grid_descriptor_mod::grib2_descriptor::gdt_tmpl
                    +
                    +private
                    +
                    + +

                    Grib-2 grid definition template.

                    + +

                    Definition at line 50 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    + +

                    ◆ grid_num

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_descriptor_mod::ip_grid_descriptor::grid_num
                    +
                    +privateinherited
                    +
                    + +

                    Integer representing the grid type (see *_GRID_ID_GRIB1/2 in ip_grid_mod).

                    + +

                    Definition at line 29 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__grid__descriptor__mod_1_1grib2__descriptor.js b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib2__descriptor.js new file mode 100644 index 00000000..23620eb7 --- /dev/null +++ b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib2__descriptor.js @@ -0,0 +1,9 @@ +var structip__grid__descriptor__mod_1_1grib2__descriptor = +[ + [ "is_same_grid", "structip__grid__descriptor__mod_1_1grib2__descriptor.html#a9da102dac348a63ffce6556ed5da81b6", null ], + [ "is_same_grid_grib2", "structip__grid__descriptor__mod_1_1grib2__descriptor.html#ae27b09a835144baf782e2cde0c1ea013", null ], + [ "gdt_len", "structip__grid__descriptor__mod_1_1grib2__descriptor.html#abf8e6d212308608a039e8e97c05c4a06", null ], + [ "gdt_num", "structip__grid__descriptor__mod_1_1grib2__descriptor.html#aa5dd78817926e0246f93819ab7037e19", null ], + [ "gdt_tmpl", "structip__grid__descriptor__mod_1_1grib2__descriptor.html#a3a90e1ef19332a1d8ec1f6a3193c6ebe", null ], + [ "grid_num", "structip__grid__descriptor__mod_1_1grib2__descriptor.html#a6d4598dc4bbf46e059f636715cc390f1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__grid__descriptor__mod_1_1grib2__descriptor.png b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib2__descriptor.png new file mode 100644 index 00000000..8ad07329 Binary files /dev/null and b/ver-5.0.0/structip__grid__descriptor__mod_1_1grib2__descriptor.png differ diff --git a/ver-5.0.0/structip__grid__descriptor__mod_1_1ip__grid__descriptor.html b/ver-5.0.0/structip__grid__descriptor__mod_1_1ip__grid__descriptor.html new file mode 100644 index 00000000..3ae0ed05 --- /dev/null +++ b/ver-5.0.0/structip__grid__descriptor__mod_1_1ip__grid__descriptor.html @@ -0,0 +1,191 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_descriptor_mod::ip_grid_descriptor Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_descriptor_mod::ip_grid_descriptor Type Reference
                    +
                    +
                    + +

                    Abstract descriptor object which represents a grib1 or grib2 descriptor. + More...

                    +
                    +Inheritance diagram for ip_grid_descriptor_mod::ip_grid_descriptor:
                    +
                    +
                    + + +ip_grid_descriptor_mod::grib1_descriptor +ip_grid_descriptor_mod::grib2_descriptor + +
                    + + + + + +

                    +Private Member Functions

                    procedure is_same_grid
                     Test whether two grid descriptors are the same. More...
                     
                    + + + + +

                    +Private Attributes

                    integer grid_num
                     Integer representing the grid type (see *_GRID_ID_GRIB1/2 in ip_grid_mod). More...
                     
                    +

                    Detailed Description

                    +

                    Abstract descriptor object which represents a grib1 or grib2 descriptor.

                    +
                    Date
                    July 2021
                    + +

                    Definition at line 28 of file ip_grid_descriptor_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ is_same_grid()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_descriptor_mod::ip_grid_descriptor::is_same_grid
                    +
                    +private
                    +
                    + +

                    Test whether two grid descriptors are the same.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 32 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ grid_num

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_descriptor_mod::ip_grid_descriptor::grid_num
                    +
                    +private
                    +
                    + +

                    Integer representing the grid type (see *_GRID_ID_GRIB1/2 in ip_grid_mod).

                    + +

                    Definition at line 29 of file ip_grid_descriptor_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__grid__descriptor__mod_1_1ip__grid__descriptor.js b/ver-5.0.0/structip__grid__descriptor__mod_1_1ip__grid__descriptor.js new file mode 100644 index 00000000..20582279 --- /dev/null +++ b/ver-5.0.0/structip__grid__descriptor__mod_1_1ip__grid__descriptor.js @@ -0,0 +1,5 @@ +var structip__grid__descriptor__mod_1_1ip__grid__descriptor = +[ + [ "is_same_grid", "structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a9da102dac348a63ffce6556ed5da81b6", null ], + [ "grid_num", "structip__grid__descriptor__mod_1_1ip__grid__descriptor.html#a6d4598dc4bbf46e059f636715cc390f1", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__grid__descriptor__mod_1_1ip__grid__descriptor.png b/ver-5.0.0/structip__grid__descriptor__mod_1_1ip__grid__descriptor.png new file mode 100644 index 00000000..9e35e497 Binary files /dev/null and b/ver-5.0.0/structip__grid__descriptor__mod_1_1ip__grid__descriptor.png differ diff --git a/ver-5.0.0/structip__grid__mod_1_1ip__grid.html b/ver-5.0.0/structip__grid__mod_1_1ip__grid.html new file mode 100644 index 00000000..6b38ae6f --- /dev/null +++ b/ver-5.0.0/structip__grid__mod_1_1ip__grid.html @@ -0,0 +1,655 @@ + + + + + + + +NCEPLIBS-ip: ip_grid_mod::ip_grid Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_grid_mod::ip_grid Type Reference
                    +
                    +
                    + +

                    Abstract grid that holds fields and methods common to all grids. + More...

                    +
                    +Inheritance diagram for ip_grid_mod::ip_grid:
                    +
                    +
                    + + +ip_equid_cylind_grid_mod::ip_equid_cylind_grid +ip_gaussian_grid_mod::ip_gaussian_grid +ip_lambert_conf_grid_mod::ip_lambert_conf_grid +ip_mercator_grid_mod::ip_mercator_grid +ip_polar_stereo_grid_mod::ip_polar_stereo_grid +ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid +ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid +ip_station_points_grid_mod::ip_station_points_grid + +
                    + + + + + + + + + + + + + + + + + +

                    +Private Member Functions

                    procedure field_pos
                     Field position for a given grid point. More...
                     
                    procedure(gdswzd_interface), deferred gdswzd
                     Coordinate transformations for the grid. More...
                     
                    generic init => init_grib1, init_grib2
                     Init subprogram. More...
                     
                    procedure(init_grib1_interface), deferred init_grib1
                     Initializer for grib1 input descriptor. More...
                     
                    procedure(init_grib2_interface), deferred init_grib2
                     Initializer for grib2 input descriptor. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Private Attributes

                    class(ip_grid_descriptor), allocatable descriptor
                     Descriptor. More...
                     
                    real eccen_squared
                     Eccentricity of the Earth squared (e^2). More...
                     
                    integer im
                     Number of x points. More...
                     
                    integer iwrap
                     x wraparound increment (0 if no wraparound). More...
                     
                    integer jm
                     Number of y points. More...
                     
                    integer jwrap1
                     y wraparound lower pivot point (0 if no wraparound). More...
                     
                    integer jwrap2
                     y wraparound upper pivot point (0 if no wraparound). More...
                     
                    integer kscan
                     Mass/wind flag for staggered diagonal (0 if mass; 1 if wind). More...
                     
                    integer nm
                     Total number of points. More...
                     
                    integer nscan
                     
                    integer nscan_field_pos
                     nscan for field_pos routine. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    +

                    Detailed Description

                    +

                    Abstract grid that holds fields and methods common to all grids.

                    +

                    ip_grid is meant to be subclassed when implementing a new grid.

                    +

                    There are three methods that must be implemented:

                    +

                    The init methods are responsible for setting up the grid using GRIB1/GRIB2 descriptors.

                    +

                    gdswzd() performs transformations to and from Earth coordinates and grid coordinates.

                    +

                    A good reference for all the map projection equations used by NCEPLIBS-ip can be found here: https://doi.org/10.3133/pp1395.

                    +
                    Author
                    Kyle Gerheiser
                    +
                    Date
                    July 2021
                    + +

                    Definition at line 52 of file ip_grid_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ field_pos()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_mod::ip_grid::field_pos
                    +
                    +private
                    +
                    + +

                    Field position for a given grid point.

                    +
                    Returns
                    Integer position in grib field to locate grid point.
                    + +

                    Definition at line 82 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure(gdswzd_interface), deferred ip_grid_mod::ip_grid::gdswzd
                    +
                    +private
                    +
                    + +

                    Coordinate transformations for the grid.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 79 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    generic ip_grid_mod::ip_grid::init
                    +
                    +private
                    +
                    + +

                    Init subprogram.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 84 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure(init_grib1_interface), deferred ip_grid_mod::ip_grid::init_grib1
                    +
                    +private
                    +
                    + +

                    Initializer for grib1 input descriptor.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 75 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure(init_grib2_interface), deferred ip_grid_mod::ip_grid::init_grib2
                    +
                    +private
                    +
                    + +

                    Initializer for grib2 input descriptor.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 77 of file ip_grid_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ descriptor

                    + +
                    +
                    + + + + + +
                    + + + + +
                    class(ip_grid_descriptor), allocatable ip_grid_mod::ip_grid::descriptor
                    +
                    +private
                    +
                    + +

                    Descriptor.

                    + +

                    Definition at line 53 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ eccen_squared

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::eccen_squared
                    +
                    +private
                    +
                    + +

                    Eccentricity of the Earth squared (e^2).

                    + +

                    Definition at line 72 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ im

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::im
                    +
                    +private
                    +
                    + +

                    Number of x points.

                    + +

                    Definition at line 55 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ iwrap

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::iwrap
                    +
                    +private
                    +
                    + +

                    x wraparound increment (0 if no wraparound).

                    + +

                    Definition at line 68 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jm
                    +
                    +private
                    +
                    + +

                    Number of y points.

                    + +

                    Definition at line 56 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap1
                    +
                    +private
                    +
                    + +

                    y wraparound lower pivot point (0 if no wraparound).

                    + +

                    Definition at line 69 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap2
                    +
                    +private
                    +
                    + +

                    y wraparound upper pivot point (0 if no wraparound).

                    + +

                    Definition at line 70 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ kscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::kscan
                    +
                    +private
                    +
                    + +

                    Mass/wind flag for staggered diagonal (0 if mass; 1 if wind).

                    + +

                    Definition at line 64 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nm
                    +
                    +private
                    +
                    + +

                    Total number of points.

                    + +

                    Definition at line 57 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan
                    +
                    +private
                    +
                    +
                    Parameters
                    + + +
                    Scanningmode.
                      +
                    • 0 if x first then y;
                    • +
                    • 1 if y first then x;
                    • +
                    • 3 if staggered diagonal like projection 203.
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 63 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan_field_pos

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan_field_pos
                    +
                    +private
                    +
                    + +

                    nscan for field_pos routine.

                    +

                    Can be different than nscan due to differences in grib/grib2.

                    + +

                    Definition at line 66 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::rerth
                    +
                    +private
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 71 of file ip_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__grid__mod_1_1ip__grid.js b/ver-5.0.0/structip__grid__mod_1_1ip__grid.js new file mode 100644 index 00000000..d4a1fd30 --- /dev/null +++ b/ver-5.0.0/structip__grid__mod_1_1ip__grid.js @@ -0,0 +1,20 @@ +var structip__grid__mod_1_1ip__grid = +[ + [ "field_pos", "structip__grid__mod_1_1ip__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179", null ], + [ "gdswzd", "structip__grid__mod_1_1ip__grid.html#a5fb366fb577a90cc09f21269b90ac080", null ], + [ "init", "structip__grid__mod_1_1ip__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c", null ], + [ "init_grib1", "structip__grid__mod_1_1ip__grid.html#a5a2c16279eb73a0c54ae0a1586d5b806", null ], + [ "init_grib2", "structip__grid__mod_1_1ip__grid.html#ad13e0ad8d616e1839ced388826fefee9", null ], + [ "descriptor", "structip__grid__mod_1_1ip__grid.html#a4a2a0dab09f05931d12615b0ac74bc51", null ], + [ "eccen_squared", "structip__grid__mod_1_1ip__grid.html#a180a5da6c470fac34b8439d4c0a32d2a", null ], + [ "im", "structip__grid__mod_1_1ip__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc", null ], + [ "iwrap", "structip__grid__mod_1_1ip__grid.html#ae179622b9a4c764a5ca90385330941ed", null ], + [ "jm", "structip__grid__mod_1_1ip__grid.html#a41a2a38288864520d8c50854d1843f87", null ], + [ "jwrap1", "structip__grid__mod_1_1ip__grid.html#a92976f110dd7e823799991137ac970a1", null ], + [ "jwrap2", "structip__grid__mod_1_1ip__grid.html#ae70be8cebcd217a49be4da1cebfc19d2", null ], + [ "kscan", "structip__grid__mod_1_1ip__grid.html#a084603b1c052e76c3335fea2e887cfce", null ], + [ "nm", "structip__grid__mod_1_1ip__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30", null ], + [ "nscan", "structip__grid__mod_1_1ip__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18", null ], + [ "nscan_field_pos", "structip__grid__mod_1_1ip__grid.html#a0640093c52461763f904cc2f12c96b6c", null ], + [ "rerth", "structip__grid__mod_1_1ip__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__grid__mod_1_1ip__grid.png b/ver-5.0.0/structip__grid__mod_1_1ip__grid.png new file mode 100644 index 00000000..81595cd4 Binary files /dev/null and b/ver-5.0.0/structip__grid__mod_1_1ip__grid.png differ diff --git a/ver-5.0.0/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html b/ver-5.0.0/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html new file mode 100644 index 00000000..50329453 --- /dev/null +++ b/ver-5.0.0/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html @@ -0,0 +1,903 @@ + + + + + + + +NCEPLIBS-ip: ip_lambert_conf_grid_mod::ip_lambert_conf_grid Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_lambert_conf_grid_mod::ip_lambert_conf_grid Type Reference
                    +
                    +
                    +
                    +Inheritance diagram for ip_lambert_conf_grid_mod::ip_lambert_conf_grid:
                    +
                    +
                    + + +ip_grid_mod::ip_grid + +
                    + + + + + + + + + + + + + + + + + +

                    +Private Member Functions

                    procedure field_pos
                     Field position for a given grid point. More...
                     
                    procedure gdswzd => gdswzd_lambert_conf
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids. More...
                     
                    generic init => init_grib1, init_grib2
                     Init subprogram. More...
                     
                    procedure init_grib1
                     Initializes a gaussian grid given a grib1_descriptor object. More...
                     
                    procedure init_grib2
                     Initializes a gaussian grid given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Private Attributes

                    class(ip_grid_descriptor), allocatable descriptor
                     Descriptor. More...
                     
                    real dxs
                     x-direction grid length adjusted for scan mode. More...
                     
                    real dys
                     y-direction grid length adjusted for scan model. More...
                     
                    real eccen_squared
                     Eccentricity of the Earth squared (e^2). More...
                     
                    real h
                     Hemisphere flag. More...
                     
                    integer im
                     Number of x points. More...
                     
                    integer irot
                     vector rotation flag. More...
                     
                    integer iwrap
                     x wraparound increment (0 if no wraparound). More...
                     
                    integer jm
                     Number of y points. More...
                     
                    integer jwrap1
                     y wraparound lower pivot point (0 if no wraparound). More...
                     
                    integer jwrap2
                     y wraparound upper pivot point (0 if no wraparound). More...
                     
                    integer kscan
                     Mass/wind flag for staggered diagonal (0 if mass; 1 if wind). More...
                     
                    integer nm
                     Total number of points. More...
                     
                    integer nscan
                     
                    integer nscan_field_pos
                     nscan for field_pos routine. More...
                     
                    real orient
                     Longitude of meridian parallel to y-axis along which latitude increases at the latitude increases. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    real rlat1
                     La1― latitude of first grid point. More...
                     
                    real rlati1
                     First latitude from the pole at which the secant cone cuts the sphere. More...
                     
                    real rlati2
                     Second latitude from the pole at which the scant cone cuts the sphere. More...
                     
                    real rlon1
                     Lo1― longitude of first grid point. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 24 of file ip_lambert_conf_grid_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ field_pos()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_mod::ip_grid::field_pos
                    +
                    +privateinherited
                    +
                    + +

                    Field position for a given grid point.

                    +
                    Returns
                    Integer position in grib field to locate grid point.
                    + +

                    Definition at line 82 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_lambert_conf_grid_mod::ip_lambert_conf_grid::gdswzd
                    +
                    +private
                    +
                    + +

                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 41 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    generic ip_grid_mod::ip_grid::init
                    +
                    +privateinherited
                    +
                    + +

                    Init subprogram.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 84 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib1
                    +
                    +private
                    +
                    + +

                    Initializes a gaussian grid given a grib1_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 36 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_lambert_conf_grid_mod::ip_lambert_conf_grid::init_grib2
                    +
                    +private
                    +
                    + +

                    Initializes a gaussian grid given a grib2_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 38 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ descriptor

                    + +
                    +
                    + + + + + +
                    + + + + +
                    class(ip_grid_descriptor), allocatable ip_grid_mod::ip_grid::descriptor
                    +
                    +privateinherited
                    +
                    + +

                    Descriptor.

                    + +

                    Definition at line 53 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dxs

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::ip_lambert_conf_grid::dxs
                    +
                    +private
                    +
                    + +

                    x-direction grid length adjusted for scan mode.

                    +

                    GRIB2, Section 3, octets 56-59.

                    + +

                    Definition at line 30 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dys

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::ip_lambert_conf_grid::dys
                    +
                    +private
                    +
                    + +

                    y-direction grid length adjusted for scan model.

                    +

                    GRIB2, Section 3, octets 60-63.

                    + +

                    Definition at line 31 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ eccen_squared

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::eccen_squared
                    +
                    +privateinherited
                    +
                    + +

                    Eccentricity of the Earth squared (e^2).

                    + +

                    Definition at line 72 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ h

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::ip_lambert_conf_grid::h
                    +
                    +private
                    +
                    + +

                    Hemisphere flag.

                    +

                    1-NH, minus 1-SH.

                    + +

                    Definition at line 32 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ im

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::im
                    +
                    +privateinherited
                    +
                    + +

                    Number of x points.

                    + +

                    Definition at line 55 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ irot

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_lambert_conf_grid_mod::ip_lambert_conf_grid::irot
                    +
                    +private
                    +
                    + +

                    vector rotation flag.

                    +

                    When "1", vectors are grid relative. When "0", vectors are earth relative. GRIB2, Section 3, octet 55.

                    + +

                    Definition at line 33 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ iwrap

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::iwrap
                    +
                    +privateinherited
                    +
                    + +

                    x wraparound increment (0 if no wraparound).

                    + +

                    Definition at line 68 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jm
                    +
                    +privateinherited
                    +
                    + +

                    Number of y points.

                    + +

                    Definition at line 56 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap1
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound lower pivot point (0 if no wraparound).

                    + +

                    Definition at line 69 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap2
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound upper pivot point (0 if no wraparound).

                    + +

                    Definition at line 70 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ kscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::kscan
                    +
                    +privateinherited
                    +
                    + +

                    Mass/wind flag for staggered diagonal (0 if mass; 1 if wind).

                    + +

                    Definition at line 64 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nm
                    +
                    +privateinherited
                    +
                    + +

                    Total number of points.

                    + +

                    Definition at line 57 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan
                    +
                    +privateinherited
                    +
                    +
                    Parameters
                    + + +
                    Scanningmode.
                      +
                    • 0 if x first then y;
                    • +
                    • 1 if y first then x;
                    • +
                    • 3 if staggered diagonal like projection 203.
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 63 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan_field_pos

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan_field_pos
                    +
                    +privateinherited
                    +
                    + +

                    nscan for field_pos routine.

                    +

                    Can be different than nscan due to differences in grib/grib2.

                    + +

                    Definition at line 66 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ orient

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::ip_lambert_conf_grid::orient
                    +
                    +private
                    +
                    + +

                    Longitude of meridian parallel to y-axis along which latitude increases at the latitude increases.

                    +

                    GRIB2, Section 3, octets 52-55.

                    + +

                    Definition at line 29 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::rerth
                    +
                    +privateinherited
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 71 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlat1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlat1
                    +
                    +private
                    +
                    + +

                    La1― latitude of first grid point.

                    +

                    GRIB2, Section 3.30, octet 39-42.

                    + +

                    Definition at line 25 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlati1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlati1
                    +
                    +private
                    +
                    + +

                    First latitude from the pole at which the secant cone cuts the sphere.

                    +

                    GRIB2, Section 3, octets 66-69.

                    + +

                    Definition at line 27 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlati2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlati2
                    +
                    +private
                    +
                    + +

                    Second latitude from the pole at which the scant cone cuts the sphere.

                    +

                    GRIB2, Section 3, octets 70-73.

                    + +

                    Definition at line 28 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_lambert_conf_grid_mod::ip_lambert_conf_grid::rlon1
                    +
                    +private
                    +
                    + +

                    Lo1― longitude of first grid point.

                    +

                    GRIB2, Section 3.30, octet 43-46.

                    + +

                    Definition at line 26 of file ip_lambert_conf_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.js b/ver-5.0.0/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.js new file mode 100644 index 00000000..68099979 --- /dev/null +++ b/ver-5.0.0/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.js @@ -0,0 +1,29 @@ +var structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid = +[ + [ "field_pos", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179", null ], + [ "gdswzd", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#aa69861340bc268b91a1076048ed489fc", null ], + [ "init", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c", null ], + [ "init_grib1", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a35dd86b4a9017f5b03a0a6a01eb4d370", null ], + [ "init_grib2", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a64129413df8ea478ab1360fd1a274e9a", null ], + [ "descriptor", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a4a2a0dab09f05931d12615b0ac74bc51", null ], + [ "dxs", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#aa3288a7fbf2db34946116c771e5bc7dc", null ], + [ "dys", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a46fa89562e4dd23c765029d2d6c087bc", null ], + [ "eccen_squared", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a180a5da6c470fac34b8439d4c0a32d2a", null ], + [ "h", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a733c8a9b6ed498aeec73fa8f11283c03", null ], + [ "im", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc", null ], + [ "irot", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0d90490fa5eb04604fc0e01bea2cf3cf", null ], + [ "iwrap", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ae179622b9a4c764a5ca90385330941ed", null ], + [ "jm", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a41a2a38288864520d8c50854d1843f87", null ], + [ "jwrap1", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a92976f110dd7e823799991137ac970a1", null ], + [ "jwrap2", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ae70be8cebcd217a49be4da1cebfc19d2", null ], + [ "kscan", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a084603b1c052e76c3335fea2e887cfce", null ], + [ "nm", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30", null ], + [ "nscan", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18", null ], + [ "nscan_field_pos", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0640093c52461763f904cc2f12c96b6c", null ], + [ "orient", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a0614cfdb69e59e3c3e2937f3319fe34a", null ], + [ "rerth", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8", null ], + [ "rlat1", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a618bb61b83c39dd344264933e51fa932", null ], + [ "rlati1", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#a7dcfaef2adc076604ad32d1ecd1f1cb4", null ], + [ "rlati2", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ae8b2c54b8d00685e179fec7786422f3b", null ], + [ "rlon1", "structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.html#ab7e9e396d5eeb63c8079a901c2c8743f", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.png b/ver-5.0.0/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.png new file mode 100644 index 00000000..a7f309bc Binary files /dev/null and b/ver-5.0.0/structip__lambert__conf__grid__mod_1_1ip__lambert__conf__grid.png differ diff --git a/ver-5.0.0/structip__mercator__grid__mod_1_1ip__mercator__grid.html b/ver-5.0.0/structip__mercator__grid__mod_1_1ip__mercator__grid.html new file mode 100644 index 00000000..9fee703e --- /dev/null +++ b/ver-5.0.0/structip__mercator__grid__mod_1_1ip__mercator__grid.html @@ -0,0 +1,845 @@ + + + + + + + +NCEPLIBS-ip: ip_mercator_grid_mod::ip_mercator_grid Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_mercator_grid_mod::ip_mercator_grid Type Reference
                    +
                    +
                    +
                    +Inheritance diagram for ip_mercator_grid_mod::ip_mercator_grid:
                    +
                    +
                    + + +ip_grid_mod::ip_grid + +
                    + + + + + + + + + + + + + + + + + +

                    +Private Member Functions

                    procedure field_pos
                     Field position for a given grid point. More...
                     
                    procedure gdswzd => gdswzd_mercator
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids. More...
                     
                    generic init => init_grib1, init_grib2
                     Init subprogram. More...
                     
                    procedure init_grib1
                     Initializes a gaussian grid given a grib1_descriptor object. More...
                     
                    procedure init_grib2
                     Initializes a gaussian grid given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Private Attributes

                    class(ip_grid_descriptor), allocatable descriptor
                     Descriptor. More...
                     
                    real dlon
                     Longitudinal direction grid length. More...
                     
                    real dphi
                     Latitudinal direction grid length. More...
                     
                    real eccen_squared
                     Eccentricity of the Earth squared (e^2). More...
                     
                    real hi
                     Scan mode in the 'i' direction. More...
                     
                    integer im
                     Number of x points. More...
                     
                    integer iwrap
                     x wraparound increment (0 if no wraparound). More...
                     
                    integer jm
                     Number of y points. More...
                     
                    integer jwrap1
                     y wraparound lower pivot point (0 if no wraparound). More...
                     
                    integer jwrap2
                     y wraparound upper pivot point (0 if no wraparound). More...
                     
                    integer kscan
                     Mass/wind flag for staggered diagonal (0 if mass; 1 if wind). More...
                     
                    integer nm
                     Total number of points. More...
                     
                    integer nscan
                     
                    integer nscan_field_pos
                     nscan for field_pos routine. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    real rlat1
                     Latitude of first grid point. More...
                     
                    real rlati
                     Latitude at which the Mercator projection intersects the Earth. More...
                     
                    real rlon1
                     Longitude of first grid point. More...
                     
                    real rlon2
                     Longitude of last grid point. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 22 of file ip_mercator_grid_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ field_pos()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_mod::ip_grid::field_pos
                    +
                    +privateinherited
                    +
                    + +

                    Field position for a given grid point.

                    +
                    Returns
                    Integer position in grib field to locate grid point.
                    + +

                    Definition at line 82 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_mercator_grid_mod::ip_mercator_grid::gdswzd
                    +
                    +private
                    +
                    + +

                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids.

                    +
                    Returns
                    N/A gdswzd()
                    +
                    +N/A
                    + +

                    Definition at line 37 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    generic ip_grid_mod::ip_grid::init
                    +
                    +privateinherited
                    +
                    + +

                    Init subprogram.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 84 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_mercator_grid_mod::ip_mercator_grid::init_grib1
                    +
                    +private
                    +
                    + +

                    Initializes a gaussian grid given a grib1_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 32 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_mercator_grid_mod::ip_mercator_grid::init_grib2
                    +
                    +private
                    +
                    + +

                    Initializes a gaussian grid given a grib2_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 34 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ descriptor

                    + +
                    +
                    + + + + + +
                    + + + + +
                    class(ip_grid_descriptor), allocatable ip_grid_mod::ip_grid::descriptor
                    +
                    +privateinherited
                    +
                    + +

                    Descriptor.

                    + +

                    Definition at line 53 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dlon

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_mercator_grid_mod::ip_mercator_grid::dlon
                    +
                    +private
                    +
                    + +

                    Longitudinal direction grid length.

                    +

                    Section 3, octets 65-68.

                    + +

                    Definition at line 28 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dphi

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_mercator_grid_mod::ip_mercator_grid::dphi
                    +
                    +private
                    +
                    + +

                    Latitudinal direction grid length.

                    +

                    Section 3, octets 69-72.

                    + +

                    Definition at line 29 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ eccen_squared

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::eccen_squared
                    +
                    +privateinherited
                    +
                    + +

                    Eccentricity of the Earth squared (e^2).

                    + +

                    Definition at line 72 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ hi

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_mercator_grid_mod::ip_mercator_grid::hi
                    +
                    +private
                    +
                    + +

                    Scan mode in the 'i' direction.

                    +

                    Section 3, octet 60.

                    + +

                    Definition at line 27 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ im

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::im
                    +
                    +privateinherited
                    +
                    + +

                    Number of x points.

                    + +

                    Definition at line 55 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ iwrap

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::iwrap
                    +
                    +privateinherited
                    +
                    + +

                    x wraparound increment (0 if no wraparound).

                    + +

                    Definition at line 68 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jm
                    +
                    +privateinherited
                    +
                    + +

                    Number of y points.

                    + +

                    Definition at line 56 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap1
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound lower pivot point (0 if no wraparound).

                    + +

                    Definition at line 69 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap2
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound upper pivot point (0 if no wraparound).

                    + +

                    Definition at line 70 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ kscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::kscan
                    +
                    +privateinherited
                    +
                    + +

                    Mass/wind flag for staggered diagonal (0 if mass; 1 if wind).

                    + +

                    Definition at line 64 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nm
                    +
                    +privateinherited
                    +
                    + +

                    Total number of points.

                    + +

                    Definition at line 57 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan
                    +
                    +privateinherited
                    +
                    +
                    Parameters
                    + + +
                    Scanningmode.
                      +
                    • 0 if x first then y;
                    • +
                    • 1 if y first then x;
                    • +
                    • 3 if staggered diagonal like projection 203.
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 63 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan_field_pos

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan_field_pos
                    +
                    +privateinherited
                    +
                    + +

                    nscan for field_pos routine.

                    +

                    Can be different than nscan due to differences in grib/grib2.

                    + +

                    Definition at line 66 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::rerth
                    +
                    +privateinherited
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 71 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlat1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_mercator_grid_mod::ip_mercator_grid::rlat1
                    +
                    +private
                    +
                    + +

                    Latitude of first grid point.

                    +

                    Section 3, octets 39-42.

                    + +

                    Definition at line 23 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlati

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_mercator_grid_mod::ip_mercator_grid::rlati
                    +
                    +private
                    +
                    + +

                    Latitude at which the Mercator projection intersects the Earth.

                    +

                    Section 3, octets 48-51.

                    + +

                    Definition at line 26 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_mercator_grid_mod::ip_mercator_grid::rlon1
                    +
                    +private
                    +
                    + +

                    Longitude of first grid point.

                    +

                    Section 3, octets 43-46.

                    + +

                    Definition at line 24 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_mercator_grid_mod::ip_mercator_grid::rlon2
                    +
                    +private
                    +
                    + +

                    Longitude of last grid point.

                    +

                    Section 3, octets 56-59.

                    + +

                    Definition at line 25 of file ip_mercator_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__mercator__grid__mod_1_1ip__mercator__grid.js b/ver-5.0.0/structip__mercator__grid__mod_1_1ip__mercator__grid.js new file mode 100644 index 00000000..8852aa25 --- /dev/null +++ b/ver-5.0.0/structip__mercator__grid__mod_1_1ip__mercator__grid.js @@ -0,0 +1,27 @@ +var structip__mercator__grid__mod_1_1ip__mercator__grid = +[ + [ "field_pos", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179", null ], + [ "gdswzd", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a940420aa99e0fbe51a976f9d0c343f1a", null ], + [ "init", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c", null ], + [ "init_grib1", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3ae3bbb47f4c03c36404a2b35014d65c", null ], + [ "init_grib2", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a505b0114c7ff5fbb58c4e7ce5ccde3f0", null ], + [ "descriptor", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a4a2a0dab09f05931d12615b0ac74bc51", null ], + [ "dlon", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a455057778c7f2ad677956bdef2d754ee", null ], + [ "dphi", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a39168528a2c207b2e2c5373487d705c5", null ], + [ "eccen_squared", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a180a5da6c470fac34b8439d4c0a32d2a", null ], + [ "hi", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a91b223ca51a556fa11b76b0c05e0d3f2", null ], + [ "im", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc", null ], + [ "iwrap", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#ae179622b9a4c764a5ca90385330941ed", null ], + [ "jm", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a41a2a38288864520d8c50854d1843f87", null ], + [ "jwrap1", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a92976f110dd7e823799991137ac970a1", null ], + [ "jwrap2", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#ae70be8cebcd217a49be4da1cebfc19d2", null ], + [ "kscan", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a084603b1c052e76c3335fea2e887cfce", null ], + [ "nm", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30", null ], + [ "nscan", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18", null ], + [ "nscan_field_pos", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a0640093c52461763f904cc2f12c96b6c", null ], + [ "rerth", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8", null ], + [ "rlat1", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a1f98e5046c7c1eda30735e5919b79cc7", null ], + [ "rlati", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a3826e3e6b4f3264932c890a3c9804cef", null ], + [ "rlon1", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#adb673d1f9dbc7d7ee6f87513a2eed723", null ], + [ "rlon2", "structip__mercator__grid__mod_1_1ip__mercator__grid.html#a0b9bfef606985f5e682f4ddb84c99d2c", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__mercator__grid__mod_1_1ip__mercator__grid.png b/ver-5.0.0/structip__mercator__grid__mod_1_1ip__mercator__grid.png new file mode 100644 index 00000000..942758ef Binary files /dev/null and b/ver-5.0.0/structip__mercator__grid__mod_1_1ip__mercator__grid.png differ diff --git a/ver-5.0.0/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html b/ver-5.0.0/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html new file mode 100644 index 00000000..87045228 --- /dev/null +++ b/ver-5.0.0/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html @@ -0,0 +1,896 @@ + + + + + + + +NCEPLIBS-ip: ip_polar_stereo_grid_mod::ip_polar_stereo_grid Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_polar_stereo_grid_mod::ip_polar_stereo_grid Type Reference
                    +
                    +
                    +
                    +Inheritance diagram for ip_polar_stereo_grid_mod::ip_polar_stereo_grid:
                    +
                    +
                    + + +ip_grid_mod::ip_grid + +
                    + + + + + + + + + + + + + + + + + +

                    +Private Member Functions

                    procedure field_pos
                     Field position for a given grid point. More...
                     
                    procedure gdswzd => gdswzd_polar_stereo
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1). More...
                     
                    generic init => init_grib1, init_grib2
                     Init subprogram. More...
                     
                    procedure init_grib1
                     Initializes a grid given a grib1_descriptor object. More...
                     
                    procedure init_grib2
                     Initializes a grid given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Private Attributes

                    class(ip_grid_descriptor), allocatable descriptor
                     Descriptor. More...
                     
                    real dxs
                     'x'-direction grid length, adjusted by the scanning mode. More...
                     
                    real dys
                     'y'-direction grid length, adjusted by the scanning mode. More...
                     
                    real eccen_squared
                     Eccentricity of the Earth squared (e^2). More...
                     
                    logical elliptical
                     When true/false, computations are based on an elliptical/spherical earth. More...
                     
                    real h
                     Hemisphere flag. More...
                     
                    integer im
                     Number of x points. More...
                     
                    integer irot
                     Rotation flag. More...
                     
                    integer iwrap
                     x wraparound increment (0 if no wraparound). More...
                     
                    integer jm
                     Number of y points. More...
                     
                    integer jwrap1
                     y wraparound lower pivot point (0 if no wraparound). More...
                     
                    integer jwrap2
                     y wraparound upper pivot point (0 if no wraparound). More...
                     
                    integer kscan
                     Mass/wind flag for staggered diagonal (0 if mass; 1 if wind). More...
                     
                    integer nm
                     Total number of points. More...
                     
                    integer nscan
                     
                    integer nscan_field_pos
                     nscan for field_pos routine. More...
                     
                    real orient
                     Orientation longitude. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    real rlat1
                     Latitude of the first grid point. More...
                     
                    real rlon1
                     Longitude of the first grid point. More...
                     
                    real slatr
                     Standard latitude of grid in radians. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 23 of file ip_polar_stereo_grid_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ field_pos()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_mod::ip_grid::field_pos
                    +
                    +privateinherited
                    +
                    + +

                    Field position for a given grid point.

                    +
                    Returns
                    Integer position in grib field to locate grid point.
                    + +

                    Definition at line 82 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_polar_stereo_grid_mod::ip_polar_stereo_grid::gdswzd
                    +
                    +private
                    +
                    + +

                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1).

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 41 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    generic ip_grid_mod::ip_grid::init
                    +
                    +privateinherited
                    +
                    + +

                    Init subprogram.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 84 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib1
                    +
                    +private
                    +
                    + +

                    Initializes a grid given a grib1_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 37 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_polar_stereo_grid_mod::ip_polar_stereo_grid::init_grib2
                    +
                    +private
                    +
                    + +

                    Initializes a grid given a grib2_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 38 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ descriptor

                    + +
                    +
                    + + + + + +
                    + + + + +
                    class(ip_grid_descriptor), allocatable ip_grid_mod::ip_grid::descriptor
                    +
                    +privateinherited
                    +
                    + +

                    Descriptor.

                    + +

                    Definition at line 53 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dxs

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::ip_polar_stereo_grid::dxs
                    +
                    +private
                    +
                    + +

                    'x'-direction grid length, adjusted by the scanning mode.

                    + +

                    Definition at line 29 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dys

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::ip_polar_stereo_grid::dys
                    +
                    +private
                    +
                    + +

                    'y'-direction grid length, adjusted by the scanning mode.

                    + +

                    Definition at line 30 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ eccen_squared

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::eccen_squared
                    +
                    +privateinherited
                    +
                    + +

                    Eccentricity of the Earth squared (e^2).

                    + +

                    Definition at line 72 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ elliptical

                    + +
                    +
                    + + + + + +
                    + + + + +
                    logical ip_polar_stereo_grid_mod::ip_polar_stereo_grid::elliptical
                    +
                    +private
                    +
                    + +

                    When true/false, computations are based on an elliptical/spherical earth.

                    + +

                    Definition at line 24 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ h

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::ip_polar_stereo_grid::h
                    +
                    +private
                    +
                    + +

                    Hemisphere flag.

                    +

                    0 - NH; 1 - SH.

                    + +

                    Definition at line 28 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ im

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::im
                    +
                    +privateinherited
                    +
                    + +

                    Number of x points.

                    + +

                    Definition at line 55 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ irot

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_polar_stereo_grid_mod::ip_polar_stereo_grid::irot
                    +
                    +private
                    +
                    + +

                    Rotation flag.

                    +

                    When '0' the u/v vector components are relative to north/east. When '1' the u/v vector components are grid relative.

                    + +

                    Definition at line 35 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ iwrap

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::iwrap
                    +
                    +privateinherited
                    +
                    + +

                    x wraparound increment (0 if no wraparound).

                    + +

                    Definition at line 68 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jm
                    +
                    +privateinherited
                    +
                    + +

                    Number of y points.

                    + +

                    Definition at line 56 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap1
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound lower pivot point (0 if no wraparound).

                    + +

                    Definition at line 69 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap2
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound upper pivot point (0 if no wraparound).

                    + +

                    Definition at line 70 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ kscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::kscan
                    +
                    +privateinherited
                    +
                    + +

                    Mass/wind flag for staggered diagonal (0 if mass; 1 if wind).

                    + +

                    Definition at line 64 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nm
                    +
                    +privateinherited
                    +
                    + +

                    Total number of points.

                    + +

                    Definition at line 57 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan
                    +
                    +privateinherited
                    +
                    +
                    Parameters
                    + + +
                    Scanningmode.
                      +
                    • 0 if x first then y;
                    • +
                    • 1 if y first then x;
                    • +
                    • 3 if staggered diagonal like projection 203.
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 63 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan_field_pos

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan_field_pos
                    +
                    +privateinherited
                    +
                    + +

                    nscan for field_pos routine.

                    +

                    Can be different than nscan due to differences in grib/grib2.

                    + +

                    Definition at line 66 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ orient

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::ip_polar_stereo_grid::orient
                    +
                    +private
                    +
                    + +

                    Orientation longitude.

                    + +

                    Definition at line 27 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::rerth
                    +
                    +privateinherited
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 71 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlat1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlat1
                    +
                    +private
                    +
                    + +

                    Latitude of the first grid point.

                    + +

                    Definition at line 25 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::ip_polar_stereo_grid::rlon1
                    +
                    +private
                    +
                    + +

                    Longitude of the first grid point.

                    + +

                    Definition at line 26 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ slatr

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_polar_stereo_grid_mod::ip_polar_stereo_grid::slatr
                    +
                    +private
                    +
                    + +

                    Standard latitude of grid in radians.

                    + +

                    Definition at line 31 of file ip_polar_stereo_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.js b/ver-5.0.0/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.js new file mode 100644 index 00000000..32b6b141 --- /dev/null +++ b/ver-5.0.0/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.js @@ -0,0 +1,29 @@ +var structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid = +[ + [ "field_pos", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179", null ], + [ "gdswzd", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9e97b7352e67dd629f622f292cf0ca21", null ], + [ "init", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c", null ], + [ "init_grib1", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ae2a5a7c08e4578f3d0ff6b85e5a14cce", null ], + [ "init_grib2", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a9622ce9892084b52303f27722572b87c", null ], + [ "descriptor", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a4a2a0dab09f05931d12615b0ac74bc51", null ], + [ "dxs", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ac009bce0c0c14b3e0970da6c032a11b1", null ], + [ "dys", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a95e155383895ad3f56a3876877b5896b", null ], + [ "eccen_squared", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a180a5da6c470fac34b8439d4c0a32d2a", null ], + [ "elliptical", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a1bac1023f8d8cd631760403b222a8c3f", null ], + [ "h", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a6df619b3050279d9d560e72a3e87168f", null ], + [ "im", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc", null ], + [ "irot", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a13f3f267f5a26602eb93b6525f494a10", null ], + [ "iwrap", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ae179622b9a4c764a5ca90385330941ed", null ], + [ "jm", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a41a2a38288864520d8c50854d1843f87", null ], + [ "jwrap1", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a92976f110dd7e823799991137ac970a1", null ], + [ "jwrap2", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#ae70be8cebcd217a49be4da1cebfc19d2", null ], + [ "kscan", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a084603b1c052e76c3335fea2e887cfce", null ], + [ "nm", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30", null ], + [ "nscan", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18", null ], + [ "nscan_field_pos", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a0640093c52461763f904cc2f12c96b6c", null ], + [ "orient", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aeaeb6d72861b9b62de5bcd435bc96ea4", null ], + [ "rerth", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8", null ], + [ "rlat1", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a00565fd51d334324e9d68d1fc8c52640", null ], + [ "rlon1", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#a61650c9ce1a2ce44243bf491e5d93728", null ], + [ "slatr", "structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.html#aae4f801c95b7b61e2e6b1dd824d3688b", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.png b/ver-5.0.0/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.png new file mode 100644 index 00000000..b5c2a91e Binary files /dev/null and b/ver-5.0.0/structip__polar__stereo__grid__mod_1_1ip__polar__stereo__grid.png differ diff --git a/ver-5.0.0/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html b/ver-5.0.0/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html new file mode 100644 index 00000000..cb1ff911 --- /dev/null +++ b/ver-5.0.0/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html @@ -0,0 +1,895 @@ + + + + + + + +NCEPLIBS-ip: ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid Type Reference
                    +
                    +
                    +
                    +Inheritance diagram for ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid:
                    +
                    +
                    + + +ip_grid_mod::ip_grid + +
                    + + + + + + + + + + + + + + + + + +

                    +Private Member Functions

                    procedure field_pos
                     Field position for a given grid point. More...
                     
                    procedure gdswzd => gdswzd_rot_equid_cylind_egrid
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1). More...
                     
                    generic init => init_grib1, init_grib2
                     Init subprogram. More...
                     
                    procedure init_grib1
                     Initializes a rotated equidistant cylindrical grid given a grib1_descriptor object. More...
                     
                    procedure init_grib2
                     Initializes a rotated equidistant cylindrical grid given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Private Attributes

                    real(kdclat0
                     Cosine of the latitude of the southern pole of projection. More...
                     
                    class(ip_grid_descriptor), allocatable descriptor
                     Descriptor. More...
                     
                    real(kddlats
                     'J'-direction grid increment. More...
                     
                    real(kddlons
                     'I'-direction grid increment. More...
                     
                    real eccen_squared
                     Eccentricity of the Earth squared (e^2). More...
                     
                    real(kdhi
                     Scan mode in the 'i' direction. More...
                     
                    integer im
                     Number of x points. More...
                     
                    integer irot
                     Rotation flag. More...
                     
                    integer iwrap
                     x wraparound increment (0 if no wraparound). More...
                     
                    integer jm
                     Number of y points. More...
                     
                    integer jwrap1
                     y wraparound lower pivot point (0 if no wraparound). More...
                     
                    integer jwrap2
                     y wraparound upper pivot point (0 if no wraparound). More...
                     
                    integer kscan
                     Mass/wind flag for staggered diagonal (0 if mass; 1 if wind). More...
                     
                    integer nm
                     Total number of points. More...
                     
                    integer nscan
                     
                    integer nscan_field_pos
                     nscan for field_pos routine. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    real(kdrlat1
                     Latitude of first grid point. More...
                     
                    real(kdrlon0
                     Longitude of southern pole of projection. More...
                     
                    real(kdrlon1
                     Longitude of first grid point. More...
                     
                    real(kdslat0
                     Sine of the latitude of the southern pole of projection. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 37 of file ip_rot_equid_cylind_egrid_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ field_pos()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_mod::ip_grid::field_pos
                    +
                    +privateinherited
                    +
                    + +

                    Field position for a given grid point.

                    +
                    Returns
                    Integer position in grib field to locate grid point.
                    + +

                    Definition at line 82 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::gdswzd
                    +
                    +private
                    +
                    + +

                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1).

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 59 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    generic ip_grid_mod::ip_grid::init
                    +
                    +privateinherited
                    +
                    + +

                    Init subprogram.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 84 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib1
                    +
                    +private
                    +
                    + +

                    Initializes a rotated equidistant cylindrical grid given a grib1_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 53 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::init_grib2
                    +
                    +private
                    +
                    + +

                    Initializes a rotated equidistant cylindrical grid given a grib2_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 56 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ clat0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::clat0
                    +
                    +private
                    +
                    + +

                    Cosine of the latitude of the southern pole of projection.

                    + +

                    Definition at line 41 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ descriptor

                    + +
                    +
                    + + + + + +
                    + + + + +
                    class(ip_grid_descriptor), allocatable ip_grid_mod::ip_grid::descriptor
                    +
                    +privateinherited
                    +
                    + +

                    Descriptor.

                    + +

                    Definition at line 53 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dlats

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::dlats
                    +
                    +private
                    +
                    + +

                    'J'-direction grid increment.

                    + +

                    Definition at line 43 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dlons

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::dlons
                    +
                    +private
                    +
                    + +

                    'I'-direction grid increment.

                    + +

                    Definition at line 44 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ eccen_squared

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::eccen_squared
                    +
                    +privateinherited
                    +
                    + +

                    Eccentricity of the Earth squared (e^2).

                    + +

                    Definition at line 72 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ hi

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::hi
                    +
                    +private
                    +
                    + +

                    Scan mode in the 'i' direction.

                    + +

                    Definition at line 45 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ im

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::im
                    +
                    +privateinherited
                    +
                    + +

                    Number of x points.

                    + +

                    Definition at line 55 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ irot

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::irot
                    +
                    +private
                    +
                    + +

                    Rotation flag.

                    +

                    When '0' the u/v vector components are relative to north/east. When '1' the u/v vector components are grid relative.

                    + +

                    Definition at line 49 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ iwrap

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::iwrap
                    +
                    +privateinherited
                    +
                    + +

                    x wraparound increment (0 if no wraparound).

                    + +

                    Definition at line 68 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jm
                    +
                    +privateinherited
                    +
                    + +

                    Number of y points.

                    + +

                    Definition at line 56 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap1
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound lower pivot point (0 if no wraparound).

                    + +

                    Definition at line 69 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap2
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound upper pivot point (0 if no wraparound).

                    + +

                    Definition at line 70 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ kscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::kscan
                    +
                    +privateinherited
                    +
                    + +

                    Mass/wind flag for staggered diagonal (0 if mass; 1 if wind).

                    + +

                    Definition at line 64 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nm
                    +
                    +privateinherited
                    +
                    + +

                    Total number of points.

                    + +

                    Definition at line 57 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan
                    +
                    +privateinherited
                    +
                    +
                    Parameters
                    + + +
                    Scanningmode.
                      +
                    • 0 if x first then y;
                    • +
                    • 1 if y first then x;
                    • +
                    • 3 if staggered diagonal like projection 203.
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 63 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan_field_pos

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan_field_pos
                    +
                    +privateinherited
                    +
                    + +

                    nscan for field_pos routine.

                    +

                    Can be different than nscan due to differences in grib/grib2.

                    + +

                    Definition at line 66 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::rerth
                    +
                    +privateinherited
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 71 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlat1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlat1
                    +
                    +private
                    +
                    + +

                    Latitude of first grid point.

                    + +

                    Definition at line 40 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon0
                    +
                    +private
                    +
                    + +

                    Longitude of southern pole of projection.

                    + +

                    Definition at line 38 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::rlon1
                    +
                    +private
                    +
                    + +

                    Longitude of first grid point.

                    + +

                    Definition at line 39 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    + +

                    ◆ slat0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_egrid_mod::ip_rot_equid_cylind_egrid::slat0
                    +
                    +private
                    +
                    + +

                    Sine of the latitude of the southern pole of projection.

                    + +

                    Definition at line 42 of file ip_rot_equid_cylind_egrid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.js b/ver-5.0.0/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.js new file mode 100644 index 00000000..fa593342 --- /dev/null +++ b/ver-5.0.0/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.js @@ -0,0 +1,29 @@ +var structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid = +[ + [ "field_pos", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#ac071b3d3eca9a5fa88ff5dc211d19179", null ], + [ "gdswzd", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a62c8147f8845d75e8f52c7524a74c780", null ], + [ "init", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a1f3fa40acb8c2ae4a65c00db21872d7c", null ], + [ "init_grib1", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#ab9a85830bfd06183a8df73726f62217a", null ], + [ "init_grib2", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#adda32463a76ad97ac35b01f1ac693fa4", null ], + [ "clat0", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a7a1b97e05b77bb7563165bf3f3e97dda", null ], + [ "descriptor", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a4a2a0dab09f05931d12615b0ac74bc51", null ], + [ "dlats", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a00d41c3d43370d3f02bb92d59f66866c", null ], + [ "dlons", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a23a172ccd2e026746925e2029c0a9206", null ], + [ "eccen_squared", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a180a5da6c470fac34b8439d4c0a32d2a", null ], + [ "hi", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a970c2655cb03ad0927e03c1d550e3fe5", null ], + [ "im", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc", null ], + [ "irot", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a558e99f37191cb2ea7398ac2a05ef29e", null ], + [ "iwrap", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#ae179622b9a4c764a5ca90385330941ed", null ], + [ "jm", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a41a2a38288864520d8c50854d1843f87", null ], + [ "jwrap1", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a92976f110dd7e823799991137ac970a1", null ], + [ "jwrap2", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#ae70be8cebcd217a49be4da1cebfc19d2", null ], + [ "kscan", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a084603b1c052e76c3335fea2e887cfce", null ], + [ "nm", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30", null ], + [ "nscan", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a1a15aa48354dbbd0b8debafbfc6e7b18", null ], + [ "nscan_field_pos", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a0640093c52461763f904cc2f12c96b6c", null ], + [ "rerth", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8", null ], + [ "rlat1", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a884837892bf520ea7950f95d8c562a08", null ], + [ "rlon0", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a65579b8557bffeedb99f384048dea14e", null ], + [ "rlon1", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#a3684458139a165cd719b054637a7d121", null ], + [ "slat0", "structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.html#aca4b0ae69f756ef4854369bf88423d66", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.png b/ver-5.0.0/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.png new file mode 100644 index 00000000..4a47e89a Binary files /dev/null and b/ver-5.0.0/structip__rot__equid__cylind__egrid__mod_1_1ip__rot__equid__cylind__egrid.png differ diff --git a/ver-5.0.0/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html b/ver-5.0.0/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html new file mode 100644 index 00000000..8ba671d8 --- /dev/null +++ b/ver-5.0.0/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html @@ -0,0 +1,866 @@ + + + + + + + +NCEPLIBS-ip: ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid Type Reference
                    +
                    +
                    +
                    +Inheritance diagram for ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid:
                    +
                    +
                    + + +ip_grid_mod::ip_grid + +
                    + + + + + + + + + + + + + + + + + +

                    +Private Member Functions

                    procedure field_pos
                     Field position for a given grid point. More...
                     
                    procedure gdswzd => gdswzd_rot_equid_cylind
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids. More...
                     
                    generic init => init_grib1, init_grib2
                     Init subprogram. More...
                     
                    procedure init_grib1
                     Initializes a Rotated equidistant cylindrical grid given a grib1_descriptor object. More...
                     
                    procedure init_grib2
                     Initializes a Rotated equidistant cylindrical given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Private Attributes

                    real(kdclat0
                     Cosine of the latitude of the southern pole of projection. More...
                     
                    class(ip_grid_descriptor), allocatable descriptor
                     Descriptor. More...
                     
                    real(kddlats
                     'J'-direction grid increment. More...
                     
                    real(kddlons
                     'I'-direction grid increment. More...
                     
                    real eccen_squared
                     Eccentricity of the Earth squared (e^2). More...
                     
                    integer im
                     Number of x points. More...
                     
                    integer irot
                     Rotation flag. More...
                     
                    integer iwrap
                     x wraparound increment (0 if no wraparound). More...
                     
                    integer jm
                     Number of y points. More...
                     
                    integer jwrap1
                     y wraparound lower pivot point (0 if no wraparound). More...
                     
                    integer jwrap2
                     y wraparound upper pivot point (0 if no wraparound). More...
                     
                    integer kscan
                     Mass/wind flag for staggered diagonal (0 if mass; 1 if wind). More...
                     
                    integer nm
                     Total number of points. More...
                     
                    integer nscan
                     
                    integer nscan_field_pos
                     nscan for field_pos routine. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    real(kdrlon0
                     Longitude of southern pole of projection. More...
                     
                    real(kdsbd
                     Latitude of the southern boundary of the grid before rotation. More...
                     
                    real(kdslat0
                     Sine of the latitude of the southern pole of projection. More...
                     
                    real(kdwbd
                     Longitude of the western boundary of the grid before rotation. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 32 of file ip_rot_equid_cylind_grid_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ field_pos()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_mod::ip_grid::field_pos
                    +
                    +privateinherited
                    +
                    + +

                    Field position for a given grid point.

                    +
                    Returns
                    Integer position in grib field to locate grid point.
                    + +

                    Definition at line 82 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::gdswzd
                    +
                    +private
                    +
                    + +

                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for Gaussian grids.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 53 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    generic ip_grid_mod::ip_grid::init
                    +
                    +privateinherited
                    +
                    + +

                    Init subprogram.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 84 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib1
                    +
                    +private
                    +
                    + +

                    Initializes a Rotated equidistant cylindrical grid given a grib1_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 47 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::init_grib2
                    +
                    +private
                    +
                    + +

                    Initializes a Rotated equidistant cylindrical given a grib2_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 50 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ clat0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::clat0
                    +
                    +private
                    +
                    + +

                    Cosine of the latitude of the southern pole of projection.

                    + +

                    Definition at line 33 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ descriptor

                    + +
                    +
                    + + + + + +
                    + + + + +
                    class(ip_grid_descriptor), allocatable ip_grid_mod::ip_grid::descriptor
                    +
                    +privateinherited
                    +
                    + +

                    Descriptor.

                    + +

                    Definition at line 53 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dlats

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::dlats
                    +
                    +private
                    +
                    + +

                    'J'-direction grid increment.

                    + +

                    Definition at line 34 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ dlons

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::dlons
                    +
                    +private
                    +
                    + +

                    'I'-direction grid increment.

                    + +

                    Definition at line 35 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ eccen_squared

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::eccen_squared
                    +
                    +privateinherited
                    +
                    + +

                    Eccentricity of the Earth squared (e^2).

                    + +

                    Definition at line 72 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ im

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::im
                    +
                    +privateinherited
                    +
                    + +

                    Number of x points.

                    + +

                    Definition at line 55 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ irot

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::irot
                    +
                    +private
                    +
                    + +

                    Rotation flag.

                    +

                    When '0' the u/v vector components are relative to north/east. When '1' the u/v vector components are grid relative.

                    + +

                    Definition at line 43 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ iwrap

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::iwrap
                    +
                    +privateinherited
                    +
                    + +

                    x wraparound increment (0 if no wraparound).

                    + +

                    Definition at line 68 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jm
                    +
                    +privateinherited
                    +
                    + +

                    Number of y points.

                    + +

                    Definition at line 56 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap1
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound lower pivot point (0 if no wraparound).

                    + +

                    Definition at line 69 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap2
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound upper pivot point (0 if no wraparound).

                    + +

                    Definition at line 70 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ kscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::kscan
                    +
                    +privateinherited
                    +
                    + +

                    Mass/wind flag for staggered diagonal (0 if mass; 1 if wind).

                    + +

                    Definition at line 64 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nm
                    +
                    +privateinherited
                    +
                    + +

                    Total number of points.

                    + +

                    Definition at line 57 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan
                    +
                    +privateinherited
                    +
                    +
                    Parameters
                    + + +
                    Scanningmode.
                      +
                    • 0 if x first then y;
                    • +
                    • 1 if y first then x;
                    • +
                    • 3 if staggered diagonal like projection 203.
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 63 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan_field_pos

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan_field_pos
                    +
                    +privateinherited
                    +
                    + +

                    nscan for field_pos routine.

                    +

                    Can be different than nscan due to differences in grib/grib2.

                    + +

                    Definition at line 66 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::rerth
                    +
                    +privateinherited
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 71 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rlon0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::rlon0
                    +
                    +private
                    +
                    + +

                    Longitude of southern pole of projection.

                    + +

                    Definition at line 36 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ sbd

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::sbd
                    +
                    +private
                    +
                    + +

                    Latitude of the southern boundary of the grid before rotation.

                    + +

                    Definition at line 39 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ slat0

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::slat0
                    +
                    +private
                    +
                    + +

                    Sine of the latitude of the southern pole of projection.

                    + +

                    Definition at line 37 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ wbd

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real(kd) ip_rot_equid_cylind_grid_mod::ip_rot_equid_cylind_grid::wbd
                    +
                    +private
                    +
                    + +

                    Longitude of the western boundary of the grid before rotation.

                    + +

                    Definition at line 38 of file ip_rot_equid_cylind_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.js b/ver-5.0.0/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.js new file mode 100644 index 00000000..696035bb --- /dev/null +++ b/ver-5.0.0/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.js @@ -0,0 +1,28 @@ +var structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid = +[ + [ "field_pos", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179", null ], + [ "gdswzd", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a0f14a253b51bcb0633cd00d32d5130a4", null ], + [ "init", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c", null ], + [ "init_grib1", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a9942c787bda2e118f1355476670edfca", null ], + [ "init_grib2", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a30ae580d169972e8d68c3d97ab3b2634", null ], + [ "clat0", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a49835868e8c8b96e243a5992daee6ea5", null ], + [ "descriptor", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a4a2a0dab09f05931d12615b0ac74bc51", null ], + [ "dlats", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#affd9cfc7a0e1d8e74735eac35b2e03c6", null ], + [ "dlons", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a76222910f6c9fa0c5374bed672904c85", null ], + [ "eccen_squared", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a180a5da6c470fac34b8439d4c0a32d2a", null ], + [ "im", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc", null ], + [ "irot", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#ae4c44c4cf8d1376b24861534edbf514f", null ], + [ "iwrap", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#ae179622b9a4c764a5ca90385330941ed", null ], + [ "jm", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a41a2a38288864520d8c50854d1843f87", null ], + [ "jwrap1", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a92976f110dd7e823799991137ac970a1", null ], + [ "jwrap2", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#ae70be8cebcd217a49be4da1cebfc19d2", null ], + [ "kscan", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a084603b1c052e76c3335fea2e887cfce", null ], + [ "nm", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30", null ], + [ "nscan", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18", null ], + [ "nscan_field_pos", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a0640093c52461763f904cc2f12c96b6c", null ], + [ "rerth", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8", null ], + [ "rlon0", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a7b111301b2fc41270869ee182512f13c", null ], + [ "sbd", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a246ec0afc422f6cfcc3758ff62c6017f", null ], + [ "slat0", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a8a02c6fc1ad38174e15679e69b5cbfdc", null ], + [ "wbd", "structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.html#a33ae1763c4f1267091bee36a9c92e46a", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.png b/ver-5.0.0/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.png new file mode 100644 index 00000000..9dd76b75 Binary files /dev/null and b/ver-5.0.0/structip__rot__equid__cylind__grid__mod_1_1ip__rot__equid__cylind__grid.png differ diff --git a/ver-5.0.0/structip__station__points__grid__mod_1_1ip__station__points__grid.html b/ver-5.0.0/structip__station__points__grid__mod_1_1ip__station__points__grid.html new file mode 100644 index 00000000..743c02d6 --- /dev/null +++ b/ver-5.0.0/structip__station__points__grid__mod_1_1ip__station__points__grid.html @@ -0,0 +1,633 @@ + + + + + + + +NCEPLIBS-ip: ip_station_points_grid_mod::ip_station_points_grid Type Reference + + + + + + + + + + + + + +
                    +
                    + + + + + + +
                    +
                    NCEPLIBS-ip +  5.0.0 +
                    +
                    +
                    + + + + + + + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    ip_station_points_grid_mod::ip_station_points_grid Type Reference
                    +
                    +
                    +
                    +Inheritance diagram for ip_station_points_grid_mod::ip_station_points_grid:
                    +
                    +
                    + + +ip_grid_mod::ip_grid + +
                    + + + + + + + + + + + + + + + + + +

                    +Private Member Functions

                    procedure field_pos
                     Field position for a given grid point. More...
                     
                    procedure gdswzd => gdswzd_station_points
                     Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for IP Station Point grids. More...
                     
                    generic init => init_grib1, init_grib2
                     Init subprogram. More...
                     
                    procedure init_grib1
                     Initializes a gaussian grid given a grib1_descriptor object. More...
                     
                    procedure init_grib2
                     Initializes a gaussian grid given a grib2_descriptor object. More...
                     
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +Private Attributes

                    class(ip_grid_descriptor), allocatable descriptor
                     Descriptor. More...
                     
                    real eccen_squared
                     Eccentricity of the Earth squared (e^2). More...
                     
                    integer im
                     Number of x points. More...
                     
                    integer iwrap
                     x wraparound increment (0 if no wraparound). More...
                     
                    integer jm
                     Number of y points. More...
                     
                    integer jwrap1
                     y wraparound lower pivot point (0 if no wraparound). More...
                     
                    integer jwrap2
                     y wraparound upper pivot point (0 if no wraparound). More...
                     
                    integer kscan
                     Mass/wind flag for staggered diagonal (0 if mass; 1 if wind). More...
                     
                    integer nm
                     Total number of points. More...
                     
                    integer nscan
                     
                    integer nscan_field_pos
                     nscan for field_pos routine. More...
                     
                    real rerth
                     Radius of the Earth. More...
                     
                    +

                    Detailed Description

                    +
                    +

                    Definition at line 18 of file ip_station_points_grid_mod.F90.

                    +

                    Member Function/Subroutine Documentation

                    + +

                    ◆ field_pos()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_grid_mod::ip_grid::field_pos
                    +
                    +privateinherited
                    +
                    + +

                    Field position for a given grid point.

                    +
                    Returns
                    Integer position in grib field to locate grid point.
                    + +

                    Definition at line 82 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ gdswzd()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_station_points_grid_mod::ip_station_points_grid::gdswzd
                    +
                    +private
                    +
                    + +

                    Calculates Earth coordinates (iopt = 1) or grid coorindates (iopt = -1) for IP Station Point grids.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 26 of file ip_station_points_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    generic ip_grid_mod::ip_grid::init
                    +
                    +privateinherited
                    +
                    + +

                    Init subprogram.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 84 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib1()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_station_points_grid_mod::ip_station_points_grid::init_grib1
                    +
                    +private
                    +
                    + +

                    Initializes a gaussian grid given a grib1_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 21 of file ip_station_points_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ init_grib2()

                    + +
                    +
                    + + + + + +
                    + + + + +
                    procedure ip_station_points_grid_mod::ip_station_points_grid::init_grib2
                    +
                    +private
                    +
                    + +

                    Initializes a gaussian grid given a grib2_descriptor object.

                    +
                    Returns
                    N/A
                    + +

                    Definition at line 23 of file ip_station_points_grid_mod.F90.

                    + +
                    +
                    +

                    Field Documentation

                    + +

                    ◆ descriptor

                    + +
                    +
                    + + + + + +
                    + + + + +
                    class(ip_grid_descriptor), allocatable ip_grid_mod::ip_grid::descriptor
                    +
                    +privateinherited
                    +
                    + +

                    Descriptor.

                    + +

                    Definition at line 53 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ eccen_squared

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::eccen_squared
                    +
                    +privateinherited
                    +
                    + +

                    Eccentricity of the Earth squared (e^2).

                    + +

                    Definition at line 72 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ im

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::im
                    +
                    +privateinherited
                    +
                    + +

                    Number of x points.

                    + +

                    Definition at line 55 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ iwrap

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::iwrap
                    +
                    +privateinherited
                    +
                    + +

                    x wraparound increment (0 if no wraparound).

                    + +

                    Definition at line 68 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jm
                    +
                    +privateinherited
                    +
                    + +

                    Number of y points.

                    + +

                    Definition at line 56 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap1

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap1
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound lower pivot point (0 if no wraparound).

                    + +

                    Definition at line 69 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ jwrap2

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::jwrap2
                    +
                    +privateinherited
                    +
                    + +

                    y wraparound upper pivot point (0 if no wraparound).

                    + +

                    Definition at line 70 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ kscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::kscan
                    +
                    +privateinherited
                    +
                    + +

                    Mass/wind flag for staggered diagonal (0 if mass; 1 if wind).

                    + +

                    Definition at line 64 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nm

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nm
                    +
                    +privateinherited
                    +
                    + +

                    Total number of points.

                    + +

                    Definition at line 57 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan
                    +
                    +privateinherited
                    +
                    +
                    Parameters
                    + + +
                    Scanningmode.
                      +
                    • 0 if x first then y;
                    • +
                    • 1 if y first then x;
                    • +
                    • 3 if staggered diagonal like projection 203.
                    • +
                    +
                    +
                    +
                    + +

                    Definition at line 63 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ nscan_field_pos

                    + +
                    +
                    + + + + + +
                    + + + + +
                    integer ip_grid_mod::ip_grid::nscan_field_pos
                    +
                    +privateinherited
                    +
                    + +

                    nscan for field_pos routine.

                    +

                    Can be different than nscan due to differences in grib/grib2.

                    + +

                    Definition at line 66 of file ip_grid_mod.F90.

                    + +
                    +
                    + +

                    ◆ rerth

                    + +
                    +
                    + + + + + +
                    + + + + +
                    real ip_grid_mod::ip_grid::rerth
                    +
                    +privateinherited
                    +
                    + +

                    Radius of the Earth.

                    + +

                    Definition at line 71 of file ip_grid_mod.F90.

                    + +
                    +
                    +
                    The documentation for this type was generated from the following file: +
                    +
                    + + + + diff --git a/ver-5.0.0/structip__station__points__grid__mod_1_1ip__station__points__grid.js b/ver-5.0.0/structip__station__points__grid__mod_1_1ip__station__points__grid.js new file mode 100644 index 00000000..f8d6a0a4 --- /dev/null +++ b/ver-5.0.0/structip__station__points__grid__mod_1_1ip__station__points__grid.js @@ -0,0 +1,20 @@ +var structip__station__points__grid__mod_1_1ip__station__points__grid = +[ + [ "field_pos", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#ac071b3d3eca9a5fa88ff5dc211d19179", null ], + [ "gdswzd", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a9fff8b24553d11177b8c1ee38bfbd91f", null ], + [ "init", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a1f3fa40acb8c2ae4a65c00db21872d7c", null ], + [ "init_grib1", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#aa5ec2cbc9bf0dadf20a226e0afeb3d32", null ], + [ "init_grib2", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a69fac68e7a40d5c3106a47bf1851891e", null ], + [ "descriptor", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a4a2a0dab09f05931d12615b0ac74bc51", null ], + [ "eccen_squared", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a180a5da6c470fac34b8439d4c0a32d2a", null ], + [ "im", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a546a9c3bb8e93ec8e8f7eaf2a14537dc", null ], + [ "iwrap", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#ae179622b9a4c764a5ca90385330941ed", null ], + [ "jm", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a41a2a38288864520d8c50854d1843f87", null ], + [ "jwrap1", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a92976f110dd7e823799991137ac970a1", null ], + [ "jwrap2", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#ae70be8cebcd217a49be4da1cebfc19d2", null ], + [ "kscan", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a084603b1c052e76c3335fea2e887cfce", null ], + [ "nm", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a2ae87fb4e6bdcb75fc6fdc80ad73ee30", null ], + [ "nscan", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a1a15aa48354dbbd0b8debafbfc6e7b18", null ], + [ "nscan_field_pos", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a0640093c52461763f904cc2f12c96b6c", null ], + [ "rerth", "structip__station__points__grid__mod_1_1ip__station__points__grid.html#a2bb4d4ec2455c3148313bf7cc54e1cc8", null ] +]; \ No newline at end of file diff --git a/ver-5.0.0/structip__station__points__grid__mod_1_1ip__station__points__grid.png b/ver-5.0.0/structip__station__points__grid__mod_1_1ip__station__points__grid.png new file mode 100644 index 00000000..2419f863 Binary files /dev/null and b/ver-5.0.0/structip__station__points__grid__mod_1_1ip__station__points__grid.png differ diff --git a/ver-5.0.0/sync_off.png b/ver-5.0.0/sync_off.png new file mode 100644 index 00000000..3b443fc6 Binary files /dev/null and b/ver-5.0.0/sync_off.png differ diff --git a/ver-5.0.0/sync_on.png b/ver-5.0.0/sync_on.png new file mode 100644 index 00000000..e08320fb Binary files /dev/null and b/ver-5.0.0/sync_on.png differ diff --git a/ver-5.0.0/tab_a.png b/ver-5.0.0/tab_a.png new file mode 100644 index 00000000..3b725c41 Binary files /dev/null and b/ver-5.0.0/tab_a.png differ diff --git a/ver-5.0.0/tab_b.png b/ver-5.0.0/tab_b.png new file mode 100644 index 00000000..e2b4a863 Binary files /dev/null and b/ver-5.0.0/tab_b.png differ diff --git a/ver-5.0.0/tab_h.png b/ver-5.0.0/tab_h.png new file mode 100644 index 00000000..fd5cb705 Binary files /dev/null and b/ver-5.0.0/tab_h.png differ diff --git a/ver-5.0.0/tab_s.png b/ver-5.0.0/tab_s.png new file mode 100644 index 00000000..ab478c95 Binary files /dev/null and b/ver-5.0.0/tab_s.png differ diff --git a/ver-5.0.0/tabs.css b/ver-5.0.0/tabs.css new file mode 100644 index 00000000..7d45d36c --- /dev/null +++ b/ver-5.0.0/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}