4 |
|
|
5 |
USE dimens_m |
USE dimens_m |
6 |
USE dimphy |
USE dimphy |
7 |
|
use gwstress_m, only: gwstress |
8 |
USE suphec_m |
USE suphec_m |
9 |
USE yoegwd |
USE yoegwd |
10 |
use gwprofil_m, only: gwprofil |
use gwprofil_m, only: gwprofil |
11 |
|
use orosetup_m, only: orosetup |
12 |
IMPLICIT NONE |
IMPLICIT NONE |
13 |
|
|
14 |
|
|
42 |
! method. |
! method. |
43 |
! ------- |
! ------- |
44 |
|
|
|
! externals. |
|
|
! ---------- |
|
|
INTEGER ismin, ismax |
|
|
EXTERNAL ismin, ismax |
|
|
|
|
45 |
! reference. |
! reference. |
46 |
! ---------- |
! ---------- |
47 |
|
|
59 |
! --------- |
! --------- |
60 |
|
|
61 |
|
|
62 |
INTEGER nlon, nlev, klevm1 |
INTEGER nlon, nlev |
63 |
INTEGER jl, ilevp1, jk, ji |
INTEGER jl, ilevp1, jk, ji |
64 |
REAL zdelp, ztemp, zforc, ztend |
REAL zdelp, ztemp, zforc, ztend |
65 |
REAL rover, zb, zc, zconb, zabsv |
REAL rover, zb, zc, zconb, zabsv |
83 |
REAL ztau(klon,klev+1), zstab(klon,klev+1), & |
REAL ztau(klon,klev+1), zstab(klon,klev+1), & |
84 |
zvph(klon,klev+1), zrho(klon,klev+1), zri(klon,klev+1), & |
zvph(klon,klev+1), zrho(klon,klev+1), zri(klon,klev+1), & |
85 |
zpsi(klon,klev+1), zzdep(klon,klev) |
zpsi(klon,klev+1), zzdep(klon,klev) |
86 |
REAL zdudt(klon), zdvdt(klon), zdtdt(klon), zdedt(klon), zvidis(klon), & |
REAL zdudt(klon), zdvdt(klon), zvidis(klon), & |
87 |
znu(klon), zd1(klon), zd2(klon), zdmod(klon) |
znu(klon), zd1(klon), zd2(klon), zdmod(klon) |
88 |
REAL ztmst, zrtmst |
REAL ztmst |
89 |
REAL, INTENT (IN) :: ptsphy |
REAL, INTENT (IN) :: ptsphy |
90 |
|
|
91 |
!------------------------------------------------------------------ |
!------------------------------------------------------------------ |
96 |
!* 1.1 computational constants |
!* 1.1 computational constants |
97 |
! ----------------------- |
! ----------------------- |
98 |
|
|
|
klevm1 = klev - 1 |
|
99 |
ztmst = ptsphy |
ztmst = ptsphy |
|
zrtmst = 1./ztmst |
|
100 |
! ------------------------------------------------------------------ |
! ------------------------------------------------------------------ |
101 |
|
|
102 |
!* 1.3 check whether row contains point for printing |
!* 1.3 check whether row contains point for printing |
110 |
|
|
111 |
|
|
112 |
CALL orosetup(nlon,ktest,ikcrit,ikcrith,icrit,ikenvh,iknu,iknu2,paphm1, & |
CALL orosetup(nlon,ktest,ikcrit,ikcrith,icrit,ikenvh,iknu,iknu2,paphm1, & |
113 |
papm1,pum1,pvm1,ptm1,pgeom1,pstd,zrho,zri,zstab,ztau,zvph,zpsi,zzdep, & |
papm1,pum1,pvm1,ptm1,pgeom1,zrho,zri,zstab,ztau,zvph,zpsi,zzdep, & |
114 |
pulow,pvlow,ptheta,pgamma,pmea,ppic,pval,znu,zd1,zd2,zdmod) |
pulow,pvlow,ptheta,pgamma,pmea,ppic,pval,znu,zd1,zd2,zdmod) |
115 |
|
|
116 |
|
|
122 |
!* supercritical forms.computes anisotropy coefficient |
!* supercritical forms.computes anisotropy coefficient |
123 |
!* as measure of orographic twodimensionality. |
!* as measure of orographic twodimensionality. |
124 |
|
|
125 |
CALL gwstress(nlon,nlev,ktest,icrit,ikenvh,iknu,zrho,zstab,zvph,pstd, & |
CALL gwstress(nlon,nlev,ktest,ikenvh,zrho,zstab,zvph,pstd, & |
126 |
psig,pmea,ppic,ztau,pgeom1,zdmod) |
psig,pmea,ppic,ztau,pgeom1,zdmod) |
127 |
|
|
128 |
|
|
143 |
zvidis(jl) = 0.0 |
zvidis(jl) = 0.0 |
144 |
zdudt(jl) = 0.0 |
zdudt(jl) = 0.0 |
145 |
zdvdt(jl) = 0.0 |
zdvdt(jl) = 0.0 |
|
zdtdt(jl) = 0.0 |
|
146 |
510 CONTINUE |
510 CONTINUE |
147 |
|
|
148 |
ilevp1 = klev + 1 |
ilevp1 = klev + 1 |
202 |
zust = pum1(ji,jk) + ztmst*zdudt(ji) |
zust = pum1(ji,jk) + ztmst*zdudt(ji) |
203 |
zvst = pvm1(ji,jk) + ztmst*zdvdt(ji) |
zvst = pvm1(ji,jk) + ztmst*zdvdt(ji) |
204 |
zdis = 0.5*(pum1(ji,jk)**2+pvm1(ji,jk)**2-zust**2-zvst**2) |
zdis = 0.5*(pum1(ji,jk)**2+pvm1(ji,jk)**2-zust**2-zvst**2) |
|
zdedt(ji) = zdis/ztmst |
|
205 |
zvidis(ji) = zvidis(ji) + zdis*zdelp |
zvidis(ji) = zvidis(ji) + zdis*zdelp |
|
zdtdt(ji) = zdedt(ji)/rcpd |
|
|
! pte(ji,jk)=zdtdt(ji) |
|
206 |
|
|
207 |
! ENCORE UN TRUC POUR EVITER LES EXPLOSIONS |
! ENCORE UN TRUC POUR EVITER LES EXPLOSIONS |
208 |
|
|