Parent Directory | Revision Log
Sticky Revision: |
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.
Move Sources/* to root directory.
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.
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.
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.
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.
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).
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.
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.
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.
Removed argument ncum of cv30_unsat, arguments nloc, ncum, nd, na of cv30_yield.
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.
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.
CV3 to CV30 (following LMDZ) (continued).
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).
Replaced integer variable iflag_con of module clesphys2 by logical variable conv_emanuel.
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.
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.
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).
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.
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.
Sources inside, compilation outside.
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.
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.
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.
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.
Changed all ".f90" suffixes to ".f".
Moved everything out of libf.
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.)
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.
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".
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.
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.
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.
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".
Corrected bug as directed by Jean-Yves Grandpeix. "nent" in "cv3_mixing" is an argument instead of a local variable.
-- 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".
Initial import
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
ViewVC Help | |
Powered by ViewVC 1.1.21 |