53 use vrbls3d,
only: zmid, zint, dbz, dbzr, dbzi, dbzc, uh, vh, pmid, t, q, ref_10cm
54 use vrbls2d,
only: refd_max, up_heli_max, up_heli_max16, grpl_max, &
55 up_heli_min, up_heli_min16, up_heli_max02, &
56 up_heli_min02, up_heli_max03, up_heli_min03, &
57 rel_vort_max, rel_vort_max01, hail_max2d, hail_maxk1,&
58 hail_maxhailcast,refdm10c_max, rel_vort_maxhy1, &
59 ltg1_max, ltg2_max, ltg3_max, up_heli, up_heli16, &
60 nci_ltg, nca_ltg, nci_wq, nca_wq, nci_refd, nca_refd,&
62 use masks,
only: lmh, lmv
63 use params_mod,
only: dbzmin, small, eps, rd
64 use ctlblk_mod,
only: spval, lm, modelname, grib, cfld, fld_info, datapd,&
65 ifhr, global, jsta_m, jend_m, mpi_comm_comp, &
66 jsta_2l, jend_2u, im, jm, jsta, jend, imp_physics, &
67 ista, iend, ista_2l, iend_2u, ista_m, iend_m
68 use rqstfld_mod,
only: iget, lvls, iavblfld, lvlsxml, id
69 use gridspec_mod,
only: gridtype
78 integer,
PARAMETER :: LAGL=2,lagl2=1
83 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: grid1
84 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: UAGL, VAGL, tagl, pagl, qagl
86 INTEGER,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: NL1X
87 integer,
dimension(jm) :: IHE, IHW
88 INTEGER LXXX,IERR, maxll, minll
89 INTEGER ISTART,ISTOP,JSTART,JSTOP
106 REAL,
dimension(ista:iend,jsta:jend) :: DBZ1, DBZR1, DBZI1, DBZC1, dbz1log
107 real,
dimension(lagl) :: ZAGL
108 real,
dimension(lagl2) :: ZAGL2, ZAGL3
109 real PAGLU,PAGLL,TAGLU,TAGLL,QAGLU,QAGLL, pv, rho
111 integer I,J,L,II,JJ,LP,LL,LLMH,ie,iw,jn,js,iget1,iget2,iget3,iget4
112 real UAGLL,UAGLU,VAGLL,VAGLU,FACT,ZDUM
137 IF (iget(253)>0 .OR. iget(279)>0 .OR. iget(280)>0 .OR. &
147 iget1 = -1 ; iget2 = -1 ; iget3 = -1 ; iget4 = -1
148 if (iget(253) > 0) iget1 = lvls(lp,iget(253))
149 if (iget(279) > 0) iget2 = lvls(lp,iget(279))
150 if (iget(280) > 0) iget3 = lvls(lp,iget(280))
151 if (iget(281) > 0) iget4 = lvls(lp,iget(281))
152 IF (iget1 > 0 .or. iget2 > 0 .or. iget3 > 0 .or. iget4 > 0)
then
154 jj=float(jsta+jend)/2.0
155 ii=float(ista+iend)/3.0
167 llmh = nint(lmh(i,j))
170 zdum = zmid(i,j,l)-zint(i,j,llmh+1)
171 IF(zdum >= zagl(lp))
THEN
182 IF(nl1x(i,j) == (llmh+1) .AND. zagl(lp) > 0.)
THEN
209 llmh = nint(lmh(i,j))
210 IF(nl1x(i,j)<=llmh)
THEN
211 IF(zmid(i,j,ll)<spval.and.zmid(i,j,ll-1)<spval)
THEN
223 zdum=zagl(lp)+zint(i,j,nint(lmh(i,j))+1)
224 fact=(zdum-zmid(i,j,ll))/(zmid(i,j,ll)-zmid(i,j,ll-1))
227 if (imp_physics==8)
then
228 dbz1(i,j)=ref_10cm(i,j,ll)+(ref_10cm(i,j,ll)-ref_10cm(i,j,ll-1))*fact
230 dbz1(i,j)=dbz(i,j,ll)+(dbz(i,j,ll)-dbz(i,j,ll-1))*fact
233 dbzr1(i,j) = dbzr(i,j,ll) + (dbzr(i,j,ll)-dbzr(i,j,ll-1))*fact
234 dbzi1(i,j) = dbzi(i,j,ll) + (dbzi(i,j,ll)-dbzi(i,j,ll-1))*fact
235 dbzc1(i,j) = dbzc(i,j,ll) + (dbzc(i,j,ll)-dbzc(i,j,ll-1))*fact
236 if(modelname==
'RAPR')
then
237 if(dbz1(i,j)>0.)
then
238 dbz1log(i,j)= 10.*log10(dbz1(i,j))
250 if(modelname==
'RAPR')
then
251 dbz1log(i,j)=max(dbz1log(i,j),dbzmin)
253 dbz1(i,j)=max(dbz1(i,j),dbzmin)
255 dbzr1(i,j) = max(dbzr1(i,j),dbzmin)
256 dbzi1(i,j) = max(dbzi1(i,j),dbzmin)
257 dbzc1(i,j) = max(dbzc1(i,j),dbzmin)
265 dbz1log(i,j) = dbzmin
284 IF((iget(253)>0) )
THEN
285 if(modelname==
'RAPR')
then
288 grid1(i,j)=dbz1log(i,j)
298 if(grib==
'grib2')
then
300 fld_info(cfld)%ifld=iavblfld(iget(253))
301 fld_info(cfld)%lvl=lvlsxml(lp,iget(253))
302 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
306 IF((iget(279)>0) )
THEN
309 grid1(i,j)=dbzr1(i,j)
312 if(grib==
'grib2')
then
314 fld_info(cfld)%ifld=iavblfld(iget(279))
315 fld_info(cfld)%lvl=lvlsxml(lp,iget(279))
316 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
320 IF((iget(280)>0) )
THEN
323 grid1(i,j)=dbzi1(i,j)
326 if(grib==
'grib2')
then
328 fld_info(cfld)%ifld=iavblfld(iget(280))
329 fld_info(cfld)%lvl=lvlsxml(lp,iget(280))
330 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
334 IF((iget(281)>0) )
THEN
337 grid1(i,j)=dbzc1(i,j)
340 if(grib==
'grib2')
then
342 fld_info(cfld)%ifld=iavblfld(iget(281))
343 fld_info(cfld)%lvl=lvlsxml(lp,iget(281))
344 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
359 IF((iget(421)>0) )
THEN
362 grid1(i,j)=refd_max(i,j)
365 if(grib==
'grib2')
then
367 fld_info(cfld)%ifld=iavblfld(iget(421))
368 fld_info(cfld)%lvl=lvlsxml(lp,iget(421))
369 fld_info(cfld)%tinvstat=1
371 fld_info(cfld)%tinvstat=1
373 fld_info(cfld)%tinvstat=0
375 fld_info(cfld)%ntrange=1
376 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
381 IF((iget(785)>0) )
THEN
384 grid1(i,j)=refdm10c_max(i,j)
387 if(grib==
'grib2')
then
389 fld_info(cfld)%ifld=iavblfld(iget(785))
390 fld_info(cfld)%lvl=lvlsxml(lp,iget(785))
392 fld_info(cfld)%tinvstat=1
394 fld_info(cfld)%tinvstat=0
396 fld_info(cfld)%ntrange=1
397 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
402 IF((iget(420)>0) )
THEN
405 grid1(i,j)=up_heli_max(i,j)
408 if(grib==
'grib2')
then
410 fld_info(cfld)%ifld=iavblfld(iget(420))
411 fld_info(cfld)%lvl=lvlsxml(lp,iget(420))
413 fld_info(cfld)%tinvstat = 1
415 fld_info(cfld)%tinvstat = 0
417 fld_info(cfld)%ntrange = 1
418 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
423 IF((iget(700)>0) )
THEN
426 grid1(i,j)=up_heli_max16(i,j)
429 if(grib==
'grib2')
then
431 fld_info(cfld)%ifld=iavblfld(iget(700))
432 fld_info(cfld)%lvl=lvlsxml(lp,iget(700))
434 fld_info(cfld)%tinvstat = 0
436 fld_info(cfld)%tinvstat = 1
438 fld_info(cfld)%ntrange = 1
439 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
444 IF((iget(786)>0) )
THEN
447 grid1(i,j)=up_heli_min(i,j)
450 if(grib==
'grib2')
then
452 fld_info(cfld)%ifld=iavblfld(iget(786))
453 fld_info(cfld)%lvl=lvlsxml(lp,iget(786))
455 fld_info(cfld)%tinvstat = 1
457 fld_info(cfld)%tinvstat = 0
459 fld_info(cfld)%ntrange = 1
460 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
465 IF((iget(787)>0) )
THEN
468 grid1(i,j)=up_heli_min16(i,j)
471 if(grib==
'grib2')
then
473 fld_info(cfld)%ifld=iavblfld(iget(787))
474 fld_info(cfld)%lvl=lvlsxml(lp,iget(787))
476 fld_info(cfld)%tinvstat = 0
478 fld_info(cfld)%tinvstat = 1
480 fld_info(cfld)%ntrange = 1
481 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
486 IF((iget(788)>0) )
THEN
489 grid1(i,j)=up_heli_max02(i,j)
492 if(grib==
'grib2')
then
494 fld_info(cfld)%ifld=iavblfld(iget(788))
495 fld_info(cfld)%lvl=lvlsxml(lp,iget(788))
497 fld_info(cfld)%tinvstat = 1
499 fld_info(cfld)%tinvstat = 0
501 fld_info(cfld)%ntrange = 1
502 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
506 IF((iget(789)>0) )
THEN
509 grid1(i,j)=up_heli_min02(i,j)
512 if(grib==
'grib2')
then
514 fld_info(cfld)%ifld=iavblfld(iget(789))
515 fld_info(cfld)%lvl=lvlsxml(lp,iget(789))
517 fld_info(cfld)%tinvstat = 0
519 fld_info(cfld)%tinvstat = 1
521 fld_info(cfld)%ntrange = 1
522 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
527 IF((iget(790)>0) )
THEN
530 grid1(i,j)=up_heli_max03(i,j)
533 if(grib==
'grib2')
then
535 fld_info(cfld)%ifld=iavblfld(iget(790))
536 fld_info(cfld)%lvl=lvlsxml(lp,iget(790))
538 fld_info(cfld)%tinvstat = 1
540 fld_info(cfld)%tinvstat = 0
542 fld_info(cfld)%ntrange = 1
543 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
548 IF((iget(791)>0) )
THEN
551 grid1(i,j)=up_heli_min03(i,j)
554 if(grib==
'grib2')
then
556 fld_info(cfld)%ifld=iavblfld(iget(791))
557 fld_info(cfld)%lvl=lvlsxml(lp,iget(791))
559 fld_info(cfld)%tinvstat = 0
561 fld_info(cfld)%tinvstat = 1
563 fld_info(cfld)%ntrange = 1
564 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
569 IF((iget(792)>0) )
THEN
572 grid1(i,j)=rel_vort_max(i,j)
575 if(grib==
'grib2')
then
577 fld_info(cfld)%ifld=iavblfld(iget(792))
578 fld_info(cfld)%lvl=lvlsxml(lp,iget(792))
580 fld_info(cfld)%tinvstat = 1
582 fld_info(cfld)%tinvstat = 0
584 fld_info(cfld)%ntrange = 1
585 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
590 IF((iget(793)>0) )
THEN
593 grid1(i,j)=rel_vort_max01(i,j)
596 if(grib==
'grib2')
then
598 fld_info(cfld)%ifld=iavblfld(iget(793))
599 fld_info(cfld)%lvl=lvlsxml(lp,iget(793))
601 fld_info(cfld)%tinvstat = 1
603 fld_info(cfld)%tinvstat = 0
605 fld_info(cfld)%ntrange = 1
606 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
610 IF((iget(890)>0) )
THEN
613 grid1(i,j)=rel_vort_maxhy1(i,j)
616 if(grib==
'grib2')
then
618 fld_info(cfld)%ifld=iavblfld(iget(890))
619 fld_info(cfld)%lvl=lvlsxml(lp,iget(890))
621 fld_info(cfld)%tinvstat = 1
623 fld_info(cfld)%tinvstat = 0
625 fld_info(cfld)%ntrange = 1
626 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
631 IF((iget(794)>0) )
THEN
634 grid1(i,j)=hail_max2d(i,j)
637 if(grib==
'grib2')
then
639 fld_info(cfld)%ifld=iavblfld(iget(794))
640 fld_info(cfld)%lvl=lvlsxml(lp,iget(794))
642 fld_info(cfld)%tinvstat = 0
644 fld_info(cfld)%tinvstat = 1
646 fld_info(cfld)%ntrange = 1
647 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
652 IF((iget(795)>0) )
THEN
655 grid1(i,j)=hail_maxk1(i,j)
658 if(grib==
'grib2')
then
660 fld_info(cfld)%ifld=iavblfld(iget(795))
661 fld_info(cfld)%lvl=lvlsxml(lp,iget(795))
663 fld_info(cfld)%tinvstat = 0
665 fld_info(cfld)%tinvstat = 1
667 fld_info(cfld)%ntrange = 1
668 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
675 IF((iget(728)>0) )
THEN
678 grid1(i,j)=hail_maxhailcast(i,j)/1000.0
681 if(grib==
'grib2')
then
683 fld_info(cfld)%ifld=iavblfld(iget(728))
684 fld_info(cfld)%lvl=lvlsxml(lp,iget(728))
686 fld_info(cfld)%tinvstat = 0
688 fld_info(cfld)%tinvstat = 1
690 fld_info(cfld)%ntrange = 1
691 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
696 IF((iget(429)>0) )
THEN
699 grid1(i,j)=grpl_max(i,j)
702 if(grib==
'grib2')
then
704 fld_info(cfld)%ifld=iavblfld(iget(429))
705 fld_info(cfld)%lvl=lvlsxml(lp,iget(429))
707 fld_info(cfld)%tinvstat = 0
709 fld_info(cfld)%tinvstat = 1
711 fld_info(cfld)%ntrange = 1
712 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
717 IF((iget(702)>0) )
THEN
720 grid1(i,j)=ltg1_max(i,j)
723 if(grib==
'grib2')
then
725 fld_info(cfld)%ifld=iavblfld(iget(702))
726 fld_info(cfld)%lvl=lvlsxml(lp,iget(702))
728 fld_info(cfld)%tinvstat = 0
730 fld_info(cfld)%tinvstat = 1
732 fld_info(cfld)%ntrange = 1
733 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
738 IF((iget(703)>0) )
THEN
741 grid1(i,j)=ltg2_max(i,j)
744 if(grib==
'grib2')
then
746 fld_info(cfld)%ifld=iavblfld(iget(703))
747 fld_info(cfld)%lvl=lvlsxml(lp,iget(703))
749 fld_info(cfld)%tinvstat = 0
751 fld_info(cfld)%tinvstat = 1
753 fld_info(cfld)%ntrange = 1
754 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
759 IF((iget(704)>0) )
THEN
762 grid1(i,j)=ltg3_max(i,j)
765 if(grib==
'grib2')
then
767 fld_info(cfld)%ifld=iavblfld(iget(704))
768 fld_info(cfld)%lvl=lvlsxml(lp,iget(704))
770 fld_info(cfld)%tinvstat = 0
772 fld_info(cfld)%tinvstat = 1
774 fld_info(cfld)%ntrange = 1
779 datapd(i,j,cfld) = grid1(ii,jj)
787 IF((iget(727)>0) )
THEN
790 grid1(i,j)=up_heli(i,j)
793 if(grib==
'grib2')
then
795 fld_info(cfld)%ifld=iavblfld(iget(727))
796 fld_info(cfld)%lvl=lvlsxml(lp,iget(727))
797 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
802 IF((iget(701)>0) )
THEN
805 grid1(i,j)=up_heli16(i,j)
808 if(grib==
'grib2')
then
810 fld_info(cfld)%ifld=iavblfld(iget(701))
811 fld_info(cfld)%lvl=lvlsxml(lp,iget(701))
812 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
817 IF((iget(705)>0) )
THEN
820 grid1(i,j)=nci_ltg(i,j)/60.0
823 if(grib==
'grib2')
then
825 fld_info(cfld)%ifld=iavblfld(iget(705))
826 fld_info(cfld)%lvl=lvlsxml(lp,iget(705))
828 fld_info(cfld)%tinvstat = 0
830 fld_info(cfld)%tinvstat = 1
832 fld_info(cfld)%ntrange = 1
833 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
838 IF((iget(706)>0) )
THEN
841 grid1(i,j)=nca_ltg(i,j)/60.0
844 if(grib==
'grib2')
then
846 fld_info(cfld)%ifld=iavblfld(iget(706))
847 fld_info(cfld)%lvl=lvlsxml(lp,iget(706))
849 fld_info(cfld)%tinvstat = 0
851 fld_info(cfld)%tinvstat = 1
853 fld_info(cfld)%ntrange = 1
854 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
859 IF((iget(707)>0) )
THEN
862 grid1(i,j)=nci_wq(i,j)/60.0
865 if(grib==
'grib2')
then
867 fld_info(cfld)%ifld=iavblfld(iget(707))
868 fld_info(cfld)%lvl=lvlsxml(lp,iget(707))
870 fld_info(cfld)%tinvstat = 0
872 fld_info(cfld)%tinvstat = 1
874 fld_info(cfld)%ntrange = 1
875 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
880 IF((iget(708)>0) )
THEN
883 grid1(i,j)=nca_wq(i,j)/60.0
886 if(grib==
'grib2')
then
888 fld_info(cfld)%ifld=iavblfld(iget(708))
889 fld_info(cfld)%lvl=lvlsxml(lp,iget(708))
891 fld_info(cfld)%tinvstat = 0
893 fld_info(cfld)%tinvstat = 1
895 fld_info(cfld)%ntrange = 1
896 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
901 IF((iget(709)>0) )
THEN
904 grid1(i,j)=nci_refd(i,j)/60.0
907 if(grib==
'grib2')
then
909 fld_info(cfld)%ifld=iavblfld(iget(709))
910 fld_info(cfld)%lvl=lvlsxml(lp,iget(709))
912 fld_info(cfld)%tinvstat = 0
914 fld_info(cfld)%tinvstat = 1
916 fld_info(cfld)%ntrange = 1
917 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
922 IF((iget(710)>0) )
THEN
925 grid1(i,j)=nca_refd(i,j)/60.0
928 if(grib==
'grib2')
then
930 fld_info(cfld)%ifld=iavblfld(iget(710))
931 fld_info(cfld)%lvl=lvlsxml(lp,iget(710))
933 fld_info(cfld)%tinvstat = 0
935 fld_info(cfld)%tinvstat = 1
937 fld_info(cfld)%ntrange = 1
938 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
945 IF((iget(259)>0) )
THEN
954 if (iget(253) > 0 ) iget2 = iavblfld(iget(253))
958 if (iget(259) > 0 ) iget1 = lvls(lp,iget(259))
959 IF(iget1 > 0 .or. iget2 > 0)
THEN
974 zdum=zmid(i,j,l)-zint(i,j,llmh+1)
975 IF(zdum >= zagl2(lp))
THEN
986 IF(nl1x(i,j) == (llmh+1) .AND. zagl2(lp) > 0.)
THEN
1004 IF(gridtype==
'A')
THEN
1007 ELSE IF(gridtype==
'E')
THEN
1023 IF(gridtype/=
'A')
THEN
1027 CALL mpi_allreduce(minll,lxxx,1,mpi_integer,mpi_min,mpi_comm_comp,ierr)
1031 call exch(uh(ista_2l:iend_2u,jsta_2l:jend_2u,ll))
1032 call exch(vh(ista_2l:iend_2u,jsta_2l:jend_2u,ll))
1035 DO 230 j=jstart,jstop
1036 DO 230 i=istart,istop
1044 llmh = nint(lmh(i,j))
1045 IF(nl1x(i,j)<=llmh)
THEN
1056 zdum=zagl2(lp)+zint(i,j,nint(lmh(i,j))+1)
1057 fact=(zdum-zmid(i,j,ll))/(zmid(i,j,ll)-zmid(i,j,ll-1))
1059 IF(gridtype==
'A')
THEN
1065 ELSE IF(gridtype==
'E')
THEN
1066 uaglu=(uh(i+ihe(j),j,ll-1)+uh(i+ihw(j),j,ll-1)+ &
1067 & uh(i,j-1,ll-1)+uh(i,j+1,ll-1))/4.0
1068 uagll=(uh(i+ihe(j),j,ll)+uh(i+ihw(j),j,ll)+ &
1069 & uh(i,j-1,ll)+uh(i,j+1,ll))/4.0
1071 vaglu=(vh(i+ihe(j),j,ll-1)+vh(i+ihw(j),j,ll-1)+ &
1072 & vh(i,j-1,ll-1)+vh(i,j+1,ll-1))/4.0
1073 vagll=(vh(i+ihe(j),j,ll)+vh(i+ihw(j),j,ll)+ &
1074 & vh(i,j-1,ll)+vh(i,j+1,ll))/4.0
1075 ELSE IF(gridtype==
'B')
THEN
1080 uaglu=(uh(ie,j,ll-1)+uh(iw,j,ll-1)+ &
1081 & uh(ie,js,ll-1)+uh(iw,js,ll-1))/4.0
1082 uagll=(uh(ie,j,ll)+uh(iw,j,ll)+ &
1083 & uh(ie,js,ll)+uh(iw,js,ll))/4.0
1085 vaglu=(vh(ie,j,ll-1)+vh(iw,j,ll-1)+ &
1086 & vh(ie,js,ll-1)+vh(iw,js,ll-1))/4.0
1087 vagll=(vh(ie,j,ll)+vh(iw,j,ll)+ &
1088 & vh(ie,js,ll)+vh(iw,js,ll))/4.0
1090 uagl(i,j)=uagll+(uagll-uaglu)*fact
1091 vagl(i,j)=vagll+(vagll-vaglu)*fact
1092 IF(i==ii.AND.j==jj)print*, &
1093 &
'DEBUG LLWS: I,J,NL1X,UU,UL,VU,VL,ZSFC,ZMIDU,ZMIDL,U,V= ' &
1094 &, i,j,ll,uaglu,uagll,vaglu,vagll,zint(i,j,nint(lmh(i,j))+1)&
1095 &, zmid(i,j,ll-1),zmid(i,j,ll),uagl(i,j),vagl(i,j) &
1096 &, u10(i,j),v10(i,j)
1103 IF(gridtype==
'A')
THEN
1104 uagl(i,j)=uh(i,j,nint(lmv(i,j)))
1105 vagl(i,j)=vh(i,j,nint(lmv(i,j)))
1106 ELSE IF(gridtype==
'E')
THEN
1107 uagl(i,j)=(uh(i+ihe(j),j,nint(lmv(i+ihe(j),j))) &
1108 & +uh(i+ihw(j),j,nint(lmv(i+ihw(j),j)))+ &
1109 & uh(i,j-1,nint(lmv(i,j-1)))+uh(i,j+1,nint(lmv(i,j+1))))/4.0
1110 vagl(i,j)=(vh(i+ihe(j),j,nint(lmv(i+ihe(j),j))) &
1111 & +vh(i+ihw(j),j,nint(lmv(i+ihw(j),j)))+ &
1112 & vh(i,j-1,nint(lmv(i,j-1)))+vh(i,j+1,nint(lmv(i,j+1))))/4.0
1113 ELSE IF(gridtype==
'B')
THEN
1118 uagl(i,j)=(uh(ie,j,nint(lmv(ie,j))) &
1119 & +uh(iw,j,nint(lmv(iw,j)))+ &
1120 & uh(ie,js,nint(lmv(ie,js)))+uh(iw,js,nint(lmv(iw,js))))/4.0
1121 vagl(i,j)=(vh(ie,j,nint(lmv(ie,j))) &
1122 & +vh(iw,j,nint(lmv(iw,j)))+ &
1123 & vh(ie,js,nint(lmv(ie,js)))+vh(iw,js,nint(lmv(iw,js))))/4.0
1142 IF(abs(uagl(i,j)-spval)>small .AND. &
1143 abs(vagl(i,j)-spval)>small)
THEN
1144 IF(gridtype==
'B' .OR. gridtype==
'E')
THEN
1145 grid1(i,j)=sqrt((uagl(i,j)-u10h(i,j))**2+ &
1146 (vagl(i,j)-v10h(i,j))**2)*1.943*zagl2(lp)/ &
1149 grid1(i,j)=sqrt((uagl(i,j)-u10(i,j))**2+ &
1150 (vagl(i,j)-v10(i,j))**2)*1.943*zagl2(lp)/ &
1158 if(grib==
"grib2" )
then
1160 fld_info(cfld)%ifld=iavblfld(iget(259))
1161 fld_info(cfld)%lvl=lvlsxml(lp,iget(259))
1162 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1174 IF (iget(411)>0 .OR. iget(412)>0 .OR. iget(413)>0)
THEN
1183 iget1 = -1 ; iget2 = -1 ; iget3 = -1
1184 if (iget(411) > 0) iget1 = lvls(lp,iget(411))
1185 if (iget(412) > 0) iget2 = lvls(lp,iget(412))
1186 if (iget(413) > 0) iget3 = lvls(lp,iget(413))
1187 IF (iget1 > 0 .or. iget2 > 0 .or. iget3 > 0)
then
1190 jj = float(jsta+jend)/2.0
1191 ii = float(ista+iend)/3.0
1192 DO j=jsta_2l,jend_2u
1193 DO i=ista_2l,iend_2u
1204 llmh = nint(lmh(i,j))
1207 zdum = zmid(i,j,l)-zint(i,j,llmh+1)
1208 IF(zdum >= zagl3(lp))
THEN
1219 IF(nl1x(i,j)==(llmh+1) .AND. zagl3(lp)>0.)
THEN
1236 DO 240 j=jsta_2l,jend_2u
1237 DO 240 i=ista_2l,iend_2u
1245 llmh = nint(lmh(i,j))
1246 IF(nl1x(i,j)<=llmh)
THEN
1257 zdum=zagl3(lp)+zint(i,j,nint(lmh(i,j))+1)
1258 fact = (zdum-zmid(i,j,ll)) &
1259 / (zmid(i,j,ll)-zmid(i,j,ll-1))
1261 paglu = log(pmid(i,j,ll-1))
1262 pagll = log(pmid(i,j,ll))
1270 uaglu = uh(i,j,ll-1)
1273 vaglu = vh(i,j,ll-1)
1276 pagl(i,j) = exp(pagll+(pagll-paglu)*fact)
1277 tagl(i,j) = tagll+(tagll-taglu)*fact
1278 qagl(i,j) = qagll+(qagll-qaglu)*fact
1279 uagl(i,j) = uagll+(uagll-uaglu)*fact
1280 vagl(i,j) = vagll+(vagll-vaglu)*fact
1287 pagl(i,j) = pmid(i,j,nint(lmv(i,j)))
1288 tagl(i,j) = t(i,j,nint(lmv(i,j)))
1289 qagl(i,j) = q(i,j,nint(lmv(i,j)))
1290 uagl(i,j) = uh(i,j,nint(lmv(i,j)))
1291 vagl(i,j) = vh(i,j,nint(lmv(i,j)))
1306 IF((iget(411)>0) )
THEN
1309 IF(qagl(i,j)<spval.and.pagl(i,j)<spval.and.tagl(i,j)<spval.and.&
1310 uagl(i,j)<spval.and.vagl(i,j)<spval)
THEN
1311 qagl(i,j)=qagl(i,j)/1000.0
1312 pv=qagl(i,j)*pagl(i,j)/(eps*(1-qagl(i,j)) + qagl(i,j))
1313 rho=(1/tagl(i,j))*(((pagl(i,j)-pv)/rd) + pv/461.495)
1314 grid1(i,j)=0.5*rho*(sqrt(uagl(i,j)**2+vagl(i,j)**2))**3
1320 if(grib==
"grib2" )
then
1322 fld_info(cfld)%ifld=iavblfld(iget(411))
1323 fld_info(cfld)%lvl=lvlsxml(lp,iget(411))
1324 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1328 IF((iget(412)>0) )
THEN
1331 grid1(i,j)=uagl(i,j)
1334 if(grib==
"grib2" )
then
1336 fld_info(cfld)%ifld=iavblfld(iget(412))
1337 fld_info(cfld)%lvl=lvlsxml(lp,iget(412))
1338 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1342 IF((iget(413)>0) )
THEN
1345 grid1(i,j)=vagl(i,j)
1348 if(grib==
"grib2" )
then
1350 fld_info(cfld)%ifld=iavblfld(iget(413))
1351 fld_info(cfld)%lvl=lvlsxml(lp,iget(413))
1352 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)