Parent Directory | Revision Log
Sticky Revision: |
Polish.
Polish
Polish
Remove gamq (counter-gradient for water vapor) in procedure clqh, was always 0 (does not appear either any longer in LMDZ).
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).
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.
Merge procedures clcdrag and coefcdrag into procedure cdrag (following LMDZ revision 2232).
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.
Replace arguments u, v of procedure clcdrag by argument speed, preparing merge with procedure coefcdrag.
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.
Move Sources/* to root directory.
*trmb[1-3] were just filled with 0. Remove these variables and output.
Polishing.
Extract part of clmain into a new procedure coef_diff_turb (following LMDZ).
In clmain, assemble modifications of ycdrag[hm] (following LMDZ).
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.
In procedure clmain, no need for intermediary variables ykmm and ykmn. In module coefcdrag_m, remove unused procedures fsta and fins.
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.
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.
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.
In procedure phytrac, separate dummy argument coefh(klon, klev) into coefh(klon, 2:klev) and cdragh(klon).
ycoef[mh]0(:, 1) is never used.
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).
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.
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).
In procedure clqh, tq_cdrag from local variable to dummy argument, and recieve only eddy diffusion coefficient in dummy argument coef.
Change only eddy diffusion coefficient, not drag in coefkz2.
Almost nothing.
Use separate variables for eddy diffusion coefficient and drag coefficient in procedure coefkz (following LMDZ). coefkzmin only computes eddy diffusion coefficient, not drag coefficient.
Use separate variables for eddy diffusion and drag coefficient in clvent (following LMDZ).
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.
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.
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).
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.
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.
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.
In interfsurf_hq, changed names of variables : tsurf becomes ts (name of actual argument), tsurf_temp can then become simply tsurf.
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.
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.)
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.
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.)
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.
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).
New philosophy on compiler options. Removed source code for thermcep = f. (Not used in LMDZ either.)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Sources inside, compilation outside.
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.
Removed arguments klon, knon of interfoce_lim. Removed argument knon of interfsur_lim.
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.
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.
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.
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.
Extracted procedures that were in module calendar into separate files.
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.)
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.
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".
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.
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.
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.
"alpha" useless, always 0, in "exner_hyb".
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".
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".
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.
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".
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".
-- 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".
Corrected bug as directed by Jean-Yves Grandpeix. "nent" in "cv3_mixing" is an argument instead of a local variable.
-- 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".
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 |