source: codes/icosagcm/trunk/src/initial/etat0_jablonowsky06.f90 @ 548

Last change on this file since 548 was 548, checked in by dubos, 7 years ago

trunk : reorganize source tree

File size: 2.1 KB
Line 
1MODULE 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
16CONTAINS
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 
65END MODULE etat0_jablonowsky06_mod
Note: See TracBrowser for help on using the repository browser.