/[lmdze]/trunk/phylmd/Mobidic/regr_lat_time_coefoz.f
ViewVC logotype

Diff of /trunk/phylmd/Mobidic/regr_lat_time_coefoz.f

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

trunk/libf/phylmd/Mobidic/regr_lat_time_coefoz.f90 revision 8 by guez, Mon Mar 31 12:51:21 2008 UTC trunk/Sources/phylmd/Mobidic/regr_lat_time_coefoz.f revision 179 by guez, Fri Mar 11 18:58:19 2016 UTC
# Line 1  Line 1 
1  module regr_lat_time_coefoz_m  module regr_lat_time_coefoz_m
2    
   ! This module is clean: no C preprocessor directive, no include line.  
3    ! Author: Lionel GUEZ    ! Author: Lionel GUEZ
4    
5    implicit none    implicit none
6    
7    private    private
8    public read_regr_lat_time_write_coefoz    public regr_lat_time_coefoz
9    
10  contains  contains
11    
# Line 38  contains Line 37  contains
37      ! not use values of the input time coordinate).      ! not use values of the input time coordinate).
38    
39      use dimens_m, only: jjm      use dimens_m, only: jjm
40      use comgeom, only: rlatv      use dynetat0_m, only: rlatv
41      use comconst, only: pi      use nr_util, only: pi
42      use regr1_step_av_m, only: regr1_step_av      use numer_rec_95, only: regr3_lint, regr1_conserv, slopes
43      use regr3_lint_m, only: regr3_lint      use netcdf95, only: nf95_open, nf95_gw_var, nf95_close, &
     use netcdf95, only: nf95_open, nf95_get_coord, nf95_close, &  
44           nf95_inq_varid, handle_err, nf95_put_var           nf95_inq_varid, handle_err, nf95_put_var
45      use netcdf, only: nf90_nowrite, nf90_get_var      use netcdf, only: nf90_nowrite, nf90_get_var
46    
# Line 98  contains Line 96  contains
96      ! (name of NetCDF primary variable in the output file)      ! (name of NetCDF primary variable in the output file)
97    
98      integer varid_in(n_o3_param), varid_out(n_o3_param), varid_plev, varid_time      integer varid_in(n_o3_param), varid_out(n_o3_param), varid_plev, varid_time
99      integer ncerr      integer ncerr, varid
100      ! (for NetCDF)      ! (for NetCDF)
101    
102      real, parameter:: tmidmonth(0:13) = (/(-15. + 30. * j, j = 0, 13)/)      real, parameter:: tmidmonth(0:13) = (/(-15. + 30. * j, j = 0, 13)/)
# Line 113  contains Line 111  contains
111    
112      !---------------------------------      !---------------------------------
113    
114      print *, "Call sequence information: regr_coefoz"      print *, "Call sequence information: regr_lat_time_coefoz"
115    
116      ! Names of ozone parameters:      ! Names of ozone parameters:
117      i_v = 0      i_v = 0
# Line 127  contains Line 125  contains
125      name_out(i_v) = "a2"      name_out(i_v) = "a2"
126    
127      i_v = i_v + 1      i_v = i_v + 1
128      name_in(i_v) = "r"      name_in(i_v) = "tro3"
129      name_out(i_v) = "r_Mob"      name_out(i_v) = "r_Mob"
130    
131      i_v = i_v + 1      i_v = i_v + 1
# Line 150  contains Line 148  contains
148      name_in(i_v) = "R_Het"      name_in(i_v) = "R_Het"
149      name_out(i_v) = "R_Het"      name_out(i_v) = "R_Het"
150    
151      call nf95_open("coefoz_v2_3.nc", nf90_nowrite, ncid_in)      call nf95_open("coefoz.nc", nf90_nowrite, ncid_in)
152    
153      ! Get coordinates from the input file:      ! Get coordinates from the input file:
154    
155      call nf95_get_coord(ncid_in, "latitude", latitude)      call nf95_inq_varid(ncid_in, "latitude", varid)
156        call nf95_gw_var(ncid_in, varid, latitude)
157      ! Convert from degrees to rad, because "rlatv" is in rad:      ! Convert from degrees to rad, because "rlatv" is in rad:
158      latitude = latitude / 180. * pi      latitude = latitude / 180. * pi
159      n_lat = size(latitude)      n_lat = size(latitude)
# Line 170  contains Line 169  contains
169      lat_in_edg(n_lat + 1) = pi / 2      lat_in_edg(n_lat + 1) = pi / 2
170      deallocate(latitude) ! pointer      deallocate(latitude) ! pointer
171    
172      call nf95_get_coord(ncid_in, "plev", plev)      call nf95_inq_varid(ncid_in, "plev", varid)
173        call nf95_gw_var(ncid_in, varid, plev)
174      n_plev = size(plev)      n_plev = size(plev)
175      ! (We only need the pressure coordinate to copy it to the output file.)      ! (We only need the pressure coordinate to copy it to the output file.)
176    
# Line 204  contains Line 204  contains
204         ! Regrid in latitude:         ! Regrid in latitude:
205         ! We average with respect to sine of latitude, which is         ! We average with respect to sine of latitude, which is
206         ! equivalent to weighting by cosine of latitude:         ! equivalent to weighting by cosine of latitude:
207         v_regr_lat(jjm+1:1:-1, :, 1:12) = regr1_step_av(o3_par_in, &         call regr1_conserv(o3_par_in, &
208              xs=sin(lat_in_edg), xt=sin((/- pi / 2, rlatv(jjm:1:-1), pi / 2/)))              xs = sin(lat_in_edg), xt = (/- 1., sin(rlatv(jjm:1:-1)), 1./), &
209                slope = slopes(o3_par_in, sin(lat_in_edg)), &
210                vt = v_regr_lat(jjm + 1:1:- 1, :, 1:12))
211         ! (invert order of indices in "v_regr_lat" because "rlatu" is         ! (invert order of indices in "v_regr_lat" because "rlatu" is
212         ! decreasing)         ! decreasing)
213    
# Line 237  contains Line 239  contains
239      ! dimensions and variables, and writes one of the coordinate variables.      ! dimensions and variables, and writes one of the coordinate variables.
240    
241      use dimens_m, only: jjm      use dimens_m, only: jjm
242      use comgeom, only: rlatu      use dynetat0_m, only: rlatu
243      use comconst, only: pi      use netcdf, only: nf90_clobber, nf90_float, nf90_copy_att, nf90_global
     use nrutil, only: assert_eq  
   
244      use netcdf95, only: nf95_create, nf95_def_dim, nf95_def_var, &      use netcdf95, only: nf95_create, nf95_def_dim, nf95_def_var, &
245           nf95_put_att, nf95_enddef, nf95_copy_att, nf95_put_var           nf95_put_att, nf95_enddef, nf95_copy_att, nf95_put_var
246      use netcdf, only: nf90_clobber, nf90_float, nf90_copy_att, nf90_global      use nr_util, only: assert_eq, pi
247    
248      integer, intent(in):: ncid_in, varid_in(:), n_plev      integer, intent(in):: ncid_in, varid_in(:), n_plev
249      character(len=*), intent(in):: name_out(:) ! of NetCDF variables      character(len=*), intent(in):: name_out(:) ! of NetCDF variables

Legend:
Removed from v.8  
changed lines
  Added in v.179

  ViewVC Help
Powered by ViewVC 1.1.21