Parent Directory | Revision Log
Sticky Revision: |
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 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.
Moved everything out of libf.
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.
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.)
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.
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.
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.
Cleaning.
Changed name of module "comvert" to "disvert_m". Changed constant 1. to 0.3 in vertical sampling "strato".
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".
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".
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".
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.
Replaced calls to "flinget" by calls to "NetCDF95".
"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.
"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".
Now using the library "NR_util".
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".
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".
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".
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".
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".
Superficial modifications
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".
-- 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".
-- 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".
-- 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".
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".
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".
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.
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 |