[12] | 1 | MODULE etat0_jablonowsky06_mod |
---|
[19] | 2 | USE icosa |
---|
[12] | 3 | PRIVATE |
---|
| 4 | REAL(rstd),PARAMETER :: eta0=0.252 |
---|
| 5 | REAL(rstd),PARAMETER :: etat=0.2 |
---|
| 6 | REAL(rstd),PARAMETER :: ps0=1e5 |
---|
| 7 | REAL(rstd),PARAMETER :: u0=35 |
---|
| 8 | REAL(rstd),PARAMETER :: T0=288 |
---|
| 9 | REAL(rstd),PARAMETER :: DeltaT=4.8e5 |
---|
| 10 | REAL(rstd),PARAMETER :: Rd=287 |
---|
| 11 | REAL(rstd),PARAMETER :: Gamma=0.005 |
---|
| 12 | REAL(rstd),PARAMETER :: up0=1 |
---|
| 13 | |
---|
[203] | 14 | PUBLIC compute_etat0 |
---|
[12] | 15 | |
---|
[203] | 16 | CONTAINS |
---|
[12] | 17 | |
---|
[203] | 18 | SUBROUTINE compute_etat0(ngrid,lon,lat, phis, ps, temp, ulon, ulat) |
---|
[201] | 19 | USE disvert_mod |
---|
| 20 | IMPLICIT NONE |
---|
| 21 | INTEGER, INTENT(IN) :: ngrid |
---|
| 22 | REAL(rstd),INTENT(IN) :: lat(ngrid) |
---|
| 23 | REAL(rstd),INTENT(IN) :: lon(ngrid) |
---|
| 24 | REAL(rstd),INTENT(OUT) :: phis(ngrid) |
---|
| 25 | REAL(rstd),INTENT(OUT) :: ps(ngrid) |
---|
| 26 | REAL(rstd),INTENT(OUT) :: temp(ngrid,llm) |
---|
| 27 | REAL(rstd),INTENT(OUT) :: ulon(ngrid,llm) |
---|
| 28 | REAL(rstd),INTENT(OUT) :: ulat(ngrid,llm) |
---|
| 29 | |
---|
| 30 | INTEGER :: l,ij |
---|
| 31 | REAL(rstd) :: eta(llm) |
---|
| 32 | REAL(rstd) :: etav(llm) |
---|
| 33 | REAL(rstd) :: etas, etavs, Tave, phis_ave, r2 |
---|
| 34 | |
---|
| 35 | DO l=1,llm |
---|
| 36 | eta(l) = 0.5 *( ap(l)/ps0+bp(l) + ap(l+1)/ps0+bp(l+1) ) |
---|
| 37 | etav(l) = (eta(l)-eta0)*Pi/2 |
---|
| 38 | ENDDO |
---|
| 39 | etas = ap(1)+bp(1) |
---|
| 40 | etavs = (etas-eta0)*Pi/2 |
---|
| 41 | |
---|
| 42 | phis_ave=T0*g/Gamma*(1-etas**(Rd*Gamma/g)) |
---|
| 43 | DO ij=1,ngrid |
---|
| 44 | ps(ij)=ps0 |
---|
| 45 | phis(ij) = phis_ave + u0*cos(etavs)**1.5*( (-2*sin(lat(ij))**6 * (cos(lat(ij))**2+1./3) + 10./63 )*u0*cos(etavs)**1.5 & |
---|
| 46 | +(8./5*cos(lat(ij))**3 * (sin(lat(ij))**2 + 2./3) - Pi/4)*radius*Omega ) |
---|
| 47 | ENDDO |
---|
| 48 | |
---|
| 49 | DO l=1,llm |
---|
| 50 | Tave=T0*eta(l)**(Rd*Gamma/g) |
---|
| 51 | IF (etat>eta(l)) Tave=Tave+DeltaT*(etat-eta(l))**5 |
---|
| 52 | DO ij=1,ngrid |
---|
[203] | 53 | r2 = arc(Pi/9.,2.*Pi/9., lon(ij),lat(ij))**2 |
---|
[201] | 54 | temp(ij,l) = Tave + 0.75*(eta(l)*Pi*u0/Rd)*sin(etav(l))*cos(etav(l))**0.5 & |
---|
| 55 | * ( (-2*sin(lat(ij))**6*(cos(lat(ij))**2+1./3)+10./63)*2*u0*cos(etav(l))**1.5 & |
---|
| 56 | + (8./5*cos(lat(ij))**3*(sin(lat(ij))**2+2./3)-Pi/4)*radius*Omega) |
---|
| 57 | ulon(ij,l) = u0*cos(etav(l))**1.5*sin(2*lat(ij))**2 + up0*exp(-r2/0.01) |
---|
| 58 | ulat(ij,l) = 0 |
---|
| 59 | ENDDO |
---|
| 60 | ENDDO |
---|
| 61 | |
---|
| 62 | |
---|
[203] | 63 | END SUBROUTINE compute_etat0 |
---|
[12] | 64 | |
---|
| 65 | END MODULE etat0_jablonowsky06_mod |
---|