<HTML> <BODY BGCOLOR=#bbeeee LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE><a name='1'> <font color=#447700>!----------------------------------------------------------------------<a name='2'></font> <font color=#447700>!<a name='3'></font> <font color=#447700>!NCEP_MESO:MODEL_LAYER: NONHYDROSTATIC DYNAMICS ROUTINES<a name='4'></font> <font color=#447700>!<a name='5'></font> <font color=#447700>!----------------------------------------------------------------------<a name='6'></font> <font color=#447700>!<a name='7'></font> #include "<A href='../../html_code/include/nmm_loop_basemacros.h.html'>nmm_loop_basemacros.h</A>"<A NAME="nmm_loop_basemacros.h_1"><A href='../../html_code/dyn_nmm/module_NONHY_DYNAM.F.html#module_NONHY_DYNAM.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='8'>#include "<A href='../../html_code/include/nmm_loop_macros.h.html'>nmm_loop_macros.h</A>"<A NAME="nmm_loop_macros.h_2"><A href='../../html_code/dyn_nmm/module_NONHY_DYNAM.F.html#module_NONHY_DYNAM.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='9'>
<font color=#447700>!<a name='10'></font> <font color=#447700>!----------------------------------------------------------------------<a name='11'></font> <font color=#447700>!<a name='12'></font> <A NAME='MODULE_NONHY_DYNAM'><A href='../../html_code/dyn_nmm/module_NONHY_DYNAM.F.html#MODULE_NONHY_DYNAM' TARGET='top_target'><IMG SRC="../../gif/bar_purple.gif" border=0></A><a name='13'> <font color=#993300>MODULE </font><font color=#cc0000>MODULE_NONHY_DYNAM</font> <A href='../../call_to/MODULE_NONHY_DYNAM.html' TARGET='index'>2</A><a name='14'> <font color=#447700>!<a name='15'></font> <font color=#447700>!----------------------------------------------------------------------<a name='16'></font> USE <A href='../../html_code/share/module_model_constants.F.html#MODULE_MODEL_CONSTANTS'>MODULE_MODEL_CONSTANTS</A><A href='../../html_code/dyn_nmm/module_NONHY_DYNAM.F.html#module_NONHY_DYNAM.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_MODEL_CONSTANTS_19"><a name='17'> <font color=#447700>! USE MODULE_INDX<a name='18'></font> <font color=#447700>!----------------------------------------------------------------------<a name='19'></font> <font color=#447700>!<a name='20'></font> REAL :: CAPA=R_D/CP,RG=1./G,TRG=2.*R_D/G<a name='21'> <font color=#447700>!<a name='22'></font> CONTAINS<a name='23'> <font color=#447700>!<a name='24'></font> <font color=#447700>!***********************************************************************<a name='25'></font> <A NAME='EPS'><A href='../../html_code/dyn_nmm/module_NONHY_DYNAM.F.html#EPS' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A><a name='26'> <font color=#993300>SUBROUTINE </font><font color=#cc0000>EPS</font>(NTSD,DT,HYDRO,DX,DY,FAD & <A href='../../call_to/EPS.html' TARGET='index'>1</A><a name='27'> ,DETA1,DETA2,PDTOP,PT &<a name='28'> ,HTM,HBM2,HBM3,LMH &<a name='29'> ,PDSL,PDSLO,PINT,RTOP,PETDT,PDWDT &<a name='30'> ,DWDT,DWDTMN,DWDTMX &<a name='31'> ,FNS,FEW,FNE,FSE &<a name='32'> ,T,U,V,W,Q,CWM &<a name='33'> ,IHE,IHW,IVE,IVW,INDX3_WRK &<a name='34'> ,IDS,IDE,JDS,JDE,KDS,KDE &<a name='35'> ,IMS,IME,JMS,JME,KMS,KME &<a name='36'> ,ITS,ITE,JTS,JTE,KTS,KTE)<a name='37'> <font color=#447700>!***********************************************************************<a name='38'></font> <font color=#447700>!$$$ SUBPROGRAM DOCUMENTATION BLOCK<a name='39'></font> <font color=#447700>! . . .<a name='40'></font> <font color=#447700>! SUBPROGRAM: EPS<a name='41'></font> <font color=#447700>! PRGRMMR: JANJIC ORG: W/NP22 DATE: 9?-??-??<a name='42'></font> <font color=#447700>!<a name='43'></font> <font color=#447700>! ABSTRACT:<a name='44'></font> <font color=#447700>! EPS COMPUTES THE VERTICAL AND HORIZONTAL ADVECTION OF DZ/DT<a name='45'></font> <font color=#447700>!<a name='46'></font> <font color=#447700>! PROGRAM HISTORY LOG:<a name='47'></font> <font color=#447700>! 9?-??-?? JANJIC - ORIGINATOR<a name='48'></font> <font color=#447700>! 00-01-05 BLACK - DISTRIBUTED MEMORY AND THREADS<a name='49'></font> <font color=#447700>! 02-02-07 BLACK - CONVERTED TO WRF STRUCTURE<a name='50'></font> <font color=#447700>! 04-11-22 BLACK - THREADED<a name='51'></font> <font color=#447700>!<a name='52'></font> <font color=#447700>! USAGE: CALL EPS FROM SUBROUTINE SOLVE_RUNSTREAM<a name='53'></font> <font color=#447700>! INPUT ARGUMENT LIST:<a name='54'></font> <font color=#447700>!<a name='55'></font> <font color=#447700>! OUTPUT ARGUMENT LIST:<a name='56'></font> <font color=#447700>!<a name='57'></font> <font color=#447700>! OUTPUT FILES:<a name='58'></font> <font color=#447700>! NONE<a name='59'></font> <font color=#447700>!<a name='60'></font> <font color=#447700>! SUBPROGRAMS CALLED:<a name='61'></font> <font color=#447700>!<a name='62'></font> <font color=#447700>! UNIQUE: NONE<a name='63'></font> <font color=#447700>!<a name='64'></font> <font color=#447700>! LIBRARY: NONE<a name='65'></font> <font color=#447700>!<a name='66'></font> <font color=#447700>! ATTRIBUTES:<a name='67'></font> <font color=#447700>! LANGUAGE: FORTRAN 90<a name='68'></font> <font color=#447700>! MACHINE : IBM SP<a name='69'></font> <font color=#447700>!$$$<a name='70'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='71'></font> <font color=#447700>!<a name='72'></font> IMPLICIT NONE<a name='73'> <font color=#447700>!-----------------------------------------------------------------------<a name='74'></font> #ifdef DM_PARALLEL<a name='75'> INCLUDE "<A href='../../html_code/include/mpif.h.html'>mpif.h</A>"<A NAME="mpif.h_3"><A href='../../html_code/dyn_nmm/module_NONHY_DYNAM.F.html#EPS' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='76'>
#endif<a name='77'> <font color=#447700>!<a name='78'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='79'></font> INTEGER,INTENT(IN) :: IDS,IDE,JDS,JDE,KDS,KDE &<a name='80'> ,IMS,IME,JMS,JME,KMS,KME &<a name='81'> ,ITS,ITE,JTS,JTE,KTS,KTE <a name='82'> <font color=#447700>!<a name='83'></font> INTEGER,DIMENSION(JMS:JME),INTENT(IN) :: IHE,IHW,IVE,IVW<a name='84'> <font color=#447700>!<a name='85'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='86'></font> <font color=#447700>!!!!!!!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<a name='87'></font> <font color=#447700>!*** NMM_MAX_DIM is set in configure.wrf and must agree with<a name='88'></font> <font color=#447700>!*** the value of dimspec q in the Registry/Registry<a name='89'></font> <font color=#447700>!!!!!!!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<a name='90'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='91'></font> <font color=#447700>!<a name='92'></font> INTEGER,DIMENSION(-3:3,NMM_MAX_DIM,0:6),INTENT(IN) :: INDX3_WRK<a name='93'> <font color=#447700>!<a name='94'></font> INTEGER,INTENT(IN) :: NTSD<a name='95'> <font color=#447700>!<a name='96'></font> INTEGER,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: LMH<a name='97'> <font color=#447700>!<a name='98'></font> REAL,INTENT(IN) :: DT,DY,PDTOP,PT<a name='99'> <font color=#447700>!<a name='100'></font> REAL,DIMENSION(KMS:KME-1),INTENT(IN) :: DETA1,DETA2<a name='101'> <font color=#447700>!<a name='102'></font> REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: DWDTMN,DWDTMX,DX &<a name='103'> ,FAD,HBM2,HBM3 &<a name='104'> ,PDSL,PDSLO<a name='105'> <font color=#447700>!<a name='106'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(IN) :: PETDT<a name='107'> <font color=#447700>!<a name='108'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(IN) :: CWM &<a name='109'> ,FEW,FNE &<a name='110'> ,FNS,FSE &<a name='111'> ,HTM,Q &<a name='112'> ,RTOP &<a name='113'> ,U,V<a name='114'> <font color=#447700>!<a name='115'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(INOUT) :: DWDT &<a name='116'> ,PDWDT &<a name='117'> ,T<a name='118'> <font color=#447700>!<a name='119'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(INOUT) :: PINT,W<a name='120'> <font color=#447700>!<a name='121'></font> LOGICAL,INTENT(IN) :: HYDRO<a name='122'> <font color=#447700>!<a name='123'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='124'></font> <font color=#447700>!<a name='125'></font> <font color=#447700>!*** LOCAL VARIABLES<a name='126'></font> <font color=#447700>!<a name='127'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='128'></font> <font color=#447700>!<a name='129'></font> INTEGER,PARAMETER :: NTSHY=2<a name='130'> <font color=#447700>!<a name='131'></font> REAL,PARAMETER :: WGHT=0.35,WP=0.<a name='132'> <font color=#447700>!<a name='133'></font> INTEGER,DIMENSION(KTS:KTE) :: LA<a name='134'> <font color=#447700>!<a name='135'></font> INTEGER :: I,J,J4_00,J4_M1,J4_P1,J5_00,J5_M1,J6_00,J6_P1 &<a name='136'> ,JEND,JJ,JKNT,JSTART,K,KOFF,LMP<a name='137'> <font color=#447700>!<a name='138'></font> REAL,DIMENSION(KTS:KTE) :: B1,B2,B3,C0,CWM_K,DWDT_K,Q_K,RDPP &<a name='139'> ,RTOP_K,T_K<a name='140'> <font color=#447700>!<a name='141'></font> REAL,DIMENSION(KTS:KTE+1) :: CHI,COFF,PINT_K,PNP1,PONE,PSTR,W_K<a name='142'> <font color=#447700>!<a name='143'></font> REAL,DIMENSION(ITS-5:ITE+5,JTS-5:JTE+5) :: TTB<a name='144'> <font color=#447700>!<a name='145'></font> REAL,DIMENSION(ITS-5:ITE+5,KTS:KTE) :: WEW<a name='146'> <font color=#447700>!<a name='147'></font> REAL :: ADDT,DELP,DETAL,DP,DPDE,DPPL,DPSTR,DPTL,DPTU &<a name='148'> ,DWDTT,EPSN,FCT,FFC,GDT,GDT2 &<a name='149'> ,HBM3IJ,HM,PP1,PSTRDN,PSTRUP,RDP,RDPDN,RDPUP,RDT &<a name='150'> ,TFC,TMP,TTAL,TTFC<a name='151'> <font color=#447700>!<a name='152'></font> LOGICAL :: BOT,TOP<a name='153'> <font color=#447700>!<a name='154'></font> <font color=#447700>!*** TYPE 4 WORKING ARRAY (SEE PFDHT)<a name='155'></font> <font color=#447700>!<a name='156'></font> REAL,DIMENSION(ITS-5:ITE+5,KTS:KTE,-1:1) :: WNS<a name='157'> <font color=#447700>!<a name='158'></font> <font color=#447700>!*** TYPE 5 WORKING ARRAY<a name='159'></font> <font color=#447700>!<a name='160'></font> REAL,DIMENSION(ITS-5:ITE+5,KTS:KTE,-1:0) :: WNE<a name='161'> <font color=#447700>!<a name='162'></font> <font color=#447700>!*** TYPE 6 WORKING ARRAY<a name='163'></font> <font color=#447700>!<a name='164'></font> REAL,DIMENSION(ITS-5:ITE+5,KTS:KTE, 0:1) :: WSE<a name='165'> <font color=#447700>!-----------------------------------------------------------------------<a name='166'></font> <font color=#447700>!***********************************************************************<a name='167'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='168'></font> IF(NTSD<=NTSHY.OR.HYDRO)THEN<a name='169'> <font color=#447700>!***<a name='170'></font> DO J=MYJS_P2,MYJE_P2<a name='171'> DO I=MYIS_P1,MYIE_P1<a name='172'> PINT(I,KTE+1,J)=PT<a name='173'> ENDDO<a name='174'> ENDDO<a name='175'> <font color=#447700>!<a name='176'></font> <font color=#447700>!$omp parallel do &<a name='177'></font> <font color=#447700>!$omp& private(i,j,k)<a name='178'></font> DO J=MYJS_P2,MYJE_P2<a name='179'> DO K=KTS,KTE<a name='180'> DO I=MYIS_P1,MYIE_P1<a name='181'> DWDT(I,K,J)=1.<a name='182'> PDWDT(I,K,J)=1.<a name='183'> ENDDO<a name='184'> ENDDO<a name='185'> ENDDO<a name='186'> <font color=#447700>!<a name='187'></font> <font color=#447700>!$omp parallel do &<a name='188'></font> <font color=#447700>!$omp& private(i,j,k)<a name='189'></font> DO J=MYJS_P2,MYJE_P2<a name='190'> DO K=KTE,KTS,-1<a name='191'> DO I=MYIS_P1,MYIE_P1<a name='192'> PINT(I,K,J)=DETA1(K)*PDTOP+DETA2(K)*PDSL(I,J)+PINT(I,K+1,J)<a name='193'> ENDDO<a name='194'> ENDDO<a name='195'> ENDDO<a name='196'> <font color=#447700>!***<a name='197'></font> RETURN<a name='198'> <font color=#447700>!***<a name='199'></font> ENDIF<a name='200'> <font color=#447700>!-----------------------------------------------------------------------<a name='201'></font> ADDT=DT<a name='202'> RDT=1./ADDT<a name='203'> <font color=#447700>!-----------------------------------------------------------------------<a name='204'></font> <font color=#447700>!<a name='205'></font> <font color=#447700>!*** TIME TENDENCY<a name='206'></font> <font color=#447700>!<a name='207'></font> <font color=#447700>!$omp parallel do &<a name='208'></font> <font color=#447700>!$omp& private(i,j,k)<a name='209'></font> DO J=MYJS_P1,MYJE_P1<a name='210'> DO K=KTS,KTE<a name='211'> DO I=MYIS_P1,MYIE_P1<a name='212'> DWDT(I,K,J)=(W(I,K,J)-DWDT(I,K,J))*HTM(I,K,J)*HBM2(I,J)*RDT<a name='213'> ENDDO<a name='214'> ENDDO<a name='215'> ENDDO<a name='216'> <font color=#447700>!<a name='217'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='218'></font> <font color=#447700>!***<a name='219'></font> <font color=#447700>!*** VERTICAL ADVECTION<a name='220'></font> <font color=#447700>!***<a name='221'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='222'></font> DO J=MYJS2,MYJE2<a name='223'> DO I=MYIS,MYIE<a name='224'> TTB(I,J)=0.<a name='225'> ENDDO<a name='226'> ENDDO<a name='227'> <font color=#447700>!<a name='228'></font> <font color=#447700>!$omp parallel do &<a name='229'></font> <font color=#447700>!$omp& private(i,j,k,ttal)<a name='230'></font> DO J=MYJS2,MYJE2<a name='231'> DO K=KTE,KTS+1,-1<a name='232'> DO I=MYIS,MYIE<a name='233'> TTAL=(W(I,K-1,J)-W(I,K,J))*PETDT(I,K-1,J)*0.5<a name='234'> DWDT(I,K,J)=(TTAL+TTB(I,J)) &<a name='235'> /(DETA1(K)*PDTOP+DETA2(K)*PDSLO(I,J)) &<a name='236'> +DWDT(I,K,J)<a name='237'> TTB(I,J)=TTAL<a name='238'> ENDDO<a name='239'> ENDDO<a name='240'> ENDDO<a name='241'> <font color=#447700>!<a name='242'></font> <font color=#447700>!$omp parallel do &<a name='243'></font> <font color=#447700>!$omp& private(i,j)<a name='244'></font> DO J=MYJS2,MYJE2<a name='245'> DO I=MYIS1,MYIE1<a name='246'> TTB(I,J)=(W(I,KTS,J)-W(I,KTS+1,J))*PETDT(I,KTS,J)*0.5<a name='247'> DWDT(I,KTS,J)=TTB(I,J)/(DETA1(KTS)*PDTOP+DETA2(KTS)*PDSLO(I,J)) &<a name='248'> +DWDT(I,KTS,J)<a name='249'> ENDDO<a name='250'> ENDDO<a name='251'> <font color=#447700>!-----------------------------------------------------------------------<a name='252'></font> <font color=#447700>!***<a name='253'></font> <font color=#447700>!*** END OF VERTICAL ADVECTION<a name='254'></font> <font color=#447700>!***<a name='255'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='256'></font> <font color=#447700>!<a name='257'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='258'></font> <font color=#447700>!***<a name='259'></font> <font color=#447700>!*** HORIZONTAL ADVECTION<a name='260'></font> <font color=#447700>!***<a name='261'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='262'></font> <font color=#447700>!*** MARCH NORTHWARD THROUGH THE SOUTHERNMOST SLABS TO BEGIN<a name='263'></font> <font color=#447700>!*** FILLING THE MAIN WORKING ARRAYS WHICH ARE MULTI-DIMENSIONED<a name='264'></font> <font color=#447700>!*** IN J BECAUSE THEY ARE DIFFERENCED OR AVERAGED IN J<a name='265'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='266'></font> <font color=#447700>!<a name='267'></font> JSTART=MYJS3<a name='268'> <font color=#447700>!<a name='269'></font> DO J=-1,0<a name='270'> JJ=JSTART+J<a name='271'> <font color=#447700>!<a name='272'></font> <font color=#447700>!$omp parallel do &<a name='273'></font> <font color=#447700>!$omp& private(i,k)<a name='274'></font> DO K=KTS,KTE<a name='275'> DO I=MYIS_P3,MYIE_P3<a name='276'> WNS(I,K,J)=FNS(I,K,JJ)*(W(I,K,JJ+1)-W(I,K,JJ-1))<a name='277'> ENDDO<a name='278'> ENDDO<a name='279'> <font color=#447700>!<a name='280'></font> ENDDO<a name='281'> <font color=#447700>!<a name='282'></font> J=-1<a name='283'> JJ=JSTART+J<a name='284'> <font color=#447700>!<a name='285'></font> <font color=#447700>!$omp parallel do &<a name='286'></font> <font color=#447700>!$omp& private(i,k)<a name='287'></font> DO K=KTS,KTE<a name='288'> DO I=MYIS_P2,MYIE1_P2<a name='289'> WNE(I,K,J)=FNE(I,K,JJ)*(W(I+IHE(JJ),K,JJ+1)-W(I,K,JJ))<a name='290'> ENDDO<a name='291'> ENDDO<a name='292'> <font color=#447700>!<a name='293'></font> J=0<a name='294'> JJ=JSTART+J<a name='295'> <font color=#447700>!<a name='296'></font> <font color=#447700>!$omp parallel do &<a name='297'></font> <font color=#447700>!$omp& private(i,k)<a name='298'></font> DO K=KTS,KTE<a name='299'> DO I=MYIS_P2,MYIE1_P2<a name='300'> WSE(I,K,J)=FSE(I,K,JJ)*(W(I+IHE(JJ),K,JJ-1)-W(I,K,JJ))<a name='301'> ENDDO<a name='302'> ENDDO<a name='303'> <font color=#447700>!-----------------------------------------------------------------------<a name='304'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='305'></font> <font color=#447700>!<a name='306'></font> JKNT=0<a name='307'> JSTART=MYJS3<a name='308'> JEND =MYJE3<a name='309'> <font color=#447700>!<a name='310'></font> main_horizontal: DO J=JSTART,JEND<a name='311'> <font color=#447700>!<a name='312'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='313'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='314'></font> <font color=#447700>!***<a name='315'></font> <font color=#447700>!*** SET THE 3RD INDEX IN THE WORKING ARRAYS (SEE SUBROUTINE INIT<a name='316'></font> <font color=#447700>!*** AND PFDHT DIAGRAMS)<a name='317'></font> <font color=#447700>!***<a name='318'></font> <font color=#447700>!*** J[TYPE]_NN WHERE "TYPE" IS THE WORKING ARRAY TYPE SEEN IN THE<a name='319'></font> <font color=#447700>!*** LOCAL DECLARATION ABOVE (DEPENDENT UPON THE J EXTENT) AND<a name='320'></font> <font color=#447700>!*** NN IS THE NUMBER OF ROWS NORTH OF THE CENTRAL ROW WHOSE J IS<a name='321'></font> <font color=#447700>!*** THE CURRENT VALUE OF THE main_integration LOOP.<a name='322'></font> <font color=#447700>!*** (P3 denotes +3, M1 denotes -1, etc.)<a name='323'></font> <font color=#447700>!***<a name='324'></font> JKNT=JKNT+1<a name='325'> <font color=#447700>!<a name='326'></font> J4_P1=INDX3_WRK(1,JKNT,4)<a name='327'> J4_00=INDX3_WRK(0,JKNT,4)<a name='328'> J4_M1=INDX3_WRK(-1,JKNT,4)<a name='329'> <font color=#447700>!<a name='330'></font> J5_00=INDX3_WRK(0,JKNT,5)<a name='331'> J5_M1=INDX3_WRK(-1,JKNT,5)<a name='332'> <font color=#447700>!<a name='333'></font> J6_P1=INDX3_WRK(1,JKNT,6)<a name='334'> J6_00=INDX3_WRK(0,JKNT,6)<a name='335'> <font color=#447700>!<a name='336'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='337'></font> <font color=#447700>!*** THE WORKING ARRAYS FOR THE PRIMARY VARIABLES<a name='338'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='339'></font> <font color=#447700>!$omp parallel do &<a name='340'></font> <font color=#447700>!$omp& private(dpde,i,k)<a name='341'></font> DO K=KTS,KTE<a name='342'> <font color=#447700>!<a name='343'></font> DO I=MYIS_P3,MYIE_P3<a name='344'> WEW(I,K)=FEW(I,K,J)*(W(I+IVE(J),K,J)-W(I+IVW(J),K,J))<a name='345'> WNS(I,K,J4_P1)=FNS(I,K,J+1)*(W(I,K,J+2)-W(I,K,J))<a name='346'> ENDDO<a name='347'> <font color=#447700>!<a name='348'></font> <font color=#447700>!*** DIAGONAL FLUXES AND DIAGONALLY AVERAGED WIND<a name='349'></font> <font color=#447700>!<a name='350'></font> DO I=MYIS_P2,MYIE1_P2<a name='351'> WNE(I,K,J5_00)=FNE(I,K,J)*(W(I+IHE(J),K,J+1)-W(I,K,J))<a name='352'> WSE(I,K,J6_P1)=FSE(I,K,J+1)*(W(I+IHE(J+1),K,J)-W(I,K,J+1))<a name='353'> ENDDO<a name='354'> <font color=#447700>!-----------------------------------------------------------------------<a name='355'></font> <font color=#447700>!<a name='356'></font> DO I=MYIS2,MYIE2<a name='357'> DPDE=DETA1(K)*PDTOP+DETA2(K)*PDSLO(I,J)<a name='358'> DWDT(I,K,J)=-(WEW(I+IHW(J),K) +WEW(I+IHE(J),K) &<a name='359'> +WNS(I,K,J4_M1) +WNS(I,K,J4_P1) &<a name='360'> +WNE(I+IHW(J),K,J5_M1)+WNE(I,K,J5_00) &<a name='361'> +WSE(I,K,J6_00) +WSE(I+IHW(J),K,J6_P1)) &<a name='362'> *FAD(I,J)*HTM(I,K,J)*HBM3(I,J)/(DPDE*DT) &<a name='363'> +DWDT(I,K,J)<a name='364'> ENDDO<a name='365'> <font color=#447700>!<a name='366'></font> ENDDO<a name='367'> <font color=#447700>!-----------------------------------------------------------------------<a name='368'></font> <font color=#447700>!<a name='369'></font> ENDDO main_horizontal<a name='370'> <font color=#447700>!<a name='371'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='372'></font> <font color=#447700>!***<a name='373'></font> <font color=#447700>!*** END OF HORIZONTAL ADVECTION<a name='374'></font> <font color=#447700>!***<a name='375'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='376'></font> <font color=#447700>!<a name='377'></font> <font color=#447700>!$omp parallel do &<a name='378'></font> <font color=#447700>!$omp& private(dwdtt,i,j,k)<a name='379'></font> DO J=MYJS,MYJE<a name='380'> DO K=KTS,KTE<a name='381'> DO I=MYIS,MYIE<a name='382'> DWDTT=DWDT(I,K,J)*HTM(I,K,J)<a name='383'> DWDTT=MAX(DWDTT,DWDTMN(I,J))<a name='384'> DWDTT=MIN(DWDTT,DWDTMX(I,J))<a name='385'> <font color=#447700>!<a name='386'></font> DWDT(I,K,J)=(DWDTT*RG+1.)*(1.-WP)+PDWDT(I,K,J)*WP<a name='387'> ENDDO<a name='388'> ENDDO<a name='389'> ENDDO<a name='390'> <font color=#447700>!-----------------------------------------------------------------------<a name='391'></font> <font color=#447700>!<a name='392'></font> GDT=G*DT<a name='393'> GDT2=GDT*GDT<a name='394'> FFC=-R_D/GDT2<a name='395'> <font color=#447700>!<a name='396'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='397'></font> <font color=#447700>!<a name='398'></font> <font color=#447700>!$omp parallel do &<a name='399'></font> <font color=#447700>!$omp& private(b1,b2,b3,c0,chi,coff,cwm_k,delp,dppl,dpstr,dptl,dptu, &<a name='400'></font> <font color=#447700>!$omp& dwdt_k,fct,hbm3ij,i,j,k,koff,pint_k,pnp1,pone,pp1,pstr, &<a name='401'></font> <font color=#447700>!$omp& pstrdn,pstrup,q_k,rdpdn,rdpp,rdpup,rtop_k,t_k,tfc, &<a name='402'></font> <font color=#447700>!$omp& tmp,ttfc,w_k)<a name='403'></font> final_update: DO J=MYJS3,MYJE3<a name='404'> <font color=#447700>!<a name='405'></font> PONE(KTE+1)=PT<a name='406'> PSTR(KTE+1)=PT<a name='407'> PNP1(KTE+1)=PT<a name='408'> CHI(KTE+1)=0.<a name='409'> <font color=#447700>!<a name='410'></font> DO I=MYIS2,MYIE2<a name='411'> <font color=#447700>!<a name='412'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='413'></font> <font color=#447700>!<a name='414'></font> <font color=#447700>!*** EXTRACT COLUMNS FROM 3-D ARRAYS<a name='415'></font> <font color=#447700>!<a name='416'></font> DO K=KTS,KTE<a name='417'> CWM_K(K)=CWM(I,K,J)<a name='418'> DWDT_K(K)=DWDT(I,K,J)<a name='419'> Q_K(K)=Q(I,K,J)<a name='420'> RTOP_K(K)=RTOP(I,K,J)<a name='421'> T_K(K)=T(I,K,J)<a name='422'> ENDDO<a name='423'> <font color=#447700>!<a name='424'></font> DO K=KTS,KTE+1<a name='425'> PINT_K(K)=PINT(I,K,J)<a name='426'> W_K(K)=W(I,K,J)<a name='427'> ENDDO<a name='428'> <font color=#447700>!-----------------------------------------------------------------------<a name='429'></font> <font color=#447700>!<a name='430'></font> KOFF=KTE-LMH(I,J)<a name='431'> <font color=#447700>!<a name='432'></font> DO K=KTE,KOFF+1,-1<a name='433'> CHI(K)=0.<a name='434'> DPPL=DETA1(K)*PDTOP+DETA2(K)*PDSL(I,J)<a name='435'> RDPP(K)=1./DPPL<a name='436'> PONE(K)=PINT_K(K)<a name='437'> DPSTR=DWDT_K(K)*DPPL<a name='438'> PSTR(K)=PSTR(K+1)+DPSTR<a name='439'> PP1=PNP1(K+1)+DPSTR<a name='440'> PNP1(K)=(PP1-PONE(K))*WGHT+PONE(K)<a name='441'> TFC=Q_K(K)*P608+(1.-CWM_K(K))<a name='442'> TTFC=-CAPA*TFC+1.<a name='443'> COFF(K)=T_K(K)*TTFC*TFC*DPPL*FFC &<a name='444'> /((PNP1(K+1)+PNP1(K))*(PNP1(K+1)+PNP1(K)))<a name='445'> ENDDO<a name='446'> <font color=#447700>!-----------------------------------------------------------------------<a name='447'></font> <font color=#447700>!<a name='448'></font> PSTRUP=-(PSTR(KTE+1)+PSTR(KTE)-PONE(KTE+1)-PONE(KTE))*COFF(KTE)<a name='449'> <font color=#447700>!<a name='450'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='451'></font> DO K=KTE-1,KOFF+1,-1<a name='452'> RDPDN=RDPP(K)<a name='453'> RDPUP=RDPP(K+1)<a name='454'> <font color=#447700>!<a name='455'></font> PSTRDN=-(PSTR(K+1)+PSTR(K)-PONE(K+1)-PONE(K))*COFF(K)<a name='456'> <font color=#447700>!<a name='457'></font> B1(K)=COFF(K+1)+RDPUP<a name='458'> B2(K)=(COFF(K+1)+COFF(K))-(RDPUP+RDPDN)<a name='459'> B3(K)=COFF(K)+RDPDN<a name='460'> C0(K)=PSTRUP+PSTRDN<a name='461'> <font color=#447700>!<a name='462'></font> PSTRUP=PSTRDN<a name='463'> ENDDO<a name='464'> <font color=#447700>!-----------------------------------------------------------------------<a name='465'></font> B1(KTE-1)=0.<a name='466'> B2(KOFF+1)=B2(KOFF+1)+B3(KOFF+1)<a name='467'> <font color=#447700>!-----------------------------------------------------------------------<a name='468'></font> <font color=#447700>!<a name='469'></font> <font color=#447700>!*** ELIMINATION<a name='470'></font> <font color=#447700>!<a name='471'></font> DO K=KTE-2,KOFF+1,-1<a name='472'> TMP=-B1(K)/B2(K+1)<a name='473'> B2(K)=B3(K+1)*TMP+B2(K)<a name='474'> C0(K)=C0(K+1)*TMP+C0(K)<a name='475'> ENDDO<a name='476'> <font color=#447700>!<a name='477'></font> CHI(KTE+1)=0.<a name='478'> <font color=#447700>!-----------------------------------------------------------------------<a name='479'></font> <font color=#447700>!<a name='480'></font> <font color=#447700>!*** BACK SUBSTITUTION<a name='481'></font> <font color=#447700>!<a name='482'></font> CHI(KOFF+2)=C0(KOFF+1)/B2(KOFF+1)<a name='483'> CHI(KOFF+1)=CHI(KOFF+2)<a name='484'> <font color=#447700>!<a name='485'></font> DO K=KOFF+3,KTE<a name='486'> CHI(K)=(-B3(K-1)*CHI(K-1)+C0(K-1))/B2(K-1)<a name='487'> ENDDO<a name='488'> <font color=#447700>!-----------------------------------------------------------------------<a name='489'></font> HBM3IJ=HBM3(I,J)<a name='490'> DPTU=0.<a name='491'> FCT=0.5/CP*HBM3IJ<a name='492'> <font color=#447700>!<a name='493'></font> DO K=KTE,KOFF+1,-1<a name='494'> DPTL=(CHI(K)+PSTR(K)-PINT_K(K))*HBM3IJ<a name='495'> PINT_K(K)=PINT_K(K)+DPTL<a name='496'> T_K(K)=(DPTU+DPTL)*RTOP_K(K)*FCT+T_K(K)<a name='497'> DELP=(PINT_K(K)-PINT_K(K+1))*RDPP(K)<a name='498'> W_K(K)=((DELP-DWDT_K(K))*GDT+W_K(K))*HBM3IJ<a name='499'> DWDT_K(K)=(DELP-1.)*HBM3IJ+1.<a name='500'> <font color=#447700>!<a name='501'></font> DPTU=DPTL<a name='502'> ENDDO<a name='503'> <font color=#447700>!-----------------------------------------------------------------------<a name='504'></font> DO K=KOFF+1,KTE<a name='505'> PINT(I,K,J)=PINT_K(K)<a name='506'> T(I,K,J)=T_K(K)<a name='507'> W(I,K,J)=W_K(K)<a name='508'> DWDT(I,K,J)=DWDT_K(K)<a name='509'> ENDDO<a name='510'> <font color=#447700>!-----------------------------------------------------------------------<a name='511'></font> <font color=#447700>!<a name='512'></font> ENDDO<a name='513'> <font color=#447700>!<a name='514'></font> ENDDO final_update<a name='515'> <font color=#447700>!<a name='516'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='517'></font> <font color=#447700>!<a name='518'></font> END SUBROUTINE EPS<a name='519'> <font color=#447700>!<a name='520'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='521'></font> <font color=#447700>!<a name='522'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='523'></font> <font color=#447700>!***********************************************************************<a name='524'></font> <A NAME='VADZ'><A href='../../html_code/dyn_nmm/module_NONHY_DYNAM.F.html#VADZ' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A><a name='525'> <font color=#993300>SUBROUTINE </font><font color=#cc0000>VADZ</font>(NTSD,DT,FIS,SIGMA,DFL,HTM,HBM2 & <A href='../../call_to/VADZ.html' TARGET='index'>1</A><a name='526'> ,DETA1,DETA2,PDTOP &<a name='527'> ,PINT,PDSL,PDSLO,PETDT &<a name='528'> ,RTOP,T,Q,CWM,Z,W,DWDT,PDWDT &<a name='529'> ,IHE,IHW,IVE,IVW,INDX3_WRK &<a name='530'> ,IDS,IDE,JDS,JDE,KDS,KDE &<a name='531'> ,IMS,IME,JMS,JME,KMS,KME &<a name='532'> ,ITS,ITE,JTS,JTE,KTS,KTE)<a name='533'> <font color=#447700>!***********************************************************************<a name='534'></font> <font color=#447700>!$$$ SUBPROGRAM DOCUMENTATION BLOCK<a name='535'></font> <font color=#447700>! . . . <a name='536'></font> <font color=#447700>! SUBPROGRAM: VADZ VERTICAL ADVECTION OF HEIGHT<a name='537'></font> <font color=#447700>! PRGRMMR: JANJIC ORG: W/NP22 DATE: 93-11-17<a name='538'></font> <font color=#447700>! <a name='539'></font> <font color=#447700>! ABSTRACT:<a name='540'></font> <font color=#447700>! VADV CALCULATES THE CONTRIBUTION OF THE VERTICAL ADVECTION<a name='541'></font> <font color=#447700>! OF HEIGHT IN ORDER TO COMPUTE W=DZ/DT DIAGNOSTICALLY<a name='542'></font> <font color=#447700>! <a name='543'></font> <font color=#447700>! PROGRAM HISTORY LOG:<a name='544'></font> <font color=#447700>! 96-05-?? JANJIC - ORIGINATOR<a name='545'></font> <font color=#447700>! 00-01-04 BLACK - DISTRIBUTED MEMORY AND THREADS<a name='546'></font> <font color=#447700>! 01-03-26 BLACK - CONVERTED TO WRF STRUCTURE<a name='547'></font> <font color=#447700>! 02-02-19 BLACK - CONVERSION UPDATED<a name='548'></font> <font color=#447700>! 04-11-22 BLACK - THREADED<a name='549'></font> <font color=#447700>! <a name='550'></font> <font color=#447700>! USAGE: CALL VADZ FROM MAIN PROGRAM<a name='551'></font> <font color=#447700>! INPUT ARGUMENT LIST:<a name='552'></font> <font color=#447700>!<a name='553'></font> <font color=#447700>! OUTPUT ARGUMENT LIST:<a name='554'></font> <font color=#447700>!<a name='555'></font> <font color=#447700>! OUTPUT FILES:<a name='556'></font> <font color=#447700>! NONE<a name='557'></font> <font color=#447700>!<a name='558'></font> <font color=#447700>! SUBPROGRAMS CALLED:<a name='559'></font> <font color=#447700>!<a name='560'></font> <font color=#447700>! UNIQUE: NONE<a name='561'></font> <font color=#447700>!<a name='562'></font> <font color=#447700>! LIBRARY: NONE<a name='563'></font> <font color=#447700>!<a name='564'></font> <font color=#447700>! ATTRIBUTES:<a name='565'></font> <font color=#447700>! LANGUAGE: FORTRAN 90<a name='566'></font> <font color=#447700>! MACHINE : IBM SP<a name='567'></font> <font color=#447700>!$$$<a name='568'></font> <font color=#447700>!***********************************************************************<a name='569'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='570'></font> <font color=#447700>!<a name='571'></font> IMPLICIT NONE<a name='572'> <font color=#447700>!<a name='573'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='574'></font> #ifdef AS_RECEIVED<a name='575'> LOGICAL,INTENT(IN) :: SIGMA<a name='576'> #else<a name='577'> INTEGER,INTENT(IN) :: SIGMA<a name='578'> #endif<a name='579'> <font color=#447700>!<a name='580'></font> INTEGER,INTENT(IN) :: NTSD<a name='581'> <font color=#447700>!<a name='582'></font> INTEGER,INTENT(IN) :: IDS,IDE,JDS,JDE,KDS,KDE &<a name='583'> ,IMS,IME,JMS,JME,KMS,KME &<a name='584'> ,ITS,ITE,JTS,JTE,KTS,KTE<a name='585'> <font color=#447700>!<a name='586'></font> INTEGER,DIMENSION(JMS:JME),INTENT(IN) :: IHE,IHW,IVE,IVW<a name='587'> <font color=#447700>!<a name='588'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='589'></font> <font color=#447700>!!!!!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<a name='590'></font> <font color=#447700>!*** NMM_MAX_DIM is set in configure.wrf and must agree with<a name='591'></font> <font color=#447700>!*** the value of dimspec q in the Registry/Registry<a name='592'></font> <font color=#447700>!!!!!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<a name='593'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='594'></font> <font color=#447700>!<a name='595'></font> INTEGER,DIMENSION(-3:3,NMM_MAX_DIM,0:6),INTENT(IN) :: INDX3_WRK<a name='596'> <font color=#447700>!<a name='597'></font> REAL,INTENT(IN) :: DT,PDTOP<a name='598'> <font color=#447700>!<a name='599'></font> REAL,DIMENSION(KTS:KTE),INTENT(IN) :: DETA1,DETA2<a name='600'> <font color=#447700>!<a name='601'></font> REAL,DIMENSION(KTS:KTE+1),INTENT(IN) :: DFL<a name='602'> <font color=#447700>!<a name='603'></font> REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: FIS,HBM2,PDSL,PDSLO<a name='604'> <font color=#447700>!<a name='605'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(IN) :: PETDT<a name='606'> <font color=#447700>!<a name='607'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(IN) :: CWM,HTM &<a name='608'> ,Q,RTOP,T<a name='609'> <font color=#447700>!<a name='610'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(OUT) :: PDWDT<a name='611'> <font color=#447700>!<a name='612'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(INOUT) :: DWDT<a name='613'> <font color=#447700>!<a name='614'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(IN) :: PINT<a name='615'> <font color=#447700>!<a name='616'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(OUT) :: W,Z<a name='617'> <font color=#447700>!-----------------------------------------------------------------------<a name='618'></font> <font color=#447700>!<a name='619'></font> <font color=#447700>!*** LOCAL VARIABLES<a name='620'></font> <font color=#447700>!<a name='621'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='622'></font> INTEGER :: I,J,K<a name='623'> <font color=#447700>!<a name='624'></font> REAL,DIMENSION(IMS:IME,JMS:JME) :: FNE,FSE,TTB<a name='625'> <font color=#447700>!<a name='626'></font> REAL :: DZ,RDT,TTAL,ZETA<a name='627'> <font color=#447700>!-----------------------------------------------------------------------<a name='628'></font> <font color=#447700>!***********************************************************************<a name='629'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='630'></font> RDT=1./DT<a name='631'> <font color=#447700>!-----------------------------------------------------------------------<a name='632'></font> <font color=#447700>!$omp parallel do &<a name='633'></font> <font color=#447700>!$omp& private(dz,i,j,k,zeta)<a name='634'></font> DO J=MYJS,MYJE<a name='635'> <font color=#447700>!<a name='636'></font> DO K=KTS,KTE<a name='637'> DO I=MYIS,MYIE<a name='638'> PDWDT(I,K,J)=DWDT(I,K,J)<a name='639'> DWDT(I,K,J)=W(I,K,J)<a name='640'> ENDDO<a name='641'> ENDDO<a name='642'> <font color=#447700>!<a name='643'></font> DO I=MYIS,MYIE<a name='644'> W(I,KTS,J)=0.<a name='645'> #ifdef AS_RECEIVED<a name='646'> IF(SIGMA)THEN<a name='647'> #else<a name='648'> IF(SIGMA==1)THEN<a name='649'> #endif<a name='650'> Z(I,KTS,J)=FIS(I,J)*RG<a name='651'> ELSE<a name='652'> Z(I,KTS,J)=0.<a name='653'> ENDIF<a name='654'> ENDDO<a name='655'> <font color=#447700>!<a name='656'></font> DO K=KTS,KTE<a name='657'> <font color=#447700>!<a name='658'></font> ZETA=DFL(K+1)*RG<a name='659'> <font color=#447700>!<a name='660'></font> DO I=MYIS,MYIE<a name='661'> <font color=#447700>!<a name='662'></font> DZ=(Q(I,K,J)*P608-CWM(I,K,J)+1.)*T(I,K,J) &<a name='663'> /(PINT(I,K+1,J)+PINT(I,K,J)) &<a name='664'> *(DETA1(K)*PDTOP+DETA2(K)*PDSL(I,J))*TRG<a name='665'> Z(I,K+1,J)=(Z(I,K,J)+DZ-ZETA)*HTM(I,K,J)+ZETA<a name='666'> W(I,K+1,J)=(DZ-RTOP(I,K,J) &<a name='667'> *(DETA1(K)*PDTOP+DETA2(K)*PDSLO(I,J))*RG) &<a name='668'> *HTM(I,K,J)*HBM2(I,J) &<a name='669'> +W(I,K,J)<a name='670'> <font color=#447700>!<a name='671'></font> ENDDO<a name='672'> ENDDO<a name='673'> <font color=#447700>!<a name='674'></font> ENDDO<a name='675'> <font color=#447700>!-----------------------------------------------------------------------<a name='676'></font> <font color=#447700>!$omp parallel do &<a name='677'></font> <font color=#447700>!$omp& private(i,j,k)<a name='678'></font> DO J=MYJS,MYJE<a name='679'> <font color=#447700>!<a name='680'></font> DO K=KTS,KTE<a name='681'> DO I=MYIS,MYIE<a name='682'> Z(I,K,J)=(Z(I,K+1,J)+Z(I,K,J))*0.5<a name='683'> W(I,K,J)=(W(I,K+1,J)+W(I,K,J))*HTM(I,K,J)*HBM2(I,J)*0.5*RDT<a name='684'> ENDDO<a name='685'> ENDDO<a name='686'> <font color=#447700>!<a name='687'></font> ENDDO<a name='688'> <font color=#447700>!-----------------------------------------------------------------------<a name='689'></font> DO J=MYJS,MYJE<a name='690'> DO I=MYIS,MYIE<a name='691'> TTB(I,J)=0.<a name='692'> ENDDO<a name='693'> ENDDO<a name='694'> <font color=#447700>!<a name='695'></font> <font color=#447700>!$omp parallel do &<a name='696'></font> <font color=#447700>!$omp& private(i,j,k,ttal)<a name='697'></font> DO J=MYJS2,MYJE2<a name='698'> DO K=KTE,KTS+1,-1<a name='699'> DO I=MYIS1,MYIE1<a name='700'> TTAL=(Z(I,K-1,J)-Z(I,K,J))*PETDT(I,K-1,J)*0.5<a name='701'> W(I,K,J)=(TTAL+TTB(I,J))/(DETA1(K)*PDTOP+DETA2(K)*PDSLO(I,J)) &<a name='702'> +W(I,K,J)<a name='703'> TTB(I,J)=TTAL<a name='704'> ENDDO<a name='705'> ENDDO<a name='706'> ENDDO<a name='707'> <font color=#447700>!<a name='708'></font> <font color=#447700>!$omp parallel do &<a name='709'></font> <font color=#447700>!$omp& private(i,j)<a name='710'></font> DO J=MYJS2,MYJE2<a name='711'> DO I=MYIS1,MYIE1<a name='712'> W(I,KTS,J)=TTB(I,J)/(DETA1(KTS)*PDTOP+DETA2(KTS)*PDSLO(I,J)) &<a name='713'> +W(I,KTS,J)<a name='714'> ENDDO<a name='715'> ENDDO<a name='716'> <font color=#447700>!-----------------------------------------------------------------------<a name='717'></font> END SUBROUTINE VADZ<a name='718'> <font color=#447700>!-----------------------------------------------------------------------<a name='719'></font> <font color=#447700>!<a name='720'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='721'></font> <font color=#447700>!***********************************************************************<a name='722'></font> <A NAME='HADZ'><A href='../../html_code/dyn_nmm/module_NONHY_DYNAM.F.html#HADZ' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A><a name='723'> <font color=#993300>SUBROUTINE </font><font color=#cc0000>HADZ</font>(NTSD,DT,HYDRO,HTM,HBM2,DETA1,DETA2,PDTOP & <A href='../../call_to/HADZ.html' TARGET='index'>1</A><a name='724'> ,DX,DY,FAD &<a name='725'> ,FEW,FNS,FNE,FSE &<a name='726'> ,PDSL,U,V,W,Z &<a name='727'> ,IHE,IHW,IVE,IVW,INDX3_WRK &<a name='728'> ,IDS,IDE,JDS,JDE,KDS,KDE &<a name='729'> ,IMS,IME,JMS,JME,KMS,KME &<a name='730'> ,ITS,ITE,JTS,JTE,KTS,KTE)<a name='731'> <font color=#447700>!***********************************************************************<a name='732'></font> <font color=#447700>!$$$ SUBPROGRAM DOCUMENTATION BLOCK<a name='733'></font> <font color=#447700>! . . . <a name='734'></font> <font color=#447700>! SUBPROGRAM: HADZ HORIZONTAL ADVECTION OF HEIGHT<a name='735'></font> <font color=#447700>! PRGRMMR: JANJIC ORG: W/NP22 DATE: 96-05-?? <a name='736'></font> <font color=#447700>! <a name='737'></font> <font color=#447700>! ABSTRACT:<a name='738'></font> <font color=#447700>! HADZ CALCULATES DIAGNOSTICALLY THE CONTRIBUTION OF<a name='739'></font> <font color=#447700>! THE HORIZONTAL ADVECTION OF HEIGHT<a name='740'></font> <font color=#447700>! <a name='741'></font> <font color=#447700>! PROGRAM HISTORY LOG:<a name='742'></font> <font color=#447700>! 96-05-?? JANJIC - ORIGINATOR<a name='743'></font> <font color=#447700>! 00-01-04 BLACK - DISTRIBUTED MEMORY AND THREADS<a name='744'></font> <font color=#447700>! 01-03-26 BLACK - CONVERTED TO WRF STRUCTURE<a name='745'></font> <font color=#447700>! 04-11-22 BLACK - THREADED<a name='746'></font> <font color=#447700>!<a name='747'></font> <font color=#447700>! USAGE: CALL HADZ FROM MAIN PROGRAM<a name='748'></font> <font color=#447700>! INPUT ARGUMENT LIST:<a name='749'></font> <font color=#447700>!<a name='750'></font> <font color=#447700>! OUTPUT ARGUMENT LIST:<a name='751'></font> <font color=#447700>! NONE<a name='752'></font> <font color=#447700>!<a name='753'></font> <font color=#447700>! OUTPUT FILES:<a name='754'></font> <font color=#447700>!<a name='755'></font> <font color=#447700>! SUBPROGRAMS CALLED:<a name='756'></font> <font color=#447700>!<a name='757'></font> <font color=#447700>! UNIQUE: NONE<a name='758'></font> <font color=#447700>!<a name='759'></font> <font color=#447700>! LIBRARY: NONE<a name='760'></font> <font color=#447700>!<a name='761'></font> <font color=#447700>! ATTRIBUTES:<a name='762'></font> <font color=#447700>! LANGUAGE: FORTRAN 90<a name='763'></font> <font color=#447700>! MACHINE : IBM SP<a name='764'></font> <font color=#447700>!$$$<a name='765'></font> <font color=#447700>!***********************************************************************<a name='766'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='767'></font> <font color=#447700>!<a name='768'></font> IMPLICIT NONE<a name='769'> <font color=#447700>!<a name='770'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='771'></font> LOGICAL,INTENT(IN) :: HYDRO<a name='772'> <font color=#447700>!<a name='773'></font> INTEGER,INTENT(IN) :: NTSD<a name='774'> <font color=#447700>!<a name='775'></font> INTEGER,INTENT(IN) :: IDS,IDE,JDS,JDE,KDS,KDE &<a name='776'> ,IMS,IME,JMS,JME,KMS,KME &<a name='777'> ,ITS,ITE,JTS,JTE,KTS,KTE<a name='778'> <font color=#447700>!<a name='779'></font> INTEGER,DIMENSION(JMS:JME),INTENT(IN) :: IHE,IHW,IVE,IVW<a name='780'> <font color=#447700>!<a name='781'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='782'></font> <font color=#447700>!!!!!!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<a name='783'></font> <font color=#447700>!*** NMM_MAX_DIM is set in configure.wrf and must agree with<a name='784'></font> <font color=#447700>!*** the value of dimspec q in the Registry/Registry<a name='785'></font> <font color=#447700>!!!!!!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<a name='786'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='787'></font> <font color=#447700>!<a name='788'></font> INTEGER,DIMENSION(-3:3,NMM_MAX_DIM,0:6),INTENT(IN) :: INDX3_WRK<a name='789'> <font color=#447700>!<a name='790'></font> REAL,INTENT(IN) :: DT,DY,PDTOP<a name='791'> <font color=#447700>!<a name='792'></font> REAL,DIMENSION(KMS:KME-1),INTENT(IN) :: DETA1,DETA2<a name='793'> <font color=#447700>!<a name='794'></font> REAL,DIMENSION(IMS:IME,JMS:JME),INTENT(IN) :: DX,FAD,HBM2,PDSL<a name='795'> <font color=#447700>!<a name='796'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(IN) :: HTM,U,V<a name='797'> <font color=#447700>!<a name='798'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(OUT) :: FEW,FNE &<a name='799'> ,FNS,FSE<a name='800'> <font color=#447700>!<a name='801'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(IN) :: Z<a name='802'> <font color=#447700>!<a name='803'></font> REAL,DIMENSION(IMS:IME,KMS:KME,JMS:JME),INTENT(INOUT) :: W<a name='804'> <font color=#447700>!-----------------------------------------------------------------------<a name='805'></font> <font color=#447700>!<a name='806'></font> <font color=#447700>!*** LOCAL VARIABLES<a name='807'></font> <font color=#447700>!<a name='808'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='809'></font> INTEGER,PARAMETER :: NTSHY=2<a name='810'> <font color=#447700>!<a name='811'></font> INTEGER :: I,J,J1_00,J1_P1,J1_P2,J4_00,J4_M1,J4_P1,J5_00,J5_M1 &<a name='812'> ,J6_00,J6_P1,JJ,JKNT,JSTART,K<a name='813'> <font color=#447700>!<a name='814'></font> REAL :: FEWP,FNEP,FNSP,FSEP,UDY,VDX<a name='815'> <font color=#447700>!<a name='816'></font> REAL,DIMENSION(IMS:IME,KTS:KTE) :: UDY_00,ZEW<a name='817'> <font color=#447700>!<a name='818'></font> <font color=#447700>!*** TYPE 1 WORKING ARRAY (SEE PFDHT)<a name='819'></font> <font color=#447700>!<a name='820'></font> REAL,DIMENSION(ITS-5:ITE+5,KTS:KTE,-2:2) :: DPDE<a name='821'> <font color=#447700>!<a name='822'></font> <font color=#447700>!*** TYPE 4 WORKING ARRAY <a name='823'></font> <font color=#447700>!<a name='824'></font> REAL,DIMENSION(ITS-5:ITE+5,KTS:KTE,-1:1) :: UNED,USED,ZNS<a name='825'> <font color=#447700>!<a name='826'></font> <font color=#447700>!*** TYPE 5 WORKING ARRAY<a name='827'></font> <font color=#447700>!<a name='828'></font> REAL,DIMENSION(ITS-5:ITE+5,KTS:KTE,-1:0) :: ZNE<a name='829'> <font color=#447700>!<a name='830'></font> <font color=#447700>!*** TYPE 6 WORKING ARRAY<a name='831'></font> <font color=#447700>!<a name='832'></font> REAL,DIMENSION(ITS-5:ITE+5,KTS:KTE, 0:1) :: ZSE<a name='833'> <font color=#447700>!-----------------------------------------------------------------------<a name='834'></font> <font color=#447700>!***********************************************************************<a name='835'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='836'></font> IF(NTSD+1<=NTSHY.OR.HYDRO)THEN<a name='837'> <font color=#447700>!$omp parallel do &<a name='838'></font> <font color=#447700>!$omp& private(i,j,k)<a name='839'></font> DO J=MYJS,MYJE<a name='840'> DO K=KTS,KTE<a name='841'> DO I=MYIS,MYIE<a name='842'> W(I,K,J)=0.<a name='843'> ENDDO<a name='844'> ENDDO<a name='845'> ENDDO<a name='846'> <font color=#447700>!***<a name='847'></font> RETURN<a name='848'> <font color=#447700>!***<a name='849'></font> ENDIF<a name='850'> <font color=#447700>!-----------------------------------------------------------------------<a name='851'></font> <font color=#447700>!***********************************************************************<a name='852'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='853'></font> <font color=#447700>!<a name='854'></font> <font color=#447700>!*** FIRST ZERO OUT SOME WORKING ARRAYS<a name='855'></font> <font color=#447700>!<a name='856'></font> DO J=-2,2<a name='857'> <font color=#447700>!$omp parallel do &<a name='858'></font> <font color=#447700>!$omp& private(i,k)<a name='859'></font> DO K=KTS,KTE<a name='860'> DO I=ITS-5,ITE+5<a name='861'> DPDE(I,K,J)=0.<a name='862'> ENDDO<a name='863'> ENDDO<a name='864'> ENDDO<a name='865'> <font color=#447700>!<a name='866'></font> DO J=-1,1<a name='867'> <font color=#447700>!$omp parallel do &<a name='868'></font> <font color=#447700>!$omp& private(i,k)<a name='869'></font> DO K=KTS,KTE<a name='870'> DO I=ITS-5,ITE+5<a name='871'> UNED(I,K,J)=0.<a name='872'>
D(I,K,J)=0.<a name='873'> ENDDO<a name='874'> ENDDO<a name='875'> ENDDO<a name='876'> <font color=#447700>!<a name='877'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='878'></font> <font color=#447700>!*** MARCH NORTHWARD THROUGH THE SOUTHERNMOST SLABS TO BEGIN<a name='879'></font> <font color=#447700>!*** FILLING THE MAIN WORKING ARRAYS WHICH ARE MULTI-DIMENSIONED<a name='880'></font> <font color=#447700>!*** IN J BECAUSE THEY ARE DIFFERENCED OR AVERAGED IN J<a name='881'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='882'></font> <font color=#447700>!<a name='883'></font> JSTART=MYJS2_P1<a name='884'> <font color=#447700>!<a name='885'></font> DO J=-2,1<a name='886'> JJ=JSTART+J<a name='887'> <font color=#447700>!<a name='888'></font> <font color=#447700>!$omp parallel do &<a name='889'></font> <font color=#447700>!$omp& private(i,k)<a name='890'></font> DO K=KTS,KTE<a name='891'> DO I=MYIS_P4,MYIE_P4<a name='892'> DPDE(I,K,J)=DETA1(K)*PDTOP+DETA2(K)*PDSL(I,JJ)<a name='893'> ENDDO<a name='894'> ENDDO<a name='895'> <font color=#447700>!<a name='896'></font> ENDDO<a name='897'> <font color=#447700>!<a name='898'></font> DO J=-1,0<a name='899'> JJ=JSTART+J<a name='900'> <font color=#447700>!<a name='901'></font> <font color=#447700>!$omp parallel do &<a name='902'></font> <font color=#447700>!$omp& private(fnsp,i,k,udy,vdx)<a name='903'></font> DO K=KTS,KTE<a name='904'> DO I=MYIS_P3,MYIE_P3<a name='905'> UDY=U(I,K,JJ)*DY<a name='906'> VDX=V(I,K,JJ)*DX(I,JJ)<a name='907'> UNED(I,K,J)=UDY+VDX<a name='908'>
D(I,K,J)=UDY-VDX<a name='909'> FNSP=VDX*(DPDE(I,K,J-1)+DPDE(I,K,J+1))<a name='910'> ZNS(I,K,J)=FNSP*(Z(I,K,JJ+1)-Z(I,K,JJ-1))<a name='911'> FNS(I,K,JJ)=FNSP<a name='912'> UDY_00(I,K)=UDY<a name='913'> ENDDO<a name='914'> ENDDO<a name='915'> <font color=#447700>!<a name='916'></font> ENDDO<a name='917'> <font color=#447700>!<a name='918'></font> J=-1<a name='919'> JJ=JSTART+J<a name='920'> <font color=#447700>!<a name='921'></font> <font color=#447700>!$omp parallel do &<a name='922'></font> <font color=#447700>!$omp& private(fnep,i,k)<a name='923'></font> DO K=KTS,KTE<a name='924'> DO I=MYIS_P2,MYIE_P2<a name='925'> FNEP=(UNED(I+IHE(JJ),K,J)+UNED(I,K,J+1)) &<a name='926'> *(DPDE(I,K,J)+DPDE(I+IHE(JJ),K,J+1))<a name='927'> ZNE(I,K,J)=FNEP*(Z(I+IHE(JJ),K,JJ+1)-Z(I,K,JJ))<a name='928'> ENDDO<a name='929'> ENDDO<a name='930'> <font color=#447700>!<a name='931'></font> J=0<a name='932'> JJ=JSTART+J<a name='933'> <font color=#447700>!<a name='934'></font> <font color=#447700>!$omp parallel do &<a name='935'></font> <font color=#447700>!$omp& private(fsep,i,k)<a name='936'></font> DO K=KTS,KTE<a name='937'> DO I=MYIS_P2,MYIE_P2<a name='938'> FSEP=(USED(I+IHE(JJ),K,J)+USED(I,K,J-1)) &<a name='939'> *(DPDE(I,K,J)+DPDE(I+IHE(JJ),K,J-1))<a name='940'> ZSE(I,K,J)=FSEP*(Z(I+IHE(JJ),K,JJ-1)-Z(I,K,JJ))<a name='941'> FSE(I,K,JJ)=FSEP<a name='942'> ENDDO<a name='943'> ENDDO<a name='944'> <font color=#447700>!-----------------------------------------------------------------------<a name='945'></font> <font color=#447700>!<a name='946'></font> JKNT=0<a name='947'> <font color=#447700>!<a name='948'></font> main_integration: DO J=MYJS2_P1,MYJE2_P1<a name='949'> <font color=#447700>!<a name='950'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='951'></font> <font color=#447700>!***<a name='952'></font> <font color=#447700>!*** SET THE 3RD INDEX IN THE WORKING ARRAYS (SEE SUBROUTINE INIT<a name='953'></font> <font color=#447700>!*** AND ABOVE DIAGRAMS)<a name='954'></font> <font color=#447700>!***<a name='955'></font> <font color=#447700>!*** J[TYPE]_NN WHERE "TYPE" IS THE WORKING ARRAY TYPE SEEN IN THE<a name='956'></font> <font color=#447700>!*** LOCAL DECLARATION ABOVE (DEPENDENT UPON THE J EXTENT) AND<a name='957'></font> <font color=#447700>!*** NN IS THE NUMBER OF ROWS NORTH OF THE CENTRAL ROW WHOSE J IS<a name='958'></font> <font color=#447700>!*** THE CURRENT VALUE OF THE main_integration LOOP.<a name='959'></font> <font color=#447700>!*** (P2 denotes +2, etc.)<a name='960'></font> <font color=#447700>!***<a name='961'></font> JKNT=JKNT+1<a name='962'> <font color=#447700>!<a name='963'></font> J1_P2=INDX3_WRK(2,JKNT,1)<a name='964'> J1_P1=INDX3_WRK(1,JKNT,1)<a name='965'> J1_00=INDX3_WRK(0,JKNT,1)<a name='966'> <font color=#447700>!<a name='967'></font> J4_P1=INDX3_WRK(1,JKNT,4)<a name='968'> J4_00=INDX3_WRK(0,JKNT,4)<a name='969'> J4_M1=INDX3_WRK(-1,JKNT,4)<a name='970'> <font color=#447700>!<a name='971'></font> J5_00=INDX3_WRK(0,JKNT,5)<a name='972'> J5_M1=INDX3_WRK(-1,JKNT,5)<a name='973'> <font color=#447700>!<a name='974'></font> J6_P1=INDX3_WRK(1,JKNT,6)<a name='975'> J6_00=INDX3_WRK(0,JKNT,6)<a name='976'> <font color=#447700>!-----------------------------------------------------------------------<a name='977'></font> <font color=#447700>!<a name='978'></font> <font color=#447700>!*** MASS FLUXES AND MASS POINT ADVECTION COMPONENTS<a name='979'></font> <font color=#447700>!<a name='980'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='981'></font> <font color=#447700>!$omp parallel do &<a name='982'></font> <font color=#447700>!$omp& private(fewp,fnep,fnsp,fsep,i,k,udy,vdx)<a name='983'></font> DO K=KTS,KTE<a name='984'> <font color=#447700>!<a name='985'></font> DO I=MYIS_P4,MYIE_P4<a name='986'> DPDE(I,K,J1_P2)=DETA1(K)*PDTOP+DETA2(K)*PDSL(I,J+2)<a name='987'> ENDDO<a name='988'> <font color=#447700>!<a name='989'></font> DO I=MYIS_P3,MYIE_P3<a name='990'> UDY=U(I,K,J+1)*DY<a name='991'> VDX=V(I,K,J+1)*DX(I,J+1)<a name='992'> <font color=#447700>!<a name='993'></font> FEWP=UDY_00(I,K) &<a name='994'> *(DPDE(I+IVW(J),K,J1_00)+DPDE(I+IVE(J),K,J1_00))<a name='995'> FNSP=VDX*(DPDE(I,K,J1_00)+DPDE(I,K,J1_P2))<a name='996'> <font color=#447700>!<a name='997'></font> FEW(I,K,J)=FEWP<a name='998'> FNS(I,K,J+1)=FNSP<a name='999'> <font color=#447700>!<a name='1000'></font> ZEW(I,K)=FEWP*(Z(I+IVE(J),K,J)-Z(I+IVW(J),K,J))<a name='1001'> ZNS(I,K,J4_P1)=FNSP*(Z(I,K,J+2)-Z(I,K,J))<a name='1002'> <font color=#447700>!<a name='1003'></font> UNED(I,K,J4_P1)=UDY+VDX<a name='1004'>
D(I,K,J4_P1)=UDY-VDX<a name='1005'> <font color=#447700>!<a name='1006'></font> UDY_00(I,K)=UDY<a name='1007'> ENDDO<a name='1008'> <font color=#447700>!<a name='1009'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='1010'></font> <font color=#447700>!<a name='1011'></font> <font color=#447700>!*** DIAGONAL FLUXES AND DIAGONALLY AVERAGED WIND<a name='1012'></font> <font color=#447700>!<a name='1013'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='1014'></font> DO I=MYIS_P2,MYIE1_P2<a name='1015'> FNEP=(UNED(I+IHE(J),K,J4_00)+UNED(I,K,J4_P1)) &<a name='1016'> *(DPDE(I,K,J1_00)+DPDE(I+IHE(J),K,J1_P1))<a name='1017'> FNE(I,K,J)=FNEP<a name='1018'> ZNE(I,K,J5_00)=FNEP*(Z(I+IHE(J),K,J+1)-Z(I,K,J))<a name='1019'> <font color=#447700>!<a name='1020'></font> FSEP=(USED(I+IHE(J+1),K,J4_P1)+USED(I,K,J4_00)) &<a name='1021'> *(DPDE(I,K,J1_P1)+DPDE(I+IHE(J+1),K,J1_00))<a name='1022'> FSE(I,K,J+1)=FSEP<a name='1023'> ZSE(I,K,J6_P1)=FSEP*(Z(I+IHE(J+1),K,J)-Z(I,K,J+1))<a name='1024'> ENDDO<a name='1025'> <font color=#447700>!<a name='1026'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='1027'></font> <font color=#447700>!<a name='1028'></font> <font color=#447700>!*** ADVECTION OF Z<a name='1029'></font> <font color=#447700>!<a name='1030'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='1031'></font> DO I=MYIS1_P1,MYIE1_P1<a name='1032'> W(I,K,J)=-(ZEW(I+IHW(J),K)+ZEW(I+IHE(J),K) &<a name='1033'> +ZNS(I,K,J4_M1)+ZNS(I,K,J4_P1) &<a name='1034'> +ZNE(I+IHW(J),K,J5_M1)+ZNE(I,K,J5_00) &<a name='1035'> +ZSE(I,K,J6_00)+ZSE(I+IHW(J),K,J6_P1)) &<a name='1036'> *FAD(I,J)*HTM(I,K,J)*HBM2(I,J)/(DPDE(I,K,J1_00)*DT) &<a name='1037'> +W(I,K,J)<a name='1038'> ENDDO<a name='1039'> <font color=#447700>!<a name='1040'></font> ENDDO <font color=#447700>! End K loop<a name='1041'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='1042'></font> <font color=#447700>!<a name='1043'></font> ENDDO main_integration<a name='1044'> <font color=#447700>!<a name='1045'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='1046'></font> <font color=#447700>!<a name='1047'></font> END SUBROUTINE HADZ<a name='1048'> <font color=#447700>!<a name='1049'></font> <font color=#447700>!-----------------------------------------------------------------------<a name='1050'></font> END MODULE MODULE_NONHY_DYNAM<a name='1051'> <font color=#447700>!-----------------------------------------------------------------------<a name='1052'></font> </pre></body></html>