69 implicit real*8(a-h,o-z)
78 parameter(maxppcell=5000)
87 character*80 cards(max)
94 integer*4 ilapcell(max),ilopcell(max)
95 integer*4 poscode(max)
103 integer*4 whichcell(max)
108 integer*4 ppcell(max)
110 character*10 olddtm,newdtm,region
111 character*200 suffix1,suffix2
112 character*200 suffix2t00,suffix2t04,suffix2t10
113 character*200 suffix2d1,suffix2d2,suffix2d3
115 character*200 gfncvacdlat
116 character*200 gfncvacdlon
117 character*200 gfncvacdeht
118 character*200 gfnvmacdlat
119 character*200 gfnvmacdlon
120 character*200 gfnvmacdeht
121 character*200 gfnvmacdhor
122 character*200 gfnvsacdlat
123 character*200 gfnvsacdlon
124 character*200 gfnvsacdhor
126 character*200 gfncvtcdlat
127 character*200 gfncvtcdlon
128 character*200 gfncvtcdeht
129 character*200 gfnvmtcdlat
130 character*200 gfnvmtcdlon
131 character*200 gfnvmtcdeht
132 character*200 gfnvmtcdhor
133 character*200 gfnvstcdlat
134 character*200 gfnvstcdlon
135 character*200 gfnvstcdhor
137 character*200 gfncvdcdlat
138 character*200 gfncvdcdlon
139 character*200 gfncvdcdeht
140 character*200 gfnvmdcdlat
141 character*200 gfnvmdcdlon
142 character*200 gfnvmdcdeht
143 character*200 gfnvmdcdhor
144 character*200 gfnvsdcdlat
145 character*200 gfnvsdcdlon
146 character*200 gfnvsdcdhor
148 character*200 gfnsmtcdlat
149 character*200 gfnsmtcdlon
150 character*200 gfnsmtcdeht
151 character*200 gfnsstcdlat
152 character*200 gfnsstcdlon
154 character*200 rfnvmtcdlat04
155 character*200 rfnvmtcdlon04
156 character*200 rfnvmtcdeht04
157 character*200 rfnvstcdlat04
158 character*200 rfnvstcdlon04
160 character*200 rfnvmtcdlat00
161 character*200 rfnvmtcdlon00
162 character*200 rfnvmtcdeht00
163 character*200 rfnvstcdlat00
164 character*200 rfnvstcdlon00
166 character*200 rfnvmtcdlat10
167 character*200 rfnvmtcdlon10
168 character*200 rfnvmtcdeht10
169 character*200 rfnvstcdlat10
170 character*200 rfnvstcdlon10
179 character*200 zfnvmtcdlat04
180 character*200 zfnvmtcdlon04
181 character*200 zfnvmtcdeht04
182 character*200 zfnvstcdlat04
183 character*200 zfnvstcdlon04
185 character*200 zfnvmtcdlat00
186 character*200 zfnvmtcdlon00
187 character*200 zfnvmtcdeht00
188 character*200 zfnvstcdlat00
189 character*200 zfnvstcdlon00
191 character*200 zfnvmtcdlat10
192 character*200 zfnvmtcdlon10
193 character*200 zfnvmtcdeht10
194 character*200 zfnvstcdlat10
195 character*200 zfnvstcdlon10
204 character*200 bfnvmtcdlat04
205 character*200 bfnvmtcdlon04
206 character*200 bfnvmtcdeht04
207 character*200 bfnvstcdlat04
208 character*200 bfnvstcdlon04
210 character*200 bfnvmtcdlat00
211 character*200 bfnvmtcdlon00
212 character*200 bfnvmtcdeht00
213 character*200 bfnvstcdlat00
214 character*200 bfnvstcdlon00
216 character*200 bfnvmtcdlat10
217 character*200 bfnvmtcdlon10
218 character*200 bfnvmtcdeht10
219 character*200 bfnvstcdlat10
220 character*200 bfnvstcdlon10
223 character*200 dbfnvmtcdlat1000
224 character*200 dbfnvstcdlat1000
225 character*200 dbfnvmtcdlon1000
226 character*200 dbfnvstcdlon1000
227 character*200 dbfnvmtcdeht1000
229 character*200 adbfnvmtcdlat1000
230 character*200 adbfnvstcdlat1000
231 character*200 adbfnvmtcdlon1000
232 character*200 adbfnvstcdlon1000
233 character*200 adbfnvmtcdeht1000
235 character*200 sadbfnvmtcdlat1000
236 character*200 sadbfnvstcdlat1000
237 character*200 sadbfnvmtcdlon1000
238 character*200 sadbfnvstcdlon1000
239 character*200 sadbfnvmtcdeht1000
241 character*200 sadrfnvmtcdlat1000
242 character*200 sadrfnvstcdlat1000
243 character*200 sadrfnvmtcdlon1000
244 character*200 sadrfnvstcdlon1000
245 character*200 sadrfnvmtcdeht1000
255 character*200 gmtfile
265 character*80 cardcvlat,cardcvlon,cardcveht
266 character*80 cardvmlat,cardvmlon,cardvmeht,cardvmhor
267 character*80 cardvslat,cardvslon, cardvshor
278 1001
format(
'BEGIN program mymedian5.f')
283 pi = 2.d0*dasin(1.d0)
285 rng2std = 1.d0/1.6929d0
293 read(5,
'(a)')agridsec
298 read(agridsec,*)igridsec
299 suffix1=trim(olddtm)//
'.'//trim(newdtm)//
'.'//trim(region)
300 suffix2=trim(suffix1)//
'.'//trim(agridsec)
302 suffix2t00=trim(suffix2)//
'.00' 303 suffix2t04=trim(suffix2)//
'.04' 304 suffix2t10=trim(suffix2)//
'.10' 306 suffix2d1=trim(suffix2)//
'.d1' 307 suffix2d2=trim(suffix2)//
'.d2' 308 suffix2d3=trim(suffix2)//
'.d3' 314 gmtfile =
'gmtbat02.'//trim(suffix2)
315 open(99,file=gmtfile,status=
'new',form=
'formatted')
316 write(6,1011)trim(gmtfile)
317 1011
format(6x,
'mymedian5.f: Creating GMT batch file ',a)
318 write(99,1030)trim(gmtfile)
319 1030
format(
'echo BEGIN batch file ',a)
327 gfncvacdlat =
'cvacdlat.'//trim(suffix1)
328 open(11,file=gfncvacdlat,status=
'old',form=
'formatted')
329 write(6,1010)trim(gfncvacdlat)
331 gfncvacdlon =
'cvacdlon.'//trim(suffix1)
332 open(12,file=gfncvacdlon,status=
'old',form=
'formatted')
333 write(6,1010)trim(gfncvacdlon)
335 gfncvacdeht =
'cvacdeht.'//trim(suffix1)
336 open(13,file=gfncvacdeht,status=
'old',form=
'formatted')
337 write(6,1010)trim(gfncvacdeht)
341 gfnvmacdlat =
'vmacdlat.'//trim(suffix1)
342 open(21,file=gfnvmacdlat,status=
'old',form=
'formatted')
343 write(6,1010)trim(gfnvmacdlat)
345 gfnvmacdlon =
'vmacdlon.'//trim(suffix1)
346 open(22,file=gfnvmacdlon,status=
'old',form=
'formatted')
347 write(6,1010)trim(gfnvmacdlon)
349 gfnvmacdeht =
'vmacdeht.'//trim(suffix1)
350 open(23,file=gfnvmacdeht,status=
'old',form=
'formatted')
351 write(6,1010)trim(gfnvmacdeht)
353 gfnvmacdhor =
'vmacdhor.'//trim(suffix1)
354 open(24,file=gfnvmacdhor,status=
'old',form=
'formatted')
355 write(6,1010)trim(gfnvmacdhor)
358 gfnvsacdlat =
'vsacdlat.'//trim(suffix1)
359 open(26,file=gfnvsacdlat,status=
'old',form=
'formatted')
360 write(6,1010)trim(gfnvsacdlat)
362 gfnvsacdlon =
'vsacdlon.'//trim(suffix1)
363 open(27,file=gfnvsacdlon,status=
'old',form=
'formatted')
364 write(6,1010)trim(gfnvsacdlon)
366 gfnvsacdhor =
'vsacdhor.'//trim(suffix1)
367 open(29,file=gfnvsacdhor,status=
'old',form=
'formatted')
368 write(6,1010)trim(gfnvsacdhor)
371 1010
format(6x,
'mymedian5.f: ',
372 *
'Opening existing unthinned file ',a)
380 gfncvtcdlat =
'cvtcdlat.'//trim(suffix2)
381 open(31,file=gfncvtcdlat,status=
'new',form=
'formatted')
382 write(6,1022)trim(gfncvtcdlat)
384 gfncvtcdlon =
'cvtcdlon.'//trim(suffix2)
385 open(32,file=gfncvtcdlon,status=
'new',form=
'formatted')
386 write(6,1022)trim(gfncvtcdlon)
388 gfncvtcdeht =
'cvtcdeht.'//trim(suffix2)
389 open(33,file=gfncvtcdeht,status=
'new',form=
'formatted')
390 write(6,1022)trim(gfncvtcdeht)
393 gfnvmtcdlat =
'vmtcdlat.'//trim(suffix2)
394 open(41,file=gfnvmtcdlat,status=
'new',form=
'formatted')
395 write(6,1012)trim(gfnvmtcdlat)
397 gfnvmtcdlon =
'vmtcdlon.'//trim(suffix2)
398 open(42,file=gfnvmtcdlon,status=
'new',form=
'formatted')
399 write(6,1012)trim(gfnvmtcdlon)
401 gfnvmtcdeht =
'vmtcdeht.'//trim(suffix2)
402 open(43,file=gfnvmtcdeht,status=
'new',form=
'formatted')
403 write(6,1012)trim(gfnvmtcdeht)
405 gfnvmtcdhor =
'vmtcdhor.'//trim(suffix2)
406 open(44,file=gfnvmtcdhor,status=
'new',form=
'formatted')
407 write(6,1012)trim(gfnvmtcdhor)
410 gfnvstcdlat =
'vstcdlat.'//trim(suffix2)
411 open(46,file=gfnvstcdlat,status=
'new',form=
'formatted')
412 write(6,1012)trim(gfnvstcdlat)
414 gfnvstcdlon =
'vstcdlon.'//trim(suffix2)
415 open(47,file=gfnvstcdlon,status=
'new',form=
'formatted')
416 write(6,1012)trim(gfnvstcdlon)
418 gfnvstcdhor =
'vstcdhor.'//trim(suffix2)
419 open(49,file=gfnvstcdhor,status=
'new',form=
'formatted')
420 write(6,1012)trim(gfnvstcdhor)
423 1012
format(6x,
'mymedian5.f: ',
424 *
'Opening output thinned vector file ',a)
425 1022
format(6x,
'mymedian5.f: ',
426 *
'Opening output thinned coverage file ',a)
434 gfncvdcdlat =
'cvdcdlat.'//trim(suffix2)
435 open(51,file=gfncvdcdlat,status=
'new',form=
'formatted')
436 write(6,1023)trim(gfncvdcdlat)
438 gfncvdcdlon =
'cvdcdlon.'//trim(suffix2)
439 open(52,file=gfncvdcdlon,status=
'new',form=
'formatted')
440 write(6,1023)trim(gfncvdcdlon)
442 gfncvdcdeht =
'cvdcdeht.'//trim(suffix2)
443 open(53,file=gfncvdcdeht,status=
'new',form=
'formatted')
444 write(6,1023)trim(gfncvdcdeht)
447 gfnvmdcdlat =
'vmdcdlat.'//trim(suffix2)
448 open(61,file=gfnvmdcdlat,status=
'new',form=
'formatted')
449 write(6,1013)trim(gfnvmdcdlat)
451 gfnvmdcdlon =
'vmdcdlon.'//trim(suffix2)
452 open(62,file=gfnvmdcdlon,status=
'new',form=
'formatted')
453 write(6,1013)trim(gfnvmdcdlon)
455 gfnvmdcdeht =
'vmdcdeht.'//trim(suffix2)
456 open(63,file=gfnvmdcdeht,status=
'new',form=
'formatted')
457 write(6,1013)trim(gfnvmdcdeht)
459 gfnvmdcdhor =
'vmdcdhor.'//trim(suffix2)
460 open(64,file=gfnvmdcdhor,status=
'new',form=
'formatted')
461 write(6,1013)trim(gfnvmdcdhor)
464 gfnvsdcdlat =
'vsdcdlat.'//trim(suffix2)
465 open(66,file=gfnvsdcdlat,status=
'new',form=
'formatted')
466 write(6,1013)trim(gfnvsdcdlat)
468 gfnvsdcdlon =
'vsdcdlon.'//trim(suffix2)
469 open(67,file=gfnvsdcdlon,status=
'new',form=
'formatted')
470 write(6,1013)trim(gfnvsdcdlon)
472 gfnvsdcdhor =
'vsdcdhor.'//trim(suffix2)
473 open(69,file=gfnvsdcdhor,status=
'new',form=
'formatted')
474 write(6,1013)trim(gfnvsdcdhor)
477 1013
format(6x,
'mymedian5.f: ',
478 *
'Opening output dropped vector file ',a)
479 1023
format(6x,
'mymedian5.f: ',
480 *
'Opening output dropped coverage file ',a)
489 gfnsmtcdlat =
'smtcdlat.'//trim(suffix2)
490 open(71,file=gfnsmtcdlat,status=
'new',form=
'formatted')
491 write(6,1014)trim(gfnsmtcdlat)
493 gfnsmtcdlon =
'smtcdlon.'//trim(suffix2)
494 open(72,file=gfnsmtcdlon,status=
'new',form=
'formatted')
495 write(6,1014)trim(gfnsmtcdlon)
497 gfnsmtcdeht =
'smtcdeht.'//trim(suffix2)
498 open(73,file=gfnsmtcdeht,status=
'new',form=
'formatted')
499 write(6,1014)trim(gfnsmtcdeht)
502 gfnsstcdlat =
'sstcdlat.'//trim(suffix2)
503 open(76,file=gfnsstcdlat,status=
'new',form=
'formatted')
504 write(6,1014)trim(gfnsstcdlat)
506 gfnsstcdlon =
'sstcdlon.'//trim(suffix2)
507 open(77,file=gfnsstcdlon,status=
'new',form=
'formatted')
508 write(6,1014)trim(gfnsstcdlon)
511 1014
format(6x,
'mymedian5.f: ',
512 *
'Opening output thinned vector file (for surface):',a)
521 write(6,1004)trim(region),glamn,glamx,glomn,glomx
522 1004
format(6x,
'mymedian5.f: Region= ',a,/,
523 * 6x,
'mymedian5.f: North = ',f12.6,/,
524 * 6x,
'mymedian5.f: South = ',f12.6,/,
525 * 6x,
'mymedian5.f: West = ',f12.6,/,
526 * 6x,
'mymedian5.f: East = ',f12.6)
533 dgla = dble(igridsec)/3600.d0
534 dglo = dble(igridsec)/3600.d0
536 nla=idnint((glamx-glamn)/dgla)+1
537 nlo=idnint((glomx-glomn)/dglo)+1
539 write(6,3001)glamn,glamx,glomn,glomx,dgla,dglo,nla,nlo
540 3001
format(6x,
'mymedian5.f : Cell Structure:',/,
541 *8x,
'North = ',f16.10,/,
542 *8x,
'South = ',f16.10,/,
543 *8x,
'West = ',f16.10,/,
544 *8x,
'East = ',f16.10,/,
545 *8x,
'DLat = ',f16.10,/,
546 *8x,
'DLon = ',f16.10,/,
547 *8x,
'NLat = ',i16 ,/,
583 elseif(iloop.eq.2)
then 588 write(6,2002)trim(fused)
589 2002
format(6x,
'mymedian5.f: Median filtering file : ',a)
590 101
format(f16.10,1x,f15.10,1x,6x ,1x,12x ,1x,9x ,1x,f9.3,1x,a6)
595 2003
format(6x,
'mymedian5.f: FATAL ERROR: ',
596 *
'Point outside boundaries: ',
597 * f16.10,1x,f15.10,1x,f9.5,1x,a6)
612 100
read(lin,
'(a)',end=777)card
616 read(card,101)glo,gla,z,pid
622 if(gla.lt.glamn.or.gla.gt.glamx .or.
623 * glo.lt.glomn.or.glo.gt.glomx)
then 624 write(6,2003)gla,glo,z,pid
641 ila=idnint((gla-glamn)/dgla)+1
642 ilo=idnint((glo-glomn)/dglo)+1
648 xla = glamn + (ila-1)*dgla
649 xlo = glomn + (ilo-1)*dglo
650 dist(ikt) = dsqrt((gla-xla)**2+(glo-xlo)**2)
659 if(ipos.eq.poscode(j))
then 660 ppcell(j) = ppcell(j) + 1
670 poscode(ncells) = ipos
671 ilapcell(ncells) = ila
672 ilopcell(ncells) = ilo
675 whichcell(ikt) = ncells
691 write(6,2004) trim(fused),nkt,igridsec,ncells
693 *6x,
'mymedian5.f: Done Reading from : ',a,/,
694 *6x,
'mymedian5.f: Points in File : ',i10,/,
695 *6x,
'mymedian5.f: Cell Size (Arcseconds) : ',i10,/,
696 *6x,
'mymedian5.f: Number of Cells with Data : ',i10)
698 2005
format(6x,
'mymedian5.f: Begin median filtering')
707 2020
format(6x,
'mymedian5.f: Sorting data...')
709 call indexxi(nkt,max,whichcell,indx)
722 2010
format(i8,1x,a80,1x,4(i10))
728 do 401 icell=1,ncells
730 inumhi = inumlo + ppcell(icell) - 1
732 do 402 jpt=1,ppcell(icell)
738 call getmedian(zs,max,inumlo,inumhi,indx,
739 * maxppcell,dist,iiival)
743 if(iiival.lt.0)stop 10001
744 if(iiival.gt.nkt)stop 10002
745 lpass(iiival) = .true.
748 408
format(6x,
'mymedian5.f: Done finding medians',/,
749 * 6x,
'mymedian5.f: Populating thinned and dropped files')
760 read(11,
'(a)')cardcvlat
761 read(12,
'(a)')cardcvlon
763 read(21,
'(a)')cardvmlat
764 read(22,
'(a)')cardvmlon
765 read(24,
'(a)')cardvmhor
767 read(26,
'(a)')cardvslat
768 read(27,
'(a)')cardvslon
769 read(29,
'(a)')cardvshor
773 write(31,
'(a)')cardcvlat
774 write(32,
'(a)')cardcvlon
776 write(41,
'(a)')cardvmlat
777 write(42,
'(a)')cardvmlon
778 write(44,
'(a)')cardvmhor
780 write(46,
'(a)')cardvslat
781 write(47,
'(a)')cardvslon
782 write(49,
'(a)')cardvshor
790 write(71,
'(a,a,a)')cardvmlat(1:33),cardvmlat(64:72),
792 write(72,
'(a,a,a)')cardvmlon(1:33),cardvmlon(64:72),
795 write(76,
'(a,a,a)')cardvslat(1:33),cardvslat(54:62),
797 write(77,
'(a,a,a)')cardvslon(1:33),cardvslon(54:62),
802 write(51,
'(a)')cardcvlat
803 write(52,
'(a)')cardcvlon
805 write(61,
'(a)')cardvmlat
806 write(62,
'(a)')cardvmlon
807 write(64,
'(a)')cardvmhor
809 write(66,
'(a)')cardvslat
810 write(67,
'(a)')cardvslon
811 write(69,
'(a)')cardvshor
815 read(13,
'(a)')cardcveht
817 read(23,
'(a)')cardvmeht
821 write(33,
'(a)')cardcveht
822 write(43,
'(a)')cardvmeht
824 write(73,
'(a,a,a)')cardvmeht(1:33),cardvmeht(64:72),
828 write(53,
'(a)')cardcveht
829 write(63,
'(a)')cardvmeht
834 write(6,*)
' Number kept : ',ithin
835 write(6,*)
' Number dropped : ',idrop
875 cmidlat=dcos(((glamn+glamx)/2.d0)*d2r)
876 rfnvmtcdlat00 =
'vmtcdlat.'//trim(suffix2t00)//
'.grd' 877 rfnvmtcdlon00 =
'vmtcdlon.'//trim(suffix2t00)//
'.grd' 878 rfnvmtcdeht00 =
'vmtcdeht.'//trim(suffix2t00)//
'.grd' 879 rfnvstcdlat00 =
'vstcdlat.'//trim(suffix2t00)//
'.grd' 880 rfnvstcdlon00 =
'vstcdlon.'//trim(suffix2t00)//
'.grd' 881 rfnvmtcdlat04 =
'vmtcdlat.'//trim(suffix2t04)//
'.grd' 882 rfnvmtcdlon04 =
'vmtcdlon.'//trim(suffix2t04)//
'.grd' 883 rfnvmtcdeht04 =
'vmtcdeht.'//trim(suffix2t04)//
'.grd' 884 rfnvstcdlat04 =
'vstcdlat.'//trim(suffix2t04)//
'.grd' 885 rfnvstcdlon04 =
'vstcdlon.'//trim(suffix2t04)//
'.grd' 886 rfnvmtcdlat10 =
'vmtcdlat.'//trim(suffix2t10)//
'.grd' 887 rfnvmtcdlon10 =
'vmtcdlon.'//trim(suffix2t10)//
'.grd' 888 rfnvmtcdeht10 =
'vmtcdeht.'//trim(suffix2t10)//
'.grd' 889 rfnvstcdlat10 =
'vstcdlat.'//trim(suffix2t10)//
'.grd' 890 rfnvstcdlon10 =
'vstcdlon.'//trim(suffix2t10)//
'.grd' 892 sadrfnvmtcdlat1000 =
'vmtcdlat.'//trim(suffix2d3)//
'.grd' 893 sadrfnvstcdlat1000 =
'vstcdlat.'//trim(suffix2d3)//
'.grd' 894 sadrfnvmtcdlon1000 =
'vmtcdlon.'//trim(suffix2d3)//
'.grd' 895 sadrfnvstcdlon1000 =
'vstcdlon.'//trim(suffix2d3)//
'.grd' 896 sadrfnvmtcdeht1000 =
'vmtcdeht.'//trim(suffix2d3)//
'.grd' 898 zfnvmtcdlat00 =
'vmtcdlat.'//trim(suffix2t00)//
'.xyz' 899 zfnvmtcdlon00 =
'vmtcdlon.'//trim(suffix2t00)//
'.xyz' 900 zfnvmtcdeht00 =
'vmtcdeht.'//trim(suffix2t00)//
'.xyz' 901 zfnvstcdlat00 =
'vstcdlat.'//trim(suffix2t00)//
'.xyz' 902 zfnvstcdlon00 =
'vstcdlon.'//trim(suffix2t00)//
'.xyz' 903 zfnvmtcdlat04 =
'vmtcdlat.'//trim(suffix2t04)//
'.xyz' 904 zfnvmtcdlon04 =
'vmtcdlon.'//trim(suffix2t04)//
'.xyz' 905 zfnvmtcdeht04 =
'vmtcdeht.'//trim(suffix2t04)//
'.xyz' 906 zfnvstcdlat04 =
'vstcdlat.'//trim(suffix2t04)//
'.xyz' 907 zfnvstcdlon04 =
'vstcdlon.'//trim(suffix2t04)//
'.xyz' 908 zfnvmtcdlat10 =
'vmtcdlat.'//trim(suffix2t10)//
'.xyz' 909 zfnvmtcdlon10 =
'vmtcdlon.'//trim(suffix2t10)//
'.xyz' 910 zfnvmtcdeht10 =
'vmtcdeht.'//trim(suffix2t10)//
'.xyz' 911 zfnvstcdlat10 =
'vstcdlat.'//trim(suffix2t10)//
'.xyz' 912 zfnvstcdlon10 =
'vstcdlon.'//trim(suffix2t10)//
'.xyz' 914 bfnvmtcdlat00 =
'vmtcdlat.'//trim(suffix2t00)//
'.b' 915 bfnvmtcdlon00 =
'vmtcdlon.'//trim(suffix2t00)//
'.b' 916 bfnvmtcdeht00 =
'vmtcdeht.'//trim(suffix2t00)//
'.b' 917 bfnvstcdlat00 =
'vstcdlat.'//trim(suffix2t00)//
'.b' 918 bfnvstcdlon00 =
'vstcdlon.'//trim(suffix2t00)//
'.b' 919 bfnvmtcdlat04 =
'vmtcdlat.'//trim(suffix2t04)//
'.b' 920 bfnvmtcdlon04 =
'vmtcdlon.'//trim(suffix2t04)//
'.b' 921 bfnvmtcdeht04 =
'vmtcdeht.'//trim(suffix2t04)//
'.b' 922 bfnvstcdlat04 =
'vstcdlat.'//trim(suffix2t04)//
'.b' 923 bfnvstcdlon04 =
'vstcdlon.'//trim(suffix2t04)//
'.b' 924 bfnvmtcdlat10 =
'vmtcdlat.'//trim(suffix2t10)//
'.b' 925 bfnvmtcdlon10 =
'vmtcdlon.'//trim(suffix2t10)//
'.b' 926 bfnvmtcdeht10 =
'vmtcdeht.'//trim(suffix2t10)//
'.b' 927 bfnvstcdlat10 =
'vstcdlat.'//trim(suffix2t10)//
'.b' 928 bfnvstcdlon10 =
'vstcdlon.'//trim(suffix2t10)//
'.b' 931 dbfnvmtcdlat1000 =
'vmtcdlat.'//trim(suffix2d1)//
'.b' 932 dbfnvstcdlat1000 =
'vstcdlat.'//trim(suffix2d1)//
'.b' 933 dbfnvmtcdlon1000 =
'vmtcdlon.'//trim(suffix2d1)//
'.b' 934 dbfnvstcdlon1000 =
'vstcdlon.'//trim(suffix2d1)//
'.b' 935 dbfnvmtcdeht1000 =
'vmtcdeht.'//trim(suffix2d1)//
'.b' 937 adbfnvmtcdlat1000 =
'vmtcdlat.'//trim(suffix2d2)//
'.b' 938 adbfnvstcdlat1000 =
'vstcdlat.'//trim(suffix2d2)//
'.b' 939 adbfnvmtcdlon1000 =
'vmtcdlon.'//trim(suffix2d2)//
'.b' 940 adbfnvstcdlon1000 =
'vstcdlon.'//trim(suffix2d2)//
'.b' 941 adbfnvmtcdeht1000 =
'vmtcdeht.'//trim(suffix2d2)//
'.b' 943 sadbfnvmtcdlat1000 =
'vmtcdlat.'//trim(suffix2d3)//
'.b' 944 sadbfnvstcdlat1000 =
'vstcdlat.'//trim(suffix2d3)//
'.b' 945 sadbfnvmtcdlon1000 =
'vmtcdlon.'//trim(suffix2d3)//
'.b' 946 sadbfnvstcdlon1000 =
'vstcdlon.'//trim(suffix2d3)//
'.b' 947 sadbfnvmtcdeht1000 =
'vmtcdeht.'//trim(suffix2d3)//
'.b' 951 xgridmin = dble(igridsec)/60.d0
957 if(nthinhor.ne.0)
then 958 write(99,501)trim(gfnsmtcdlat),glomn,glomx,glamn,glamx,
959 * xgridmin,trim(rfnvmtcdlat00),0.0,cmidlat
960 write(99,501)trim(gfnsstcdlat),glomn,glomx,glamn,glamx,
961 * xgridmin,trim(rfnvstcdlat00),0.0,cmidlat
963 write(99,501)trim(gfnsmtcdlat),glomn,glomx,glamn,glamx,
964 * xgridmin,trim(rfnvmtcdlat04),0.4,cmidlat
965 write(99,501)trim(gfnsstcdlat),glomn,glomx,glamn,glamx,
966 * xgridmin,trim(rfnvstcdlat04),0.4,cmidlat
968 write(99,501)trim(gfnsmtcdlat),glomn,glomx,glamn,glamx,
969 * xgridmin,trim(rfnvmtcdlat10),1.0,cmidlat
970 write(99,501)trim(gfnsstcdlat),glomn,glomx,glamn,glamx,
971 * xgridmin,trim(rfnvstcdlat10),1.0,cmidlat
975 if(nthinhor.ne.0)
then 976 write(99,501)trim(gfnsmtcdlon),glomn,glomx,glamn,glamx,
977 * xgridmin,trim(rfnvmtcdlon00),0.0,cmidlat
978 write(99,501)trim(gfnsstcdlon),glomn,glomx,glamn,glamx,
979 * xgridmin,trim(rfnvstcdlon00),0.0,cmidlat
981 write(99,501)trim(gfnsmtcdlon),glomn,glomx,glamn,glamx,
982 * xgridmin,trim(rfnvmtcdlon04),0.4,cmidlat
983 write(99,501)trim(gfnsstcdlon),glomn,glomx,glamn,glamx,
984 * xgridmin,trim(rfnvstcdlon04),0.4,cmidlat
986 write(99,501)trim(gfnsmtcdlon),glomn,glomx,glamn,glamx,
987 * xgridmin,trim(rfnvmtcdlon10),1.0,cmidlat
988 write(99,501)trim(gfnsstcdlon),glomn,glomx,glamn,glamx,
989 * xgridmin,trim(rfnvstcdlon10),1.0,cmidlat
993 if(nthineht.ne.0)
then 994 write(99,501)trim(gfnsmtcdeht),glomn,glomx,glamn,glamx,
995 * xgridmin,trim(rfnvmtcdeht00),0.0,cmidlat
997 write(99,501)trim(gfnsmtcdeht),glomn,glomx,glamn,glamx,
998 * xgridmin,trim(rfnvmtcdeht04),0.4,cmidlat
1000 write(99,501)trim(gfnsmtcdeht),glomn,glomx,glamn,glamx,
1001 * xgridmin,trim(rfnvmtcdeht10),1.0,cmidlat
1005 if(nthinhor.ne.0)
then 1006 write(99,502)trim(rfnvmtcdlat00),trim(zfnvmtcdlat00)
1007 write(99,502)trim(rfnvstcdlat00),trim(zfnvstcdlat00)
1009 write(99,502)trim(rfnvmtcdlat04),trim(zfnvmtcdlat04)
1010 write(99,502)trim(rfnvstcdlat04),trim(zfnvstcdlat04)
1012 write(99,502)trim(rfnvmtcdlat10),trim(zfnvmtcdlat10)
1013 write(99,502)trim(rfnvstcdlat10),trim(zfnvstcdlat10)
1016 if(nthinhor.ne.0)
then 1017 write(99,502)trim(rfnvmtcdlon00),trim(zfnvmtcdlon00)
1018 write(99,502)trim(rfnvstcdlon00),trim(zfnvstcdlon00)
1020 write(99,502)trim(rfnvmtcdlon04),trim(zfnvmtcdlon04)
1021 write(99,502)trim(rfnvstcdlon04),trim(zfnvstcdlon04)
1023 write(99,502)trim(rfnvmtcdlon10),trim(zfnvmtcdlon10)
1024 write(99,502)trim(rfnvstcdlon10),trim(zfnvstcdlon10)
1027 if(nthineht.ne.0)
then 1028 write(99,502)trim(rfnvmtcdeht00),trim(zfnvmtcdeht00)
1030 write(99,502)trim(rfnvmtcdeht04),trim(zfnvmtcdeht04)
1032 write(99,502)trim(rfnvmtcdeht10),trim(zfnvmtcdeht10)
1036 if(nthinhor.ne.0)
then 1037 write(99,503)trim(zfnvmtcdlat00),trim(bfnvmtcdlat00)
1038 write(99,503)trim(zfnvstcdlat00),trim(bfnvstcdlat00)
1040 write(99,503)trim(zfnvmtcdlat04),trim(bfnvmtcdlat04)
1041 write(99,503)trim(zfnvstcdlat04),trim(bfnvstcdlat04)
1043 write(99,503)trim(zfnvmtcdlat10),trim(bfnvmtcdlat10)
1044 write(99,503)trim(zfnvstcdlat10),trim(bfnvstcdlat10)
1047 if(nthinhor.ne.0)
then 1048 write(99,503)trim(zfnvmtcdlon00),trim(bfnvmtcdlon00)
1049 write(99,503)trim(zfnvstcdlon00),trim(bfnvstcdlon00)
1051 write(99,503)trim(zfnvmtcdlon04),trim(bfnvmtcdlon04)
1052 write(99,503)trim(zfnvstcdlon04),trim(bfnvstcdlon04)
1054 write(99,503)trim(zfnvmtcdlon10),trim(bfnvmtcdlon10)
1055 write(99,503)trim(zfnvstcdlon10),trim(bfnvstcdlon10)
1058 if(nthineht.ne.0)
then 1059 write(99,503)trim(zfnvmtcdeht00),trim(bfnvmtcdeht00)
1061 write(99,503)trim(zfnvmtcdeht04),trim(bfnvmtcdeht04)
1063 write(99,503)trim(zfnvmtcdeht10),trim(bfnvmtcdeht10)
1068 *
'surface ',a,
' -R',f9.5,
'/',f9.5,
'/',sp,f9.5,
'/',f9.5,s,
1069 *
' -I',f0.2,
'm -G',a,
' -T',f3.1,
' -A',s,f6.4,
' -C0.01 -V')
1076 *
'grd2xyz ',a,
' -bo3f > ',a)
1088 *a,/,f10.5,/,a,/,
'!')
1090 *
'b2xyz << !',/,a,/,
'!',/,
1091 *
'xyz2grd temp.xyz -R',f9.5,
'/',f9.5,
'/',sp,f9.5,
'/',f9.5,s,
1092 *
' -I',f0.2,
'm -bi3f -G',a,/,
1107 if(nthinhor.ne.0)
then 1108 write(99,504)trim(bfnvmtcdlat10),trim(bfnvmtcdlat00),
1109 * trim(dbfnvmtcdlat1000)
1110 write(99,504)trim(bfnvstcdlat10),trim(bfnvstcdlat00),
1111 * trim(dbfnvstcdlat1000)
1113 write(99,504)trim(bfnvmtcdlon10),trim(bfnvmtcdlon00),
1114 * trim(dbfnvmtcdlon1000)
1115 write(99,504)trim(bfnvstcdlon10),trim(bfnvstcdlon00),
1116 * trim(dbfnvstcdlon1000)
1119 if(nthineht.ne.0)
then 1120 write(99,504)trim(bfnvmtcdeht10),trim(bfnvmtcdeht00),
1121 * trim(dbfnvmtcdeht1000)
1125 if(nthinhor.ne.0)
then 1126 write(99,505)trim(dbfnvmtcdlat1000),trim(adbfnvmtcdlat1000)
1127 write(99,505)trim(dbfnvstcdlat1000),trim(adbfnvstcdlat1000)
1128 write(99,505)trim(dbfnvmtcdlon1000),trim(adbfnvmtcdlon1000)
1129 write(99,505)trim(dbfnvstcdlon1000),trim(adbfnvstcdlon1000)
1132 if(nthineht.ne.0)
then 1133 write(99,505)trim(dbfnvmtcdeht1000),trim(adbfnvmtcdeht1000)
1137 if(nthinhor.ne.0)
then 1138 write(99,506)trim(adbfnvmtcdlat1000),rng2std,
1139 * trim(sadbfnvmtcdlat1000)
1140 write(99,506)trim(adbfnvstcdlat1000),rng2std,
1141 * trim(sadbfnvstcdlat1000)
1142 write(99,506)trim(adbfnvmtcdlon1000),rng2std,
1143 * trim(sadbfnvmtcdlon1000)
1144 write(99,506)trim(adbfnvstcdlon1000),rng2std,
1145 * trim(sadbfnvstcdlon1000)
1148 if(nthineht.ne.0)
then 1149 write(99,506)trim(adbfnvmtcdeht1000),rng2std,
1150 * trim(sadbfnvmtcdeht1000)
1156 if(nthinhor.ne.0)
then 1157 write(99,507)trim(sadbfnvmtcdlat1000)
1158 * ,glomn,glomx,glamn,glamx,xgridmin,trim(sadrfnvmtcdlat1000)
1159 write(99,507)trim(sadbfnvstcdlat1000)
1160 * ,glomn,glomx,glamn,glamx,xgridmin,trim(sadrfnvstcdlat1000)
1161 write(99,507)trim(sadbfnvmtcdlon1000)
1162 * ,glomn,glomx,glamn,glamx,xgridmin,trim(sadrfnvmtcdlon1000)
1163 write(99,507)trim(sadbfnvstcdlon1000)
1164 * ,glomn,glomx,glamn,glamx,xgridmin,trim(sadrfnvstcdlon1000)
1167 if(nthineht.ne.0)
then 1168 write(99,507)trim(sadbfnvmtcdeht1000)
1169 * ,glomn,glomx,glamn,glamx,xgridmin,trim(sadrfnvmtcdeht1000)
1175 if(trim(olddtm).eq.
'nad83_harn' .and.
1176 * trim(newdtm).eq.
'nad83_fbn' .and.
1177 * trim(region).eq.
'conus' )
then 1185 if(nthinhor.ne.0)
then 1186 write(99,602)trim(bfnvmtcdlat04),
1187 * trim(bfnvmtcdlat04)//
'.premask',
1188 * trim(bfnvmtcdlat04)//
'.premask',
1189 * trim(bfnvmtcdlat04),
1190 * igridsec/30,igridsec/30
1192 write(99,602)trim(bfnvstcdlat04),
1193 * trim(bfnvstcdlat04)//
'.premask',
1194 * trim(bfnvstcdlat04)//
'.premask',
1195 * trim(bfnvstcdlat04),
1196 * igridsec/30,igridsec/30
1198 write(99,602)trim(bfnvmtcdlon04),
1199 * trim(bfnvmtcdlon04)//
'.premask',
1200 * trim(bfnvmtcdlon04)//
'.premask',
1201 * trim(bfnvmtcdlon04),
1202 * igridsec/30,igridsec/30
1204 write(99,602)trim(bfnvstcdlon04),
1205 * trim(bfnvstcdlon04)//
'.premask',
1206 * trim(bfnvstcdlon04)//
'.premask',
1207 * trim(bfnvstcdlon04),
1208 * igridsec/30,igridsec/30
1211 if(nthineht.ne.0)
then 1212 write(99,602)trim(bfnvmtcdeht04),
1213 * trim(bfnvmtcdeht04)//
'.premask',
1214 * trim(bfnvmtcdeht04)//
'.premask',
1215 * trim(bfnvmtcdeht04),
1216 * igridsec/30,igridsec/30
1221 if(nthinhor.ne.0)
then 1223 * trim(zfnvmtcdlat04),trim(zfnvmtcdlat04)//
'.premask',
1224 * trim(bfnvmtcdlat04),
1225 * trim(zfnvmtcdlat04),
1226 * trim(rfnvmtcdlat04),
1227 * trim(rfnvmtcdlat04)//
'.premask',
1228 * trim(zfnvmtcdlat04),
1229 * glomn,glomx,glamn,glamx,xgridmin,trim(rfnvmtcdlat04)
1232 * trim(zfnvstcdlat04),trim(zfnvstcdlat04)//
'.premask',
1233 * trim(bfnvstcdlat04),
1234 * trim(zfnvstcdlat04),
1235 * trim(rfnvstcdlat04),
1236 * trim(rfnvstcdlat04)//
'.premask',
1237 * trim(zfnvstcdlat04),
1238 * glomn,glomx,glamn,glamx,xgridmin,trim(rfnvstcdlat04)
1241 * trim(zfnvmtcdlon04),trim(zfnvmtcdlon04)//
'.premask',
1242 * trim(bfnvmtcdlon04),
1243 * trim(zfnvmtcdlon04),
1244 * trim(rfnvmtcdlon04),
1245 * trim(rfnvmtcdlon04)//
'.premask',
1246 * trim(zfnvmtcdlon04),
1247 * glomn,glomx,glamn,glamx,xgridmin,trim(rfnvmtcdlon04)
1250 * trim(zfnvstcdlon04),trim(zfnvstcdlon04)//
'.premask',
1251 * trim(bfnvstcdlon04),
1252 * trim(zfnvstcdlon04),
1253 * trim(rfnvstcdlon04),
1254 * trim(rfnvstcdlon04)//
'.premask',
1255 * trim(zfnvstcdlon04),
1256 * glomn,glomx,glamn,glamx,xgridmin,trim(rfnvstcdlon04)
1259 if(nthineht.ne.0)
then 1261 * trim(zfnvmtcdeht04),trim(zfnvmtcdeht04)//
'.premask',
1262 * trim(bfnvmtcdeht04),
1263 * trim(zfnvmtcdeht04),
1264 * trim(rfnvmtcdeht04),
1265 * trim(rfnvmtcdeht04)//
'.premask',
1266 * trim(zfnvmtcdeht04),
1267 * glomn,glomx,glamn,glamx,xgridmin,trim(rfnvmtcdeht04)
1272 *
'b2xyz << !',/,a,/,
'!',/,
1273 *
'mv temp.xyz ',a,/,
1275 *
'xyz2grd ',a,
' -R',f9.5,
'/',f9.5,
'/',sp,f9.5,
'/',f9.5,s,
1276 *
' -I',f0.2,
'm -bis -G',a)
1279 601
format(
'echo Applying MASK for HARN FBN CONUS 04 grids')
1291 *
'Masks/mask.harnfbn.30.b',/,
1300 *
'rm -f dummy1.b',/,
1314 write(99,1031)trim(gmtfile)
1315 1031
format(
'echo END batch file ',a)
1319 9999
format(
'END mymedian5.f')
1322 2006
format(
'Cell ',i8,
' Poscode: ',i12)
1323 2007
format(6x,
'Pt : ',i5)
1328 subroutine getmedian(zs,max,inumlo,inumhi,indx,
1329 *maxppcell,dist,iiival)
1330 real*8 zs(max),dist(max)
1331 integer*4 indx(max),indx2(maxppcell)
1332 integer*4 inumlo,inumhi
1334 real*8 zz(maxppcell)
1350 nval = inumhi-inumlo+1
1352 do 2 i=inumlo,inumhi
1354 zz(iq) = zs(indx(i))
1357 3
format(i10,1x,i10,1x,f20.10)
1362 call indexxd(nval,maxppcell,zz,indx2)
1369 5
format(i10,1x,f20.10)
1374 if(mod(nval,2).eq.1)
then 1383 if(dist(indx2(ival1)).lt.dist(indx2(ival2)))
then 1396 igood1 = indx2(ival)
1399 iival = inumlo + indx2(ival) - 1
1401 iiival = indx(iival)
1408 include
'Subs/getgridbounds.f' 1409 include
'Subs/indexxi.for' 1410 include
'Subs/indexxd.for' subroutine indexxd(n, nd, arr, indx)
Subroutine to perform ?? indexing on floating point data (double precision)
subroutine indexxi(n, nd, arr, indx)
Subroutine to perform ?? indexing on integer data.
subroutine getgridbounds(region, xn, xs, xw, xe)
Subroutine to collect up the GRID boundaries for use in creating NADCON 5.
program mymedian5
Program to filter Map Data for GMT Plotting.