Ignore:
Timestamp:
07/08/14 15:03:32 (10 years ago)
Author:
dubos
Message:

Simplified etat0 : isothermal, jablonowsky06

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/etat0_jablonowsky06.f90

    r186 r201  
    66  REAL(rstd),PARAMETER :: ps0=1e5 
    77  REAL(rstd),PARAMETER :: u0=35 
    8 !  REAL(rstd),PARAMETER :: u0=0 
    98  REAL(rstd),PARAMETER :: T0=288 
    109  REAL(rstd),PARAMETER :: DeltaT=4.8e5 
     
    1211  REAL(rstd),PARAMETER :: Gamma=0.005 
    1312  REAL(rstd),PARAMETER :: up0=1 
    14   PUBLIC  test_etat0_jablonowsky06, etat0, compute_etat0_jablonowsky06 
     13  PUBLIC  test_etat0_jablonowsky06, etat0, compute_etat0_jablonowsky06, compute_etat0_new 
    1514CONTAINS 
    1615   
     
    248247 
    249248  END SUBROUTINE compute_etat0_jablonowsky06 
     249 
     250  SUBROUTINE compute_etat0_new(ngrid,lat,lon, phis, ps, temp, ulon, ulat) 
     251    USE disvert_mod 
     252    IMPLICIT NONE   
     253    INTEGER, INTENT(IN) :: ngrid 
     254    REAL(rstd),INTENT(IN) :: lat(ngrid) 
     255    REAL(rstd),INTENT(IN) :: lon(ngrid) 
     256    REAL(rstd),INTENT(OUT) :: phis(ngrid) 
     257    REAL(rstd),INTENT(OUT) :: ps(ngrid) 
     258    REAL(rstd),INTENT(OUT) :: temp(ngrid,llm) 
     259    REAL(rstd),INTENT(OUT) :: ulon(ngrid,llm) 
     260    REAL(rstd),INTENT(OUT) :: ulat(ngrid,llm) 
     261     
     262    INTEGER :: l,ij 
     263    REAL(rstd) :: eta(llm) 
     264    REAL(rstd) :: etav(llm) 
     265    REAL(rstd) :: etas, etavs, Tave, phis_ave, r2 
     266     
     267    DO l=1,llm 
     268       eta(l)  = 0.5 *( ap(l)/ps0+bp(l) + ap(l+1)/ps0+bp(l+1) ) 
     269       etav(l) = (eta(l)-eta0)*Pi/2 
     270    ENDDO 
     271    etas  = ap(1)+bp(1) 
     272    etavs = (etas-eta0)*Pi/2 
     273         
     274    phis_ave=T0*g/Gamma*(1-etas**(Rd*Gamma/g)) 
     275    DO ij=1,ngrid 
     276       ps(ij)=ps0 
     277       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  & 
     278            +(8./5*cos(lat(ij))**3 * (sin(lat(ij))**2 + 2./3) - Pi/4)*radius*Omega ) 
     279    ENDDO 
     280 
     281    DO l=1,llm 
     282       Tave=T0*eta(l)**(Rd*Gamma/g) 
     283       IF (etat>eta(l)) Tave=Tave+DeltaT*(etat-eta(l))**5 
     284       DO ij=1,ngrid 
     285          r2 = arc(Pi/9,2*Pi/9, lon(ij),lat(ij))**2 
     286          temp(ij,l) = Tave + 0.75*(eta(l)*Pi*u0/Rd)*sin(etav(l))*cos(etav(l))**0.5  & 
     287               * ( (-2*sin(lat(ij))**6*(cos(lat(ij))**2+1./3)+10./63)*2*u0*cos(etav(l))**1.5 & 
     288               + (8./5*cos(lat(ij))**3*(sin(lat(ij))**2+2./3)-Pi/4)*radius*Omega) 
     289          ulon(ij,l) = u0*cos(etav(l))**1.5*sin(2*lat(ij))**2 + up0*exp(-r2/0.01) 
     290          ulat(ij,l) = 0 
     291       ENDDO 
     292    ENDDO 
     293     
     294     
     295  END SUBROUTINE compute_etat0_new 
    250296   
    251297END MODULE etat0_jablonowsky06_mod 
Note: See TracChangeset for help on using the changeset viewer.