Changeset 201 for codes/icosagcm/trunk/src/etat0_jablonowsky06.f90
- Timestamp:
- 07/08/14 15:03:32 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/etat0_jablonowsky06.f90
r186 r201 6 6 REAL(rstd),PARAMETER :: ps0=1e5 7 7 REAL(rstd),PARAMETER :: u0=35 8 ! REAL(rstd),PARAMETER :: u0=09 8 REAL(rstd),PARAMETER :: T0=288 10 9 REAL(rstd),PARAMETER :: DeltaT=4.8e5 … … 12 11 REAL(rstd),PARAMETER :: Gamma=0.005 13 12 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 15 14 CONTAINS 16 15 … … 248 247 249 248 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 250 296 251 297 END MODULE etat0_jablonowsky06_mod
Note: See TracChangeset
for help on using the changeset viewer.