72 SUBROUTINE sptgps(IROMB,MAXWV,KMAX,NPS,
73 & KWSKIP,KGSKIP,NISKIP,NJSKIP,
74 & TRUE,XMESH,ORIENT,WAVE,GN,GS)
76 REAL WAVE(*),GN(*),GS(*)
77 REAL EPS((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EPSTOP(MAXWV+1)
78 REAL ENN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
79 REAL ELONN1((MAXWV+1)*((IROMB+1)*MAXWV+2)/2)
80 REAL EON((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),EONTOP(MAXWV+1)
82 REAL SLON(MAXWV,8),CLON(MAXWV,8),SROT(0:3),CROT(0:3)
83 REAL WTOP(2*(MAXWV+1),KMAX)
84 REAL PLN((MAXWV+1)*((IROMB+1)*MAXWV+2)/2),PLNTOP(MAXWV+1)
85 REAL F(2*MAXWV+3,2,KMAX)
86 DATA srot/0.,1.,0.,-1./,crot/1.,0.,-1.,0./
87 parameter(rerth=6.3712e6)
88 parameter(pi=3.14159265358979,dpr=180./pi)
91 CALL spwget(iromb,maxwv,eps,epstop,enn1,elonn1,eon,eontop)
92 mx=(maxwv+1)*((iromb+1)*maxwv+2)/2
100 IF(kg.EQ.0) kg=nps*nps
105 gq=((1.+sin(true/dpr))*rerth/xmesh)**2
114 ij1=(i1-1)*ni+(j1-1)*nj+1
117 CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
119 CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
120 & clat1,pln,plntop,mp,wave,wtop,f)
144 ij1=(i1-1)*ni+(j1-1)*nj+1
145 ij3=(i3-1)*ni+(j3-1)*nj+1
146 ij5=(i5-1)*ni+(j5-1)*nj+1
147 ij7=(i7-1)*ni+(j7-1)*nj+1
151 slat1=(gq-rq)/(gq+rq)
152 clat1=sqrt(1.-slat1**2)
153 CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
155 CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
156 & clat1,pln,plntop,mp,wave,wtop,f)
158 slon(l,1)=sin(l*radlon)
159 clon(l,1)=cos(l*radlon)
160 slon(l,3)=slon(l,1)*crot(mod(1*l,4))
161 & -clon(l,1)*srot(mod(1*l,4))
162 clon(l,3)=clon(l,1)*crot(mod(1*l,4))
163 & +slon(l,1)*srot(mod(1*l,4))
164 slon(l,5)=slon(l,1)*crot(mod(2*l,4))
165 & -clon(l,1)*srot(mod(2*l,4))
166 clon(l,5)=clon(l,1)*crot(mod(2*l,4))
167 & +slon(l,1)*srot(mod(2*l,4))
168 slon(l,7)=slon(l,1)*crot(mod(3*l,4))
169 & -clon(l,1)*srot(mod(3*l,4))
170 clon(l,7)=clon(l,1)*crot(mod(3*l,4))
171 & +slon(l,1)*srot(mod(3*l,4))
192 gn(ij1)=gn(ij1)+2*(f(lr,1,1)*clon(l,1)
193 & -f(li,1,1)*slon(l,1))
194 gn(ij3)=gn(ij3)+2*(f(lr,1,1)*clon(l,3)
195 & -f(li,1,1)*slon(l,3))
196 gn(ij5)=gn(ij5)+2*(f(lr,1,1)*clon(l,5)
197 & -f(li,1,1)*slon(l,5))
198 gn(ij7)=gn(ij7)+2*(f(lr,1,1)*clon(l,7)
199 & -f(li,1,1)*slon(l,7))
200 gs(ij1)=gs(ij1)+2*(f(lr,2,1)*clon(l,5)
201 & -f(li,2,1)*slon(l,5))
202 gs(ij3)=gs(ij3)+2*(f(lr,2,1)*clon(l,3)
203 & -f(li,2,1)*slon(l,3))
204 gs(ij5)=gs(ij5)+2*(f(lr,2,1)*clon(l,1)
205 & -f(li,2,1)*slon(l,1))
206 gs(ij7)=gs(ij7)+2*(f(lr,2,1)*clon(l,7)
207 & -f(li,2,1)*slon(l,7))
219 gn(ijk1)=gn(ijk1)+2*(f(lr,1,k)*clon(l,1)
220 & -f(li,1,k)*slon(l,1))
221 gn(ijk3)=gn(ijk3)+2*(f(lr,1,k)*clon(l,3)
222 & -f(li,1,k)*slon(l,3))
223 gn(ijk5)=gn(ijk5)+2*(f(lr,1,k)*clon(l,5)
224 & -f(li,1,k)*slon(l,5))
225 gn(ijk7)=gn(ijk7)+2*(f(lr,1,k)*clon(l,7)
226 & -f(li,1,k)*slon(l,7))
227 gs(ijk1)=gs(ijk1)+2*(f(lr,2,k)*clon(l,5)
228 & -f(li,2,k)*slon(l,5))
229 gs(ijk3)=gs(ijk3)+2*(f(lr,2,k)*clon(l,3)
230 & -f(li,2,k)*slon(l,3))
231 gs(ijk5)=gs(ijk5)+2*(f(lr,2,k)*clon(l,1)
232 & -f(li,2,k)*slon(l,1))
233 gs(ijk7)=gs(ijk7)+2*(f(lr,2,k)*clon(l,7)
234 & -f(li,2,k)*slon(l,7))
249 radlon=(orient-45)/dpr
256 ij1=(i1-1)*ni+(j1-1)*nj+1
257 ij3=(i3-1)*ni+(j3-1)*nj+1
258 ij5=(i5-1)*ni+(j5-1)*nj+1
259 ij7=(i7-1)*ni+(j7-1)*nj+1
263 slat1=(gq-rq)/(gq+rq)
264 clat1=sqrt(1.-slat1**2)
265 CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
267 CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
268 & clat1,pln,plntop,mp,wave,wtop,f)
270 slon(l,1)=sin(l*radlon)
271 clon(l,1)=cos(l*radlon)
272 slon(l,3)=slon(l,1)*crot(mod(1*l,4))
273 & -clon(l,1)*srot(mod(1*l,4))
274 clon(l,3)=clon(l,1)*crot(mod(1*l,4))
275 & +slon(l,1)*srot(mod(1*l,4))
276 slon(l,5)=slon(l,1)*crot(mod(2*l,4))
277 & -clon(l,1)*srot(mod(2*l,4))
278 clon(l,5)=clon(l,1)*crot(mod(2*l,4))
279 & +slon(l,1)*srot(mod(2*l,4))
280 slon(l,7)=slon(l,1)*crot(mod(3*l,4))
281 & -clon(l,1)*srot(mod(3*l,4))
282 clon(l,7)=clon(l,1)*crot(mod(3*l,4))
283 & +slon(l,1)*srot(mod(3*l,4))
304 gn(ij1)=gn(ij1)+2*(f(lr,1,1)*clon(l,1)
305 & -f(li,1,1)*slon(l,1))
306 gn(ij3)=gn(ij3)+2*(f(lr,1,1)*clon(l,3)
307 & -f(li,1,1)*slon(l,3))
308 gn(ij5)=gn(ij5)+2*(f(lr,1,1)*clon(l,5)
309 & -f(li,1,1)*slon(l,5))
310 gn(ij7)=gn(ij7)+2*(f(lr,1,1)*clon(l,7)
311 & -f(li,1,1)*slon(l,7))
312 gs(ij1)=gs(ij1)+2*(f(lr,2,1)*clon(l,3)
313 & -f(li,2,1)*slon(l,3))
314 gs(ij3)=gs(ij3)+2*(f(lr,2,1)*clon(l,1)
315 & -f(li,2,1)*slon(l,1))
316 gs(ij5)=gs(ij5)+2*(f(lr,2,1)*clon(l,7)
317 & -f(li,2,1)*slon(l,7))
318 gs(ij7)=gs(ij7)+2*(f(lr,2,1)*clon(l,5)
319 & -f(li,2,1)*slon(l,5))
331 gn(ijk1)=gn(ijk1)+2*(f(lr,1,k)*clon(l,1)
332 & -f(li,1,k)*slon(l,1))
333 gn(ijk3)=gn(ijk3)+2*(f(lr,1,k)*clon(l,3)
334 & -f(li,1,k)*slon(l,3))
335 gn(ijk5)=gn(ijk5)+2*(f(lr,1,k)*clon(l,5)
336 & -f(li,1,k)*slon(l,5))
337 gn(ijk7)=gn(ijk7)+2*(f(lr,1,k)*clon(l,7)
338 & -f(li,1,k)*slon(l,7))
339 gs(ijk1)=gs(ijk1)+2*(f(lr,2,k)*clon(l,3)
340 & -f(li,2,k)*slon(l,3))
341 gs(ijk3)=gs(ijk3)+2*(f(lr,2,k)*clon(l,1)
342 & -f(li,2,k)*slon(l,1))
343 gs(ijk5)=gs(ijk5)+2*(f(lr,2,k)*clon(l,7)
344 & -f(li,2,k)*slon(l,7))
345 gs(ijk7)=gs(ijk7)+2*(f(lr,2,k)*clon(l,5)
346 & -f(li,2,k)*slon(l,5))
376 ij1=(i1-1)*ni+(j1-1)*nj+1
377 ij2=(i2-1)*ni+(j2-1)*nj+1
378 ij3=(i3-1)*ni+(j3-1)*nj+1
379 ij4=(i4-1)*ni+(j4-1)*nj+1
380 ij5=(i5-1)*ni+(j5-1)*nj+1
381 ij6=(i6-1)*ni+(j6-1)*nj+1
382 ij7=(i7-1)*ni+(j7-1)*nj+1
383 ij8=(i8-1)*ni+(j8-1)*nj+1
387 slat1=(gq-rq)/(gq+rq)
388 clat1=sqrt(1.-slat1**2)
389 radlon1=orient/dpr+atan(-di1/dj1)
390 radlon2=(orient-45)/dpr*2-radlon1
391 CALL splegend(iromb,maxwv,slat1,clat1,eps,epstop,
393 CALL spsynth(iromb,maxwv,2*maxwv,idim,kw,2*mxtop,kmax,
394 & clat1,pln,plntop,mp,wave,wtop,f)
396 slon(l,1)=sin(l*radlon1)
397 clon(l,1)=cos(l*radlon1)
398 slon(l,2)=sin(l*radlon2)
399 clon(l,2)=cos(l*radlon2)
400 slon(l,3)=slon(l,1)*crot(mod(1*l,4))
401 & -clon(l,1)*srot(mod(1*l,4))
402 clon(l,3)=clon(l,1)*crot(mod(1*l,4))
403 & +slon(l,1)*srot(mod(1*l,4))
404 slon(l,4)=slon(l,2)*crot(mod(1*l,4))
405 & -clon(l,2)*srot(mod(1*l,4))
406 clon(l,4)=clon(l,2)*crot(mod(1*l,4))
407 & +slon(l,2)*srot(mod(1*l,4))
408 slon(l,5)=slon(l,1)*crot(mod(2*l,4))
409 & -clon(l,1)*srot(mod(2*l,4))
410 clon(l,5)=clon(l,1)*crot(mod(2*l,4))
411 & +slon(l,1)*srot(mod(2*l,4))
412 slon(l,6)=slon(l,2)*crot(mod(2*l,4))
413 & -clon(l,2)*srot(mod(2*l,4))
414 clon(l,6)=clon(l,2)*crot(mod(2*l,4))
415 & +slon(l,2)*srot(mod(2*l,4))
416 slon(l,7)=slon(l,1)*crot(mod(3*l,4))
417 & -clon(l,1)*srot(mod(3*l,4))
418 clon(l,7)=clon(l,1)*crot(mod(3*l,4))
419 & +slon(l,1)*srot(mod(3*l,4))
420 slon(l,8)=slon(l,2)*crot(mod(3*l,4))
421 & -clon(l,2)*srot(mod(3*l,4))
422 clon(l,8)=clon(l,2)*crot(mod(3*l,4))
423 & +slon(l,2)*srot(mod(3*l,4))
456 gn(ij1)=gn(ij1)+2*(f(lr,1,1)*clon(l,1)
457 & -f(li,1,1)*slon(l,1))
458 gn(ij2)=gn(ij2)+2*(f(lr,1,1)*clon(l,2)
459 & -f(li,1,1)*slon(l,2))
460 gn(ij3)=gn(ij3)+2*(f(lr,1,1)*clon(l,3)
461 & -f(li,1,1)*slon(l,3))
462 gn(ij4)=gn(ij4)+2*(f(lr,1,1)*clon(l,4)
463 & -f(li,1,1)*slon(l,4))
464 gn(ij5)=gn(ij5)+2*(f(lr,1,1)*clon(l,5)
465 & -f(li,1,1)*slon(l,5))
466 gn(ij6)=gn(ij6)+2*(f(lr,1,1)*clon(l,6)
467 & -f(li,1,1)*slon(l,6))
468 gn(ij7)=gn(ij7)+2*(f(lr,1,1)*clon(l,7)
469 & -f(li,1,1)*slon(l,7))
470 gn(ij8)=gn(ij8)+2*(f(lr,1,1)*clon(l,8)
471 & -f(li,1,1)*slon(l,8))
472 gs(ij1)=gs(ij1)+2*(f(lr,2,1)*clon(l,4)
473 & -f(li,2,1)*slon(l,4))
474 gs(ij2)=gs(ij2)+2*(f(lr,2,1)*clon(l,3)
475 & -f(li,2,1)*slon(l,3))
476 gs(ij3)=gs(ij3)+2*(f(lr,2,1)*clon(l,2)
477 & -f(li,2,1)*slon(l,2))
478 gs(ij4)=gs(ij4)+2*(f(lr,2,1)*clon(l,1)
479 & -f(li,2,1)*slon(l,1))
480 gs(ij5)=gs(ij5)+2*(f(lr,2,1)*clon(l,8)
481 & -f(li,2,1)*slon(l,8))
482 gs(ij6)=gs(ij6)+2*(f(lr,2,1)*clon(l,7)
483 & -f(li,2,1)*slon(l,7))
484 gs(ij7)=gs(ij7)+2*(f(lr,2,1)*clon(l,6)
485 & -f(li,2,1)*slon(l,6))
486 gs(ij8)=gs(ij8)+2*(f(lr,2,1)*clon(l,5)
487 & -f(li,2,1)*slon(l,5))
503 gn(ijk1)=gn(ijk1)+2*(f(lr,1,k)*clon(l,1)
504 & -f(li,1,k)*slon(l,1))
505 gn(ijk2)=gn(ijk2)+2*(f(lr,1,k)*clon(l,2)
506 & -f(li,1,k)*slon(l,2))
507 gn(ijk3)=gn(ijk3)+2*(f(lr,1,k)*clon(l,3)
508 & -f(li,1,k)*slon(l,3))
509 gn(ijk4)=gn(ijk4)+2*(f(lr,1,k)*clon(l,4)
510 & -f(li,1,k)*slon(l,4))
511 gn(ijk5)=gn(ijk5)+2*(f(lr,1,k)*clon(l,5)
512 & -f(li,1,k)*slon(l,5))
513 gn(ijk6)=gn(ijk6)+2*(f(lr,1,k)*clon(l,6)
514 & -f(li,1,k)*slon(l,6))
515 gn(ijk7)=gn(ijk7)+2*(f(lr,1,k)*clon(l,7)
516 & -f(li,1,k)*slon(l,7))
517 gn(ijk8)=gn(ijk8)+2*(f(lr,1,k)*clon(l,8)
518 & -f(li,1,k)*slon(l,8))
519 gs(ijk1)=gs(ijk1)+2*(f(lr,2,k)*clon(l,4)
520 & -f(li,2,k)*slon(l,4))
521 gs(ijk2)=gs(ijk2)+2*(f(lr,2,k)*clon(l,3)
522 & -f(li,2,k)*slon(l,3))
523 gs(ijk3)=gs(ijk3)+2*(f(lr,2,k)*clon(l,2)
524 & -f(li,2,k)*slon(l,2))
525 gs(ijk4)=gs(ijk4)+2*(f(lr,2,k)*clon(l,1)
526 & -f(li,2,k)*slon(l,1))
527 gs(ijk5)=gs(ijk5)+2*(f(lr,2,k)*clon(l,8)
528 & -f(li,2,k)*slon(l,8))
529 gs(ijk6)=gs(ijk6)+2*(f(lr,2,k)*clon(l,7)
530 & -f(li,2,k)*slon(l,7))
531 gs(ijk7)=gs(ijk7)+2*(f(lr,2,k)*clon(l,6)
532 & -f(li,2,k)*slon(l,6))
533 gs(ijk8)=gs(ijk8)+2*(f(lr,2,k)*clon(l,5)
534 & -f(li,2,k)*slon(l,5))