#include "dims.h" subroutine fliptg2cc(dpmcc,rdpmcc,piln) implicit none #include "pmgrid.h" #include "mgw.h" integer i,ia real dpmcc(plond,plev),rdpmcc(plond,plev),piln(plond,0:plev), $ utg(plond,plev),vtg(plond,plev), $ ttg(plond,plev),pmtg(plond,plev),nmtg(plond,plev), $ dtvtg(plond,plev),qtg(plond,plev),pitg(plond,plev+1), $ ucc(plond,plev),vcc(plond,plev), $ tcc(plond,plev),pmcc(plond,plev),nmcc(plond,plev), $ dtvcc(plond,plev),qcc(plond,plev),picc(plond,0:plev), $ zmtg(plond,plev),zmcc(plond,plev) common /fieldtg/utg,vtg,ttg,pmtg,nmtg,qtg,pitg,zmtg common /fieldcc/ucc,vcc, tcc,pmcc,nmcc, qcc,picc,zmcc common /difftend/dtvtg,dtvcc !$OMP THREADPRIVATE (/fieldtg/,/fieldcc/,/difftend/) !DIR$ TASKCOMMON fieldtg,fieldcc,difftend c c------------------------------------------------------- c Midpoints flip c------------------------------------------------------- c do i = 1,plev ia = plev-i+1 ucc(:,i) = utg(:,ia) vcc(:,i) = vtg(:,ia) tcc(:,i) = ttg(:,ia) pmcc(:,i) = pmtg(:,ia) ! nmcc(:,i) = nmtg(:,ia) ! apparently not used dtvcc(:,i) = dtvtg(:,ia) qcc(:,i) = qtg(:,ia) zmcc(:,i) = zmtg(:,ia) enddo c c------------------------------------------------------- c Interface flip c------------------------------------------------------- c do i = 0,plev ia = plev-i+1 picc(:,i) = pitg(:,ia) enddo c c------------------------------------------------------- c calculate dpm,rdpm, and piln to be passed to ccm mgw c------------------------------------------------------- c do i = 1,plev dpmcc(:,i) = picc(:,i)-picc(:,i-1) rdpmcc(:,i) = 1./dpmcc(:,i) enddo piln = alog(picc) return end !----------------------------------------------------------------------- subroutine flipcc2tg(taucc,tautg,tausatcc,tausattg, $ difkcc,difktg,nmcc,nmtg) implicit none #include "pmgrid.h" #include "mgw.h" integer i,ia real uttg(plond,plev),vttg(plond,plev), $ tttg(plond,plev),dtvtg(plond,plev), $ utcc(plond,plev),vtcc(plond,plev), $ ttcc(plond,plev),dtvcc(plond,plev), $ taucc(plond,-pgwv:pgwv,0:plev), $ tautg(plond,-pgwv:pgwv,0:plev), $ tausatcc(plond,-pgwv:pgwv,0:plev), $ tausattg(plond,-pgwv:pgwv,0:plev), $ difkcc(plond,0:plev),difktg(plond,plev+1), $ nmtg(plond,plev),nmcc(plond,plev) common /tendencytg/uttg,vttg,tttg common /tendencycc/utcc,vtcc,ttcc common /difftend/dtvtg,dtvcc !$OMP THREADPRIVATE (/tendencytg/,/tendencycc/,/difftend/) !DIR$ TASKCOMMON tendencytg,tendencycc,difftend ! do i = 1,plev ia = plev-i+1 uttg(:,i) = utcc(:,ia) vttg(:,i) = vtcc(:,ia) tttg(:,i) = ttcc(:,ia) dtvtg(:,i) = dtvcc(:,ia) nmtg(:,i) = nmcc(:,ia) enddo do i = 0,plev ia = plev-i tautg(:,:,i) = taucc(:,:,ia) tausattg(:,:,i) = tausatcc(:,:,ia) enddo do i = 1,plev+1 ia = plev-i+1 difktg(:,i) = difkcc(:,ia) enddo return end