Model Description. Governing equations The vertical coordinate (eta) is defined by: η p p T p s p T η s ; η s p re f z s p T p re f 0 p T The horizontal equations of motion in the η system may be expressed by dv dt η Φ p ηp f k v F (.) The thermodynamic energy equation (the first law of thermodynamics) dt dt ωα c p Q; ω d p dt (.) The mass continuity equation in the η system is η p t η v η p η η p η 0 (.)
. Model Description. DIVHOA equations and code Subroutine DIVHOA calculates divergence correction DC, divergence DIV and horizontal pressure advection in the thermodynamic equation (horizontal part of omega-alpha). DIV DC η v p (.4) T t α c p v p (.5) The finite-difference equations take the form DC 0 88w x min x 4 t x y Π x Π y where Π P P ; P Φ η p η p η ; P Φ η p η p η η v p x y x u y p x y v x p y u y v x p u y v x p!!-----------------------------------------------------------------------!!--------------preparatory calculations---------------------------------!!----------------------------------------------------------------------- if (sigma) then do j=,jm do i=,im filo(i,j)=fis(i,j) pdsl(i,j)=pd(i,j)
.. DIVHOA equations and code else do j=,jm do i=,im filo(i,j)=0.0 pdsl(i,j)=res(i,j)*pd(i,j) end if do l=,lm do j=,jm do i=,im div(i,j,l)=0.0 omgalf(i,j,l)=0.0 do j=,jm do i=,im adpdx(i,j)=0.0 adpdy(i,j)=0.0!!--------------main vertical integration loop--------------------------- vert_loop: do l=lm,,- p DPDE p DPDE RDPD do j=,jm do i=,im dpde(i,j)=deta(l)*pdsl(i,j) rdpd(i,j)=.0/dpde(i,j) p x DPDE i ivw j j DPDE i ive j j ADPDX i j
4. Model Description do j=,jm do i=+ihe(j),im+ihw(j) adpdx(i,j)=dpde(i+ivw(j),j)+dpde(i+ive(j),j) p y DPDE i j DPDE i j ADPDY i j do j=,jm- do i=,im adpdy(i,j)=dpde(i,j-)+dpde(i,j+) p η APEL p η APEL RTOP Φ η FIM do j=,jm do i=,im apel(i,j)=pt+aeta(l)*pdsl(i,j) rtop(i,j,l)=r*t(i,j,l)*(.0+0.608*q(i,j,l))/apel(i,j) fiupk=filo(i,j)+rtop(i,j,l)*dpde(i,j) fim(i,j)=filo(i,j)+fiupk filo(i,j)=dfl(l)+htm(i,j,l)*(fiupk-dfl(l))!--------------diagonal contributions to pressure gradient force-------- p DPDE i ihe j j DPDE i j ADPDNE i j Φ η FIM FIM i ihe j j FIM i j PNE i j
.. DIVHOA equations and code 5 p η p η RTOP i ihe j j l RTOP i j l APEL i ihe j j APEL i j CNE i j p RT v p η p η ADPDNE i j CNE i j PCNE i j do j=,jm- do i=,im+ivw(j) adpdne(i,j)=dpde(i+ihe(j),j+)+dpde(i,j) pne(i,j)=.0*(fim(i+ihe(j),j+)-fim(i,j)) cne(i,j)=.0*(rtop(i+ihe(j),j+,l)+rtop(i,j,l)) & *(apel(i+ihe(j),j+)-apel(i,j)) pcne(i,j)=cne(i,j)*adpdne(i,j) p DPDE i ihe j j DPDE i j ADPDSE i j Φ η FIM FIM i ihe j j FIM i j PSE i j p η p η RTOP i ihe j j l RTOP i j l APEL i ihe j j APEL i j CSE i j p RT v p η p η ADPDSE i j CSE i j PCSE i j
6. Model Description do j=,jm do i=,im+ivw(j) adpdse(i,j)=dpde(i+ihe(j),j-)+dpde(i,j) pse(i,j)=.0*(fim(i+ihe(j),j-)-fim(i,j)) cse(i,j)=.0*(rtop(i+ihe(j),j-,l)+rtop(i,j,l)) & *(apel(i+ihe(j),j-)-apel(i,j)) pcse(i,j)=cse(i,j)*adpdse(i,j)!--------------continuity equation modification------------------------- Π Φ η p η PNE PCXC p η CNE Φ η p η p η PSE CSE PNE i ivw j j PNE i j CNE i ivw j j CNE i j PSE i ivw j j PSE i j CSE i ivw j j CSE i j do j=,jm- do i=+ihe(j),im- pcxc(i,j)=vbm(i,j)*vtm(i,j,l)*(pne(i+ivw(j),j) & +cne(i+ivw(j),j)+pse(i+ivw(j),j)+cse(i+ivw(j),j) & -pne(i,j-)-cne(i,j-)-pse(i,j+)-cse(i,j+))!----------------------------------------------------------------------- DC 0 88w x min x Π x Π y 4 t x y W PDAR PCXC i ihe j j PCXC i ihw j j PCXC i j PCXC i j
.. DIVHOA equations and code 7 do j=,jm- do i=,im-+ivw(j) div(i,j,l)=deta(l)*wpdar(i,j) & *(pcxc(i+ihe(j),j)-pcxc(i,j+) & +pcxc(i+ihw(j),j)-pcxc(i,j-))!--------------lat & long pressure force components--------------------- do j=,jm- do i=+ihe(j),im+ihw(j) dcnek=cne(i+ivw(j),j)+cne(i,j-) dcsek=cse(i+ivw(j),j)+cse(i,j+) pcew(i,j)=(dcnek+dcsek)*adpdx(i,j) pcns(i,j)=(dcnek-dcsek)*adpdy(i,j)!--------------lat & lon fluxes & omega-alpha components---------------- u y UDY ; v x V DX do j=,jm do i=,im udy(i,j)=dy*u(i,j,l) vdx(i,j)=dx(i,j)*v(i,j,l) u y p x UDY i j ADPDX i j v x p y V DX i j ADPDY i j FEW i j FNS i j
8. Model Description do j=,jm- do i=+ihe(j),im+ihw(j) few(i,j)=udy(i,j)*adpdx(i,j) tew(i,j)=udy(i,j)*pcew(i,j) fns(i,j)=vdx(i,j)*adpdy(i,j) tns(i,j)=vdx(i,j)*pcns(i,j)!--------------diagonal fluxes and diagonally averaged wind------------- u y v x p FNE i j UVD i ihe j j UV D i j ADPDNE i j do j=,jm- do i=,im- pvnek=(udy(i+ihe(j),j)+vdx(i+ihe(j),j))+(udy(i,j+)+vdx(i,j+)) fne(i,j)=pvnek*adpdne(i,j) tne(i,j)=pvnek*pcne(i,j)*.0 u y v x p FSE i j UVD i ihe j j UVD i j ADPDSE i j
.. DIVHOA equations and code 9 do j=,jm- do i=,im- pvsek=(udy(i+ihe(j),j)-vdx(i+ihe(j),j))+(udy(i,j-)-vdx(i,j-)) fse(i,j)=pvsek*adpdse(i,j) tse(i,j)=pvsek*pcse(i,j)*.0 η v p x y x y x y x u y p x y v x p y u y v x p u y v x p x FEW y FNS FNE FSE FEW i ihe j j FEW i ihw j j FNS i j FNS i j FNE i j FNE i ihw j j FSE i j FSE i ihw j j!--------------horizontal part of omega-alpha & divergence-------------- do j=,jm- do i=,im- hm(i,j)=htm(i,j,l)*hbm(i,j) omgalf(i,j,l)=(tew(i+ihe(j),j)+tew(i+ihw(j),j)+tns(i,j+) & +tns(i,j-)+tne(i,j)+tne(i+ihw(j),j-)+tse(i,j) & +tse(i+ihw(j),j+))*rdpd(i,j)*fcp(i,j)*hm(i,j) t(i,j,l)=omgalf(i,j,l)+t(i,j,l) div(i,j,l)=(((few(i+ihe(j),j)+fns(i,j+)+fne(i,j)+fse(i,j)) & -(few(i+ihw(j),j)+fns(i,j-)+fne(i+ihw(j),j-) & +fse(i+ihw(j),j+)))*fdiv(i,j)+div(i,j,l))*hm(i,j) vert_loop end subroutine divhoa
p p 0. Model Description. PGCOR equations and code u t v t Φ p x p x f cv (.6) Φ p y p y f cu (.7) u t PGF x CF x ; v t PGF y CF y where PGF x and CF x are pressure gradient force, and Coriolis force in x direction. For pressure gradient force explicit time scheme is used, while for Coriolis force trapesoidal scheme is used. u τ u τ v τ v τ PGF τ x PGF τ y t f c v τ t f c u τ v τ u τ This set of equations is solved for u τ and v τ. u τ u τ v τ v τ PGF τ x F v τ PGF τ y F u τ v τ u τ u UP τ Fv τ u τ FV P UP F v τ V P Fu τ v τ VP Fu τ where UP u τ PGF τ x Fv τ and VP v τ PGF τ y Fu τ. PGF τ x t x p x p Φ η Φ η p η p η p η p η p Φ η Φ η p η p η p η p η τ
.. PGCOR equations and code PGF τ y t y p y p Φ η Φ η p η p η p RT v p η p η p Φ η Φ η p η p η p RT v p η p η τ p DPDE p DPDE RDPD do j=,jm do i=,im dpde(i,j)=pdsl(i,j)*deta(l) rdpd(i,j)=.0/dpde(i,j) p x DPDE i ivw j j DPDE i ive j j RDPDX ADPDX i j i j p x p y p y DPDE i j DPDE i j ADPDY i j RDPDY i j ADPDY i j ADPDX i j do j=,jm- do i=,im- adpdx(i,j)=dpde(i+ivw(j),j)+dpde(i+ive(j),j) adpdy(i,j)=dpde(i,j-)+dpde(i,j+) rdpdx(i,j)=.0/adpdx(i,j) rdpdy(i,j)=.0/adpdy(i,j)
. Model Description p η APEL p η APEL RTOP Φ η FIM do j=,jm do i=,im apel(i,j)=pt+aeta(l)*pdsl(i,j) rtop(i,j,l)=r*t(i,j,l)*(.0+0.608*q(i,j,l))/apel(i,j) fiupk=filo(i,j)+rtop(i,j,l)*dpde(i,j) fim(i,j)=filo(i,j)+fiupk filo(i,j)=dfl(l)+htm(i,j,l)*(fiupk-dfl(l))!--------------diagonal contributions to pressure gradient force-------- p DPDE i ihe j j DPDE i j ADPDNE i j Φ η FIM p Φ η ADPDNE i j PNE i j PPNE i j FIM i ihe j j FIM i j PNE i j p η p η RTOP i ihe j j l RTOP i j l APEL i ihe j j APEL i j CNE i j p RT v p η p η ADPDNE i j CNE i j PCNE i j
.. PGCOR equations and code do j=,jm- do i=,im+ivw(j) adpdne(i,j)=dpde(i+ihe(j),j+)+dpde(i,j) pne(i,j)=.0*(fim(i+ihe(j),j+)-fim(i,j)) ppne(i,j)=pne(i,j)*adpdne(i,j) cne(i,j)=.0*(rtop(i+ihe(j),j+,l)+rtop(i,j,l)) & *(apel(i+ihe(j),j+)-apel(i,j)) pcne(i,j)=cne(i,j)*adpdne(i,j) p DPDE i ihe j j DPDE i j ADPDSE i j Φ η FIM p Φ η ADPDSE i j PSE i j FIM i ihe j j FIM i j PPSE i j PSE i j p η p η RTOP i ihe j j l RTOP i j l APEL i ihe j j APEL i j CSE i j p RT v p η p η ADPDSE i j CSE i j PCSE i j do j=,jm do i=,im+ivw(j) adpdse(i,j)=dpde(i+ihe(j),j-)+dpde(i,j) pse(i,j)=.0*(fim(i+ihe(j),j-)-fim(i,j)) ppse(i,j)=pse(i,j)*adpdse(i,j) cse(i,j)=.0*(rtop(i+ihe(j),j-,l)+rtop(i,j,l)) & *(apel(i+ihe(j),j-)-apel(i,j)) pcse(i,j)=cse(i,j)*adpdse(i,j)
4. Model Description!--------------lat & long pressure force components--------------------- Φ η PNE PNE i ivw j j PNE i j DPNE Φ η PSE PSE i ivw j j PSE i j DPSE Φ η Φ η DPNE DPSE PEW i j Φ η Φ η DPNE DPSE PNS i j p η p η p η p η CNE CSE CNE i ivw j j CNE i j CSE i ivw j j CSE i j DCNE DCSE p η p η RT v p η p η DCNE DCSE PCEW i j p η p η RT v p η p η DCNE DCSE PCNS i j
.. PGCOR equations and code 5 do j=,jm- do i=,im- dpne=pne(i+ivw(j),j)+pne(i,j-) dpse=pse(i+ivw(j),j)+pse(i,j+) pew(i,j)=dpne+dpse pns(i,j)=dpne-dpse dcne=cne(i+ivw(j),j)+cne(i,j-) dcse=cse(i+ivw(j),j)+cse(i,j+) pcew(i,j)=dcne+dcse pcns(i,j)=dcne-dcse PGF τ x t x p x PPNE PCNE PCEW PCNS PPSE PCSE τ!--------------update u and v (coriolis & pgf)-------------------------- do j=,jm- do i=,im- dpfnek=((ppne(i+ivw(j),j)+ppne(i,j-)) & +(pcne(i+ivw(j),j)+pcne(i,j-)))*.0 dpfsek=((ppse(i+ivw(j),j)+ppse(i,j+)) & +(pcse(i+ivw(j),j)+pcse(i,j+)))*.0 dpfew(i,j)=dpfnek+dpfsek dpfns(i,j)=dpfnek-dpfsek do j=,jm- do i=,im- f0k=u(i,j,l)*curv(i,j)+f(i,j) vm(i,j)=vtm(i,j,l)*vbm(i,j) upk=(dpfew(i,j)*rdpdx(i,j)+pcew(i,j)+pew(i,j))*cpgfu(i,j)+f0k*v(i,j,l)+u(i,j,l) vpk=(dpfns(i,j)*rdpdy(i,j)+pcns(i,j)+pns(i,j))*cpgfv-f0k*u(i,j,l)+v(i,j,l) utk=u(i,j,l)
6. Model Description vtk=v(i,j,l) u(i,j,l)=((f0k*vpk+upk)/(f0k*f0k+.0)-u(i,j,l)) & *vm(i,j)+u(i,j,l) v(i,j,l)=(vpk-f0k*u(i,j,l)-v(i,j,l)) & *vm(i,j)+v(i,j,l)
.4. HZADV equations and code 7.4 HZADV equations and code.4. Temperature T t v T ADT τ T n T τ ADT τ T τ n T τ τ ADT n τ T n T τ n t x y p u y p x x T x v x p y y T y u y v x p T u y v x p T τ T τ n T τ n t x y p u y p x x T x v x p y y T y u y v x p T u y v x p T τ n ADT n t x y p u y p x x T x v x p y y T y u y v x p T u y v x p T p DPDE p DPDE RDPD do j=,jm do i=,im dpde(i,j)=pdsl(i,j)*deta(l) rdpd(i,j)=.0/dpde(i,j)
8. Model Description p x DPDE i ivw j j DPDE i ive j j ADPDX i j do j=,jm do i=+ihe(j),im+ihw(j) adpdx(i,j)=dpde(i+ivw(j),j)+dpde(i+ive(j),j) rdpdx(i,j)=.0/adpdx(i,j) p y DPDE i j DPDE i j ADPDY i j do j=,jm- do i=,im adpdy(i,j)=dpde(i,j-)+dpde(i,j+) rdpdy(i,j)=.0/adpdy(i,j)!--------------mass fluxes and mass points advection components--------- u y UDY v x V DX
.4. HZADV equations and code 9 do j=,jm do i=,im udy(i,j)=ust(i,j)*dy vdx(i,j)=vst(i,j)*dx(i,j) u y p x UDY i j ADPDX i j FEW i j u y p x x T FEW i j TST i ive j j T ST i ivw j j TEW i j do j=,jm do i=+ihe(j),im+ihw(j) few(i,j)=udy(i,j)*adpdx(i,j) tew(i,j)=few(i,j)*(tst(i+ive(j),j)-tst(i+ivw(j),j)) v x p y V DX i j ADPDY i j FNS i j v x p y y T FNS i j TST i j TST i j T NS i j do j=,jm- do i=,im fns(i,j)=vdx(i,j)*adpdy(i,j) tns(i,j)=fns(i,j)*(tst(i,j+)-tst(i,j-))
0. Model Description!--------------diagonal fluxes and diagonally averaged wind------------- u y v x UDY i j VDX i j UV D i j do j=,jm- do i=,im uvd(i,j)=udy(i,j)+vdx(i,j) u y v x p UVD i ihe j j UV D i j DPDE i j DPDE i ihe j j FNE i j u y v x p T FNE i j TST i ihe j j T ST i j TNE i j do j=,jm- do i=,im- fne(i,j)=(uvd(i+ihe(j),j)+uvd(i,j+)) & *(dpde(i,j)+dpde(i+ihe(j),j+)) tne(i,j)=fne(i,j)*(tst(i+ihe(j),j+)-tst(i,j)) u y v x p FSE i j UVD i ihe j j UVD i j DPDE i j DPDE i ihe j j
.4. HZADV equations and code u y v x p T FSE i j TST i ihe j j TST i j TSE i j do j=,jm- do i=,im- fse(i,j)=(temp(i+ihe(j),j)+temp(i,j-))*(dpde(i,j)+dpde(i+ihe(j),j-)) tse(i,j)=fse(i,j)*(tst(i+ihe(j),j-)-tst(i,j)) ADT n t x y p n ADT t x y p TEW x TNS y TNE TSE TEW i ihw j j TEW i ihe j j T NS i j TNS i j TNE i ihw j j TNE i j TSE i j TSE i ihw j j n t x y FAD i j do j=,jm- do i=,im-+ivw(j) adt(i,j)=(tew(i+ihw(j),j)+tew(i+ihe(j),j)+tns(i,j-)+tns(i,j+) & +tne(i+ihw(j),j-)+tne(i,j)+tse(i,j)+tse(i+ihw(j),j+)) & *rdpd(i,j)*fad(i,j).4. Wind (velocity components) u t v u
. Model Description v t v v τ u n u τ n t x y p x u y v x p x u u y p xx x ux y x y v x p y u u y v x p y u τ τ v n v τ n t x y p y u y v x p x v u y p xx x vx y x y v x p y v u y v x p y v τ
.5. PDTE equations and code.5 PDTE equations and code η s p s t η v η p η η η p 0 subroutine pdte() use parmeta use ctlblk use masks use dynam use vrbls use contin integer :: i, j, l real, dimension(:im,:jm) :: pret, rpsl!!!! start subroutine pdte!! p s t 0 η s v η p dη p τ s p τ s t LM l v l p l τ L l v l p l DIV I J L do l=,lm do j=,jm- do i=,im div(i,j,l)=div(i,j,l-)+div(i,j,l)
4. Model Description LM l v l p l DIV I J LM PSDT I J do j=,jm- do i=,im psdt(i,j)=-div(i,j,lm) pret(i,j)=psdt(i,j)*res(i,j) rpsl(i,j)=.0/pdsl(i,j) η η p s p T p s t η s p s p T LM l v l p l!--------------computation of etadt------------------------------------- do l=,lm- do j=,jm- do i=,im etadt(i,j,l)=-(pret(i,j)*eta(l+)+div(i,j,l))*htm(i,j,l+)*rpsl(i,j) T t vertical part of ωα c p α p c p t η p η!--------------kinetic energy generation terms in t equation------------ do j=,jm- do i=,im omgalf(i,j,)=omgalf(i,j,)-div(i,j,)*rtop(i,j,)*ef4t t(i,j,)=t(i,j,)-div(i,j,)*rtop(i,j,)*ef4t do l=,lm-
.5. PDTE equations and code 5 do j=,jm- do i=,im omgalf(i,j,l)=omgalf(i,j,l)-(div(i,j,l-)+div(i,j,l))*rtop(i,j,l)*ef4t t(i,j,l)=t(i,j,l)-(div(i,j,l-)+div(i,j,l))*rtop(i,j,l)*ef4t do j=,jm- do i=,im omgalf(i,j,lm)=omgalf(i,j,lm)+(pret(i,j)-div(i,j,lm-))*rtop(i,j,lm)*ef4t t(i,j,lm)=t(i,j,lm)+(pret(i,j)-div(i,j,lm-))*rtop(i,j,lm)*ef4t do l=lm,,- do j=,jm- do i=,im div(i,j,l)=div(i,j,l)-div(i,j,l-) end subroutine pdte
6. Model Description