1 | MODULE etat0_jablonowsky06_mod |
---|
2 | USE icosa |
---|
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 | |
---|
14 | PUBLIC compute_etat0 |
---|
15 | |
---|
16 | CONTAINS |
---|
17 | |
---|
18 | SUBROUTINE compute_etat0(ngrid,lon,lat, phis, ps, temp, ulon, ulat) |
---|
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 |
---|
53 | r2 = arc(Pi/9.,2.*Pi/9., lon(ij),lat(ij))**2 |
---|
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 | |
---|
63 | END SUBROUTINE compute_etat0 |
---|
64 | |
---|
65 | END MODULE etat0_jablonowsky06_mod |
---|