/[lmdze]/trunk/phylmd/test_ozonecm.f90
ViewVC logotype

Diff of /trunk/phylmd/test_ozonecm.f90

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 265 by guez, Tue Mar 20 09:35:59 2018 UTC revision 313 by guez, Mon Dec 10 15:54:30 2018 UTC
# Line 1  Line 1 
1  program test_ozonecm  program test_ozonecm
2    
3    ! This is a program in Fortran 95.    ! This is a program in Fortran 2003.
4    
5    ! This program computes values of ozone abundance from Royer, on a    ! This program computes values of ozone abundance from Royer, on a
6    ! latitude-pressure grid, and writes the values to a NetCDF file.    ! latitude-pressure grid, and writes the values to a NetCDF file.
7    ! The pressure grid is "presnivs" from "disvert".    ! The pressure grid is "presnivs" from "disvert".
8    
   use dimensions, only: jjm, llm  
   USE dimphy, ONLY : klon  
   use disvert_m, only: pa, disvert, ap, bp, preff, presnivs  
   use jumble, only: new_unit  
   use ozonecm_m, only: ozonecm  
   use phyetat0_m, only: rlat  
9    use nr_util, only: arth, assert    use nr_util, only: arth, assert
10    use netcdf95, only: nf95_create, nf95_def_dim, nf95_def_var, nf95_put_att, &    use netcdf95, only: nf95_create, nf95_def_dim, nf95_def_var, nf95_put_att, &
11         nf95_enddef, nf95_put_var, nf95_close         nf95_enddef, nf95_put_var, nf95_close
12    use netcdf, only: nf90_clobber, nf90_float, nf90_global    use netcdf, only: nf90_clobber, nf90_float, nf90_global
13    use unit_nml_m, only: unit_nml  
14      use dimensions, only: jjm, llm
15      USE dimphy, ONLY : klon
16      USE dimsoil, ONLY : nsoilmx
17      use disvert_m, only: disvert, ap, bp, preff, presnivs
18      use dynetat0_chosen_m, only: read_serre
19      USE indicesol, ONLY : nbsrf
20      use ozonecm_m, only: ozonecm
21      use phyetat0_m, only: rlat, phyetat0
22      use unit_nml_m, only: unit_nml, set_unit_nml
23    
24    implicit none    implicit none
25    
# Line 27  program test_ozonecm Line 30  program test_ozonecm
30    real, parameter:: RG = 9.80665 ! acceleration of gravity, in m s-2    real, parameter:: RG = 9.80665 ! acceleration of gravity, in m s-2
31    real, parameter:: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2    real, parameter:: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
32    
33      REAL pctsrf(klon, nbsrf)
34      REAL ftsol(klon, nbsrf)
35      REAL ftsoil(klon, nsoilmx, nbsrf)
36      REAL qsurf(klon, nbsrf)
37      REAL qsol(klon) ! column-density of water in soil, in kg m-2
38      REAL snow(klon, nbsrf)
39      REAL albe(klon, nbsrf)
40      REAL rain_fall(klon)
41      REAL snow_fall(klon)
42      real solsw(klon)
43      REAL sollw(klon)
44      real fder(klon)
45      REAL radsol(klon)
46      REAL frugs(klon, nbsrf)
47      REAL agesno(klon, nbsrf)
48      REAL zmea(klon)
49      REAL zstd(klon)
50      REAL zsig(klon)
51      REAL zgam(klon)
52      REAL zthe(klon)
53      REAL zpic(klon)
54      REAL zval(klon)
55      REAL t_ancien(klon, llm), q_ancien(klon, llm)
56      LOGICAL ancien_ok
57      real rnebcon(klon, llm), ratqs(klon, llm)
58      REAL clwcon(klon, llm), run_off_lic_0(klon)
59      real sig1(klon, llm) ! section adiabatic updraft
60    
61      real w01(klon, llm)
62      ! vertical velocity within adiabatic updraft
63    
64      integer ncid_startphy
65    
66    ! For NetCDF:    ! For NetCDF:
67    integer ncid, dimid_time, dimid_plev, dimid_latitude    integer ncid, dimid_time, dimid_plev, dimid_latitude
68    integer varid_time, varid_plev, varid_latitude, varid_tro3    integer varid_time, varid_plev, varid_latitude, varid_tro3
# Line 35  program test_ozonecm Line 71  program test_ozonecm
71    
72    call assert(klon == jjm + 1, "test_ozonecm: iim should be 1")    call assert(klon == jjm + 1, "test_ozonecm: iim should be 1")
73    
74    call new_unit(unit_nml)    call set_unit_nml
75    open(unit_nml, file="used_namelists.txt", status="replace", action="write")    open(unit_nml, file="used_namelists.txt", status="replace", action="write")
76    
77    pa = 5e4    call read_serre
78    call disvert    call disvert
79    p = ap + bp * preff    p = ap + bp * preff
80    rlat = arth(-90., 180. / jjm, jjm + 1)    call phyetat0(pctsrf, ftsol, ftsoil, qsurf, qsol, snow, albe, rain_fall, &
81           snow_fall, solsw, sollw, fder, radsol, frugs, agesno, zmea, zstd, zsig, &
82           zgam, zthe, zpic, zval, t_ancien, q_ancien, ancien_ok, rnebcon, ratqs, &
83           clwcon, run_off_lic_0, sig1, w01, ncid_startphy)
84    
85    do julien = 1, 360    do julien = 1, 360
86       wo(:, :, julien) = ozonecm(REAL(julien), spread(p, dim=1, ncopies=jjm+1))       wo(:, :, julien) = ozonecm(REAL(julien), spread(p, dim=1, ncopies=jjm+1))

Legend:
Removed from v.265  
changed lines
  Added in v.313

  ViewVC Help
Powered by ViewVC 1.1.21