52 use vrbls3d, only: zmid, zint, dbz, dbzr, dbzi, dbzc, uh, vh, pmid, t, q, ref_10cm
53 use vrbls2d, only: refd_max, up_heli_max, up_heli_max16, grpl_max, &
54 up_heli_min, up_heli_min16, up_heli_max02, &
55 up_heli_min02, up_heli_max03, up_heli_min03, &
56 rel_vort_max, rel_vort_max01, hail_max2d, hail_maxk1,&
57 hail_maxhailcast,refdm10c_max, rel_vort_maxhy1, &
58 ltg1_max, ltg2_max, ltg3_max, up_heli, up_heli16, &
59 nci_ltg, nca_ltg, nci_wq, nca_wq, nci_refd, nca_refd,&
61 use masks, only: lmh, lmv
63 use ctlblk_mod
, only: spval, lm, modelname, grib, cfld, fld_info, datapd,&
64 ifhr, global, jsta_m, jend_m, mpi_comm_comp, &
65 jsta_2l, jend_2u, im, jm, jsta, jend, imp_physics, &
66 ista, iend, ista_2l, iend_2u, ista_m, iend_m
67 use rqstfld_mod
, only: iget, lvls, iavblfld, lvlsxml, id
68 use gridspec_mod
, only: gridtype
77 integer,
PARAMETER :: lagl=2,lagl2=1
82 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: grid1
83 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: uagl, vagl, tagl, pagl, qagl
85 INTEGER,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: nl1x
86 integer,
dimension(jm) :: ihe, ihw
87 INTEGER lxxx,ierr, maxll, minll
88 INTEGER istart,istop,jstart,jstop
105 REAL,
dimension(ista:iend,jsta:jend) :: dbz1, dbzr1, dbzi1, dbzc1, dbz1log
106 real,
dimension(lagl) :: zagl
107 real,
dimension(lagl2) :: zagl2, zagl3
108 real paglu,pagll,taglu,tagll,qaglu,qagll, pv, rho
110 integer i,j,l,ii,jj,lp,ll,llmh,ie,iw,jn,js,iget1,iget2,iget3,iget4
111 real uagll,uaglu,vagll,vaglu,fact,zdum
136 IF (iget(253)>0 .OR. iget(279)>0 .OR. iget(280)>0 .OR. &
146 iget1 = -1 ; iget2 = -1 ; iget3 = -1 ; iget4 = -1
147 if (iget(253) > 0) iget1 = lvls(lp,iget(253))
148 if (iget(279) > 0) iget2 = lvls(lp,iget(279))
149 if (iget(280) > 0) iget3 = lvls(lp,iget(280))
150 if (iget(281) > 0) iget4 = lvls(lp,iget(281))
151 IF (iget1 > 0 .or. iget2 > 0 .or. iget3 > 0 .or. iget4 > 0)
then
153 jj=float(jsta+jend)/2.0
154 ii=float(ista+iend)/3.0
166 llmh = nint(lmh(i,j))
169 zdum = zmid(i,j,l)-zint(i,j,llmh+1)
170 IF(zdum >= zagl(lp))
THEN
181 IF(nl1x(i,j) == (llmh+1) .AND. zagl(lp) > 0.)
THEN
208 llmh = nint(lmh(i,j))
209 IF(nl1x(i,j)<=llmh)
THEN
210 IF(zmid(i,j,ll)<spval.and.zmid(i,j,ll-1)<spval)
THEN
222 zdum=zagl(lp)+zint(i,j,nint(lmh(i,j))+1)
223 fact=(zdum-zmid(i,j,ll))/(zmid(i,j,ll)-zmid(i,j,ll-1))
226 if (imp_physics==8)
then
227 dbz1(i,j)=ref_10cm(i,j,ll)+(ref_10cm(i,j,ll)-ref_10cm(i,j,ll-1))*fact
229 dbz1(i,j)=dbz(i,j,ll)+(dbz(i,j,ll)-dbz(i,j,ll-1))*fact
232 dbzr1(i,j) = dbzr(i,j,ll) + (dbzr(i,j,ll)-dbzr(i,j,ll-1))*fact
233 dbzi1(i,j) = dbzi(i,j,ll) + (dbzi(i,j,ll)-dbzi(i,j,ll-1))*fact
234 dbzc1(i,j) = dbzc(i,j,ll) + (dbzc(i,j,ll)-dbzc(i,j,ll-1))*fact
235 if(modelname==
'RAPR')
then
236 if(dbz1(i,j)>0.)
then
237 dbz1log(i,j)= 10.*log10(dbz1(i,j))
249 if(modelname==
'RAPR')
then
250 dbz1log(i,j)=max(dbz1log(i,j),dbzmin)
252 dbz1(i,j)=max(dbz1(i,j),dbzmin)
254 dbzr1(i,j) = max(dbzr1(i,j),dbzmin)
255 dbzi1(i,j) = max(dbzi1(i,j),dbzmin)
256 dbzc1(i,j) = max(dbzc1(i,j),dbzmin)
264 dbz1log(i,j) = dbzmin
283 IF((iget(253)>0) )
THEN
284 if(modelname==
'RAPR')
then
287 grid1(i,j)=dbz1log(i,j)
297 if(grib==
'grib2')
then
299 fld_info(cfld)%ifld=iavblfld(iget(253))
300 fld_info(cfld)%lvl=lvlsxml(lp,iget(253))
301 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
305 IF((iget(279)>0) )
THEN
308 grid1(i,j)=dbzr1(i,j)
311 if(grib==
'grib2')
then
313 fld_info(cfld)%ifld=iavblfld(iget(279))
314 fld_info(cfld)%lvl=lvlsxml(lp,iget(279))
315 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
319 IF((iget(280)>0) )
THEN
322 grid1(i,j)=dbzi1(i,j)
325 if(grib==
'grib2')
then
327 fld_info(cfld)%ifld=iavblfld(iget(280))
328 fld_info(cfld)%lvl=lvlsxml(lp,iget(280))
329 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
333 IF((iget(281)>0) )
THEN
336 grid1(i,j)=dbzc1(i,j)
339 if(grib==
'grib2')
then
341 fld_info(cfld)%ifld=iavblfld(iget(281))
342 fld_info(cfld)%lvl=lvlsxml(lp,iget(281))
343 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
358 IF((iget(421)>0) )
THEN
361 grid1(i,j)=refd_max(i,j)
364 if(grib==
'grib2')
then
366 fld_info(cfld)%ifld=iavblfld(iget(421))
367 fld_info(cfld)%lvl=lvlsxml(lp,iget(421))
368 fld_info(cfld)%tinvstat=1
370 fld_info(cfld)%tinvstat=1
372 fld_info(cfld)%tinvstat=0
374 fld_info(cfld)%ntrange=1
375 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
380 IF((iget(785)>0) )
THEN
383 grid1(i,j)=refdm10c_max(i,j)
386 if(grib==
'grib2')
then
388 fld_info(cfld)%ifld=iavblfld(iget(785))
389 fld_info(cfld)%lvl=lvlsxml(lp,iget(785))
391 fld_info(cfld)%tinvstat=1
393 fld_info(cfld)%tinvstat=0
395 fld_info(cfld)%ntrange=1
396 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
401 IF((iget(420)>0) )
THEN
404 grid1(i,j)=up_heli_max(i,j)
407 if(grib==
'grib2')
then
409 fld_info(cfld)%ifld=iavblfld(iget(420))
410 fld_info(cfld)%lvl=lvlsxml(lp,iget(420))
412 fld_info(cfld)%tinvstat = 1
414 fld_info(cfld)%tinvstat = 0
416 fld_info(cfld)%ntrange = 1
417 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
422 IF((iget(700)>0) )
THEN
425 grid1(i,j)=up_heli_max16(i,j)
428 if(grib==
'grib2')
then
430 fld_info(cfld)%ifld=iavblfld(iget(700))
431 fld_info(cfld)%lvl=lvlsxml(lp,iget(700))
433 fld_info(cfld)%tinvstat = 0
435 fld_info(cfld)%tinvstat = 1
437 fld_info(cfld)%ntrange = 1
438 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
443 IF((iget(786)>0) )
THEN
446 grid1(i,j)=up_heli_min(i,j)
449 if(grib==
'grib2')
then
451 fld_info(cfld)%ifld=iavblfld(iget(786))
452 fld_info(cfld)%lvl=lvlsxml(lp,iget(786))
454 fld_info(cfld)%tinvstat = 1
456 fld_info(cfld)%tinvstat = 0
458 fld_info(cfld)%ntrange = 1
459 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
464 IF((iget(787)>0) )
THEN
467 grid1(i,j)=up_heli_min16(i,j)
470 if(grib==
'grib2')
then
472 fld_info(cfld)%ifld=iavblfld(iget(787))
473 fld_info(cfld)%lvl=lvlsxml(lp,iget(787))
475 fld_info(cfld)%tinvstat = 0
477 fld_info(cfld)%tinvstat = 1
479 fld_info(cfld)%ntrange = 1
480 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
485 IF((iget(788)>0) )
THEN
488 grid1(i,j)=up_heli_max02(i,j)
491 if(grib==
'grib2')
then
493 fld_info(cfld)%ifld=iavblfld(iget(788))
494 fld_info(cfld)%lvl=lvlsxml(lp,iget(788))
496 fld_info(cfld)%tinvstat = 1
498 fld_info(cfld)%tinvstat = 0
500 fld_info(cfld)%ntrange = 1
501 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
505 IF((iget(789)>0) )
THEN
508 grid1(i,j)=up_heli_min02(i,j)
511 if(grib==
'grib2')
then
513 fld_info(cfld)%ifld=iavblfld(iget(789))
514 fld_info(cfld)%lvl=lvlsxml(lp,iget(789))
516 fld_info(cfld)%tinvstat = 0
518 fld_info(cfld)%tinvstat = 1
520 fld_info(cfld)%ntrange = 1
521 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
526 IF((iget(790)>0) )
THEN
529 grid1(i,j)=up_heli_max03(i,j)
532 if(grib==
'grib2')
then
534 fld_info(cfld)%ifld=iavblfld(iget(790))
535 fld_info(cfld)%lvl=lvlsxml(lp,iget(790))
537 fld_info(cfld)%tinvstat = 1
539 fld_info(cfld)%tinvstat = 0
541 fld_info(cfld)%ntrange = 1
542 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
547 IF((iget(791)>0) )
THEN
550 grid1(i,j)=up_heli_min03(i,j)
553 if(grib==
'grib2')
then
555 fld_info(cfld)%ifld=iavblfld(iget(791))
556 fld_info(cfld)%lvl=lvlsxml(lp,iget(791))
558 fld_info(cfld)%tinvstat = 0
560 fld_info(cfld)%tinvstat = 1
562 fld_info(cfld)%ntrange = 1
563 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
568 IF((iget(792)>0) )
THEN
571 grid1(i,j)=rel_vort_max(i,j)
574 if(grib==
'grib2')
then
576 fld_info(cfld)%ifld=iavblfld(iget(792))
577 fld_info(cfld)%lvl=lvlsxml(lp,iget(792))
579 fld_info(cfld)%tinvstat = 1
581 fld_info(cfld)%tinvstat = 0
583 fld_info(cfld)%ntrange = 1
584 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
589 IF((iget(793)>0) )
THEN
592 grid1(i,j)=rel_vort_max01(i,j)
595 if(grib==
'grib2')
then
597 fld_info(cfld)%ifld=iavblfld(iget(793))
598 fld_info(cfld)%lvl=lvlsxml(lp,iget(793))
600 fld_info(cfld)%tinvstat = 1
602 fld_info(cfld)%tinvstat = 0
604 fld_info(cfld)%ntrange = 1
605 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
609 IF((iget(890)>0) )
THEN
612 grid1(i,j)=rel_vort_maxhy1(i,j)
615 if(grib==
'grib2')
then
617 fld_info(cfld)%ifld=iavblfld(iget(890))
618 fld_info(cfld)%lvl=lvlsxml(lp,iget(890))
620 fld_info(cfld)%tinvstat = 1
622 fld_info(cfld)%tinvstat = 0
624 fld_info(cfld)%ntrange = 1
625 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
630 IF((iget(794)>0) )
THEN
633 grid1(i,j)=hail_max2d(i,j)
636 if(grib==
'grib2')
then
638 fld_info(cfld)%ifld=iavblfld(iget(794))
639 fld_info(cfld)%lvl=lvlsxml(lp,iget(794))
641 fld_info(cfld)%tinvstat = 0
643 fld_info(cfld)%tinvstat = 1
645 fld_info(cfld)%ntrange = 1
646 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
651 IF((iget(795)>0) )
THEN
654 grid1(i,j)=hail_maxk1(i,j)
657 if(grib==
'grib2')
then
659 fld_info(cfld)%ifld=iavblfld(iget(795))
660 fld_info(cfld)%lvl=lvlsxml(lp,iget(795))
662 fld_info(cfld)%tinvstat = 0
664 fld_info(cfld)%tinvstat = 1
666 fld_info(cfld)%ntrange = 1
667 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
674 IF((iget(728)>0) )
THEN
677 grid1(i,j)=hail_maxhailcast(i,j)/1000.0
680 if(grib==
'grib2')
then
682 fld_info(cfld)%ifld=iavblfld(iget(728))
683 fld_info(cfld)%lvl=lvlsxml(lp,iget(728))
685 fld_info(cfld)%tinvstat = 0
687 fld_info(cfld)%tinvstat = 1
689 fld_info(cfld)%ntrange = 1
690 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
695 IF((iget(429)>0) )
THEN
698 grid1(i,j)=grpl_max(i,j)
701 if(grib==
'grib2')
then
703 fld_info(cfld)%ifld=iavblfld(iget(429))
704 fld_info(cfld)%lvl=lvlsxml(lp,iget(429))
706 fld_info(cfld)%tinvstat = 0
708 fld_info(cfld)%tinvstat = 1
710 fld_info(cfld)%ntrange = 1
711 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
716 IF((iget(702)>0) )
THEN
719 grid1(i,j)=ltg1_max(i,j)
722 if(grib==
'grib2')
then
724 fld_info(cfld)%ifld=iavblfld(iget(702))
725 fld_info(cfld)%lvl=lvlsxml(lp,iget(702))
727 fld_info(cfld)%tinvstat = 0
729 fld_info(cfld)%tinvstat = 1
731 fld_info(cfld)%ntrange = 1
732 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
737 IF((iget(703)>0) )
THEN
740 grid1(i,j)=ltg2_max(i,j)
743 if(grib==
'grib2')
then
745 fld_info(cfld)%ifld=iavblfld(iget(703))
746 fld_info(cfld)%lvl=lvlsxml(lp,iget(703))
748 fld_info(cfld)%tinvstat = 0
750 fld_info(cfld)%tinvstat = 1
752 fld_info(cfld)%ntrange = 1
753 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
758 IF((iget(704)>0) )
THEN
761 grid1(i,j)=ltg3_max(i,j)
764 if(grib==
'grib2')
then
766 fld_info(cfld)%ifld=iavblfld(iget(704))
767 fld_info(cfld)%lvl=lvlsxml(lp,iget(704))
769 fld_info(cfld)%tinvstat = 0
771 fld_info(cfld)%tinvstat = 1
773 fld_info(cfld)%ntrange = 1
774 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
779 IF((iget(727)>0) )
THEN
782 grid1(i,j)=up_heli(i,j)
785 if(grib==
'grib2')
then
787 fld_info(cfld)%ifld=iavblfld(iget(727))
788 fld_info(cfld)%lvl=lvlsxml(lp,iget(727))
789 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
794 IF((iget(701)>0) )
THEN
797 grid1(i,j)=up_heli16(i,j)
800 if(grib==
'grib2')
then
802 fld_info(cfld)%ifld=iavblfld(iget(701))
803 fld_info(cfld)%lvl=lvlsxml(lp,iget(701))
804 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
809 IF((iget(705)>0) )
THEN
812 grid1(i,j)=nci_ltg(i,j)/60.0
815 if(grib==
'grib2')
then
817 fld_info(cfld)%ifld=iavblfld(iget(705))
818 fld_info(cfld)%lvl=lvlsxml(lp,iget(705))
820 fld_info(cfld)%tinvstat = 0
822 fld_info(cfld)%tinvstat = 1
824 fld_info(cfld)%ntrange = 1
825 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
830 IF((iget(706)>0) )
THEN
833 grid1(i,j)=nca_ltg(i,j)/60.0
836 if(grib==
'grib2')
then
838 fld_info(cfld)%ifld=iavblfld(iget(706))
839 fld_info(cfld)%lvl=lvlsxml(lp,iget(706))
841 fld_info(cfld)%tinvstat = 0
843 fld_info(cfld)%tinvstat = 1
845 fld_info(cfld)%ntrange = 1
846 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
851 IF((iget(707)>0) )
THEN
854 grid1(i,j)=nci_wq(i,j)/60.0
857 if(grib==
'grib2')
then
859 fld_info(cfld)%ifld=iavblfld(iget(707))
860 fld_info(cfld)%lvl=lvlsxml(lp,iget(707))
862 fld_info(cfld)%tinvstat = 0
864 fld_info(cfld)%tinvstat = 1
866 fld_info(cfld)%ntrange = 1
867 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
872 IF((iget(708)>0) )
THEN
875 grid1(i,j)=nca_wq(i,j)/60.0
878 if(grib==
'grib2')
then
880 fld_info(cfld)%ifld=iavblfld(iget(708))
881 fld_info(cfld)%lvl=lvlsxml(lp,iget(708))
883 fld_info(cfld)%tinvstat = 0
885 fld_info(cfld)%tinvstat = 1
887 fld_info(cfld)%ntrange = 1
888 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
893 IF((iget(709)>0) )
THEN
896 grid1(i,j)=nci_refd(i,j)/60.0
899 if(grib==
'grib2')
then
901 fld_info(cfld)%ifld=iavblfld(iget(709))
902 fld_info(cfld)%lvl=lvlsxml(lp,iget(709))
904 fld_info(cfld)%tinvstat = 0
906 fld_info(cfld)%tinvstat = 1
908 fld_info(cfld)%ntrange = 1
909 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
914 IF((iget(710)>0) )
THEN
917 grid1(i,j)=nca_refd(i,j)/60.0
920 if(grib==
'grib2')
then
922 fld_info(cfld)%ifld=iavblfld(iget(710))
923 fld_info(cfld)%lvl=lvlsxml(lp,iget(710))
925 fld_info(cfld)%tinvstat = 0
927 fld_info(cfld)%tinvstat = 1
929 fld_info(cfld)%ntrange = 1
930 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
937 IF((iget(259)>0) )
THEN
946 if (iget(253) > 0 ) iget2 = iavblfld(iget(253))
950 if (iget(259) > 0 ) iget1 = lvls(lp,iget(259))
951 IF(iget1 > 0 .or. iget2 > 0)
THEN
966 zdum=zmid(i,j,l)-zint(i,j,llmh+1)
967 IF(zdum >= zagl2(lp))
THEN
978 IF(nl1x(i,j) == (llmh+1) .AND. zagl2(lp) > 0.)
THEN
996 IF(gridtype==
'A')
THEN
999 ELSE IF(gridtype==
'E')
THEN
1015 IF(gridtype/=
'A')
THEN
1019 CALL mpi_allreduce(minll,lxxx,1,mpi_integer,mpi_min,mpi_comm_comp,ierr)
1023 call exch(uh(ista_2l:iend_2u,jsta_2l:jend_2u,ll))
1024 call exch(vh(ista_2l:iend_2u,jsta_2l:jend_2u,ll))
1027 DO 230 j=jstart,jstop
1028 DO 230 i=istart,istop
1036 llmh = nint(lmh(i,j))
1037 IF(nl1x(i,j)<=llmh)
THEN
1048 zdum=zagl2(lp)+zint(i,j,nint(lmh(i,j))+1)
1049 fact=(zdum-zmid(i,j,ll))/(zmid(i,j,ll)-zmid(i,j,ll-1))
1051 IF(gridtype==
'A')
THEN
1057 ELSE IF(gridtype==
'E')
THEN
1058 uaglu=(uh(i+ihe(j),j,ll-1)+uh(i+ihw(j),j,ll-1)+ &
1059 & uh(i,j-1,ll-1)+uh(i,j+1,ll-1))/4.0
1060 uagll=(uh(i+ihe(j),j,ll)+uh(i+ihw(j),j,ll)+ &
1061 & uh(i,j-1,ll)+uh(i,j+1,ll))/4.0
1063 vaglu=(vh(i+ihe(j),j,ll-1)+vh(i+ihw(j),j,ll-1)+ &
1064 & vh(i,j-1,ll-1)+vh(i,j+1,ll-1))/4.0
1065 vagll=(vh(i+ihe(j),j,ll)+vh(i+ihw(j),j,ll)+ &
1066 & vh(i,j-1,ll)+vh(i,j+1,ll))/4.0
1067 ELSE IF(gridtype==
'B')
THEN
1072 uaglu=(uh(ie,j,ll-1)+uh(iw,j,ll-1)+ &
1073 & uh(ie,js,ll-1)+uh(iw,js,ll-1))/4.0
1074 uagll=(uh(ie,j,ll)+uh(iw,j,ll)+ &
1075 & uh(ie,js,ll)+uh(iw,js,ll))/4.0
1077 vaglu=(vh(ie,j,ll-1)+vh(iw,j,ll-1)+ &
1078 & vh(ie,js,ll-1)+vh(iw,js,ll-1))/4.0
1079 vagll=(vh(ie,j,ll)+vh(iw,j,ll)+ &
1080 & vh(ie,js,ll)+vh(iw,js,ll))/4.0
1082 uagl(i,j)=uagll+(uagll-uaglu)*fact
1083 vagl(i,j)=vagll+(vagll-vaglu)*fact
1084 IF(i==ii.AND.j==jj)print*, &
1085 &
'DEBUG LLWS: I,J,NL1X,UU,UL,VU,VL,ZSFC,ZMIDU,ZMIDL,U,V= ' &
1086 &, i,j,ll,uaglu,uagll,vaglu,vagll,zint(i,j,nint(lmh(i,j))+1)&
1087 &, zmid(i,j,ll-1),zmid(i,j,ll),uagl(i,j),vagl(i,j) &
1088 &, u10(i,j),v10(i,j)
1095 IF(gridtype==
'A')
THEN
1096 uagl(i,j)=uh(i,j,nint(lmv(i,j)))
1097 vagl(i,j)=vh(i,j,nint(lmv(i,j)))
1098 ELSE IF(gridtype==
'E')
THEN
1099 uagl(i,j)=(uh(i+ihe(j),j,nint(lmv(i+ihe(j),j))) &
1100 & +uh(i+ihw(j),j,nint(lmv(i+ihw(j),j)))+ &
1101 & uh(i,j-1,nint(lmv(i,j-1)))+uh(i,j+1,nint(lmv(i,j+1))))/4.0
1102 vagl(i,j)=(vh(i+ihe(j),j,nint(lmv(i+ihe(j),j))) &
1103 & +vh(i+ihw(j),j,nint(lmv(i+ihw(j),j)))+ &
1104 & vh(i,j-1,nint(lmv(i,j-1)))+vh(i,j+1,nint(lmv(i,j+1))))/4.0
1105 ELSE IF(gridtype==
'B')
THEN
1110 uagl(i,j)=(uh(ie,j,nint(lmv(ie,j))) &
1111 & +uh(iw,j,nint(lmv(iw,j)))+ &
1112 & uh(ie,js,nint(lmv(ie,js)))+uh(iw,js,nint(lmv(iw,js))))/4.0
1113 vagl(i,j)=(vh(ie,j,nint(lmv(ie,j))) &
1114 & +vh(iw,j,nint(lmv(iw,j)))+ &
1115 & vh(ie,js,nint(lmv(ie,js)))+vh(iw,js,nint(lmv(iw,js))))/4.0
1134 IF(abs(uagl(i,j)-spval)>small .AND. &
1135 abs(vagl(i,j)-spval)>small)
THEN
1136 IF(gridtype==
'B' .OR. gridtype==
'E')
THEN
1137 grid1(i,j)=sqrt((uagl(i,j)-u10h(i,j))**2+ &
1138 (vagl(i,j)-v10h(i,j))**2)*1.943*zagl2(lp)/ &
1141 grid1(i,j)=sqrt((uagl(i,j)-u10(i,j))**2+ &
1142 (vagl(i,j)-v10(i,j))**2)*1.943*zagl2(lp)/ &
1150 if(grib==
"grib2" )
then
1152 fld_info(cfld)%ifld=iavblfld(iget(259))
1153 fld_info(cfld)%lvl=lvlsxml(lp,iget(259))
1154 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1166 IF (iget(411)>0 .OR. iget(412)>0 .OR. iget(413)>0)
THEN
1175 iget1 = -1 ; iget2 = -1 ; iget3 = -1
1176 if (iget(411) > 0) iget1 = lvls(lp,iget(411))
1177 if (iget(412) > 0) iget2 = lvls(lp,iget(412))
1178 if (iget(413) > 0) iget3 = lvls(lp,iget(413))
1179 IF (iget1 > 0 .or. iget2 > 0 .or. iget3 > 0)
then
1182 jj = float(jsta+jend)/2.0
1183 ii = float(ista+iend)/3.0
1184 DO j=jsta_2l,jend_2u
1185 DO i=ista_2l,iend_2u
1196 llmh = nint(lmh(i,j))
1199 zdum = zmid(i,j,l)-zint(i,j,llmh+1)
1200 IF(zdum >= zagl3(lp))
THEN
1211 IF(nl1x(i,j)==(llmh+1) .AND. zagl3(lp)>0.)
THEN
1228 DO 240 j=jsta_2l,jend_2u
1229 DO 240 i=ista_2l,iend_2u
1237 llmh = nint(lmh(i,j))
1238 IF(nl1x(i,j)<=llmh)
THEN
1249 zdum=zagl3(lp)+zint(i,j,nint(lmh(i,j))+1)
1250 fact = (zdum-zmid(i,j,ll)) &
1251 / (zmid(i,j,ll)-zmid(i,j,ll-1))
1253 paglu = log(pmid(i,j,ll-1))
1254 pagll = log(pmid(i,j,ll))
1262 uaglu = uh(i,j,ll-1)
1265 vaglu = vh(i,j,ll-1)
1268 pagl(i,j) = exp(pagll+(pagll-paglu)*fact)
1269 tagl(i,j) = tagll+(tagll-taglu)*fact
1270 qagl(i,j) = qagll+(qagll-qaglu)*fact
1271 uagl(i,j) = uagll+(uagll-uaglu)*fact
1272 vagl(i,j) = vagll+(vagll-vaglu)*fact
1279 pagl(i,j) = pmid(i,j,nint(lmv(i,j)))
1280 tagl(i,j) = t(i,j,nint(lmv(i,j)))
1281 qagl(i,j) = q(i,j,nint(lmv(i,j)))
1282 uagl(i,j) = uh(i,j,nint(lmv(i,j)))
1283 vagl(i,j) = vh(i,j,nint(lmv(i,j)))
1298 IF((iget(411)>0) )
THEN
1301 IF(qagl(i,j)<spval.and.pagl(i,j)<spval.and.tagl(i,j)<spval.and.&
1302 uagl(i,j)<spval.and.vagl(i,j)<spval)
THEN
1303 qagl(i,j)=qagl(i,j)/1000.0
1304 pv=qagl(i,j)*pagl(i,j)/(eps*(1-qagl(i,j)) + qagl(i,j))
1305 rho=(1/tagl(i,j))*(((pagl(i,j)-pv)/rd) + pv/461.495)
1306 grid1(i,j)=0.5*rho*(sqrt(uagl(i,j)**2+vagl(i,j)**2))**3
1312 if(grib==
"grib2" )
then
1314 fld_info(cfld)%ifld=iavblfld(iget(411))
1315 fld_info(cfld)%lvl=lvlsxml(lp,iget(411))
1316 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1320 IF((iget(412)>0) )
THEN
1323 grid1(i,j)=uagl(i,j)
1326 if(grib==
"grib2" )
then
1328 fld_info(cfld)%ifld=iavblfld(iget(412))
1329 fld_info(cfld)%lvl=lvlsxml(lp,iget(412))
1330 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1334 IF((iget(413)>0) )
THEN
1337 grid1(i,j)=vagl(i,j)
1340 if(grib==
"grib2" )
then
1342 fld_info(cfld)%ifld=iavblfld(iget(413))
1343 fld_info(cfld)%lvl=lvlsxml(lp,iget(413))
1344 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)