/[lmdze]/trunk
ViewVC logotype

Log of /trunk

View Directory Listing Directory Listing


Sticky Revision:

Revision 352 - Directory Listing
Modified Thu Jan 16 19:20:50 2020 UTC (4 years, 2 months ago) by guez
Introduce XIOS in program gcm

Introduce XIOS in program gcm. Minimum (and useless) calls: initialize
and finalize.

Take advantage in CMakeLists of improved packaging of libraries:
NetCDF95 brings dependency on NetCDF-Fortran and NetCDF. Compile gcm
with MPI for XIOS.


Revision 351 - Directory Listing
Modified Tue Jan 7 11:59:00 2020 UTC (4 years, 2 months ago) by guez
Simplify `CMakeLists.txt` files

Take advantage of improved building of libraries: use `find_package`
instead of `find_path` and `find_library`.

Link each executable to target `LMDZE_objects` instead of including the
corresponding objects in the definition of the target executable. This
way, the executable inherits the dependencies of `LMDZE_objects` and
we do not need them in `library_list`.

Remove the definition of `library_list`. Replace the reference to
`library_list` by references to just `netcdff_LIBRARY` and `NetCDF_LIBRARY`.


Revision 350 - Directory Listing
Modified Mon Dec 23 16:07:24 2019 UTC (4 years, 3 months ago) by guez
Add argument `itau_phy_redem` to phyredem0

Add argument `itau_phy_redem` to phyredem0. Motivation: being able to
call phyredem0 with `itau_phy_redem` = 0 in program ce0l, avoiding the
side effect on nday. We can now add attribute protected to variable
nday of module `conf_gcm`. And we do not need to set `itau_phy` to 0
in procedure `phyetat0_new`.

Remove variable `prt_level` of module `conf_gcm`, which was only used
in procedure advnx. Motivation: cluttering the output is not viable,
even for debug. Better use a debugger.

Forgot to add `dyn3d/ADVN/CMakeLists.txt` in previous revision.


Revision 349 - Directory Listing
Modified Mon Dec 23 15:07:24 2019 UTC (4 years, 3 months ago) by guez
Split `advn.f90`

Split `advn.f90` into files containing a single procedure, group these
files in new directory ADVN.


Revision 348 - Directory Listing
Modified Mon Dec 23 14:32:59 2019 UTC (4 years, 3 months ago) by guez
Rename delta to ice in `calcul_flux`

Rename variable delta to ice, which is more meaningful, in procedure
`calcul_flux`.


Revision 347 - Directory Listing
Modified Fri Dec 20 16:30:51 2019 UTC (4 years, 3 months ago) by guez
Make ps and related variables rank 2 in procedure integrd

Revision 346 - Directory Listing
Modified Mon Dec 9 20:15:29 2019 UTC (4 years, 3 months ago) by guez
Rename block to `my_block` in procedure `CLOUDS_GNO` because block is
a Fortran keyword.

Remove computation of palpbla in procedure sw. It was not used nor
output. (Not used nor output either in LMDZ.)

In procedure physiq, define `d_[uv]_con` and add them to `[uv]_seri`
only if `conv_Emanuel`. Thus, we do not need to initialize
`d_[uv]_con` to 0, we do not have to save them and we do not add 0 to
`[uv]_seri`.

In procedure physiq, no need to initialize rnebcon to 0, it is defined
by phyetat0 afterwards.

Check that `iflag_cldcon` is between - 2 and 3.


Revision 345 - Directory Listing
Modified Tue Nov 26 20:47:46 2019 UTC (4 years, 4 months ago) by guez
Module variables to local variables

Downgrade variables `co2_ppm`, `CH4_ppb`, `N2O_ppb`, `CFC11_ppt`, `CFC12_ppt`
from module clesphys to subroutine `read_clesphys`. No need for double
precision for `CH4_ppb`, `N2O_ppb`, `CFC11_ppt`, `CFC12_ppt`.


Revision 344 - Directory Listing
Modified Tue Nov 12 15:18:14 2019 UTC (4 years, 4 months ago) by guez
Replace pi / 180 by `deg_to_rad`

In procedure etat0, rename variable tsoil to ftsoil, which is the
corresponding name in the gcm program.

In `laplacien_gam`, replace call to scopy by array assignment.

Replace pi / 180 by `deg_to_rad` in `start_init_phys`.

Encapsulate diagcld1 and orolift in modules.

Avoid duplicated computation in `interfsurf_hq`.

Promote internal function fz of procedure soil to function of module
`soil_m`.  Use `new_unit` in procedure soil.


Revision 343 - Directory Listing
Modified Mon Oct 28 08:14:26 2019 UTC (4 years, 5 months ago) by guez
Add output variables rld and rldcs

Add output variables rld and rldcs (following LMDZ).

In procedure cdrag, rename variables zdu2, ztsolv, ztvd, zri to du2,
tsolv, tvd, ri. Replace `exp(log(psol))` by psol.

In procedure `pbl_surface`, rename u, v to `u_seri`, `v_seri`.


Revision 342 - Directory Listing
Modified Mon Oct 21 13:52:44 2019 UTC (4 years, 5 months ago) by guez
Bug fixes in `CMakeLists.txt`


Revision 341 - Directory Listing
Modified Mon Oct 21 06:11:44 2019 UTC (4 years, 5 months ago) by guez
Remove intermediate variables in `pbl_surface`

Remove file `diagcld2.f90`, no longer used since revision 340.

In procedure cdrag, rename zcdn to cdn. In procedure `interfsurf_hq`,
rename `temp_air` to t1lay: this is the corresponding name in
`calcul_fluxs`, is consistent with the other names `[uvq]1lay` and is
more precise.

In procedure `pbl_surface`, rename t and q to `t_seri` and `q_seri`,
which are the names in procedure physiq. Remove needless intermediate
variables qair1, tairsol, psfce, patm and zgeo1. Remove useless
initialization of yrugos. Remove a useless assignment `i = ni(j)`.


Revision 340 - Directory Listing
Modified Thu Sep 26 17:29:50 2019 UTC (4 years, 6 months ago) by guez
Remove `new_oliq` and `ok_stratus`

Remove possibility to choose `new_oliq` false. LMDZ is always used with
`new_oliq` true.

Remove possibility to choose `ok_stratus` true. LMDZ is always used
with `ok_stratus` false.

Encapsulate dqthermcell in a module.


Revision 339 - Directory Listing
Modified Thu Sep 26 17:08:42 2019 UTC (4 years, 6 months ago) by guez
Simplify newmicro and rename dummy arguments

Rename dummy argument ucov of procedure advect to ang_3d. Rename dummy
argument radliq of procedure fisrtilp to cldliq. Rename dummy argument
qlwp of procedure newmicro to cldliq. Motivation: same name across
procedures.

Remove useless intermediary local variable rel in procedure
newmicro. The value of rad_chaud can be used instead of 1 in the
computation of cldtau if zflwp is 0: it does not matter.


Revision 338 - Directory Listing
Modified Mon Sep 16 17:25:30 2019 UTC (4 years, 6 months ago) by guez
Inline the list of files in `phylmd/CMakeLists.txt`. The drawback of
reading a separate file `file_list` is that cmake seems not to
reconfigure automatically when `file_list` is modified.

Remove possibility to call nuage. So remove also variable
`ok_newmicro`. (nuage is probably never used in LMDZ any longer,
although it is still possible to use it in LMDZ.)


Revision 337 - Directory Listing
Modified Mon Sep 16 16:54:50 2019 UTC (4 years, 6 months ago) by guez
In procedure newmicro, rename dummy argument cltau to cldtau. In
procedure nuage, rename dummy argument pcltau to cldtau. In procedure
radlwsw, rename dummy argument cldtaupd to cldtau. Motivation: same
variable name across procedures.

In procedure newmicro, no need for arrays zflwp and zfiwp: scalars are
sufficient (following LMDZ).


Revision 336 - Directory Listing
Modified Thu Sep 12 21:34:37 2019 UTC (4 years, 6 months ago) by guez
Replace ssum by sum in procedure diverg_gam

Revision 335 - Directory Listing
Modified Thu Sep 12 21:22:46 2019 UTC (4 years, 6 months ago) by guez
Julian dates be in double precision

`ConfigureCompilerFlags.cmake` and `TAGS.cmake` are now copied into
LMDZE, to avoid dependency on the environment.

Julian dates must be in double precision, to get time step precision.

Add optional attribute to argument sec of procedure ju2ymds. We do
not need sec in procedure dynredem0.

In procedure ju2ymds, by construction, sec cannot be > `un_jour`.

Remove useless intermediary variables in procedure ymds2ju.


Revision 334 - Directory Listing
Modified Mon Sep 9 20:22:21 2019 UTC (4 years, 6 months ago) by guez
Remove old build system using make directly.

Revision 333 - Directory Listing
Modified Mon Sep 9 20:14:42 2019 UTC (4 years, 6 months ago) by guez
Polish

Revision 332 - Directory Listing
Modified Tue Aug 13 09:19:22 2019 UTC (4 years, 7 months ago) by guez
Declare variable nent in procedures `cv_driver`, `cv30_mixing` and
`cv30_yield` with shape `(ncum, 2:nl - 1)`.


Revision 331 - Directory Listing
Modified Wed Jul 31 17:10:31 2019 UTC (4 years, 7 months ago) by guez
Use same variable name across procedures: falbe.

In procedure albsno, no need for `MAX(0., snow_fall)`: snow_fall is
necessarily >= 0. No need to constrain update of agesno to be >= 0:
the result of the computation is necessarily >= 0 since agesno >= 0
and dtphys <= 86400.


Revision 330 - Directory Listing
Modified Wed Jul 31 14:55:23 2019 UTC (4 years, 7 months ago) by guez
Bug fix in `CMakeLists.txt`: default value of jjm.

Use the same variable name across procedures for column density of
snow at the surface: fsnow.

Remove useless intermediary variable bils in procedure physiq.

In procedure interfsurf_hq, no need to force zfra between 0 and 1: the
result of the computation is already between 0 and 1 since snow is
necessarily greater than or equal to 0.


Revision 329 - Directory Listing
Modified Thu Jun 13 17:29:13 2019 UTC (4 years, 9 months ago) by guez
Add `CMakeLists.txt` files.

Revision 328 - Directory Listing
Modified Thu Jun 13 14:40:06 2019 UTC (4 years, 9 months ago) by guez
Change all `.f` suffixes to `.f90`. (The opposite was done in revision
82.)  Because of change of philosopy in GNUmakefile: we already had a
rewritten rule for `.f`, so it does not make the makefile longer to
replace it by a rule for `.f90`. And it spares us options of
makedepf90 and of the compiler. Also we prepare the way for a simpler
`CMakeLists.txt`.


Revision 327 - Directory Listing
Modified Thu Jun 13 13:59:19 2019 UTC (4 years, 9 months ago) by guez
Move the update of ftsol by `d_ts` inside `pbl_surface` (following
LMDZ). This makes the procedure physiq lighter. And it is clearer now
that the update of ftsol does come from `pbl_surface`.


Revision 326 - Directory Listing
Modified Mon Jun 10 00:29:10 2019 UTC (4 years, 9 months ago) by guez
GNUmakefile does not depend on `settings.mk`.

Rename argument precip1 of `cv_driver` to rain, matching the name of the
corresponding actual argument in concvl.

Add Netcdf variable pmflxr to history file, following LMDZ.

In procedure phyetat0, no need for intermediary variable fractint.


Revision 325 - Directory Listing
Modified Wed Mar 13 15:53:40 2019 UTC (5 years ago) by guez
> 1. + 1E-8 .OR. < 1. - 1E-8 is usually the same than /=
  1. in single precision.


Revision 324 - Directory Listing
Modified Wed Feb 6 15:58:03 2019 UTC (5 years, 1 month ago) by guez
Rename variable zmasq of module phyetat0_m to masque, which was
already its name in "restartphy.nc". Rename variable fraclic of
procedure etat0 to landice, which was already its name in
"landiceref.nc". Style guide: we try to have the same names for
identical data objects across the program.

In procedure interfsurf_hq, in case is_sic, define tsurf instead of
tsurf_new, avoiding a copy from tsurf_new to tsurf.


Revision 323 - Directory Listing
Modified Thu Jan 24 17:19:06 2019 UTC (5 years, 2 months ago) by guez
Rename module ctherm to ctherm_m. Create procedure ctherm in module
ctherm_m. Read variables of module ctherm_m in ctherm rather than in
physiq.

Downgrade variables l_mix_thermals, r_aspect_thermals, tho_thermals
and w2di_thermals of module ctherm_m to local named constants l_mix,
r_aspect, tho and w2di of procedure thermcell.

Change type of iflag_thermals from integer to logical.


Revision 322 - Directory Listing
Modified Thu Jan 24 16:17:39 2019 UTC (5 years, 2 months ago) by guez
Remove unused constants in module cv_thermo.

Revision 321 - Directory Listing
Modified Tue Dec 11 22:48:09 2018 UTC (5 years, 3 months ago) by guez
Rename iniadvtrac to infotrac_init, to be closer to LMDZ.


Revision 320 - Directory Listing
Modified Tue Dec 11 16:49:32 2018 UTC (5 years, 3 months ago) by guez
Polish.

Revision 319 - Directory Listing
Modified Tue Dec 11 15:08:08 2018 UTC (5 years, 3 months ago) by guez
Polish.

Revision 318 - Directory Listing
Modified Tue Dec 11 15:06:38 2018 UTC (5 years, 3 months ago) by guez
Add test for procedure orbite.


Revision 317 - Directory Listing
Modified Tue Dec 11 14:12:45 2018 UTC (5 years, 3 months ago) by guez
Polish.

Revision 316 - Directory Listing
Modified Tue Dec 11 12:59:24 2018 UTC (5 years, 3 months ago) by guez
Polish.

Revision 315 - Directory Listing
Modified Tue Dec 11 12:53:49 2018 UTC (5 years, 3 months ago) by guez
Polish.

Revision 314 - Directory Listing
Modified Mon Dec 10 16:25:41 2018 UTC (5 years, 3 months ago) by guez
Move procedures principal_cshift and invert_zoom_x each to its own
module. Procedure fund and module variable abs_y go with
invert_zoom_x.


Revision 313 - Directory Listing
Modified Mon Dec 10 15:54:30 2018 UTC (5 years, 3 months ago) by guez
Remove module temps. Move variable itau_dyn from module temps to
module dynetat0_m, where it is defined.

Split module dynetat0_m into dynetat0_m and dynetat0_chosen_m. The
motivation is to create smaller modules. Procedures principal_cshift
and invert_zoomx had to stay in dynetat0_m because of circular
dependency. Now we will be able to move them away. Module variables
which are chosen by the user, not computed, in program ce0l go to
dynetat0_chosen_m: day_ref, annee_ref, clon, clat, grossismx,
grossismy, dzoomx, dzoomy, taux, tauy.

Move variable "pa" from module disvert_m to module
dynetat0_chosen_m. Define "pa" in dynetat0_chosen rather than etat0.

Define day_ref and annee_ref in procedure read_serre rather than
etat0.


Revision 312 - Directory Listing
Modified Fri Dec 7 14:17:11 2018 UTC (5 years, 3 months ago) by guez
In procedure interfsur_lim, deja_lu_sur is redundant with jour_lu_sur.


Revision 311 - Directory Listing
Modified Mon Dec 3 17:52:21 2018 UTC (5 years, 3 months ago) by guez
Move file cv_thermo.f to directory CV30_routines since it is only used
there. Rename module cv_thermo_m to cv_thermo.

Named constants instead of variables in module suphec_m.

Rename dummy argument spechum of procedure interfsurf_hq to q1lay
(same as corresponding dummy argument in calcul_fluxs).


Revision 310 - Directory Listing
Modified Thu Sep 27 16:29:06 2018 UTC (5 years, 6 months ago) by guez
Read and write the whole pctsrf array in (re)startphy.nc, instead of
splitting it into FTER, FLIC, FOCE, FSIC.


Revision 309 - Directory Listing
Modified Thu Sep 27 14:58:10 2018 UTC (5 years, 6 months ago) by guez
Remove variable pourc_* in histins.nc, redundant with fract_*.

In procedure physiq, change the meaning of variable "sens" to avoid
changing the sign several times needlessly. Also the meaning of
variable "sens" in physiq is now the same than the meaning of netCDF
variable "sens". Also the convention for "sens" is now the same than
for radsol, zxfluxlat, and flux_t.


Revision 308 - Directory Listing
Modified Tue Sep 18 15:14:40 2018 UTC (5 years, 6 months ago) by guez
In procedure calcul_fluxs, rename coef1lay to cdragh (following
LMDZ). Use named constant min_wind_speed (following LMDZ).

Change name of NetCDF variable soll to CF standard rls.


Revision 307 - Directory Listing
Modified Tue Sep 11 12:52:28 2018 UTC (5 years, 6 months ago) by guez
Move computation of albsol, fsollw and fsolsw from physiq to pbl_surface
(following LMDZ).


Revision 306 - Directory Listing
Modified Tue Sep 11 12:23:47 2018 UTC (5 years, 6 months ago) by guez
Add output NetCDF variable "flat" (following LMDZ).


Revision 305 - Directory Listing
Modified Tue Sep 11 11:08:38 2018 UTC (5 years, 6 months ago) by guez
We want to keep the same variable names throughout procedures. In
pbl_surface, rain_fall and snow_fall were passed to clqh and became
precip_rain and precip_snow. Which name should we choose?
Precipitation normally refers to water in all phases. Rainfall and
snowfall seem to be more common names to distinguish liquid water and
snow. Cf. CF standard names. So change everywhere precip_rain to
rain_fall and precip_snow to snow_fall.


Revision 304 - Directory Listing
Modified Thu Sep 6 15:51:09 2018 UTC (5 years, 6 months ago) by guez
Variable fevap of physiq is not used. Remove it from physiq and from
the restart file. Remove the corresponding argument evap of
pbl_surface.

Use directly yqsurf instead of qairsol in pbl_surface.


Revision 303 - Directory Listing
Modified Thu Sep 6 14:25:07 2018 UTC (5 years, 6 months ago) by guez
In procedure coef_diff_turb, zlev(:, klev + 1) was defined and then
overwritten inside yamada4. Replaced the definition of zlev(:, klev +
1) in coef_diff_turb by the definition in yamada4. So zlev is now
"intent in" in yamada4.

Bug fix in pbl_surface. yq2 is only defined if iflag_pbl >= 6.


Revision 302 - Directory Listing
Modified Thu Sep 6 13:19:51 2018 UTC (5 years, 6 months ago) by guez
In procedure physiq, rename dsens and devap to dflux_t and dflux_q so
they correspond to arguments with the same name in pbl_surface. (In
LMDZ, dsens and devap are not used in physiq, the computation of fder
is done inside pbl_surface.)


Revision 301 - Directory Listing
Modified Thu Aug 2 17:23:07 2018 UTC (5 years, 7 months ago) by guez
Move the call to conf_interface up to physiq, so there is no need to
test first call inside pbl_surface for this.

run_off_lic in fonte_neige was computed but not used. Pass it up to
pbl_surface so we can output it (following LMDZ).

Simplify the logic in interfsur_lim so we do not need debut.

Remove the tests on the order of surface types in interfsurf_hq. Just
add comments in indicesol.


Revision 300 - Directory Listing
Modified Thu Aug 2 15:55:01 2018 UTC (5 years, 7 months ago) by guez
The calls to calcul_fluxs were always done with an array argument
dif_grnd set to a scalar (and that is also the case in LMDZ). So just
use a scalar argument.

In procedure fonte_neige, the value of run_off_lic from previous call
was actually not used. So we can remove the save attribute and make it
an automatic array.


Revision 299 - Directory Listing
Modified Thu Aug 2 14:27:11 2018 UTC (5 years, 7 months ago) by guez
Use directly dtphys from module comconst when possible instead of
having it trickle down through procedure arguments.


Revision 298 - Directory Listing
Modified Thu Jul 26 16:45:51 2018 UTC (5 years, 8 months ago) by guez
Use directly dtphys from module comconst when possible instead of
having it trickle down through procedure arguments.


Revision 297 - Directory Listing
Modified Thu Jul 26 16:02:11 2018 UTC (5 years, 8 months ago) by guez
Rename module interface_surf to conf_interface_m.

Move the computation of pkf out of procedure climb_hq_down into clqh.


Revision 296 - Directory Listing
Modified Thu Jul 26 13:50:13 2018 UTC (5 years, 8 months ago) by guez
Create procedure climb_hq_up from part of procedure clqh (following LMDZ).


Revision 295 - Directory Listing
Modified Thu Jul 26 13:23:28 2018 UTC (5 years, 8 months ago) by guez
Create procedure climb_hq_down from part of procedure clqh (following LMDZ).


Revision 294 - Directory Listing
Modified Thu Jul 26 13:11:22 2018 UTC (5 years, 8 months ago) by guez
Remove variables grille_u and grille_v of file grilles_gcm.nc, which
were not given any value.

In procedure clqh, we only need to define gamt if iflag_pbl == 1.


Revision 293 - Directory Listing
Modified Wed Jul 25 16:16:53 2018 UTC (5 years, 8 months ago) by guez
Rename procedure read_sst to limit_read_sst, to be closer to LMDZ.


Revision 292 - Directory Listing
Modified Wed Jul 25 14:25:28 2018 UTC (5 years, 8 months ago) by guez
In procedure cdrag test zri >= 0 rather than zri > 0 and invert the
order of the if construction (following LMDZ).


Revision 291 - Directory Listing
Modified Wed Jul 25 14:15:44 2018 UTC (5 years, 8 months ago) by guez
Use named constant f_ri_cd_min in procedure cdrag (following LMDZ).
Remove some intermediary variables.


Revision 290 - Directory Listing
Modified Tue Jul 24 16:57:36 2018 UTC (5 years, 8 months ago) by guez
Polish.

Revision 289 - Directory Listing
Modified Tue Jul 24 16:40:15 2018 UTC (5 years, 8 months ago) by guez
No need to call coefkz or coefkzmin in procedure coef_diff_turb if
iflag_pbl >= 6.


Revision 288 - Directory Listing
Modified Tue Jul 24 16:27:12 2018 UTC (5 years, 8 months ago) by guez
Remove tests on richum, tvirtu and opt_ec in procedure coefkz (not
used in LMDZ either).

Change the meaning of variable ecrit_ins of module clesphys from
number of seconds (integer, weird), which was modified in physiq to
make a multiple of the time step of physics, to number of physics time
steps.


Revision 287 - Directory Listing
Modified Tue Jul 24 15:26:36 2018 UTC (5 years, 8 months ago) by guez
Move files containing procedures called by pbl_surface to directory Interface_surf.

Revision 286 - Directory Listing
Modified Tue Jul 24 15:22:48 2018 UTC (5 years, 8 months ago) by guez
Move files containing pbl_surface and procedures called by pbl_surface to directory Interface_surf.

Revision 285 - Directory Listing
Modified Fri Jul 20 17:53:18 2018 UTC (5 years, 8 months ago) by guez
Polish.

Revision 284 - Directory Listing
Modified Fri Jul 20 17:35:43 2018 UTC (5 years, 8 months ago) by guez
In procedure clqh, do not recompute pkf in zzpk.


Revision 283 - Directory Listing
Modified Fri Jul 20 17:08:44 2018 UTC (5 years, 8 months ago) by guez
Polish.

Revision 282 - Directory Listing
Modified Fri Jul 20 16:46:48 2018 UTC (5 years, 8 months ago) by guez
Polish

Revision 281 - Directory Listing
Modified Fri Jul 20 16:28:36 2018 UTC (5 years, 8 months ago) by guez
Polish

Revision 280 - Directory Listing
Modified Fri Jul 20 15:47:57 2018 UTC (5 years, 8 months ago) by guez
Remove gamq (counter-gradient for water vapor) in procedure clqh, was
always 0 (does not appear either any longer in LMDZ).


Revision 279 - Directory Listing
Modified Fri Jul 20 14:30:23 2018 UTC (5 years, 8 months ago) by guez
fqcalving was saved in physiq and had intent inout in pbl_surface. So
we could set fqcalving to 0 only once per run. The point is fqcalving
must be defined everywhere for the computation of the average over all
surfaces, even values that get multiplied by pctsrf = 0. I find it
clearer to set fqcalving to 0 at every call of pbl_surface. This is
more expensive but allows to give intent out to fqcalving in
pbl_surface and remove the save attribute in physiq.

Add zxfqcalving output netCDF variable (following LMDZ).


Revision 278 - Directory Listing
Modified Thu Jul 12 17:53:18 2018 UTC (5 years, 8 months ago) by guez
Created procedure phyetat0_new to avoid side effects on variables of
module phyetat0_m. Had then to change test_ozonecm: read rlat from
netCDF file instead of specifying it in test_ozonecm.


Revision 277 - Directory Listing
Modified Thu Jul 12 15:56:17 2018 UTC (5 years, 8 months ago) by guez
Move fxhyp and fyhyp to module dynetat0_m to avoid side effect on
variables of module dynetat0_m. A downside is that we need to link
heavyside, coefpoly and tanh_cautious into the gcm and test_fxhyp
executables.

We must move invert_zoom_x and principal_cshift to module dynetat0_m
to avoid circular dependency.

Move definition of rlatu(1) and rlatu(jjm + 1) inside fyhyp to avoid
side effect on rlatu.


Revision 276 - Directory Listing
Modified Thu Jul 12 14:49:20 2018 UTC (5 years, 8 months ago) by guez
Move procedure read_serre from module read_serre_m to module
dynetat0_m, to avoid side effet on variables of module dynetat0_m.

Create procedure set_unit_nml to avoid side effect on variable of
module unit_nml_m.

Downgrade pctsrf from variable of module etat0_m to argument of etat0
and limit to avoid side effect on pctsrf.

Move variable zmasq from module dimphy to module phyetat0_m to avoid
side effect on zmasq.


Revision 275 - Directory Listing
Modified Wed Jul 11 17:06:09 2018 UTC (5 years, 8 months ago) by guez
Merge procedures clcdrag and coefcdrag into procedure cdrag (following
LMDZ revision 2232).


Revision 274 - Directory Listing
Modified Wed Jul 11 16:50:27 2018 UTC (5 years, 8 months ago) by guez
Merge clcdrag and coefcdrag (following LMDZ revision 2232). Replace
local arrays by scalars. max(qsurf, 0), f_cdrag_ter, f_cdrag_oce in
clcdrag.  max(cepdu2, speed(i)**2) in coefcdrag, test zri > 0 instead
of >= 0. trm1 was unused in coefcdrag. No need for intermediary local
variable pref_local.


Revision 273 - Directory Listing
Modified Wed Jul 11 15:31:01 2018 UTC (5 years, 8 months ago) by guez
Do the same calculation for richardson number and f_cdrag between
coefcdrag and clcdrag (following revision 2011 of LMDZ). We have then
to add input variables f_cdrag_ter and f_cdrag_oce in module clesphys
(following revision 1168 of LMDZ), with default values those used for AR4.



Revision 272 - Directory Listing
Modified Wed Jul 11 14:51:28 2018 UTC (5 years, 8 months ago) by guez
Add arguments psol and pref to clcdrag, in preparation of merge with
coefcdrag. Remove intent out arguments cdran and zri1 of coefcdrag,
not used. Make argument pref of coefcdrag optional, in preparation of
merge with clcdrag. Remove useless intermediary local variable zdphi
in coefcdrag. Remove unused local variable ri1 in stdlevvar.


Revision 271 - Directory Listing
Modified Wed Jul 11 13:22:39 2018 UTC (5 years, 8 months ago) by guez
Replace arguments u, v of procedure clcdrag by argument speed,
preparing merge with procedure coefcdrag.


Revision 270 - Directory Listing
Modified Wed Jul 11 12:28:35 2018 UTC (5 years, 8 months ago) by guez
Remove local variable cdrag, which contained only 0, in procedure
cltrac. (It still contains only 0 in LMDZ).


Revision 269 - Directory Listing
Modified Thu May 3 17:14:14 2018 UTC (5 years, 10 months ago) by guez
Bug fix: dif_grnd for case is_sic in procedure
interfsurf_hq. (Following LMDZ. In LMDZ, the bug was fixed in revision
686.)


Revision 268 - Directory Listing
Modified Thu May 3 16:46:29 2018 UTC (5 years, 10 months ago) by guez
Remove procedure calbeta. Was only useful for the case is_ter. Just
inline it in this case.


Revision 267 - Directory Listing
Modified Thu May 3 16:14:08 2018 UTC (5 years, 10 months ago) by guez
Rename procedure clmain to pbl_surface (following LMDZ).

Remove choice soil_model = f. This choice made the algorithm unclear
in interfsurf_hq. Also soil_model = f is never used in LMDZ. radsol
was intent inout in clqh because of its possible modification in
interfsurf_hq, but the corresponding actual argument yrads is not used
in pbl_surface. The modification of radsol in interfsurf_hq was a bad
idea. Now we can more clearly make radsol an intent in argument of
clqh and interfsurf_hq.


Revision 266 - Directory Listing
Modified Thu Apr 19 17:54:55 2018 UTC (5 years, 11 months ago) by guez
Define macros of the preprocessor CPP_IIM, CPP_JJM, CPP_LLM so we can
control the resolution from the compilation command, and automate
compilation for several resolutions.

In module yoethf_m, transform variables into named constants. So we do
not need procedure yoethf any longer.

Bug fix in program test_inter_barxy, missing calls to fyhyp and fxhyp,
and definition of rlatu.

Remove variable iecri of module conf_gcm_m. The files dyn_hist*.nc are
written every time step. We are simplifying the output system, pending
replacement by a whole new system.

Modify possible value of vert_sampling from "param" to
"strato_custom", following LMDZ. Default values of corresponding
namelist variables are now the values used for LMDZ CMIP6.


Revision 265 - Directory Listing
Modified Tue Mar 20 09:35:59 2018 UTC (6 years ago) by guez
Rename module dimens_m to dimensions.

Revision 264 - Directory Listing
Modified Mon Mar 19 10:28:42 2018 UTC (6 years ago) by guez
In procedure limit, write fields as soon as they are computed. Thus
avoid creating local arrays phy_alb, phy_sst, phy_rug, pctsrf_t and
avoid copying to these arrays. In particular, we use the module
variable pctsrf instead of local pctsrf_t.


Revision 263 - Directory Listing
Modified Wed Mar 7 14:41:46 2018 UTC (6 years ago) by guez
Allow output of dynamics at frequency greater than one per day. Change
meaning of iecri.

Remove arguments tstep, nq of procedure inithist: use directly
module variables dtvr and nqmx instead.

Change meaning of last dummy argument of writehist. Simpler and
clearer, because time suggested a dimensional quantity.


Revision 262 - Directory Listing
Modified Wed Mar 7 13:46:18 2018 UTC (6 years ago) by guez
Remove output file dynhist_ave.nc. As in physics, keep only one output
file for instantaneous output, pending replacement by a more powerful
solution like XIOS.


Revision 261 - Directory Listing
Modified Wed Mar 7 13:33:15 2018 UTC (6 years ago) by guez
Make procedures writehist and writedynav as identical as
possible. Remove output of phis in writedynav: already in histins and
constant. Add output of temp and q in writehist.

Remove unused variable ndm of module dimens_m. Remove unused variables
kftd, mvar, jcfil and jcfllm of module paramet_m.


Revision 260 - Directory Listing
Modified Tue Mar 6 17:18:33 2018 UTC (6 years ago) by guez
In procedures leapfrog, caldyn and integrd, in revision 47, I had
renamed du to dudyn because it was the name used in physiq. But in
revision 90, I removed argument dudyn of physiq. So clearer now to go
back to the name du, analoguous to dv (as in LMDZ).


Revision 259 - Directory Listing
Modified Tue Mar 6 16:19:52 2018 UTC (6 years ago) by guez
Try to clarify the logic. Remove module ener. Move variables from
module ener to module dynetat0_m, where they are defined in program
gcm. In sortvarc, I do not see how ptot0 could be 0, discard this possibility.

Remove dummy argument resetvarc of procedure sortvarc. The difference
is that sortvarc is called by caldyn or caldyn0 so just do different
processing in caldyn and caldyn0 instead of inside sortvarc.

No need for variables ang, etot, ptot, rmsdpdt, rmsv, stot, ztot to be
at module level in module sortvarc_m, downgrade them to arguments of
sortvarc. Instead of modyfying the meaning of ang, etot, ptot,
rmsdpdt, rmsv, stot, ztot from absolute quantities to variations of
these quantities, print the ratio in caldyn.


Revision 258 - Directory Listing
Modified Tue Mar 6 15:17:17 2018 UTC (6 years ago) by guez
Remove unnecessary intermediary variables stotl and rmsvl. Move lines
around to group related computations.


Revision 257 - Directory Listing
Modified Tue Mar 6 14:49:28 2018 UTC (6 years ago) by guez
Remove intermediary variable ge when not useful.


Revision 256 - Directory Listing
Modified Tue Mar 6 14:29:20 2018 UTC (6 years ago) by guez
Replace sum(ge) - sum(ge(1, :)) by sum(ge(:iim, :)) in procedure
sortvarc. Remove intermediary variables vor and ztotl.


Revision 255 - Directory Listing
Modified Tue Mar 6 13:39:57 2018 UTC (6 years ago) by guez
Use two dimensions of arrays for two space dimensions in procedure
sortvarc. Replace call to ssum by call to sum.


Revision 254 - Directory Listing
Modified Mon Feb 5 10:39:38 2018 UTC (6 years, 1 month ago) by guez
Move Sources/* to root directory.

Revision 253 - Directory Listing
Modified Tue Jan 23 15:49:10 2018 UTC (6 years, 2 months ago) by guez
No need for intermediary variables rlong and rlat in inithist.

Revision 252 - Directory Listing
Modified Mon Jan 22 15:02:56 2018 UTC (6 years, 2 months ago) by guez
*trmb[1-3] were just filled with 0. Remove these variables and output.


Revision 251 - Directory Listing
Modified Mon Jan 8 14:12:02 2018 UTC (6 years, 2 months ago) by guez
Polishing.

Revision 250 - Directory Listing
Modified Fri Jan 5 18:18:53 2018 UTC (6 years, 2 months ago) by guez
Extract part of clmain into a new procedure coef_diff_turb (following LMDZ).


Revision 249 - Directory Listing
Modified Fri Jan 5 17:15:05 2018 UTC (6 years, 2 months ago) by guez
In clmain, assemble modifications of ycdrag[hm] (following LMDZ).


Revision 248 - Directory Listing
Modified Fri Jan 5 16:40:13 2018 UTC (6 years, 2 months ago) by guez
Move the call to clcdrag up from coefkz to clmain (folllowing
LMDZ). As both clcdrag and coefkz need zgeop, also move the
computation of zgeop from coefkz to clmain.


Revision 247 - Directory Listing
Modified Fri Jan 5 14:45:45 2018 UTC (6 years, 2 months ago) by guez
In clvent, clearer to use ven rather than local_ven if possible.

In physiq, igwd was useless.


Revision 246 - Directory Listing
Modified Wed Nov 15 13:56:45 2017 UTC (6 years, 4 months ago) by guez
In procedure clmain, no need for intermediary variables ykmm and ykmn.

In module coefcdrag_m, remove unused procedures fsta and fins.


Revision 245 - Directory Listing
Modified Tue Nov 14 15:43:29 2017 UTC (6 years, 4 months ago) by guez
Equivalent formula, but simpler, in ustarhb.


Revision 244 - Directory Listing
Modified Tue Nov 14 14:56:42 2017 UTC (6 years, 4 months ago) by guez
In procedure clmain, rename ycoefh to coefh and coefh to ycoefh. Also
rename coefm to ycoefm. The convention is that variables beginning
with "y" are packed to knon. (Following LMDZ.) In physiq, rename
ycoefh to coefh.


Revision 243 - Directory Listing
Modified Tue Nov 14 14:38:36 2017 UTC (6 years, 4 months ago) by guez
Multiply by ypct in the computation of average value rather than
modifying surface-specific quantity. This way, the surface-specific
quantity keeps the same meaning throughout the procedure.


Revision 242 - Directory Listing
Modified Mon Nov 13 12:12:41 2017 UTC (6 years, 4 months ago) by guez
In procedure clmain, do not compute ycoefh(:, 1) since this is a
duplicate of cdragh. Thus, in procedure physiq, use cdragh as actual
argument to phytrac.


Revision 241 - Directory Listing
Modified Mon Nov 13 11:51:04 2017 UTC (6 years, 4 months ago) by guez
In procedure phytrac, separate dummy argument coefh(klon, klev) into
coefh(klon, 2:klev) and cdragh(klon).


Revision 240 - Directory Listing
Modified Mon Nov 13 11:29:18 2017 UTC (6 years, 4 months ago) by guez
ycoef[mh]0(:, 1) is never used.


Revision 239 - Directory Listing
Modified Fri Nov 10 15:16:48 2017 UTC (6 years, 4 months ago) by guez
In procedure coefkzmin, dummy argument km is equal to dummy argument
kn. Remove it.

Bug fix in clmain. If iflag_pbl /= 1 and ok_kzmin then
ycoef[mh]0(:knon, 1) are not defined and used for computation of
ycdrag[mh](:knon). Remove the lines (following LMDZ).


Revision 238 - Directory Listing
Modified Thu Nov 9 14:11:39 2017 UTC (6 years, 4 months ago) by guez
In procedure clmain, remove local variable ykmq, not used (not used in
LMDZ either). Remove its computation in yamada4.

In procedure yamada4, remove dummy argument cd, not used.


Revision 237 - Directory Listing
Modified Thu Nov 9 13:26:00 2017 UTC (6 years, 4 months ago) by guez
In procedure clmain, separate coefh(klon, klev) into coefh(klon,
2:klev) and ycdragh(klon), coefm(klon, klev) into coefm(klon,
2:klev) and ycdragm(klon).


Revision 236 - Directory Listing
Modified Thu Nov 9 12:47:25 2017 UTC (6 years, 4 months ago) by guez
In procedure clqh, tq_cdrag from local variable to dummy argument, and
recieve only eddy diffusion coefficient in dummy argument coef.


Revision 235 - Directory Listing
Modified Thu Nov 9 12:37:48 2017 UTC (6 years, 4 months ago) by guez
Change only eddy diffusion coefficient, not drag in coefkz2.


Revision 234 - Directory Listing
Modified Tue Nov 7 12:20:42 2017 UTC (6 years, 4 months ago) by guez
Almost nothing.

Revision 233 - Directory Listing
Modified Tue Nov 7 10:52:46 2017 UTC (6 years, 4 months ago) by guez
Use separate variables for eddy diffusion coefficient and drag
coefficient in procedure coefkz (following LMDZ). coefkzmin only
computes eddy diffusion coefficient, not drag coefficient.


Revision 232 - Directory Listing
Modified Tue Nov 7 10:23:25 2017 UTC (6 years, 4 months ago) by guez
Use separate variables for eddy diffusion and drag coefficient in
cltracrn (following LMDZ).


Revision 231 - Directory Listing
Modified Mon Nov 6 18:00:54 2017 UTC (6 years, 4 months ago) by guez
Use separate variables for eddy diffusion and drag coefficient in
clvent (following LMDZ).


Revision 230 - Directory Listing
Modified Mon Nov 6 17:47:03 2017 UTC (6 years, 4 months ago) by guez
We use only coef(:, 2:) in cltrac.


Revision 229 - Directory Listing
Modified Mon Nov 6 17:20:45 2017 UTC (6 years, 4 months ago) by guez
Use iflag_pbl from module conf_phys in yamada4 instead of getting it
as argument.

In clvent, simplifications using the fact that zx_alf2 = 0 and zx_alf1
= 1 (discarding the possibility to change this).

In physiq, no need for temporary variables z[uv]strph: compute actual
arguments of aaam_bud directly.


Revision 228 - Directory Listing
Modified Fri Nov 3 12:38:47 2017 UTC (6 years, 4 months ago) by guez
Bug fix in dynetat0: phisinit to phis.

gcm explodes (stops in hgardfou) in less than one day with iflag_pbl =
7 (Mellor and Yamada 2.0 Fournier) and 11 (corresponding to iflag_pbl
= 31 in LMDZ, call to vdif_kcay). So remove those choices. Not much
used in LMDZ either. Remaining useful choices are iflag = 0, 1, 6, 8,
9.

Remove procedure yamada, which was not used.


Revision 227 - Directory Listing
Modified Thu Nov 2 15:47:03 2017 UTC (6 years, 4 months ago) by guez
Rename phisinit to phis in restart.nc: clearer, same name as Fortran variable.

In aaam_bud, use rlat and rlon from phyetat0_m instead of having these
module variables associated to actual arguments in physiq.

In clmain, too many wind variables make the procedure hard to
understand. Use yu(:knon, 1) and yv(:knon, 1) instead of u1lay(:knon)
and v1lay(:knon). Note that when yu(:knon, 1) and yv(:knon, 1) are
used as actual arguments, they are probably copied to new arrays since
the elements are not contiguous. Rename yu10m to wind10m because this
is the norm of wind vector, not its zonal component. Rename yustar to
ustar. Rename uzon and vmer to u1 and v1 since these are wind
components at first layer and u1 and v1 are the names of corresponding
dummy arguments in stdlevvar.

In clmain, rename yzlev to zlev.

In clmain, screenc, stdlevvar and coefcdrag, remove the code
corresponding to zxli true (not used in LMDZ either).

Subroutine ustarhb becomes a function. Simplifications using the fact
that zx_alf2 = 0 and zx_alf1 = 1 (discarding the possibility to change
this).

In procedure vdif_kcay, remove unused dummy argument plev. Remove
useless computations of sss and sssq.

In clouds_gno, exp(100.) would overflow in single precision. Set
maximum to exp(80.) instead.

In physiq, use u(:, 1) and v(:, 1) as arguments to phytrac instead of
creating ad hoc variables yu1 and yv1.

In stdlevvar, rename dummy argument u_10m to wind10m, following the
corresponding modification in clmain. Simplifications using the fact
that ok_pred = 0 and ok_corr = 1 (discarding the possibility to change
this).


Revision 226 - Directory Listing
Modified Mon Oct 16 13:04:05 2017 UTC (6 years, 5 months ago) by guez
In clmain, u1lay and v1lay do not depend on the subsurface. So output
values of zu1 and zv1 are simply u(:, 1) and v(:, 1). Just remove the
corresponding computations from clmain and define yu1 and yv1 in physiq.


Revision 225 - Directory Listing
Modified Mon Oct 16 12:35:41 2017 UTC (6 years, 5 months ago) by guez
LMDZE is now in Fortran 2003 (use of allocatable arguments).

gradsdef was not used.

Change names: [uv]10m to [uv]10m_srf in clmain, y[uv]1 to
[uv]1lay. Remove useless complication: zx_alf[12]. Do not modify
[uv]1lay after initial definition from [uv].

Add [uv]10m_srf to output.

Change names in physiq: [uv]10m to [uv]10m_srf, z[uv]10m to [uv]10m,
corresponding to NetCDF output names.

Remove unused complication couchelimite and useless variable inirnpb
in phytrac.


Revision 224 - Directory Listing
Modified Fri Apr 28 13:40:59 2017 UTC (6 years, 11 months ago) by guez
offline allows to save variables for another run with offline
transport, but there is no provision for this other run with offline
transport in LMDZE. The procedures read_pstoke and read_pstoke0 in
LMDZ are never called. So removed the possibility offline = T.


Revision 223 - Directory Listing
Modified Fri Apr 28 13:22:36 2017 UTC (6 years, 11 months ago) by guez
In clmain, local variable yfder was computed but not used. I think it
was useful for coupling only. Variable fder_print of pbl_surface in
LMDZ, which is output by LMDZ, corresponds to variable fder of physiq
in LMDZ and LMDZE.


Revision 222 - Directory Listing
Modified Tue Apr 25 15:31:48 2017 UTC (6 years, 11 months ago) by guez
In interfsurf_hq, changed names of variables : tsurf becomes ts (name of
actual argument), tsurf_temp  can then become simply tsurf.


Revision 221 - Directory Listing
Modified Thu Apr 20 14:44:47 2017 UTC (6 years, 11 months ago) by guez
clcdrag is no longer used in LMDZ. Replaced by cdrag in LMDZ. In cdrag
in LMDZ, zxli is a symbolic constant, false. So removed case zxli true
in LMDZE.

read_sst is called zero (if no ocean point on the whole planet) time or
once per call of physiq. If mod(itap - 1, lmt_pas) == 0 then we have
advanced in time of lmt_pas and deja_lu is necessarily false.

qsat[sl] and dqsat[sl] were never called.

Added output of qsurf in histins, following LMDZ.

Last dummy argument dtime of phystokenc is always the same as first
dummy argument pdtphys, removed dtime.

Removed make rules for nag_xref95, since it does not exist any longer.


Revision 220 - Directory Listing
Modified Tue Apr 4 14:52:21 2017 UTC (6 years, 11 months ago) by guez
Removed unused aerosol variables. In procedure sw, ptopswai and
psolswai were always 0.


Revision 219 - Directory Listing
Modified Thu Mar 30 15:59:45 2017 UTC (7 years ago) by guez
In swclr, for ok_ade true, set ppizaz to 1-1d-10, instead of 1, as for
ok_ade false. So flag_aer is no longer needed.


Revision 218 - Directory Listing
Modified Thu Mar 30 15:37:51 2017 UTC (7 years ago) by guez
Simplifications in swclr, following from initialization of ptauaz,
ppizaz and pcgaz to 0.


Revision 217 - Directory Listing
Modified Thu Mar 30 14:25:18 2017 UTC (7 years ago) by guez
run_off_lic downgraded from variable of module interface_surf to local
variable of fonte_neige.

Code could not work with ok_aie set to true, so removed this
possibility. tauae, piz_ae, cg_ae, topswai, solswai were then
0. cldtaupi was the same as cldtaupd.

In sw and procedures called by sw, flag_aer did not need to be double
precision, changed it to logical.

Downgraded re and fl from arguments of newmicro to local
variables. Added output of re and fl (following LMDZ).


Revision 216 - Directory Listing
Modified Tue Mar 28 15:36:53 2017 UTC (7 years ago) by guez
One less multiplication.

Revision 215 - Directory Listing
Modified Tue Mar 28 12:46:28 2017 UTC (7 years ago) by guez
size(snow) is now knon in interfsurf_hq.

Renamed snow to fsnow in clmain, same name as corresponding actual
argument. We can then rename ysnow to simply snow in clmain, same name
as corresponding dummy argument of clqh. No need to initialize local
snow to 0 since it is only used with indices 1:knon and already
initialized from fsnow for each type of surface. If there is no point
for a given type of surface, fsnow should be reset to 0 for this
type. We need to give a valid value to fsnow in this case even if it
will be multiplied by pctsrf = 0 in physiq.

In physiq, no need for intermediate zxsnow for output.

Removed unused arguments tsurf, p1lay, beta, coef1lay, ps, t1lay,
q1lay, u1lay, v1lay, petAcoef, peqAcoef, petBcoef, peqBcoef of
fonte_neige, with unused computations of zx_qs and zcor. (Same was
done in LMDZ.)


Revision 214 - Directory Listing
Modified Wed Mar 22 13:40:27 2017 UTC (7 years ago) by guez
fluxlat, not yfluxlat, should be set to 0 at the beginning of
clmain. So fluxlat is defined for a given type of surface even if
there is no point of this type at the current time step.

fluxlat is defined at each time step in physiq, no need for the save
attribute.


Revision 213 - Directory Listing
Modified Mon Feb 27 15:44:55 2017 UTC (7 years, 1 month ago) by guez
Removed module conema3_m. Moved variables epmax and iflag_clw of
conema3_m to conf_phys_m, where they are defined. Removed unused
variable ok_adj_ema of conema3_m.

Added variables d_t_ec, dtsw0 and dtlw0 to histins.nc (following LMDZ).

Removed case not lessivage in phytrac. (Not used in LMDZ without INCA
either.)


Revision 212 - Directory Listing
Modified Thu Jan 12 12:31:31 2017 UTC (7 years, 2 months ago) by guez
Moved variables from module com_io_dyn to module inithist_m, where
they are defined.

Split grid_atob.f into grille_m.f and dist_sphe.f. Extracted ASCCI art
to documentation. In grille_m, use automatic arrays instead of maximum
size. In grille_m, instead of printing data for every problematic
point, print a single diagnostic message.

Removed variables top_height, overlap, lev_histhf, lev_histday,
lev_histmth, type_run, ok_isccp, ok_regdyn, lonmin_ins, lonmax_ins,
latmin_ins, latmax_ins of module clesphys, not used.

Removed variable itap of module histwrite_phy_m, not used. There is a
variable itap in module time_phylmdz.

Added output of tro3.

In physiq, no need to compute wo at every time-step, since we only use
it in radlwsw.


Revision 211 - Directory Listing
Modified Tue Dec 13 17:23:09 2016 UTC (7 years, 3 months ago) by guez
Removed option online = f in conf_guide (following LMDZ).

Moved computation of alpha_[uvtq] from guide to conf_guide. The aim
(for clarity) is to remove from guide things which should only be done
once. Had then to move computation of dxdyu, dxdyv from init_tau2alpha
to conf_guide to avoid circular dependency (use of guide_u, guide_v in
init_tau2alpha).


Revision 210 - Directory Listing
Modified Tue Dec 13 16:02:23 2016 UTC (7 years, 3 months ago) by guez
Replaced explicit Euler integration of nudged fields by exact
integration (following LMDZ revision 2134).


Revision 209 - Directory Listing
Modified Wed Dec 7 17:37:21 2016 UTC (7 years, 3 months ago) by guez
The program did not work with cycle_diurne set to false. mu0 in
physiq, which is supposed to be a cosine, was set to -999.999. So prmu
in swu had a value of the order of 1e3. So zrmum1 in sw2s had a value
of the order of 1e3. So zrayl in sw2s had a value of the order of
1e15. So ztray and ptauaz in swclr also had a large value. So zcorae
at line 138 in swclr had a large negative value, which resulted in
overflow at line 138.

This assignment of -999.999 to mu0 dates from somewhere between
revisions 348 and 524 of LMDZ. It was corrected in revision 1068 of
LMDZ with a call to angle which was present in revision 348. However,
procedure angle was removed from LMDZE in revision 22 because it was
not used. Hesitated to bring back angle but, finally, just removed the
option of having no diurnal cycle.


Revision 208 - Directory Listing
Modified Wed Dec 7 16:44:53 2016 UTC (7 years, 3 months ago) by guez
Module academic was not used.

Useful values for iflag_phys were only 0 and 1 so changed type to logical.

Definition of fmagic was duplicated in procedures alboc and alboc_cd
so moved it up to interfsurf_hq and also moved multiplication by
fmagic (following LMDZ).


Revision 207 - Directory Listing
Modified Thu Sep 1 10:30:53 2016 UTC (7 years, 6 months ago) by guez
New philosophy on compiler options.

Removed source code for thermcep = f. (Not used in LMDZ either.)


Revision 206 - Directory Listing
Modified Tue Aug 30 12:52:46 2016 UTC (7 years, 6 months ago) by guez
Removed dimension klev of flux_[tquv] and y_flux_[tquv] in
clmain. Removed dimension klev of flux_[tquv] in physiq. Removed
dimension klev of flux_[tq] in hbtm. Removed dimension klev of
flux_[tq] in clqh and computations for layers other than the surface
layer. Removed dimension klev of flux_v in clvent and computations for
layers other than the surface layer. Values for layers other than the
surface layer were not used nor output (not even in LMDZ).

Removed argument dnwd0 of concvl. Simply write - mp in physiq
(following LMDZ).

Removed useless intermediary variables zxflux[tquv] in physiq.


Revision 205 - Directory Listing
Modified Tue Jun 21 15:16:03 2016 UTC (7 years, 9 months ago) by guez
dnwd0 is just - mp. Compute it simply in concvl.

da, phi and mp were set to 0 in physiq before the call to
concvl. Clearer to set da1, phi1 and mp1 to 0 in cv_driver so they are
intent out.

qcheck was debugging, printed to standard output and was called
several times per time step of physics.

zxtsol was a duplicate of ztsol.


Revision 204 - Directory Listing
Modified Wed Jun 8 15:27:32 2016 UTC (7 years, 9 months ago) by guez
Removed calls to diagphy and diagetpq. Those were debugging
procedures, which printed to standard output and were called several
times per time step of physics.


Revision 203 - Directory Listing
Modified Wed Jun 8 15:10:12 2016 UTC (7 years, 9 months ago) by guez
if_ebil in physiq can be modified by reading physiq_nml so tests on
if_ebil should be after reading physiq_nml.


Revision 202 - Directory Listing
Modified Wed Jun 8 12:23:41 2016 UTC (7 years, 9 months ago) by guez
Promoted lmt_pas from local variable of physiq to variable of module
conf_gcm_m.

Removed variable run_off of module interface_surf. Was not
used. Called run_off_ter in LMDZ, but not used nor printed there
either.

Simplified logic in interfoce_lim. The way it was convoluted with
interfsurf_hq and clmain was quite a mess. Extracted reading of SST
into a separate procedure: read_sst. We do not need SST and pctsrf_new
at the same time: SST is not needed for sea-ice surface. I did not
like this programming: going through the procedure repeatedly for
different purposes and testing inside whether there was something to
do or it was already done. Reading is now only controlled by itap and
lmt_pas, instead of debut, jour, jour_lu and deja_lu. Now we do not
copy from pct_tmp to pctsrf_new every time step.

Simplified processing of pctsrf in clmain and below. It was quite
troubling: pctsrf_new was intent out in interfoce_lim but only defined
for ocean and sea-ice. Also the idea of having arrays for all
surfaces, pcsrf and pctsrf_new, in interfsurf_hq, which is called for
a particular surface, was troubling. pctsrf_new for all surfaces was
intent out in intefsurf_hq, but not defined for all surfaces at each
call. Removed argument pctsrf_new of clmain: was a duplicate of pctsrf
on output, and not used in physiq. Replaced pctsrf_new in clmain by
pctsrf_new_oce and pctsrf_new_sic, which were the only ones modified.


Revision 201 - Directory Listing
Modified Mon Jun 6 17:42:15 2016 UTC (7 years, 9 months ago) by guez
Removed intermediary objects of cv_thermo_m, access suphec_m
directly. Procedure cv_thermo disappeared, all objects are named
constants.

In cv_driver and below, limited extents of arrays to what is needed.

lv, cpn and th in cv30_compress were set at level nl + 1 but lv1, cpn1
and th1 are not defined at this level. This did not lead to an error
because values at nl + 1 were not used.

Removed test on ok_sync in phystokenc because it is not read at run
time. Printing min and max of output NetCDF variables is heavy and
archaic.

Used histwrite_phy in phytrac.


Revision 200 - Directory Listing
Modified Thu Jun 2 15:40:30 2016 UTC (7 years, 9 months ago) by guez
Changes results.

Revision 199 - Directory Listing
Modified Tue May 31 16:22:42 2016 UTC (7 years, 9 months ago) by guez
Changes results.

Revision 198 - Directory Listing
Modified Tue May 31 16:17:35 2016 UTC (7 years, 9 months ago) by guez
Removed variables nk1 and nk in cv_driver and below. These arrays were
just equal to the constant minorig. (This is also the case in LMDZ.)

In cv_thermo, removed some variables which were copies of variables of
suphec_m. Changed some variables to named constants.


Revision 197 - Directory Listing
Modified Tue May 24 12:25:29 2016 UTC (7 years, 10 months ago) by guez
Clarified the computation of sigt in cv30_unsat. Replacing pr2 by 1 -
pr1 changes the results.


Revision 196 - Directory Listing
Modified Mon May 23 13:50:39 2016 UTC (7 years, 10 months ago) by guez
Removed argument icbmax of cv30_feed, not used in cv_driver (not used
in LMDZ either).

Clearer to have iflag1 = 0 in cv30_feed than in cv_driver. Clearer to
have iflag1 = 42 in cv30_uncompress than in cv_driver.

Removed argument iflag of cv30_compress. Since there is iflag1 = 42 in
cv30_uncompress, iflag1 that comes out of cv_driver is disconnected
from iflag1 computed by cv30_feed and cv30_trigger.

Removed some references to convect3 and convect4 in comments. This
program derives from the convect3 version, we do not need to know
about other versions.

Bug fix in cv30_undilute1: icbs1 was not made >= 2.


Revision 195 - Directory Listing
Modified Wed May 18 17:56:44 2016 UTC (7 years, 10 months ago) by guez
In cv30_feed, iflag1 is 0 on entry so we can simplify the test for
iflag1 = 7.

In cv30_feed, for the computation of icb, replaced sequential search
(with a useless end of loop on k) by a call to locate.

In CV30 routines, replaced len, nloc, nd, na by klon or
klev. Philosophy: no more generality than actually necessary.

Converted as many variables as possible to named constants in
cv30_param_m and downgraded pbcrit, ptcrit, dtovsh, dpbase, dttrig,
tau, delta to local objects in procedures. spfac, betad and omtrain
are useless and removed.

Instead of filling the array sigp with the constant spfac in
cv30_undilute2, just made sigp a constant in cv30_unsat.

In cv_driver, define as allocatable variables that are only
used on the range (ncum, nl).


Revision 194 - Directory Listing
Modified Thu May 12 14:35:35 2016 UTC (7 years, 10 months ago) by guez
Clarified computation of wdtrain in procedure cv30_unsat: sum
intrinsic instead of loop. Changes results.


Revision 193 - Directory Listing
Modified Thu May 12 13:22:19 2016 UTC (7 years, 10 months ago) by guez
In procedure cv30_unsat, in downdraft_loop, there was a test on
any(inb >= i .and. lwork). It was useless to do this test at each
iteration since, if it becomes true for a given value of i, it is
necessarily true for all subsequent (lower) values of i. So instead,
we compute imax before the loop.

In procedure cv30_unsat, no need to initialize wdtrain to 0 because it
is computed inside the loop at all positions where it will be useful.


Revision 192 - Directory Listing
Modified Thu May 12 13:00:07 2016 UTC (7 years, 10 months ago) by guez
Removed the possibility to read aerosol fields. This was not
operational. It required fields already regridded in the three
dimensions. It seems quite weird to me not to have online vertical
regridding, since the surface pressure varies. There was the
possibility of adding vertical regridding. But development is not in
the spirit of LMDZE. Furthermore, the treatment of aerosols that was
in LMDZE is completely obsolete in LMDZ. We could try importing the
up-to-date treatment of aerosols of LMDZ, but that carries LMDZE quite
far: there is the problem of the calendar and the problem of updated
radiative transfer required for updated aerosols.


Revision 191 - Directory Listing
Modified Mon May 9 19:56:28 2016 UTC (7 years, 10 months ago) by guez
Extracted the call to read_comdissnew out of conf_gcm.

Made ok_instan a variable of module clesphys, itau_phy a variable of
module phyetat0_m, nid_ins a variable of module ini_histins_m, itap a
variable of new module time_phylmdz, so that histwrite_phy can be
called from any procedure without the need to cascade those variables
into that procedure. Made itau_w a variable of module time_phylmdz so
that it is computed only once per time step of physics.

Extracted variables of module clesphys which were in namelist
conf_phys_nml into their own namelist, clesphys_nml, and created
procedure read_clesphys reading clesphys_nml, to avoid side effect.

No need for double precision in procedure getso4fromfile. Assume there
is a single variable for the whole year in the NetCDF file instead of
one variable per month.

Created generic procedure histwrite_phy and removed procedure
write_histins, following LMDZ. histwrite_phy has only two arguments,
can be called from anywhere, and should manage the logic of writing or
not writing into various history files with various operations. So the
test on ok_instan goes inside histwrite_phy.

Test for raz_date in phyetat0 instead of physiq to avoid side effect.

Created procedure increment_itap to avoid side effect.

Removed unnecessary differences between procedures readsulfate and
readsulfate_pi.


Revision 190 - Directory Listing
Modified Thu Apr 14 15:15:56 2016 UTC (7 years, 11 months ago) by guez
Created module cv_thermo_m around procedure cv_thermo. Moved variables
from module cvthermo to module cv_thermo_m, where they are defined.

In ini_histins and initphysto, using part of rlon and rlat from
phyetat0_m is pretending that we do not know about the dynamical grid,
while the way we extract zx_lon(:, 1) and zx_lat(1, :) depends on
ordering inside rlon and rlat. So we might as well simplify and
clarify by using directly rlonv and rlatu.

Removed intermediary variables in write_histins and phystokenc.


Revision 189 - Directory Listing
Modified Tue Mar 29 15:20:23 2016 UTC (8 years ago) by guez
There was a function gr_phy_write_3d in dyn3d and a function
gr_phy_write_2d in module grid_change. Moved them into a new module
gr_phy_write_m under a generic interface gr_phy_write. Replaced calls
to gr_fi_ecrit by calls to gr_phy_write.

Removed arguments len, nloc and nd of cv30_compress.

Removed arguments wd and wd1 of cv30_uncompress, wd of cv30_yield, wd
of concvl, wd1 of cv_driver. Was just filled with 0. Removed option
ok_gust in physiq, never used.

In cv30_unsat, cv30_yield and cv_driver, we only need to define b to
level nl - 1.


Revision 188 - Directory Listing
Modified Tue Mar 22 16:31:39 2016 UTC (8 years ago) by guez
Removed argument ncum of cv30_unsat, arguments nloc, ncum, nd, na of cv30_yield.


Revision 187 - Directory Listing
Modified Mon Mar 21 18:01:02 2016 UTC (8 years ago) by guez
Made variable nl of module cv30_param_m a parameter. There was no
coding allowing it to change.

Removed arguments nloc and nd of cv30_undilute2, arguments nloc, nd
and na of cv30_unsat. Just use klon and klev directly (going for
clarity).

Removed the option cvflag_grav = f. This was a lot of redundant code,
probably obsolete, and cvflag_grav was initialized to true with no
provision for changing it (as in LMDZ).

In cv30_unsat, downdraft_loop started at i = nl + 1, but for i >= nl,
i > inb, so num1 = 0.


Revision 186 - Directory Listing
Modified Mon Mar 21 15:36:26 2016 UTC (8 years ago) by guez
Removed variables nlm and nlp of module cv30_param_m. We do not
believe much in the benefit of these intermediary variables so we go
for clarity.

Removed variable noff of module cv30_param_m. Never used anywhere
else. Just set the value of nl explicitly in cv30_param.

Removed argument nd of cv30_param. Only called with nd = klev.

Replaced calls to zilch by array assignments. There was a strange
double call to zilch with the same arguments in cv30_mixing.

Removed procedure cv_flag. Just set the value of variable cvflag_grav
of module cvflag at declaration.


Revision 185 - Directory Listing
Modified Wed Mar 16 15:04:46 2016 UTC (8 years ago) by guez
CV3 to CV30 (following LMDZ) (continued).

Revision 184 - Directory Listing
Modified Wed Mar 16 14:50:46 2016 UTC (8 years ago) by guez
CV3 to CV30 (following LMDZ).

Revision 183 - Directory Listing
Modified Wed Mar 16 14:42:58 2016 UTC (8 years ago) by guez
Removed argument snow_con of concvl. Just set snow_con to 0 in physiq
instead of in concvl.

Removed unused argument cbmf1 of cv_driver.

Added computation and output of ptop (following LMDZ).


Revision 182 - Directory Listing
Modified Wed Mar 16 11:11:27 2016 UTC (8 years ago) by guez
Replaced integer variable iflag_con of module clesphys2 by logical
variable conv_emanuel.


Revision 181 - Directory Listing
Modified Tue Mar 15 17:51:30 2016 UTC (8 years ago) by guez
Removed the option iflag_con == 4. This seems to be a coding of the
Emanuel scheme equivalent to and older than the coding for iflag_con
== 3.


Revision 180 - Directory Listing
Modified Tue Mar 15 17:07:47 2016 UTC (8 years ago) by guez
In procedure concvl, renamed arguments snow to snow_con and ktop to
itop_con (names of corresponding actual arguments in physiq). Removed
useless argument pmflxs. Removed the alternative between iflag_con ==
3 or 4, the same computations were done in both cases.


Revision 179 - Directory Listing
Modified Fri Mar 11 18:58:19 2016 UTC (8 years ago) by guez
Replaced call to regr1_step_av by call to regr1_conserv.

Revision 178 - Directory Listing
Modified Fri Mar 11 18:47:26 2016 UTC (8 years ago) by guez
Moved variables date0, deltat, datasz_max, ncvar_ids, point, buff_pos,
buffer, regular from module histcom_var to modules where they are
defined.

Removed procedure ioipslmpp, useless for a sequential program.

Added argument datasz_max to histwrite_real (to avoid circular
dependency with histwrite).

Removed useless variables and computations everywhere.

Changed real litteral constants from default kind to double precision
in lwb, lwu, lwvn, sw1s, swtt, swtt1, swu.

Removed unused arguments: paer of sw, sw1s, sw2s, swclr; pcldsw of
sw1s, sw2s; pdsig, prayl of swr; co2_ppm of clmain, clqh; tsol of
transp_lay; nsrf of screenp; kcrit and kknu of gwstress; pstd of
orosetup.

Added output of relative humidity.


Revision 177 - Directory Listing
Modified Wed Feb 24 18:44:07 2016 UTC (8 years, 1 month ago) by guez
Removed the option to use PPM3D advection schemes. This looks really
bugged. In particular, in ppm3d:
     do i=1,IMR*JMR
	CRY(i,2) = DTDY*V(i,1,k)
     end do
while cry is declared as:
real CRY(IMR,JNP)
and:
jmr = jnp - 1

Also removed options for Slopes and Prather advection schemes. This
does not look functional. It seems it needs tracers inside tracers.

Also removed allowed values 1 and 2 for iadv in iniadvtrac. These are
not implemented in advtrac.

With the removal of PPM3D, there is no longer any need to distinguish
between hadv and vadv in iniadvtrac.


Revision 176 - Directory Listing
Modified Tue Feb 23 17:00:39 2016 UTC (8 years, 1 month ago) by guez
1e-60 was underflowing in simple precision.

Revision 175 - Directory Listing
Modified Fri Feb 5 16:02:34 2016 UTC (8 years, 1 month ago) by guez
Added argument itau_phy to ini_histins, phyetat0, phytrac and
phyredem0. Removed variable itau_phy of module temps. Avoiding side
effect in etat0 and phyetat0. The procedures ini_histins, phyetat0,
phytrac and phyredem0 are all called by physiq so there is no
cascading variable penalty.

In procedure inifilr, made the condition on colat0 weaker to allow for
rounding error.

Removed arguments flux_o, flux_g and t_slab of clmain, flux_o and
flux_g of clqh and interfsurf_hq, tslab and seaice of phyetat0 and
phyredem. NetCDF variables TSLAB and SEAICE no longer in
restartphy.nc. All these variables were related to the not-implemented
slab ocean. seaice and tslab were just set to 0 in phyetat0 and never
used nor changed. flux_o and flux_g were computed in clmain but never
used in physiq.

Removed argument swnet of clqh. Was used only to compute a local
variable, swdown, which was not used.


Revision 174 - Directory Listing
Modified Wed Nov 25 20:14:19 2015 UTC (8 years, 4 months ago) by guez
Simplifications in procedure albsno. Since veget(:, 2:) was 0,
iterations 2 to nvm of the loop computing alb_neig_grid were useless.

Useless initializations of alb_neige in procedure interfsurf_hq:
alb_neig is always computed by albsno just before being used. Useless
computation of local variable zfra in the land ice case.


Revision 173 - Directory Listing
Modified Tue Oct 6 15:57:02 2015 UTC (8 years, 5 months ago) by guez
correctbid did nothing. (Not used either in LMDZ since revision 1170.)

Avoid aliasing in arguments of nat2gcm: use a single set of arguments
with intent inout. Argument q of nat2gcm was not used.

pres2lev now accepts po in any monotonic order. So the input files for
nudging can now have the pressure coordinate in any order. Also, we
read the latitude coordinate from the input files for nudging and we
invert order if necessary so the input files for nudging can now have
the latitude coordinate in any order.

In pre2lev, no need for lmomx: use automatic arrays.

Removed variable ncep of module conf_guide_m. Instead, we find out
what the pressure coordinate is with find_coord.



Revision 172 - Directory Listing
Modified Wed Sep 30 15:59:14 2015 UTC (8 years, 5 months ago) by guez
Just indented correctbid and nat2gcm.

The procedure read_reanalyse just reads the next time slab every time
it is called. No use keeping track of the time index in the calling
procedure, guide. It is simpler to do it in read_reanalyse. Also
simpler to read the number of vertical levels in read_reanalyse than
in guide, since we have already in read_reanalyse the input of
pressure levels. We then have to make the arrays containing reanalyses
static allocatable instead of automatic. Also only read pressure
levels at the first call of read_reanalyse instead of at every call.

masserea2 not used in guide. Remove it down the chain in
read_reanalyse and reanalyse2nat.


Revision 171 - Directory Listing
Modified Tue Sep 29 19:48:59 2015 UTC (8 years, 6 months ago) by guez
Removed argument ierr of abort_gcm. It was always 1 and not used.

Just encapsulated pres2lev into a module.

Removed test on run_off in procedure calcul_fluxs. Useless. The test
is always done just before in interfsurf_hq.

Removed named constants rea and repsm in module suphec: never used.


Revision 170 - Directory Listing
Modified Mon Sep 14 17:25:15 2015 UTC (8 years, 6 months ago) by guez
Eignvectors computed by procedure jacobi are already normalized. No
need to call acc.


Revision 169 - Directory Listing
Modified Mon Sep 14 17:13:16 2015 UTC (8 years, 6 months ago) by guez
In inifilr_hemisph, colat0 is necessarily >= 1. / rlamda(iim) (see
notes) so we simplify the definition of jfilt. No need to keep modfrst
values at other latitudes than the current one, and we can have one
loop on latitudes instead of two.

Just encapsulated transp into a module.


Revision 168 - Directory Listing
Modified Wed Sep 9 10:41:47 2015 UTC (8 years, 6 months ago) by guez
In order to be able to choose finer resolutions, set large memory
model in compiler options and use dynamic libraries.

Variables rlatd, rlond, cuphy and cvphy of module comgeomphy were
never used. (In LMDZ, they are used only for Orchid.)

There is a bug in PGI Fortran 13.10 that does not accept the
combination of forall, pack and spread in regr_pr_av and
regr_pr_int. In order to circumvent this bug, created the function
gr_dyn_phy.

In program test_inifilr, use a single latitude coordinate for north
and south.


Revision 167 - Directory Listing
Modified Mon Aug 24 16:30:33 2015 UTC (8 years, 7 months ago) by guez
Added program test_inifilr.

Encapsulated ppm3d into a module and added implicit none. Removed
unused argument dum.

Encountered a problem in procedure invert_zoom_x. With grossismx=2.9,
DZOOMX=0.3, taux=5, for xuv = -0.25, for i = 1, rtsafe fails because
fval is about 1e-16 instead of 0 at xval = pi. So distinguished the
cases abs_y = 0 or pi. Needed then to add argument beta to
invert_zoom_x.

Moved the output of eignvalues of differentiation matrix from inifilr
to inifgn, where they are computed.

Simpler definition of j1 in inifilr.


Revision 166 - Directory Listing
Modified Wed Jul 29 14:32:55 2015 UTC (8 years, 8 months ago) by guez
Split ppm3d.f into files containing a single procedure.

Factorized computations of filtering matrices into a procedure
inifilr_hemisph. Had then to change the matrices from allocatable to
pointer and from customized lower bound to lower bound 1. The change
in lower bounds does not matter because the matrices are only used as
a whole as actual arguments.

Also, in infilr, instead of finding jfilt[ns][uv] from approximately
jjm /2, start at index j1 that corresponds to the equator. This is not
the same if there is a zoom in latitude.

Also, the test (rlamda(modfrst[ns][uv](j)) * cos(rlat[uv](j)) < 1) in
the loops on filtered latitudes is not useful now that we start from
j1: it is necessarily true. See notes.

Just encapsulated lwvn into a module and removed unused argument ktraer.


Revision 165 - Directory Listing
Modified Wed Jul 29 09:52:33 2015 UTC (8 years, 8 months ago) by guez
In procedure inifilr, no use keeping values of coefil for all
latitudes. Just reuse a one-dimensional array. We can do this by
moving computation of coefil in the loops for computation of filtering
matrices. We avoid a redundant computation of coefil by putting the
computation of direct and inverse matrices inside a same loop on
latitudes.

Instead of writing to output file only modfrst, also write associated
latitudes and whether a mode to filter was found.

If a mode was not found (rlamda(modfrst(j)) * cos(rlat(j)) >= 1.) then
the filtering matrix at this latitude is null. So we move this test at
the highest level inside the loop on filtered latitudes. Note that, by
doing so, we do not need to initialize coefil at 0 any longer.


Revision 164 - Directory Listing
Modified Tue Jul 28 14:53:31 2015 UTC (8 years, 8 months ago) by guez
In procedure inifilr, coefilu2 and coefilv2 were not used. coefilu and
coefilv were defined and used only at filtered latitudes so split them
into north and south arrays. Values in eignvl are necessarily
negative. Simplified the computation of eignft.


Revision 163 - Directory Listing
Modified Fri Jul 24 18:14:04 2015 UTC (8 years, 8 months ago) by guez
In etat0, do not use masse computed by caldyn0, use masse averaged at
the poles which is computed higher in etat0 (following LMDZ). Changes
restart.nc.


Revision 162 - Directory Listing
Modified Fri Jul 24 16:54:30 2015 UTC (8 years, 8 months ago) by guez
Variable pls of module pressure_var was only modified by calfis but I
could not move it to module calfis_m because it was used by a
procedure called by calfis (it would have been a cyclic
dependency). In the same way, variable p3d of module pressure_var was
only modified by leapfrog but I could not move it to module
leapfrog_m. So removed module pressure_var. p3d becomes a local
variable of leapfrog and an argument of calfis. Use paprs and play in
regr_pr_int and regr_pr_av (following LMDZ). The idea in regr_pr_int
and regr_pr_av is to spread and pack before the regridding instead of
packing afterward. The cost in memory should only be a two-dimensional
temporary array created by spread. The cost in clarity is only the
transiting of paprs and pplay through regr_pr_comb_coefoz, but this is
more than compensated by removing the side effect on module variables.


Revision 161 - Directory Listing
Modified Fri Jul 24 14:27:59 2015 UTC (8 years, 8 months ago) by guez
rlon[uv] and rlat[uv] are already in start.nc.

Just encapsulated covcont in a module.

finvmaold was not used in leapfrog. Downgraded it from dummy argument
to local variable of SUBROUTINE integrd.

Simplified handling of mass in integrd: down from five 3-dimensional
arrays (masse, massem1, finvmaold, massescr and finvmasse) to three
(masse, massem1, finvmaold).


Revision 160 - Directory Listing
Modified Tue Jul 21 15:30:12 2015 UTC (8 years, 8 months ago) by guez
Write variables from phytrac to "histins.nc" instead of
"histrac.nc". The idea is to have different output files only if they
have different coordinates, and not according to content (following LMDZ).


Revision 159 - Directory Listing
Modified Tue Jul 21 15:29:52 2015 UTC (8 years, 8 months ago) by guez
Write variables from phytrac to "histins.nc" instead of
"histrac.nc". The idea is to have different output files only if they
have different coordinates, and not according to content (following LMDZ).


Revision 158 - Directory Listing
Modified Tue Jul 21 14:44:45 2015 UTC (8 years, 8 months ago) by guez
Subroutine sugwd sets variables of module yoegwd. Better to put it
into module yoegwd.

Variables of module yoegwd other than NKTOPG, NSTRA can be symbolic
constants. sugwd now only sets NKTOPG, NSTRA. Simplified the
computation of NKTOPG, NSTRA by making the local variable zpm1r an
array instead of a scalar and calling ifirstloc.


Revision 157 - Directory Listing
Modified Mon Jul 20 16:01:49 2015 UTC (8 years, 8 months ago) by guez
Just encapsulated SUBROUTINE vlsplt in a module and cleaned it.

In procedure vlx, local variables dxqu and adxqu only need indices
iip2:ip1jm. Otherwise, just cleaned vlx.

Procedures dynredem0 and dynredem1 no longer have argument fichnom,
they just operate on a file named "restart.nc". The programming
guideline here is that gcm should not be more complex than it needs by
itself, other programs (ce0l etc.) just have to adapt to gcm. So ce0l
now creates files "restart.nc" and "restartphy.nc".

In order to facilitate decentralizing the writing of "restartphy.nc",
created a procedure phyredem0 out of phyredem. phyredem0 creates the
NetCDF header of "restartphy.nc" while phyredem writes the NetCDF
variables. As the global attribute itau_phy needs to be filled in
phyredem0, at the beginnig of the run, we must compute its value
instead of just using itap. So we have a dummy argument lmt_pas of
phyredem0. Also, the ncid of "startphy.nc" is upgraded from local
variable of phyetat0 to dummy argument. phyetat0 no longer closes
"startphy.nc".

Following the same decentralizing objective, the ncid of "restart.nc"
is upgraded from local variable of dynredem0 to module variable of
dynredem0_m. "restart.nc" is not closed at the end of dynredem0 nor
opened at the beginning of dynredem1.

In procedure etat0, instead of creating many vectors of size klon
which will be filled with zeroes, just create one array null_array.

In procedure phytrac, instead of writing trs(: 1) to a text file,
write it to "restartphy.nc" (following LMDZ). This is better because
now trs(: 1) is next to its coordinates. We can write to
"restartphy.nc" from phytrac directly, and not add trs(: 1) to the
long list of variables in physiq, thanks to the decentralizing of
"restartphy.nc".

In procedure phyetat0, we no longer write to standard output the
minimum and maximum values of read arrays. It is ok to check input and
abort on invalid values but just printing statistics on input seems too
much useless computation and out of place clutter.


Revision 156 - Directory Listing
Modified Thu Jul 16 17:39:10 2015 UTC (8 years, 8 months ago) by guez
In procedure cltracrn, no need for local variable zx_trs, use directly
local_trs.

In (re)startphy.nc, agglomerate variables for different surface types
into a single variable with an added dimension.

In phyredem, bring together all definitions, do not use redef.


Revision 155 - Directory Listing
Modified Wed Jul 8 17:03:45 2015 UTC (8 years, 8 months ago) by guez
Do not write any longer to startphy.nc nor read from restartphy.nc the
NetCDF variable ALBLW: it was the same than ALBE. ALBE was for the
visible and ALBLW for the near infrared. In physiq, use only variables
falbe and albsol, removed falblw and albsollw. See revision 888 of
LMDZ.

Removed unused arguments pdp of SUBROUTINE lwbv, ptave of SUBROUTINE
lwv, kuaer of SUBROUTINE lwvd, nq of SUBROUTINE initphysto.


Revision 154 - Directory Listing
Modified Tue Jul 7 17:49:23 2015 UTC (8 years, 8 months ago) by guez
Removed argument dtphys of physiq. Use it directly from comconst in
physiq instead.

Donwgraded variables eignfnu, eignfnv of module inifgn_m to dummy
arguments of SUBROUTINE inifgn. They were not used elsewhere than in
the calling procedure inifilr. Renamed argument dv of inifgn to eignval_v.

Made alboc and alboc_cd independent of the size of arguments. Now we
can call them only at indices knindex in interfsurf_hq, where we need
them. Fixed a bug in alboc_cd: rmu0 was modified, and the
corresponding actual argument in interfsurf_hq is an intent(in)
argument of interfsurf_hq.

Variables of size knon instead of klon in interfsur_lim and interfsurf_hq.

Removed argument alb_new of interfsurf_hq because it was the same than
alblw. Simplified test on cycle_diurne, following LMDZ.

Moved tests on nbapp_rad from physiq to read_clesphys2. No need for
separate counter itaprad, we can use itap. Define lmt_pas and radpas
from integer input parameters instead of real-type computed values.


Revision 153 - Directory Listing
Modified Tue Jun 23 18:26:18 2015 UTC (8 years, 9 months ago) by guez
Changes results.


Revision 152 - Directory Listing
Modified Tue Jun 23 18:18:12 2015 UTC (8 years, 9 months ago) by guez
Clarification in procedure inifgn. The cost is that we use 3 instead
of 2 local 2-dimensional arrays. eignfnv and eignfnu were used as
temporary arrays to compute input to jacobi before being used as
arguments of jacobi. The corresponding dummy argument is intent(out)
in jacobi. It is clearer to have eignfnv and eignfnu appear only as
arguments of jacobi.


Revision 151 - Directory Listing
Modified Tue Jun 23 15:14:20 2015 UTC (8 years, 9 months ago) by guez
In procedure inifilr, only a part of the arrays modfrstu and modfrstv
were defined. Split these into 4 arrays that are fully defined and
used: modfrst[ns][uv].

Clarified the logic for the computation of jfilt[ns][uv]. Changed the
initial value of the search so that the initial values for northern
hemisphere and southern hemisphere cannot be the same.

Clarified the logic for the computation of modfrst[ns][uv]: removed
the cycle and exit instructions.


Revision 150 - Directory Listing
Modified Thu Jun 18 13:49:26 2015 UTC (8 years, 9 months ago) by guez
Removed unused arguments of groupe, cv3_undilute2, cv_undilute2,
interfsur_lim, drag_noro, orodrag, gwprofil

Chickened out of revision 148: back to double precision in
invert_zoom_x (and overloaded rtsafe).


Revision 149 - Directory Listing
Modified Thu Jun 18 12:23:44 2015 UTC (8 years, 9 months ago) by guez
In invert_zoom_x, call rtsafe instead of the equivalent coding that
was there. funcd needs to access a[0-4] and abs_y so we upgrade a[0-4]
from arguments of coefpoly to variables of module coefpoly_m and abs_y
from local variable of invert_zoom_x to private variable of module
invert_zoom_x_m.

Removed unused arguments t10m and q10m of hbtm.


Revision 148 - Directory Listing
Modified Wed Jun 17 16:40:24 2015 UTC (8 years, 9 months ago) by guez
Renamed variables in fxhyp and invert_zoom_x to be closer to external
documentation. Changed from double precision to real in invert_zoom_x:
I do not see the need for double precision and double precision is
annoying because I want to use rtsafe without overloading it in
Numer_Rec_95.

Results are changed at the numerical noise level.


Revision 147 - Directory Listing
Modified Wed Jun 17 14:20:14 2015 UTC (8 years, 9 months ago) by guez
In procedure fxhyp, instead of computing twice the integral of F,
store it the first time: ffdx becomes an array and we do not need xxpr
any longer. The storage is the same, there is less computation.

In procedure grid_noro, instead of storing the non-smoothed orography
in a temporary array zmea0, compute zphi earlier.


Revision 146 - Directory Listing
Modified Tue Jun 16 17:27:33 2015 UTC (8 years, 9 months ago) by guez
We use the fact that \tilde X is an odd function in invert_zoom_x so
we only need arrays for the domain \tilde x \in [0, \pi].


Revision 145 - Directory Listing
Modified Tue Jun 16 15:23:29 2015 UTC (8 years, 9 months ago) by guez
Renamed bibio to misc.

In procedure fxhyp, use the fact that xf is an odd function of xtild.

In procedure invert_zoom_x, replace linear search in xf by
bisection. Also, use result from previous loop iteration as initial
guess. Variable "it" cannot be equal to 2 * nmax after search.

Unused arguments: hm of cv3_feed; ph, qnk, tv,tvp of cv3_mixing; ppsol
of lw; rconst, temp of vdif_kcay; rconst, plev, temp, ustar, l_mix of
yamada.


Revision 144 - Directory Listing
Modified Wed Jun 10 16:46:46 2015 UTC (8 years, 9 months ago) by guez
In procedure fxhyp, the convoluted computation of tanh(fa/fb) occurred
three times. Extracted it into a function. Also, the computation of
xmoy and fxm was repeated. So stored the values in arrays instead.

In procedure fxhyp, in the computation of fhyp, there were tests
xtild(i) == 0. and xtild(i) == pi_d. No use to do these tests at each
iteration. We now they are true for i == nmax and i == 2 * nmax,
respectively, and we know they are false for other values of
"i". Similarly, in the computations of ffdx and xxpr, there were the
tests xmoy == 0. and xmoy == pi_d, these could not be true.

Moved files from bibio to dyn3d, following LMDZ.


Revision 143 - Directory Listing
Modified Tue Jun 9 14:32:46 2015 UTC (8 years, 9 months ago) by guez
Removed argument d of procedure acc. Was probably here just because
automatic arrays were unknown.

eigen_sort was eigsrt from Numerical Recipes.

In procedure inifilr, create file "eignvl.txt" instead of writing to
standard output.


Revision 142 - Directory Listing
Modified Fri Jun 5 19:31:37 2015 UTC (8 years, 9 months ago) by guez
This revision changes results.


Revision 141 - Directory Listing
Modified Fri Jun 5 19:21:08 2015 UTC (8 years, 9 months ago) by guez
Procedure filtreg_hemisph is always called with sdd2 = 1 / sdd1. It
would not make sense otherwise. I do not like that this does not
appear explicitly in filtreg_hemisph. So replaced the two arguments
sdd1 and sdd2 by a single argument sdd. The cost is computing a
division instead of multplication for every 3-dimensional
position. Besides, this changes the results.


Revision 140 - Directory Listing
Modified Fri Jun 5 18:58:06 2015 UTC (8 years, 9 months ago) by guez
Changed unit of variables lat_min_guide and lat_max_guide from module
conf_guide_m from degrees to rad. Then we do not have to convert the
whole array rlat from rad to degrees in SUBROUTINE tau2alpha.

Removed some useless computations in inigeom.

Removed module coefils. Moved variables sddv, unsddv, sddu, unsddu,
eignfnu, eignfnv of module coefils to module inifgn_m. Downgraded
variables coefilu, coefilu2, coefilv, coefilv2, modfrstu, modfrstv of
module coefils to local variables of SUBROUTINE inifilr.

Write and read a 3-dimensional variable Tsoil in restartphy.nc and
startphy.nc instead of multiple variables for the different
subs-urfaces and soil layers. This does not allow any longer to
provide only the surface value in startphy.nc and spread it to other
layers. Instead, if necessary, pre-process the file startphy.nc to
spread the surface value.


Revision 139 - Directory Listing
Modified Tue May 26 17:46:03 2015 UTC (8 years, 10 months ago) by guez
dynetat0 read rlonu, rlatu, rlonv, rlatv, cu_2d, cv_2d, aire_2d from
"start.nc" and then these variables were overwritten by
inigeom. Corrected this. Now, inigeom does not compute rlonu, rlatu,
rlonv and rlatv. Moreover, cu_2d, cv_2d, aire_2d are not written to
"restart.nc". Since xprimu, xprimv, xprimm025, xprimp025, rlatu1,
rlatu2, yprimu1, yprimu2 are computed at the same time as rlonu,
rlatu, rlonv, rlatv, and since it would not be convenient to separate
those computations, we decide to write xprimu, xprimv, xprimm025,
xprimp025, rlatu1, rlatu2, yprimu1, yprimu2 into "restart.nc", read
them from "start.nc" and not compute them in inigeom. So, in summary,
"start.nc" contains all the coordinates and their derivatives, and
inigeom only computes the 2D-variables.

Technical details:

Moved variables rlatu, rlonv, rlonu, rlatv, xprimu, xprimv from module
comgeom to module dynetat0_m. Upgraded local variables rlatu1,
yprimu1, rlatu2, yprimu2, xprimm025, xprimp025 of procedure inigeom to
variables of module dynetat0_m.

Removed unused local variable yprimu of procedure inigeom and
corresponding argument yyprimu of fyhyp.

Moved variables clat, clon, grossismx, grossismy, dzoomx, dzoomy,
taux, tauy from module serre to module dynetat0_m (since they are read
from "start.nc"). The default values are now defined in read_serre
instead of in the declarations. Changed name of module serre to
read_serre_m, no more module variable here.

The calls to fxhyp and fyhyp are moved from inigeom to etat0.

Side effects in programs other than gcm: etat0 and read_serre write
variables of module dynetat0; the programs test_fxyp and
test_inter_barxy need more source files.

Removed unused arguments len and nd of cv3_tracer. Removed unused
argument PPSOL of LWU.

Bug fix in test_inter_barxy: forgotten call to read_serre.


Revision 138 - Directory Listing
Modified Fri May 22 23:13:19 2015 UTC (8 years, 10 months ago) by guez
Moved variable nb_files from module histcom_var to module
histbeg_totreg_m.

Removed unused argument q of writehist.

No history file is created in program ce0l so there is no need to call
histclo in etat0.

In phyredem, access variables rlat and rlon directly from module
phyetat0_m instead of having them as arguments. This is clearer for
the program gcm. There are bad side effects for the program ce0l: we
have to modify the module variables rlat and rlon in procedure etat0,
and we need the additional file phyetat0.f to compile ce0l.


Revision 137 - Directory Listing
Modified Wed May 6 15:51:03 2015 UTC (8 years, 10 months ago) by guez
Removed unused argument missval in ma_fucoll_r[1-3]1, ma_fufill_r[1-3]1.

Split filtreg into two procedures: filtreg_scal and filtreg_v. I did
not like the test on the extent of the argument and there was no
common code between the two cases: jjm and jjm + 1. Also, it is
simpler now to just remove the argument "direct" from filtreg_v instead
of allowing it and then stopping the program if it is false.

Removed the computation of pkf in reanalyse2nat, was not used.

As a consequence of the split of filtreg, had to extract the
computation of pkf out of exner_hyb. This is clearer anyway because we
want to be able to call exner_hyb with any size in the first two
dimensions (as in test_disvert). But at the same time exner_hyb
required particular sizes for the computation of pkf. It was
awkward. The only computation of pkf is now in leapfrog.


Revision 136 - Directory Listing
Modified Thu Apr 30 18:35:49 2015 UTC (8 years, 11 months ago) by guez
Clarified the logic in filtreg by creating a procedure
filtreg_hemisph. It was terrible with a loop on hemispheres and tests
on hemisphere inside the loop, plus maddening indirections on latitude
bounds, plus repeated code. Went from 126 lines to much clearer 74 +
32 = 106 lines.

In module inifilr_m, finally made the arrays matrice[uv][ns],
matrinv[ns] dynamic (following LMDZ). Changed the lower bound of
matriceun and matrinvn in the 3rd dimension: 2 instead of 1, the index
1 was not defined (nor used).

In module inifilr_m, changed the bounds of matriceus and matrinvs in
the 3rd dimension: jfiltsu:jjm instead of 1:jjm - jfiltsu + 1. Changed
the bounds of matricevs in the 3rd dimension: jfiltsv:jjm instead of
1:jjm - jfiltsv + 1. It is a little simpler and clearer this way in
procedure inifilr.



Revision 135 - Directory Listing
Modified Thu Apr 30 14:22:32 2015 UTC (8 years, 11 months ago) by guez
Use matmul in filtreg.

Revision 134 - Directory Listing
Modified Wed Apr 29 15:47:56 2015 UTC (8 years, 11 months ago) by guez
Sources inside, compilation outside.

Revision 133 - Directory Listing
Modified Wed Apr 29 15:34:15 2015 UTC (8 years, 11 months ago) by guez
Transformed bernoui from subroutine to function.

Revision 132 - Directory Listing
Modified Fri Mar 20 16:31:06 2015 UTC (9 years ago) by guez
Removed procedure jacobi, which was a copy of the file from Numerical
Recipes in Fortran 77. Refer to the Numer_Rec_95 library instead.

There was a strange line in procedure coordij: j cannot be equal to 0
after the loop on j.


Revision 131 - Directory Listing
Modified Fri Feb 27 16:44:07 2015 UTC (9 years, 1 month ago) by guez
Renamed procedure fxhyp_loop_ik to invert_zoom_x.

Bug fix. clat is now in rad so there should be no conversion in
fyhyp. (This bug had an effect only if clat was /= 0.)

No need for heavyside to be double precision.

Removed variable tnom of module iniadvtrac_m. Was redundant with tname.


Revision 130 - Directory Listing
Modified Tue Feb 24 15:43:51 2015 UTC (9 years, 1 month ago) by guez
The information in argument rdayvrai of calfis was redundant with the
information in argument time. Furthermore, in the physics part of gcm,
we need separately the day number (an integer) and the time of
day. So, replaced real argument rdayvrai of calfis containing elapsed
time by integer argument dayvrai containing day number. Corresponding
change in leapfrog. In procedure physiq, replaced real argument
rdayvrai by integer argument dayvrai. In procedures readsulfate and
readsulfate_preind, replaced real argument r_day by arguments dayvrai
and time.

In procedure alboc, replaced real argument rjour by integer argument
jour. alboc was always called by interfsurf_hq with actual argument
real(jour), and the meaning of the dummy argument in alboc seems to be
that it should be an integer.

In procedure leapfrog, local variable time could not be > 1. Removed
test.

In physiq, replaced nint(rdayvrai) by dayvrai. This changes the
results since julien now changes at 0 h instead of 12 h. This follows
LMDZ, where the argument of ozonecm is days_elapsed+1.


Revision 129 - Directory Listing
Modified Fri Feb 13 18:22:38 2015 UTC (9 years, 1 month ago) by guez
Removed arguments day0, anne0 of procedures initdynav and
inithist. Use directly day_ref, annee_ref instead.

Moved variables annee_ref, day_ref of module temps to module
dynetat0_m. Deleted variables dayref and anneeref of module conf_gcm_m
and removed them from namelist conf_gcm_nml. These variables were
troubling intermediary on the way to annee_ref and day_ref. Gave as
default values to annee_ref and day_ref the default values of dayref
and anneeref. Moved the test on raz_date from main unit gcm to
procedure dynetat0. Created namelist dynetat0_nml. Read annee_ref and
day_ref from standard input in dynetat0 and redefine them from
"start.nc" if not raz_date. Rationale: 1 - Choose the best programming
from the point of view of program gcm only, forgetting program ce0l. 2
- The normal case is to define annee_ref and day_ref from "start.nc"
so put them in module dynetat0_m rather than in conf_gcm_m. 3 - Try to
always read the same namelists in the same order regardless of choices
in previous namelists. Downsides: 1 -We now need the file "dynetat0.f"
for the program ce0l, because dynetat0_m is used by dynredem0. 2 - We
need to define annee_ref and day_ref from procedure etat0.

Removed useless variable day_end of module temps.


Revision 128 - Directory Listing
Modified Thu Feb 12 16:23:33 2015 UTC (9 years, 1 month ago) by guez
The variable temps of file restart.nc is always 0. So we remove the
possibility that it can be something else. So removed argument time_0
of caldyn, dynetat0, leapfrog.


Revision 127 - Directory Listing
Modified Tue Feb 10 17:58:56 2015 UTC (9 years, 1 month ago) by guez
clon and clat from module serre are now in rad instead of
degrees. They are only used in rad, so we do only one conversion when
we read them.


Revision 126 - Directory Listing
Modified Fri Feb 6 18:33:15 2015 UTC (9 years, 1 month ago) by guez
Extracted the case grossismx == 1 from procedure fxhyp_loop_ik up into
procedure fxhyp. Since we have to do the test somewhere, better to do
it up there. The logic gets much clearer. Also, a lot of computations
are not needed in the case grossismx == 1. We could then remove
arguments ik and decalx of fxhyp_loop_ik.


Revision 125 - Directory Listing
Modified Fri Feb 6 15:00:28 2015 UTC (9 years, 1 month ago) by guez
Created procedure read_yomcst.

Deleted some intermediary variables in procedure orbit.


Revision 124 - Directory Listing
Modified Thu Feb 5 15:19:37 2015 UTC (9 years, 1 month ago) by guez
Moved some processing from fxhyp_loop_ik to fxhyp. Now fxhyp_loop_ik
does not necessarily give longitudes near [-pi, pi]. In fxhyp, we look
in rlonm025 whether we need to move the array toward [-pi, pi]. If so,
we apply the same move to all grids: rlonm025, rlonv, rlonp025, rlonu
and the corresponding derivatives. The move itself is done by the new
procedure principal_cshift. This revision makes the logic
clearer. (For example, we do not have a saved variable is2 in
fxhyp_loop_ik any longer and we remove a test on ik in fxhyp_loop_ik.)

Fixed a bad error message in fxhyp_loop_ik: talked about rlonu when
xvrai is not always rlonu.


Revision 123 - Directory Listing
Modified Thu Feb 5 12:41:08 2015 UTC (9 years, 1 month ago) by guez
Added some test programs.

In fxhyp_loop_ik, changed precision from 1e-3 to 1e-6. Reset initial
value of xo1 to first guess of xi instead of final value of xi for
previous i (better logic).


Revision 122 - Directory Listing
Modified Tue Feb 3 19:30:48 2015 UTC (9 years, 1 month ago) by guez
In procedure fxhyp_loop_ik, when testing whether xvrai is between -pi
and pi, changed back the boundaries from -pi - 1d-5 to - pi_d - 0.1
and from pi + 1d-5 to pi_d + 0.1. Fixed the logic: for ik = 1, we
rearrange longitudes between -pi and pi, if necessary. For other
values of ik, we apply the same rearrangement.

In module serre, change the default values of dzoomx and dzoomy to
0.2, because dzoomx must be > 0 when grossismx > 1.

With this revision, we recover the results of revision 120 and we
remove the bug that appeared with clon = 20.


Revision 121 - Directory Listing
Modified Wed Jan 28 16:10:02 2015 UTC (9 years, 2 months ago) by guez
In procedure fxhyp, extracted the body of the loop on ik into a new
procedure:  fxhyp_loop_ik.

dzoomx and dzoomy must now be fractions of the entire range, they
cannot be ranges in degrees or rad.

In fxhyp, force Xf(2 * nmax) = pi_d instead of possibly doing it in
fxhyp_loop_ik.

In fxhyp_loop_ik, when testing whether xvrai is between -pi and pi,
changed the boundaries from -pi - 0.1 to - pi_d - 1d-5 and from pi +
0.1 to pi_d + 1d-5. This reveals a misconception of the
code. Therefore, this version does not work.


Revision 120 - Directory Listing
Modified Tue Jan 13 14:56:15 2015 UTC (9 years, 2 months ago) by guez
In procedure fxhyp, removed the possibility to set scal180 to
false. The useful lower bound of fhyp and xxpr is not 0. It does not
make sense to give the save attribute to is2 since fxhyp is only
called one per run. Bug fix: is2 could be used without being
defined. The bug did not appear because is2 had the save attribute so
it was initialized at 0.


Revision 119 - Directory Listing
Modified Wed Jan 7 14:34:57 2015 UTC (9 years, 2 months ago) by guez
Removed procedure fxyhyper. Useless intermediary between inigeom and
fxhyp, fyhyp. Removed argument yprimv of fyhyp, not used in
inigeom. Downgraded rlonm025 and rlonp025 from arguments to local
variables of fxhyp, not used in inigeom. Downgraded arguments
champmin, champmax of fxhyp and fyhyp to local variables: print them
in fxhyp and fyhyp instead of fxyhyper.

Removed arguments xzoomdeg, grossism, dzooma, tau of fxhyp. Use
directly module variables clon, grossismx, dzoomx, taux instead.

Removed arguments yzoomdeg, grossism, dzooma, tau of fyhyp. Use
directly module variables clat, grossismy, dzoomy, tauy instead.

In procedure yamada4, l0 does not need the save attribute. It is
defined at each call.


Revision 118 - Directory Listing
Modified Thu Dec 18 17:30:24 2014 UTC (9 years, 3 months ago) by guez
In file grilles_gcm.nc, renamed variable phis to orog, deleted
variable presnivs.

Removed variable bug_ozone from module clesphys.

In procedure ozonecm, moved computation of sint and cost out of the
loops on horizontal position and vertical level. Inverted the order of
the two loops. We can then move all computations from slat to aprim
out of the loop on vertical levels. Created variable slat2, following
LMDZ. Moved the limitation of column-density of ozone in cell at 1e-12
from radlwsw to ozonecm, following LMDZ.

Removed unused arguments u, albsol, rh, cldfra, rneb, diafra, cldliq,
pmflxr, pmflxs, prfl, psfl of phytrac.

In procedure yamada4, for all the arrays, replaced the dimension klon
by ngrid. At the end of the procedure, for the computation of kmn,kn,
kq and q2, changed the upper limit of the loop index from klon to ngrid.

In radlwsw, for the calculation of pozon, removed the factor
paprs(iof+i, 1)/101325, as in LMDZ. In procedure sw, removed the
factor 101325.0/PPSOL(JL), as in LMDZ.


Revision 117 - Directory Listing
Modified Thu Dec 4 16:48:53 2014 UTC (9 years, 3 months ago) by guez
Split "albedo.f" into "alboc.f" and "alboc_cd.f".


Revision 116 - Directory Listing
Modified Thu Dec 4 16:35:03 2014 UTC (9 years, 3 months ago) by guez
In test_disvert, write output files before testing order of pressure
values, so we have more information if there is a problem.


Revision 115 - Directory Listing
Modified Fri Sep 19 17:36:20 2014 UTC (9 years, 6 months ago) by guez
Extracted code from tau2alpha for first call into new procedure
init_tau2alpha. dxdys, dxdyu, dxdyv are now local variables if guide
computed by init_tau2alpha. This allows us to remove terrible argument
type of tau2alpha: we just give to tau2alpha the right dxdy and
rlat.

In module conf_guide_m, changed default values of tau_min_*, because
0.02 is too small for the default daystep = 240, iperiod = 5. Changed
default values of guide_[uv] to false. Moved variable ok_guide from
conf_gcm_m to conf_guide_m, ok_guide is no longer an input parameter,
it is computed from guide_*. Had then to move test on ok_guide and
day_step from conf_gcm_m to conf_guide_m. Added checks on input
nudging parameters in procedure conf_guide. Upgraded variable factt to
module conf_guide_m in order to check nudging parameters. Bug fix:
variable guide_q was not in namelist conf_guide_nml.

Removed unused variables aire_min, aire_max of MODULE guide_m.

Moved the call to conf_guide from guide to gcm. This was needed to
define ok_guide before getting into guide (since ok_guide is no longer
in conf_gcm_m). Moved test on grossismx and grossismy from tau2alpha
to guide. It is clearer now that only tau_max is used for a regular
grid, and we do not have to repeat this test in each call to
tau2alpha. In guide, we only call writefield when alpha is not a
constant.


Revision 114 - Directory Listing
Modified Fri Sep 19 11:41:35 2014 UTC (9 years, 6 months ago) by guez


Revision 113 - Directory Listing
Modified Thu Sep 18 19:56:46 2014 UTC (9 years, 6 months ago) by guez
Moved the call to read_serre out of conf_gcm so that it can be called
only in the program ce0l, not in gcm. In gcm, variables of module
serre are read from start file. Added reading of dzoomx, dzoomy, taux,
tauy from start file, in dynetat0. Those variables were written by
dynredem0 but not read.

Removed possibility fxyhypb = false, because the geometric part of the
program is such a mess. Could then remove variables transx, transy,
alphax, alphay, pxo, pyo of module serre.

Bug fix in tau2alpha: missing save attributes. The first call to
tau2alpha needs to compute dxdyu and dxdyv regardless of value of
argument type, because they will be needed for subsequent calls to
tau2alpha with various values of argument type.


Revision 112 - Directory Listing
Modified Thu Sep 18 13:36:51 2014 UTC (9 years, 6 months ago) by guez
Removed 8 first arguments of fxyhyper, use variables of module serre
instead.

Moved reading of variables of module serre from procedure conf_gcm to
new procedure read_serre.

In guide, added conditions to avoid useless calls to tau2alpha and
writefield. Bugfix: offline corresponds to alpha = 1. Open only one
NetCDF file to read number of vertical levels.

In tau2alpha, added conditions to avoid useless computations of dxdyu
and dxdyv. gamma is not needed for a regular grid.


Revision 111 - Directory Listing
Modified Wed Sep 17 11:57:10 2014 UTC (9 years, 6 months ago) by guez


Revision 110 - Directory Listing
Modified Wed Sep 17 11:55:05 2014 UTC (9 years, 6 months ago) by guez
Moved variables of module write_field to module
createnewfield_m. Deleted module variable varid because we know that
varid is always 1. Module variable record was modified in 2 procedures
so Moved assignment:

Record(NbField) = 1

to writefield.


Revision 109 - Directory Listing
Modified Wed Sep 17 10:08:00 2014 UTC (9 years, 6 months ago) by guez
Moved a call to writefield from guide to tau2alpha. (dxdys does not
change with itau.) So dxdys does not need to be a module variable any
longer. Other variables of modules tau2alpha_m downgraded to local
variables of tau2alpha, since they were not used elsewhere.

Procedures write_field[13]d and formcoord were never called. Could
then remove int2str.

Inline writefield_gen into writefield.

CreateNewField takes an integer array argument instead of 3 scalar
integers. CreateNewField now creates a number of dimensions adapted to
the rank of the output field, instead of always 4 dimensions.

Changed names of variables of module write_field: fieldid to
ncid, fieldindex to record, fieldvarid to varid.

In writefield_gen, if index == -1, no need to call GetFieldIndex
again, we know that the result is nbfield.

In guide, moved calls to writefield for some variables inside if
first_call: those variables do not change with time. Removed ztau:
computed only to be output, does not seem meaningful. Removed
writefield for aire: does not change with time and is already in
"grilles_gcm.nc".


Revision 108 - Directory Listing
Modified Tue Sep 16 14:00:41 2014 UTC (9 years, 6 months ago) by guez
Imported writefield from LMDZ. Close at the end of gcm the files which
were created by writefiled (not done in LMDZ).

Removed procedures for the output of Grads files. Removed calls to
dump2d. In guide, replaced calls to wrgrads by calls to writefield.

In vlspltqs, removed redundant programming of saturation
pressure. Call foeew from module FCTTRE instead.

Bug fix in interpre: size of w exceeding size of correponding actual
argument wg in advtrac.

In leapfrog, call guide until the end of the run, instead of six hours
before the end.

Bug fix in readsulfate_preind: type of arguments.


Revision 107 - Directory Listing
Modified Thu Sep 11 15:09:15 2014 UTC (9 years, 6 months ago) by guez
Imported procedure grilles_gcm_sub from LMDZ. Had then to transform
local variable phis of etat to argument.

Replaced calls to lnblnk by calls to trim.

Removed arguments nlat, klevel and griscal of filtreg. Replaced
integer arguments ifiltre and iaire by logical arguments direct and
intensive.

Changed default values of guide_t and guide_q to false.


Revision 106 - Directory Listing
Modified Tue Sep 9 12:54:30 2014 UTC (9 years, 6 months ago) by guez
Removed arguments klon, knon of interfoce_lim. Removed argument knon
of interfsur_lim.


Revision 105 - Directory Listing
Modified Thu Sep 4 10:40:24 2014 UTC (9 years, 6 months ago) by guez
Removed intermediate variables in calcul_fluxs.

Revision 104 - Directory Listing
Modified Thu Sep 4 10:05:52 2014 UTC (9 years, 6 months ago) by guez
Removed procedure sortvarc0. Called sortvarc with an additional
argument resetvarc instead. (Following LMDZ.) Moved current time
computations and some printing statements from sortvarc to
caldyn. Could then remove arguments itau and time_0 of sortvarc, and
could remove "use dynetat0". Better to keep "dynetat0.f" as a gcm-only
file.

Moved some variables from module ener to module sortvarc.

Split file "mathelp.f" into single-procedure files.

Removed unused argument nadv of adaptdt. Removed dimension arguments
of bernoui.

Removed unused argument nisurf of interfoce_lim. Changed the size of
argument lmt_sst of interfoce_lim from klon to knon. Removed case when
newlmt is false.

dynredem1 is called only once in each run, either ce0l or gcm. So
variable nb in call to nf95_put_var was always 1. Removed variable nb.

Removed dimension arguments of calcul_fluxs. Removed unused arguments
precip_rain, precip_snow, snow of calcul_fluxs. Changed the size of
all the arrays in calcul_fluxs from klon to knon.

Removed dimension arguments of fonte_neige. Changed the size of all
the arrays in fonte_neige from klon to knon.

Changed the size of arguments tsurf and tsurf_new of interfsurf_hq
from klon to knon. Changed the size of argument ptsrf of soil from
klon to knon.


Revision 103 - Directory Listing
Modified Fri Aug 29 13:00:05 2014 UTC (9 years, 7 months ago) by guez
Renamed module cvparam to cv_param. Deleted procedure
cv_param. Changed variables of module cv_param into parameters.

In procedures cv_driver, cv_uncompress and cv3_uncompress, removed
some arguments giving dimensions and used module variables klon and
klev instead.

In procedures gradiv2, laplacien_gam and laplacien, changed
declarations of local variables because klevel is not always klev.

Removed code for nudging surface pressure.

Removed arguments pim and pjm of tau2alpha. Added assignment of false
to variable first.

Replaced real argument del of procedures foeew and FOEDE by logical
argument.


Revision 102 - Directory Listing
Modified Tue Jul 15 13:43:24 2014 UTC (9 years, 8 months ago) by guez
Removed unused file "condsurf.f" (only useful for ocean slab).

day_step must be a multiple of 4 * iperiod if ok_guide.

Changed type of variable online of module conf_guide_m from integer to
logical. Value -1 was not useful, equivalent to not ok_guide.

Removed argument masse of procedure guide. masse is kept consistent
with ps throughout the run. masse need only be computed again just
after ps has been modified. In prodecure guide, replaced use of
remanent variable first by test on itau. Replaced test on variable
"test" by test on integer values.

In leapfrog, for the call to guide, replaced test on real values by
test on integer values.

Bug fix in tau2alpha: computation of dxdyv (following LMDZ revision 1040).

In procedure wrgrads, replaced badly chosen argument name "if" by i_f.


Revision 101 - Directory Listing
Modified Mon Jul 7 17:45:21 2014 UTC (9 years, 8 months ago) by guez
Removed unused files "interfoce_slab.f" and "gath2cpl.f". Removed
unused variables coastalflow and riverflow of module
interface_surf. Removed unused arguments cal, radsol, dif_grnd,
fluxlat, fluxsens, dflux_s, dflux_l of procedure fonte_neige. Removed
unused arguments tslab, seaice of procedure interfsurf_hq and
clqh. Removed unused arguments seaice of procedure clmain.

In interfsurf_hq, used variable soil_model of module clesphys2 instead
of cascading it as an argument from physiq.

In phyetat0, stop if masque not found.

Variable TS instead of "TS[0-9][0-9]" in "(re)startphy.nc", with
additional dimension nbsrf.


Revision 100 - Directory Listing
Modified Wed Jul 2 19:07:58 2014 UTC (9 years, 8 months ago) by guez
Removed unused variable tmp_rlic of module interface_surf.

Removed useless call to gath2cpl in procedure interfsurf_hq. Removed
then uncalled procedure gath2cpl.


Revision 99 - Directory Listing
Modified Wed Jul 2 18:39:15 2014 UTC (9 years, 8 months ago) by guez
Created procedure test_disvert (following LMDZ). Added procedures
hybrid and funcd in module disvert_m. Upgraded compute_ab from
internal procedure of disvert to module procedure. Added variables y,
ya in module disvert_m. Upgraded s from local variable of procedure
disvert to module variable.

Renamed allowed value of variable vert_sampling in procedure disvert
from "read" to "read_hybrid". Added possibility to read pressure
values, value "read_pressure". Replaced vertical distribution for
value "param" by the distribution "strato_correct" from LMDZ (but kept
the value "param"). In case "tropo", replaced 1 by dsigmin (following
LMDZ). In case "strato", replaced 0.3 by dsigmin (following LMDZ).

Changed computation of bp in procedure compute_ab.

Removed debugindex case in clmain. Removed useless argument rlon of
procedure clmain. Removed useless variables ytaux, ytauy of procedure
clmain.

Removed intermediary variables tsol, qsol, tsolsrf, tslab in procedure
etat0.

Removed variable ok_veget:. coupling with the model Orchid is not
possible. Removed variable ocean: modeling an ocean slab is not
possible.

Removed useless variables tmp_rriv and tmp_rcoa from module
interface_surf.

Moved initialization of variables da, mp, phi in procedure physiq to
to inside the test iflag_con >= 3.


Revision 98 - Directory Listing
Modified Tue May 13 17:23:16 2014 UTC (9 years, 10 months ago) by guez
Split inter_barxy.f : one procedure per module, one module per
file. Grouped the files into a directory.

Split orbite.f.

Value of raz_date read from the namelist is taken into account
(resetting the step counter) even if annee_ref == anneeref and day_ref
== dayref. raz_date is no longer modified by gcm main unit. (Following
LMDZ.)

Removed argument klon of interfsur_lim. Renamed arguments lmt_alb,
lmt_rug to alb_new, z0_new (same name as corresponding actual
arguments in interfsurf_hq).

Removed argument klon of interfsurf_hq.

Removed arguments qs and d_qs of diagetpq. Were always
zero. Downgraded arguments d_qw, d_ql of diagetpq to local variables,
they were not used in physiq. Removed all computations for solid water
in diagetpq, was just zero.


Downgraded arguments fs_bound, fq_bound of diagphy to local variables,
they were not used in physiq. Encapsulated in a test on iprt all
computations in diagphy.

Removed parameter nbtr of module dimphy. Replaced it everywhere in the
program by nqmx - 2.

Removed parameter rnpb of procedure physiq. Kept the true case in
physiq and phytrac. Could not work with false case anyway.

Removed arguments klon, llm, airephy of qcheck. Removed argument ftsol
of initrrnpb, was not used.


Revision 97 - Directory Listing
Modified Fri Apr 25 14:58:31 2014 UTC (9 years, 11 months ago) by guez
Module pressure_var is now only used in gcm. Created local variables
pls and p3d in etat0, added argument p3d to regr_pr_o3.

In leapfrog, moved computation of p3d and exner function immediately
after integrd, for clarity (does not change the execution).

Removed unused arguments: ntra, tra1 and tra of cv3_compress; ntra,
tra and traent of cv3_mixing; ntra, ftra, ftra1 of cv3_uncompress;
ntra, tra, trap of cv3_unsat; ntra, tra, trap, traent, ftra of
cv3_yield; tra, tvp, pbase, bbase, dtvpdt1, dtvpdq1, dplcldt,
dplcldr, ntra of concvl; ndp1, ntra, tra1 of cv_driver

Removed argument d_tra and computation of d_tra in concvl. Removed
argument ftra1 and computation of ftra1 in cv_driver. ftra1 was just
set to 0 in cv_driver, associated to d_tra in concvl, and set again to
zero in concvl.


Revision 96 - Directory Listing
Modified Fri Apr 4 11:30:34 2014 UTC (9 years, 11 months ago) by guez
In procedure leapfrog, computation of p3d and a call to exner_hyb were
made before and after the call to calfis. This was a repetition of the
same calculation since calfis does not change the surface
pressure. Kept only one calculation, and moved it before the test for
the call to calfis.


Revision 95 - Directory Listing
Modified Wed Apr 2 12:59:54 2014 UTC (9 years, 11 months ago) by guez
Removed argument ps of calfis (was not done in revision 91, error in
log message).

Removed optional actual argument pkf of the call to exner_hyb before
calfis, in leapfrog. pkf was not used before the next call to
exner_hyb.


Revision 94 - Directory Listing
Modified Tue Apr 1 17:27:47 2014 UTC (9 years, 11 months ago) by guez
Grouped compilation files into directory Compilation.

Revision 93 - Directory Listing
Modified Tue Apr 1 15:50:48 2014 UTC (9 years, 11 months ago) by guez
Moved variable calendar_used, un_an and mon_len from module calendar
to module ioconf_calendar_m. Removed unused variables cal, start_day,
start_sec of module calendar.

Inlined procedure ju2ymds_internal into procedure ju2ymds. Inlined
procedure ymds2ju_internal into procedure ymds2ju.

Removed generic interface ioget_calendar. Merged ioget_calendar_real1
and ioget_calendar_real2 into ioget_calendar_real.


Revision 92 - Directory Listing
Modified Wed Mar 26 18:16:05 2014 UTC (10 years ago) by guez
Extracted procedures that were in module calendar into separate files.


Revision 91 - Directory Listing
Modified Wed Mar 26 17:18:58 2014 UTC (10 years ago) by guez
Removed unused variables lock_startdate and time_stamp of module
calendar.

Noticed that physiq does not change the surface pressure. So removed
arguments ps and dpfi of subroutine addfi. dpfi was always 0. The
computation of ps in addfi included some averaging at the poles. In
principle, this does not change ps but in practice it does because of
finite numerical precision. So the results of the simulation are
changed. Removed arguments ps and dpfi of calfis. Removed argument
d_ps of physiq.

du at the poles is not computed by dudv1, so declare only the
corresponding latitudes in dudv1. caldyn passes only a section of the
array dudyn as argument.

Removed variable niadv of module iniadvtrac_m.

Declared arguments of exner_hyb as assumed-shape arrays and made all
other horizontal sizes in exner_hyb dynamic. This allows the external
program test_disvert to use exner_hyb at a single horizontal position.


Revision 90 - Directory Listing
Modified Wed Mar 12 21:16:36 2014 UTC (10 years ago) by guez
Removed procedures ini_histday, ini_histhf, write_histday and
write_histhf.

Divided file regr_pr_coefoz.f into regr_pr_av.f and
regr_pr_int.f. (Following LMDZ.) Divided module regr_pr_coefoz into
modules regr_pr_av_m and regr_pr_int_m. Renamed regr_pr_av_coefoz to
regr_pr_av and regr_pr_int_coefoz to regr_pr_int. The idea is that
those procedures are more general than Mobidic.

Removed argument dudyn of calfis and physiq. dudyn is not used either
in LMDZ. Removed computation in calfis of unused variable zpsrf (not
used either in LMDZ). Removed useless computation of dqfi in calfis
(part 62): the results were overwritten. (Same in LMDZ.)


Revision 89 - Directory Listing
Modified Tue Mar 11 16:03:19 2014 UTC (10 years ago) by guez
Removed call to pvtheta in calfis because the result pvteta is not
used (not used either in LMDZ).

Removed unused argument dv of calfis. (Corresponding argument in LMDZ
is pdvcov and computations from pdvcov are made in calfis but not
used.)

Removed procedures that were not called.


Revision 88 - Directory Listing
Modified Tue Mar 11 15:09:02 2014 UTC (10 years ago) by guez
Removed useless argument mode of subroutine read_reanalyse.


Revision 87 - Directory Listing
Modified Thu Mar 6 18:10:03 2014 UTC (10 years ago) by guez
In procedure exner_hyb, removed computation of pks at the poles. In the
program ce0l, start_init_dyn ensures that there is a single value of
ps at each pole. In the program gcm, ps received by exner_hyb always
has a single value at each pole. Hence, so does pks.

This modification changes the results of ce0l and gcm.


Revision 86 - Directory Listing
Modified Thu Mar 6 17:51:03 2014 UTC (10 years ago) by guez
In leapfrog, removed computation of ps at the poles. dynetat0 checks
that there is a single value of ps at each pole and ps is only
modified in the program gcm by integrd and addfi. Both integrd and
addfi ensure there is a single value of ps at each pole.

This modification changes the results of gcm.


Revision 85 - Directory Listing
Modified Thu Mar 6 17:35:22 2014 UTC (10 years ago) by guez
Removed option to guide surface pressure because it was not
functional: psrea1 was not defined in procedure guide. Removed local
variables psrea1 and psrea2 of procedure guide. ps becomes an
"intent(in)" argument in guide. Removed case guide_p in guide. Removed
variable guide_p of module conf_guide_m. Removed case guide_p and
argument ps in read_reanalyse. Removed case guide_p and argument ps in
reanalyse2nat.


Revision 84 - Directory Listing
Modified Thu Mar 6 15:13:19 2014 UTC (10 years ago) by guez


Revision 83 - Directory Listing
Modified Thu Mar 6 15:12:00 2014 UTC (10 years ago) by guez
In procedure conf_guide, replaced calls to getpar by reading a
namelist. Removed file getparam.f, now unused. So getin of IOIPSL is
now unused too. Removed files getincom.f, getincom2.f, cmpblank.f,
find_sig.f, gensig.f and nocomma.f.

Moved variables lat_min_guide and lat_max_guide from module
tau2alpha_m to module conf_guide_m.

Removed variables nivsig and nivsigs of module disvert_m. Instead, in
initdynav and initfluxsto, directly wrote arithmetic sequence for
verical axis, pending a better vertical axis. Removed variables nivsig
and nivsigs of "(re)?.start.nc".

In procedure exner_hyb, replaced p(:, :, 1) by equivalent ps.


Revision 82 - Directory Listing
Modified Wed Mar 5 14:57:53 2014 UTC (10 years ago) by guez
Changed all ".f90" suffixes to ".f".

Revision 81 - Directory Listing
Modified Wed Mar 5 14:38:41 2014 UTC (10 years ago) by guez
 Converted to free source form files which were still in fixed source
form. The conversion was done using the polish mode of the NAG Fortran
Compiler.

In addition to converting to free source form, the processing of the
files also:

-- indented the code (including comments);

-- set Fortran keywords to uppercase, and set all other identifiers
to lower case;

-- added qualifiers to end statements (for example "end subroutine
conflx", instead of "end");

-- changed the terminating statements of all DO loops so that each
loop ends with an ENDDO statement (instead of a labeled continue).


Revision 80 - Directory Listing
Modified Wed Mar 5 12:22:46 2014 UTC (10 years ago) by guez


Revision 79 - Directory Listing
Modified Fri Feb 28 17:52:47 2014 UTC (10 years, 1 month ago) by guez
Moved procedure iniconst inside module comconst. Removed useless
variables of module comconst: im, jm, lllm, imp1, jmp1, lllmm1,
lllmp1, lcl, cotot, unsim. Move definition of dtvr that was in
dynetat0 and etat0 to iniconst. Moved comparison of dtvr from day_step
and start.nc that was in gcm to dynetat0. Moved call to disvert out of
iniconst. Moved call to iniconst in gcm before call to dynetat0.

Removed unused argument pvteta of physiq (not used either in LMDZ).


Revision 78 - Directory Listing
Modified Wed Feb 5 17:51:07 2014 UTC (10 years, 1 month ago) by guez
Moved procedure inigeom into module comgeom.

In disvert, renamed s_sampling to vert_sampling, following
LMDZ. Removed choice strato1. In case read, read ap and bp instead of
s (following LMDZ).

Added argument phis to start_init_orog and start_init_dyn, and removed
variable phis of module start_init_orog_m. In etat0 and
start_init_orog, renamed relief to zmea_2d. In start_init_dyn, renamed
psol to ps.

In start_init_orog, renamed relief_hi to relief. No need to set
phis(iim + 1, :) = phis(1, :), already done in grid_noro.

Documentation for massbar out of SVN, in massbar.txt. Documentation
was duplicated in massdair, but not relevant in massdair.

In conflx, no need to initialize pen_[ud] and pde_[ud]. In flxasc,
used intermediary variable fact (following LMDZ).

In grid_noro, added local variable zmea0 for zmea not smoothed and
computed zphi from zmea instead of zmea0 (following LMDZ). This
changes the results of ce0l.

Removed arguments pen_u and pde_d of phytrac and nflxtr, which were
not used.


Revision 77 - Directory Listing
Modified Fri Nov 15 18:47:43 2013 UTC (10 years, 4 months ago) by guez
Deleted empty libf.

Revision 76 - Directory Listing
Modified Fri Nov 15 18:45:49 2013 UTC (10 years, 4 months ago) by guez
Moved everything out of libf.

Revision 75 - Directory Listing
Modified Fri Nov 15 18:16:53 2013 UTC (10 years, 4 months ago) by guez
Put Movie out of Subversion.

Revision 74 - Directory Listing
Modified Fri Nov 15 18:02:57 2013 UTC (10 years, 4 months ago) by guez
Flincom is not used any longer.

Revision 73 - Directory Listing
Modified Fri Nov 15 17:48:30 2013 UTC (10 years, 4 months ago) by guez
Renamed tpot to teta and psol to ps in etat0.

Replaced calls to flincom by calls to NetCDF95 in startdyn. lon_ini,
lat_ini and levdyn_ini are now pointers.

Revision 72 - Directory Listing
Modified Tue Jul 23 13:00:07 2013 UTC (10 years, 8 months ago) by guez
NaN to signalling NaN in gfortran_debug.mk.

Removed unused procedures in getincom and getincom2. In procedure
conf_interface, replaced call to getincom by new namelist. Moved
procedure conf_interface into module interface_surf.

Added variables sig1 and w01 to startphy.nc and restartphy.nc, for
procedure cv_driver. Renamed (ema_)?work1 and (ema_)?work2 to sig1 and
w01 in concvl and physiq.

Deleted unused arguments of clmain, clqh and intersurf_hq, among which
(y)?sollwdown. Following LMDZ, in physiq, read sollw instead of
sollwdown from startphy.nc, write sollw instead of sollwdown to
restartphy.nc.

In procedure sw, initialized zfs[ud][pn]a[di], for runs where ok_ade
and ok_aie are false. (Following LMDZ.)

Added dimension klev to startphy.nc and restartphy.nc, and deleted
dimension horizon_vertical. Made t_ancien and q_ancien two-dimensional
NetCDF variables. Bug fix: in phyetat0, define ratqs, clwcon and
rnebcon for vertical levels >=2.

Bug fix: set mfg, p[de]n_[ud] to 0. when iflag_con >= 3. (Following LMDZ.)


Revision 71 - Directory Listing
Modified Mon Jul 8 18:12:18 2013 UTC (10 years, 8 months ago) by guez
No reason to call inidissip in ce0l.

In inidissip, set random seed to 1 beacuse PGI compiler does not
accept all zeros.

dq was computed needlessly in caladvtrac. Arguments masse and dq of
calfis not used.

Replaced real*8 by double precision.

Pass arrays with inverted order of vertical levels to conflx instead
of creating local variables for this inside conflx.


Revision 70 - Directory Listing
Modified Mon Jun 24 15:39:52 2013 UTC (10 years, 9 months ago) by guez
In procedure, "addfi" access directly the module variable "dtphys"
instead of going through an argument.

In "conflx", do not create a local variable for temperature with
reversed order of vertical levels. Instead, give an actual argument
with reversed order in "physiq".

Changed names of variables "rmd" and "rmv" from module "suphec_m" to
"md" and "mv".

In "hgardfou", print only the first temperature out of range found.


Revision 69 - Directory Listing
Modified Mon Feb 18 16:33:12 2013 UTC (11 years, 1 month ago) by guez
Deleted files cvparam3.f90 and nuagecom.f90. Moved variables from
module cvparam3 to module cv3_param_m. Moved variables rad_chau1 and
rad_chau2 from module nuagecom to module conf_phys_m.

Read clesphys2_nml from conf_phys instead of gcm.

Removed argument iflag_con from several procedures. Access module
variable instead.


Revision 68 - Directory Listing
Modified Wed Nov 14 16:59:30 2012 UTC (11 years, 4 months ago) by guez
Split "flincom.f90" into "flinclo.f90", "flinfindcood.f90",
"flininfo.f90" and "flinopen_nozoom.f90", in directory
"IOIPSL/Flincom".

Renamed "etat0_lim" to "ce0l", as in LMDZ.

Split "readsulfate.f" into "readsulfate.f90", "readsulfate_preind.f90"
and "getso4fromfile.f90".

In etat0, renamed variable q3d to q, as in "dynredem1". Replaced calls
to Flicom procedures by calls to NetCDF95.

In leapfrog, added call to writehist.

Extracted ASCII art from "grid_noro" into a file
"grid_noro.txt". Transformed explicit-shape local arrays into
automatic arrays, so that test on values of iim and jjm is no longer
needed. Test on weight:
          IF (weight(ii, jj) /= 0.) THEN
is useless. There is already a test before:
    if (any(weight == 0.)) stop "zero weight in grid_noro"

In "aeropt", replaced duplicated lines with different values of inu by
a loop on inu.

Removed arguments of "conf_phys". Corresponding variables are now
defined in "physiq", in a namelist. In "conf_phys", read a namelist
instead of using getin.


Revision 67 - Directory Listing
Modified Tue Oct 2 15:50:56 2012 UTC (11 years, 5 months ago) by guez
Cleaning.

Revision 66 - Directory Listing
Modified Thu Sep 20 13:00:41 2012 UTC (11 years, 6 months ago) by guez
Changed name of module "comvert" to "disvert_m". Changed constant
1. to 0.3 in vertical sampling "strato".


Revision 65 - Directory Listing
Modified Thu Sep 20 09:57:03 2012 UTC (11 years, 6 months ago) by guez
Removed unused procedure "divgrad".

In procedure "dissip", save memory by using intermediary arrays "gdx"
and "gdy" several times instead of additional array "grx" and "gry".

In procedure "inidissip", write "dtdiss * teta*" instead of "teta*".

In "comvert", change name of s_sampling from "LMD5" to "tropo" and
from "strato2" to "strato".


Revision 64 - Directory Listing
Modified Wed Aug 29 14:47:17 2012 UTC (11 years, 7 months ago) by guez
Removed variable lstardis in module comdissnew and procedures gradiv
and nxgrarot. lstardir had to be true. gradiv and nxgrarot were called
if lstardis was false. Removed argument iter of procedure
filtreg. iter had to be 1. gradiv and nxgrarot called filtreg with
iter == 2.

Moved procedure flxsetup into module yoecumf. Module yoecumf is only
used in program units of directory Conflx, moved it there.


Revision 63 - Directory Listing
Modified Wed Aug 1 14:13:57 2012 UTC (11 years, 7 months ago) by guez
Superficial changes

Revision 62 - Directory Listing
Modified Thu Jul 26 14:37:37 2012 UTC (11 years, 8 months ago) by guez
Changed handling of compiler in compilation system.

Removed the prefix letters "y", "p", "t" or "z" in some names of variables.

Replaced calls to NetCDF by calls to NetCDF95.

Extracted "ioget_calendar" procedures from "calendar.f90" into a
separate file.

Extracted to a separate file, "mathop2.f90", procedures that were not
part of the generic interface "mathop" in "mathop.f90".

Removed computation of "dq" in "bilan_dyn", which was not used.

In "iniadvtrac", removed schemes 20 Slopes and 30 Prather. Was not
compatible with declarations of array sizes.

In "clcdrag", "ustarhb", "vdif_kcay", "yamada4" and "coefkz", changed
the size of some arrays from "klon" to "knon".

Removed possible call to "conema3" in "physiq".

Removed unused argument "cd" in "yamada".


Revision 61 - Directory Listing
Modified Fri Apr 20 14:58:43 2012 UTC (11 years, 11 months ago) by guez
No more included file in LMDZE, not even "netcdf.inc".

Created a variable containing the list of common source files in
GNUmakefile. So we now also see clearly files that are specific to
each program.

Split module "histcom". Assembled resulting files in directory
"Histcom".

Removed aliasing in calls to "laplacien".


Revision 60 - Directory Listing
Modified Mon Jan 30 14:37:26 2012 UTC (12 years, 2 months ago) by guez
Useless copies into "gdx" and "gdy" in "gradiv2".


Revision 59 - Directory Listing
Modified Mon Jan 30 13:04:08 2012 UTC (12 years, 2 months ago) by guez
Remove directory "Scripts".

Revision 58 - Directory Listing
Modified Mon Jan 30 13:02:24 2012 UTC (12 years, 2 months ago) by guez
Move content of directory "Scripts" to directory "LMDZE".

Revision 57 - Directory Listing
Modified Mon Jan 30 12:54:02 2012 UTC (12 years, 2 months ago) by guez
Write used namelists to file "" instead of standard output.

Avoid aliasing in "inidissip" in calls to "divgrad2", "divgrad",
"gradiv2", "gradiv", "nxgraro2" and "nxgrarot". Add a degenerate
dimension to arrays so they have rank 3, like the dummy arguments in
"divgrad2", "divgrad", "gradiv2", "gradiv", "nxgraro2" and "nxgrarot".

Extract the initialization part from "bilan_dyn" and make a separate
procedure, "init_dynzon", from it.

Move variables from modules "iniprint" and "logic" to module
"conf_gcm_m".

Promote internal procedures of "fxy" to private procedures of module
"fxy_m".

Extracted documentation from "inigeom". Removed useless "save"
attributes. Removed useless intermediate variables. Extracted
processing of poles from loop on latitudes. Write coordinates to file
"longitude_latitude.txt" instead of standard output.

Do not use ozone tracer for radiative transfer.


Revision 56 - Directory Listing
Modified Tue Jan 10 19:02:02 2012 UTC (12 years, 2 months ago) by guez
Imported "writehist.f" from LMDZ.

Moved module variable "histaveid" from "com_io_dyn" to "initdynav_m".

In "inithist", access directly module variables from "com_io_dyn"
instead of going through the arguments. Copying from LMDZ, write "u"
and scalar variables to separate files. Create a new variable for the
new file in "com_io_dyn". Copying from LMDZ, change the vertical axes
of the three files.

Removed some useless initializations in "dissip".

In "bilan_dyn", removed useless variable "time". Avoiding the
approximate test on "dt_cum" being a multiple of "dt_app", just
compute "ncum" from known usage of "bilan_dyn" and compute "dt_cum"
from "ncum". Change "periodav" from real to integer in
"conf_gcm_m". Since "day_step" is required to be a multiple of
"iperiod", so is "ncum".


Revision 55 - Directory Listing
Modified Mon Dec 12 13:25:01 2011 UTC (12 years, 3 months ago) by guez
-- In procedure "bilan_dyn", replaced average of "zvq" by integral of
"zvq", following a comment of Francis Codron :

Le calcul actuel donne des unités peu pratiques : transports de
chaleur en K m / s par exemple. C'est bien pour les sorties à 2
dimensions, latitude et pression, car alors le transport ne dépend pas
de l'espacement des niveaux, mieux pour comparer ou tracer en latitude
et pression. Par contre, quand on somme sur la verticale, on
préfèrerait avoir des transports d'énergie en watts, ou au moins an K
kg / s (à multiplier par "Cp" ou "L"). On doit pouvoir recalculer le
transport intégré à partir des fichiers de sortie, mais c'est embêtant
(calcul de "cv").

-- Gathered files in directory Dissipation.


Revision 54 - Directory Listing
Modified Tue Dec 6 15:07:04 2011 UTC (12 years, 3 months ago) by guez
Removed Numerical Recipes procedure "ran1". Replaced calls to "ran1"
in "inidissip" by calls to intrinsic procedures.

Split file "interface_surf.f90" into a file with a module containing
only variables, "interface_surf", and single-procedure files. Gathered
files into directory "Interface_surf".

Added argument "cdivu" to "gradiv" and "gradiv2", "cdivh" to
"divgrad2" and "divgrad", and "crot" to "nxgraro2" and
"nxgrarot". "dissip" now uses variables "cdivu", "cdivh" and "crot"
from module "inidissip_m", so it can pass them to "gradiv2",
etc. Thanks to this modification, we avoid a circular dependency
betwwen "inidissip.f90" and "gradiv2.f90", etc. The value -1. used by
"gradiv2", for instance, during computation of eigenvalues is not the
value "cdivu" computed by "inidissip".

Extracted procedure "start_inter_3d" from module "startdyn", to its
own module.

In "inidissip", unrolled loop on "ii". I find it clearer now.

Moved variables "matriceun", "matriceus", "matricevn", "matricevs",
"matrinvn" and "matrinvs" from module "parafilt" to module
"inifilr_m". Moved variables "jfiltnu", "jfiltnv", "jfiltsu",
"jfiltsv" from module "coefils" to module "inifilr_m".


Revision 53 - Directory Listing
Modified Fri Oct 7 13:11:58 2011 UTC (12 years, 5 months ago) by guez


Revision 52 - Directory Listing
Modified Fri Sep 23 12:28:01 2011 UTC (12 years, 6 months ago) by guez
Split "conflx.f" into single-procedure files in directory "Conflx".

Split "cv_routines.f" into single-procedure files in directory
"CV_routines". Made module "cvparam" from included file
"cvparam.h". No included file other than "netcdf.inc" left in LMDZE.


Revision 51 - Directory Listing
Modified Tue Sep 20 09:14:34 2011 UTC (12 years, 6 months ago) by guez
Split "getincom.f90" into "getincom.f90" and "getincom2.f90". Split
"nuage.f" into "nuage.f90", "diagcld1.f90" and "diagcld2.f90". Created
module "chem" from included file "chem.h". Moved "YOEGWD.f90" to
directory "Orography".

In "physiq", for evaporation of water, "zlsdcp" was equal to
"zlvdc". Removed useless variables.


Revision 50 - Directory Listing
Modified Wed Aug 24 13:33:28 2011 UTC (12 years, 7 months ago) by guez
Bug fix: was reading only scalars in "phyetat0".

Revision 49 - Directory Listing
Modified Wed Aug 24 11:43:14 2011 UTC (12 years, 7 months ago) by guez
LMDZE now uses library Jumble.

Removed all calls to "flinget". Replaced calls to "flinget",
"flininfo", "flinopen_nozoom" by calls to NetCDF95 and Jumble.

Split file "cv_driver.f" into "cv_driver.f90", "cv_flag.f90" and
"cv_thermo.f90".

Bug fix: "QANCIEN" was read twice in "phyeytat0".

In "physiq", initialization of "d_t", "d_u", "d_v" was useless.


Revision 48 - Directory Listing
Modified Tue Jul 19 12:54:20 2011 UTC (12 years, 8 months ago) by guez
Replaced calls to "flinget" by calls to "NetCDF95".

Revision 47 - Directory Listing
Modified Fri Jul 1 15:00:48 2011 UTC (12 years, 9 months ago) by guez
Split "thermcell.f" and "cv3_routines.f".
Removed copies of files that are now in "L_util".
Moved "mva9" and "diagetpq" to their own files.
Unified variable names across procedures.


Revision 46 - Directory Listing
Modified Mon May 16 14:52:30 2011 UTC (12 years, 10 months ago) by guez
Removed procedure "psextbar". "psextbar" was called but the result of
the call was not used.


Revision 45 - Directory Listing
Modified Wed Apr 27 13:00:12 2011 UTC (12 years, 11 months ago) by guez
Split file "histwrite.f90" into "histwrite.f90", "histwrite_real.f90"
and "histvar_seq.f90".

Extracted documentation from "psextbar.f" into "psextbar.txt" (out of SVN).


Revision 44 - Directory Listing
Modified Wed Apr 13 12:29:18 2011 UTC (12 years, 11 months ago) by guez
Removed argument "pdteta" of "calfis", because it was not used.

Created module "conf_guide_m", containing procedure
"conf_guide". Moved module variables from "guide_m" to "conf_guide_m".

In module "getparam", removed "ini_getparam" and "fin_getparam" from
generic interface "getpar".

Created module variables in "tau2alpha_m" to replace common "comdxdy".


Revision 43 - Directory Listing
Modified Fri Apr 8 12:43:31 2011 UTC (12 years, 11 months ago) by guez
"start_init_phys" is now called directly by "etat0" instead of through
"start_init_dyn". "qsol_2d" is no longer a variable of module
"start_init_phys_m", it is an argument of
"start_init_phys". "start_init_dyn" now receives "tsol_2d" from
"etat0".

Split file "vlspltqs.f" into "vlspltqs.f90", "vlxqs.f90" and
""vlyqs.f90".

In "start_init_orog", replaced calls to "flin*" by calls to NetCDF95.


Revision 42 - Directory Listing
Modified Thu Mar 24 11:52:41 2011 UTC (13 years ago) by guez
Removed programs "test_inter_barxy" and "test_disvert".

Added option "read" for "s_sampling" in "disvert".


Revision 41 - Directory Listing
Modified Tue Feb 22 15:09:57 2011 UTC (13 years, 1 month ago) by guez
Moved "Test_ozonecm" out of SVN.

Revision 40 - Directory Listing
Modified Tue Feb 22 13:49:36 2011 UTC (13 years, 1 month ago) by guez
"alpha" useless, always 0, in "exner_hyb".


Revision 39 - Directory Listing
Modified Tue Jan 25 15:11:05 2011 UTC (13 years, 2 months ago) by guez
"pi" comes from "nr_util". Removed subroutine "initialize" in module
"comconst".

Copied the content of "fxy_sin.h" into "fxysinus", instead of getting
it from an "include" line. Removed file "fxy_sin.h".

"ps" has rank 2 in "gcm" and "dynetat0".

Assumed-shape for argument "q" of "integrd".


Revision 38 - Directory Listing
Modified Thu Jan 6 17:52:19 2011 UTC (13 years, 2 months ago) by guez
Extracted ASCII art from "inigeom" into a separate text file in the
documentation.

"test_disvert" now creates a separate file for layer thicknesses.

Moved variables from module "yomcst" to module "suphec_m" because this
is where those variables are defined. Kept in "yomcst" only parameters
of Earth orbit. Gave the attribute "parameter" to some variables of
module "suphec_m".

Variables of module "yoethf" were defined in procedure "suphec". Moved
these definitions to a new procedure "yoethf" in module "yoethf_m".


Revision 37 - Directory Listing
Modified Tue Dec 21 15:45:48 2010 UTC (13 years, 3 months ago) by guez
Inlined procedure "pression".

Split "guide.f90" into "guide.f90" and "tau2alpha.f90". Split
"read_reanalyse.f" into single-procedure files in directory
"Read_reanalyse".

Useless copy of variables in "iniphysiq". Directly define module
variables in "gcm" and remove procedure "iniphysiq".

Added "pressure-altitude" in "test_disvert".


Revision 36 - Directory Listing
Modified Thu Dec 2 17:11:04 2010 UTC (13 years, 3 months ago) by guez
Now using the library "NR_util".


Revision 35 - Directory Listing
Modified Tue Jun 8 15:37:21 2010 UTC (13 years, 9 months ago) by guez
Created intermediary variable for meridional wind in "calfis". Removed
unused variables.

Removed argument "firstcal" of "physiq", made it a local
variable. Removed unused argument "v" of "phytrac".


Revision 34 - Directory Listing
Modified Wed Jun 2 11:01:12 2010 UTC (13 years, 9 months ago) by guez
Split "ini_hist.f90" into single-procedure files.

In "calfis" and "physiq", removed dummy argument "nq" since "nq" must
be equal to "nqmx".

In "calfis", renamed dummy argument "pq" to "q", same name as actual
argument in "leapfrog". Renamed local variable "zqfi" to "qx", same
name as dummy argument in "physiq".

Removed arguments "itop_con" and "ibas_con" of "phytrac", which were
not used.


Revision 33 - Directory Listing
Modified Fri Apr 9 10:56:14 2010 UTC (13 years, 11 months ago) by guez
Test namelist input in procedure "conf_gcm" rather than program unit
"gcm".

Compute "time" in procedure "sortvarc" rather than "leapfrog".

Rewrote "leapfrog" with a single loop on "itau" instead of two nested
loops on number of periodic matsuno-leapfrog cycles and leapfrog
iterations.


Revision 32 - Directory Listing
Modified Tue Apr 6 17:52:58 2010 UTC (13 years, 11 months ago) by guez
Split "stringop.f90" into single-procedure files. Gathered files in directory
"IOIPSL/Stringop".

Split "flincom.f90" into "flincom.f90" and "flinget.f90". Removed
unused procedures from module "flincom". Removed unused argument
"filename" of procedure "flinopen_nozoom".

Removed unused files.

Split "grid_change.f90" into "grid_change.f90" and
"gr_phy_write_3d.f90".

Removed unused procedures from modules "calendar", "ioipslmpp",
"grid_atob", "gath_cpl" and "getincom". Removed unused procedures in
files "ppm3d.f" and "thermcell.f".

Split "mathelp.f90" into "mathelp.f90" and "mathop.f90".

Removed unused variable "dpres" of module "comvert".

Use argument "itau" instead of local variables "iadvtr" and "first" to
control algorithm in procedure "fluxstokenc".

Removed unused arguments of procedure "integrd".

Removed useless computations at the end of procedure "leapfrog".

Merged common block "matrfil" into module "parafilt".


Revision 31 - Directory Listing
Modified Thu Apr 1 14:59:19 2010 UTC (14 years ago) by guez
Split "vlsplt.f" in single-procedure files. Gathered the files in
directory "dyn3d/Vlsplt".

Defined "pbarum(:, 1, :)" and "pbarum(:, jjm + 1, :)" in procedure
"groupe".


Revision 30 - Directory Listing
Modified Thu Apr 1 09:07:28 2010 UTC (14 years ago) by guez
Imported Source files of the external library "IOIPSL_Lionel" into
"libf/IOIPSL".

Split "cray.f90" into "scopy.f90" and "ssum.f90".

Rewrote "leapfrog" in order to have a clearer algorithmic structure.


Revision 29 - Directory Listing
Modified Tue Mar 30 10:44:42 2010 UTC (14 years ago) by guez
In "leapfrog", transformed some arrays with a single dimension for horizontal
position into arrays with two horizontal dimensions. Simplified the
computation of potential temperature and surface pressure at the
poles.


Revision 28 - Directory Listing
Modified Fri Mar 26 18:33:04 2010 UTC (14 years ago) by guez
Removed unused "diagedyn.f" and "undefSTD.f".

In "etat0", the variable "dt" of module "temps" was defined from
"landicered.nc", which was meaningless and useless. Replaced "dt" by a
local trash variable.

Removed variable "dt" from module "temps" and created instead a local
variable of "leapfrog" and an argument of "integrd".


Revision 27 - Directory Listing
Modified Thu Mar 25 14:29:07 2010 UTC (14 years ago) by guez
"dyn3d" and "filtrez" do not contain any included file so make rules
have been updated.

"comdissip.f90" was useless, removed it.

"dynredem0" wrote undefined value in "controle(31)", that was
overwritten by "dynredem1". Now "dynredem0" just writes 0 to
"controle(31)".

Removed arguments of "inidissip". "inidissip" now accesses the
variables by use association.

In program "etat0_lim", "itaufin" is not defined so "dynredem1" wrote
undefined value to "controle(31)". Added argument "itau" of
"dynredem1" to correct that.

"itaufin" does not need to be a module variable (of "temps"), made it
a local variable of "leapfrog".

Removed calls to "diagedyn" from "leapfrog".


Revision 26 - Directory Listing
Modified Tue Mar 9 15:27:15 2010 UTC (14 years ago) by guez
Moved variable "dtdiss" from module "comconst", variable "idissip"
from module "conf_gcm_m" and all variables from module "comdissipn" to
module "inidissip_m". "inidissip" creates file
"inidissip.csv". "idissip" is no longer read from a namelist. Removed
useless computation of "dtdiss" in procedure "iniconst".


Revision 25 - Directory Listing
Modified Fri Mar 5 16:43:45 2010 UTC (14 years ago) by guez
Simplified "etat0_lim.sh" and "gcm.sh" because the full versions
depended on personal arrangements for directories and machines.

Translated included files into modules. Encapsulated procedures into modules.

Moved variables from module "comgeom" to local variables of
"inigeom". Deleted some unused variables in "comgeom".

Moved variable "day_ini" from module "temps" to module "dynetat0_m".

Removed useless test on variable "time" and useless "close" statement
in procedure "leapfrog".

Removed useless call to "inigeom" in procedure "limit".


Revision 24 - Directory Listing
Modified Wed Mar 3 13:23:49 2010 UTC (14 years ago) by guez
Created directory "phylmd/Radlwsw". Split "radlwsw.f" in files
containing a single procedure.

Removed variable "itaufinp1" in "leapfrog".


Revision 23 - Directory Listing
Modified Mon Dec 14 15:25:16 2009 UTC (14 years, 3 months ago) by guez
Split "orografi.f": one file for each procedure. Put the created files
in new directory "Orography".

Removed argument "vcov" of procedure "sortvarc". Removed arguments
"itau" and "time" of procedure "caldyn0". Removed arguments "itau",
"time" and "vcov" of procedure "sortvarc0".

Removed argument "time" of procedure "dynredem1". Removed NetCDF
variable "temps" in files "start.nc" and "restart.nc", because its
value is always 0.

Removed argument "nq" of procedures "iniadvtrac" and "leapfrog". The
number of "tracers read in "traceur.def" must now be equal to "nqmx",
or "nqmx" must equal 4 if there is no file "traceur.def". Replaced
variable "nq" by constant "nqmx" in "leapfrog".

NetCDF variable for ozone field in "coefoz.nc" must now be called
"tro3" instead of "r".

Fixed bug in "zenang".


Revision 22 - Directory Listing
Modified Fri Jul 31 15:18:47 2009 UTC (14 years, 8 months ago) by guez
Superficial modifications

Revision 21 - Directory Listing
Modified Wed Oct 15 16:51:38 2008 UTC (15 years, 5 months ago) by guez
Corrected bug in "phyredem.f90" that was introduced in revision 20.

Revision 20 - Directory Listing
Modified Wed Oct 15 16:19:57 2008 UTC (15 years, 5 months ago) by guez
Deleted argument "presnivs" of "physiq", "ini_histhf", "ini_histhf3d",
"ini_histday", "ini_histins", "ini_histrac", "phytrac". Access it from
"comvert" instead.

Replaced calls to NetCDF Fortran 77 interface by calls to Fortran 90
interface or to NetCDF95.

Procedure "gr_phy_write_3d" now works with a variable of arbitrary
size in the second dimension.

Annotated use statements with "only" clause.

Replaced calls to NetCDF interface version 2 by calls to Fortran 90
interface in "guide.f90" and "read_reanalyse.f".

In "write_histrac", replaced calls to "gr_fi_ecrit" by calls to
"gr_phy_write_2d" and "gr_phy_write_3d".


Revision 19 - Directory Listing
Modified Thu Aug 7 15:46:20 2008 UTC (15 years, 7 months ago) by guez
Inlined procedures "regr_pr_av" and "regr_pr_int" in "regr_pr_o3",
"regr_pr_av_coefoz" and "regr_pr_int_coefoz".


Revision 18 - Directory Listing
Modified Thu Aug 7 12:29:13 2008 UTC (15 years, 7 months ago) by guez
In module "regr_pr", rewrote scanning of horizontal positions as a
single set of loops, using a mask.

Added some "intent" attributes.

In "dynredem0", replaced calls to Fortran 77 interface of NetCDF by
calls to NetCDF95. Removed calls to "nf_redef", regrouped all writing
operations. In "dynredem1", replaced some calls to Fortran 77
interface of NetCDF by calls to Fortran 90 interface.

Renamed variable "nqmax" to "nq_phys".

In "physiq", if "nq >= 5" then "wo" is computed from the
parameterization of "Cariolle".


Revision 17 - Directory Listing
Modified Tue Aug 5 13:31:32 2008 UTC (15 years, 7 months ago) by guez
Created rule for "compare_sampl_*" files in
"Documentation/Manuel_LMDZE.texfol/Graphiques/GNUmakefile".

Extracted "qcheck", "radiornpb", "minmaxqfi" into separate files.

Read pressure coordinate of ozone coefficients once per run instead of
every day.

Added some "intent" attributes.

Added argument "nq" to "ini_histday". Replaced calls to "gr_fi_ecrit"
by calls to "gr_phy_write_2d". "Sigma_O3_Royer" is written to
"histday.nc" only if "nq >= 4". Moved "ini_histrac" to module
"ini_hist".

Compute "zmasse" in "physiq", pass it to "phytrac".

Removed computations of "pftsol*" and "ppsrf*" in "phytrac".

Do not use variable "rg" from module "YOMCST" in "TLIFT".


Revision 16 - Directory Listing
Modified Fri Aug 1 15:37:00 2008 UTC (15 years, 7 months ago) by guez


Revision 15 - Directory Listing
Modified Fri Aug 1 15:24:12 2008 UTC (15 years, 7 months ago) by guez
-- Minor modification of input/output:

Added variable "Sigma_O3_Royer" to "histday.nc". "ecrit_day" is not
modified in "physiq". Removed variables "pyu1", "pyv1", "ftsol1",
"ftsol2", "ftsol3", "ftsol4", "psrf1", "psrf2", "psrf3", "psrf4"
"mfu", "mfd", "en_u", "en_d", "de_d", "de_u", "coefh" from
"histrac.nc".

Variable "raz_date" of module "conf_gcm_m" has logical type instead of
integer type.

-- Should not change any result at run time:

Modified calls to "IOIPSL_Lionel" procedures because the interfaces of
these procedures have been simplified.

Changed name of variable in module "start_init_orog_m": "masque" to
"mask".

Created a module containing procedure "phyredem".

Removed arguments "punjours", "pdayref" and "ptimestep" of procedure
"iniphysiq".

Renamed procedure "gr_phy_write" to "gr_phy_write_2d". Created
procedure "gr_phy_write_3d".

Removed procedures "ini_undefstd", "moy_undefSTD", "calcul_STDlev",
"calcul_divers".


Revision 14 - Directory Listing
Modified Mon Jul 28 14:48:09 2008 UTC (15 years, 8 months ago) by guez
Corrected bug as directed by Jean-Yves Grandpeix. "nent" in
"cv3_mixing" is an argument instead of a local variable.

Revision 13 - Directory Listing
Modified Fri Jul 25 19:59:34 2008 UTC (15 years, 8 months ago) by guez
-- Minor change of behaviour:

"etat0" does not compute "rugsrel" nor "radpas". Deleted arguments
"radpas" and "rugsrel" of "phyredem". Deleted argument "rugsrel" of
"phyetat0". "startphy.nc" does not contain the variable "RUGSREL". In
"physiq", "rugoro" is set to 0 if not "ok_orodr". The whole program
"etat0_lim" does not use "clesphys2".

-- Minor modification of input/output:

Created subroutine "read_clesphys2". Variables of "clesphys2" are read
in "read_clesphys2" instead of "conf_gcm". "printflag" does not print
variables of "clesphys2".

-- Should not change any result at run time:

References to module "numer_rec" instead of individual modules of
"Numer_rec_Lionel".

Deleted argument "clesphy0" of "calfis", "physiq", "conf_gcm",
"leapfrog", "phyetat0". Deleted variable "clesphy0" in
"gcm". "phyetat0" does not modify variables of "clesphys2".

The program unit "gcm" does not modify "itau_phy".

Added some "intent" attributes.

"regr11_lint" does not call "polint".


Revision 12 - Directory Listing
Modified Mon Jul 21 16:05:07 2008 UTC (15 years, 8 months ago) by guez
-- Minor modification of input/output:

Created procedure "read_logic". Variables of module "logic" are read
by "read_logic" instead of "conf_gcm". Variable "offline" of module
"conf_gcm" is read from namelist instead of "*.def".

Deleted arguments "dtime", "co2_ppm_etat0", "solaire_etat0",
"tabcntr0" and local variables "radpas", "tab_cntrl" of
"phyetat0". "phyetat0" does not read "controle" in "startphy.nc" any
longer. "phyetat0" now reads global attribute "itau_phy" from
"startphy.nc". "phyredem" does not create variable "controle" in
"startphy.nc" any longer. "phyredem" now writes global attribute
"itau_phy" of "startphy.nc". Deleted argument "tabcntr0" of
"printflag". Removed diagnostic messages written by "printflag" for
comparison of the variable "controle" of "startphy.nc" and the
variables read from "*.def" or namelist input.

-- Removing unwanted functionality:

Removed variable "lunout" from module "iniprint", replaced everywhere
by standard output.

Removed case "ocean == 'couple'" in "clmain", "interfsurf_hq" and
"physiq". Removed procedure "interfoce_cpl".

-- Should not change anything at run time:

Automated creation of graphs in documentation. More documentation on
input files.

Converted Fortran files to free format: "phyredem.f90", "printflag.f90".

Split module "clesphy" into "clesphys" and "clesphys2".

Removed variables "conser", "leapf", "forward", "apphys", "apdiss" and
"statcl" from module "logic". Added arguments "conser" to "advect",
"leapf" to "integrd". Added local variables "forward", "leapf",
"apphys", "conser", "apdiss" in "leapfrog".

Added intent attributes.

Deleted arguments "dtime" of "phyredem", "pdtime" of "flxdtdq", "sh"
of "phytrac", "dt" of "yamada".

Deleted local variables "dtime", "co2_ppm_etat0", "solaire_etat0",
"length", "tabcntr0" in "physiq". Replaced all references to "dtime"
by references to "pdtphys".


Revision 11 - Directory Listing
Modified Thu Jun 5 12:43:08 2008 UTC (15 years, 9 months ago) by guez
Added option "-lines" for "nag_fcalls95" in "nag_tools.mk".
Added documentation.
Leading spaces removed in "REPLY" in "etat0_lim.sh".
"gcm.sh" does not require "coefoz_LMDZ.nc" to be present.


Revision 10 - Directory Listing
Modified Fri Apr 18 14:45:53 2008 UTC (15 years, 11 months ago) by guez
Added NetCDF directory "/home/guez/include" in "g95.mk" and
"nag_tools.mk".

Added some "intent" attributes in "PVtheta", "advtrac", "caladvtrac",
"calfis", "diagedyn", "dissip", "vlspltqs", "aeropt", "ajsec",
"calltherm", "clmain", "cltrac", "cltracrn", "concvl", "conema3",
"conflx", "fisrtilp", "newmicro", "nuage", "diagcld1", "diagcld2",
"drag_noro", "lift_noro", "SUGWD", "physiq", "phytrac", "radlwsw", "thermcell".

Removed the case "ierr == 0" in "abort_gcm"; moved call to "histclo"
and messages for end of run from "abort_gcm" to "gcm"; replaced call
to "abort_gcm" in "leapfrog" by exit from outer loop.

In "calfis": removed argument "pp" and variable "unskap"; changed
"pksurcp" from scalar to rank 2; use "pressure_var"; rewrote
computation of "zplev", "zplay", "ztfi", "pcvgt" using "dyn_phy";
added computation of "pls".

Removed unused variable in "dynredem0".

In "exner_hyb": changed "dellta" from scalar to rank 1; replaced call
to "ssum" by call to "sum"; removed variables "xpn" and "xps";
replaced some loops by array expressions.

In "leapfrog": use "pressure_var"; deleted variables "p", "longcles".

Converted common blocks "YOECUMF", "YOEGWD" to modules.

Removed argument "pplay" in "cvltr", "diagetpq", "nflxtr".

Created module "raddimlw" from include file "raddimlw.h".

Corrected call to "new_unit" in "test_disvert".


Revision 9 - Directory Listing
Modified Mon Mar 31 13:58:05 2008 UTC (16 years ago) by guez
New variables "*_dir" in "g95.mk".
Corrected some bugs: "etat0_lim" works, but not "gcm".


Revision 8 - Directory Listing
Modified Mon Mar 31 12:51:21 2008 UTC (16 years ago) by guez
This revision is not in working order. Pending some moving of files.
Moving files around.


Revision 7 - Directory Listing
Modified Mon Mar 31 12:24:17 2008 UTC (16 years ago) by guez
This revision is not in working order. Pending some moving of files.

Important changes. In the program "etat0_lim": ozone coefficients from
Mobidic are regridded in time instead of pressure ; consequences in
"etat0". In the program "gcm", ozone coefficients from Mobidic are
read once per day only for the current day and regridded in pressure ;
consequences in "o3_chem_m", "regr_pr_coefoz", "phytrac" and
"regr_pr_comb_coefoz_m".

NetCDF95 is a library and does not export NetCDF.

New variables "nag_gl_options", "nag_fcalls_options" and
"nag_cross_options" in "nag_tools.mk".

"check_coefoz.jnl" rewritten entirely for new version of
"coefoz_LMDZ.nc".

Target "obj_etat0_lim" moved from "GNUmakefile" to "nag_rules.mk".

Added some "intent" attributes in "calfis", "clmain", "clqh",
"cltrac", "cltracrn", "cvltr", "ini_undefSTD", "moy_undefSTD",
"nflxtr", "phystokenc", "phytrac", "readsulfate", "readsulfate_preind"
and "undefSTD".

In "dynetat0", "dynredem0" and "gcm", "phis" has rank 2 instead of
1. "phis" has assumed shape in "dynredem0".

Added module containing "dynredem0". Changed some calls with NetCDF
Fortran 77 interface to calls with NetCDF95 interface.

Replaced calls to "ssum" by calls to "sum" in "inigeom".

In "make.sh", new option "-c" to change compiler.

In "aaam_bud", argument "rjour" deleted.

In "physiq": renamed some variables; deleted variable "xjour".

In "phytrac": renamed some variables; new argument "lmt_pas".


Revision 6 - Directory Listing
Modified Tue Mar 4 14:00:42 2008 UTC (16 years ago) by guez
Removed test on coefoz_LMDZ in gcm.sh.
Added test on nbtr in ini_histhf3d and write_histhf3d.
Added test on nqmax in phytrac.

Revision 5 - Directory Listing
Modified Mon Mar 3 16:32:04 2008 UTC (16 years ago) by guez
Created module from included file parafilt.
Converted caldyn0 to free format.
Added a rule to create cross-references with NAG.
Added optional attribute in iniadvtrac.
Suppressed argument nq in dynredem0 and dynredem1, using nqmx instead.
Replaced some NetCDF calls by netcdf95 calls in dynredem0.
Added intent attribute in dynredem0 and dynredem1.
Annotated use statements with only clause, in dynredem1.
Suppressed variable nq and argument of iniadvtrac in etat0.
Added test on nqmx in etat0.

Revision 4 - Directory Listing
Modified Thu Feb 28 18:05:06 2008 UTC (16 years, 1 month ago) by guez
Cosmetic changes

Revision 3 - Directory Listing
Added Wed Feb 27 13:16:39 2008 UTC (16 years, 1 month ago) by guez
Initial import

  ViewVC Help
Powered by ViewVC 1.1.21