Parent Directory | Revision Log
Sticky Revision: |
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.
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.
Rename module dimens_m to dimensions.
Move Sources/* to root directory.
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.
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.
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.
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.
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.
Changed all ".f90" suffixes to ".f".
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).
Moved everything out of libf.
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.
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".
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 |