Parent Directory | Revision Log
Sticky Revision: |
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.
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.
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.
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.
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.
Extracted procedures that were in module calendar into separate files.
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.
Changed all ".f90" suffixes to ".f".
Moved everything out of libf.
Cleaning.
Changed name of module "comvert" to "disvert_m". Changed constant 1. to 0.3 in vertical sampling "strato".
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".
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.
"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".
Split "vlsplt.f" in single-procedure files. Gathered the files in directory "dyn3d/Vlsplt". Defined "pbarum(:, 1, :)" and "pbarum(:, jjm + 1, :)" in procedure "groupe".
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.
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".
"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".
-- 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".
New variables "*_dir" in "g95.mk". Corrected some bugs: "etat0_lim" works, but not "gcm".
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 |