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 |
|
|
38 |
|
|
39 |
use dimens_m, only: jjm |
use dimens_m, only: jjm |
40 |
use comgeom, only: rlatv |
use comgeom, 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, only: regr1_step_av, regr3_lint |
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 |
|
|
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)/) |
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 |
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 |
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) |
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 |
|
|
238 |
|
|
239 |
use dimens_m, only: jjm |
use dimens_m, only: jjm |
240 |
use comgeom, only: rlatu |
use comgeom, only: rlatu |
241 |
use comconst, only: pi |
use nr_util, only: assert_eq, pi |
|
use nrutil, only: assert_eq |
|
242 |
|
|
243 |
use netcdf95, only: nf95_create, nf95_def_dim, nf95_def_var, & |
use netcdf95, only: nf95_create, nf95_def_dim, nf95_def_var, & |
244 |
nf95_put_att, nf95_enddef, nf95_copy_att, nf95_put_var |
nf95_put_att, nf95_enddef, nf95_copy_att, nf95_put_var |