source: trunk/LMDZ.GENERIC/README @ 1677

Last change on this file since 1677 was 1673, checked in by emillour, 8 years ago

Generic model:
Followup on updates in LMDZ.COMMON, add print_control_mod.F90
and abort_physic.F90 in phy_common.
EM

File size: 61.3 KB
Line 
1== 17/09/08 ==
2>>> Build a version with new soil but old radiative transfer,
3    but keeping possibility of switching back to new radiative transfer),
4    which incorporates changes & improvements currently included in the
5    'reference version' GCM (see /u/emlmd/LMDZ.MARS.mixdyn)
6
7>>> start by modifying makegcm as in /u/emlmd/LMDZ.MARS.mixdyn, so that it runs
8    without environment variables and set LIBOGCM to /tmp15/emlmd/libo
9
10>>> directory contents of 'aeronomars', 'grid' and 'filtrez' are simillar
11    to those in /u/emlmd/LMDZ.MARS.mixdyn
12
13>>> in bibio , only file mxva.F needed be upgraded
14
15>>> get phymars and dyn3d contents from /u/emlmd/LMDZ.MARS.mixdyn
16    (and remove all *old files)
17
18>>> check differences between dyn3d and /u/emlmd/LMDZ.MARS.170908/libf/dyn3d
19    and upgrade when necessary:
20    - removed 'netcdf.inc' file (has nothing to do there!)
21    - comgeom.h and comgeom.h : made fortran90 compliant
22    - control.h : made fortran90 compliant
23    - dynredem.F : more read/write controls + comments in english
24    - ini_archive.F : new soil/thermal inertia changes
25    - integrd.F : added additional information to output when crashing
26    - lect_start_archive.F : new soil/thermal inertia changes
27    - newstart.F : new soil/thermal inertia changes + comments in english
28    - start2archive.F : new soil/thermal inertia changes
29    - vanleer.F : removed inapropriate 'external' statement
30    - write_archive.F : enable writting a subterranean field
31
32>>> check differences between phymars and /u/emlmd/LMDZ.MARS.170908/libf/phymars
33    and upgrade when necessary:
34    New soil stuff:
35    - added comsoil.h
36    - iniwrite.F : new soil changes
37    - added iniwritesoil.F90 and writediagsoil.F90 for subterranean fields
38    - added interp_line.F (for subterranean grid interpolation)
39    - adapted phyetat0.F for subterranean temperature & inertia
40    - adapted physdem1.F to include new soil stuff
41    - physiq.F : added calls to writediagsoil
42    - soil.F : new routine (fixed vertical grid + variable thermal inertia)
43    - added soil_settings.F (to read/initialize/interpolate soil properties)
44    - updated surfdat.h (since thermal inertia is now in comsoil.h)
45    - updated tabfi.F : include new soil properties
46    - updated testphys1d.F
47    - updated dimphys.h (set nsoil=18 as default)
48
49== 18/09/08 ==
50>>> add the possibility of easily switching to Tran radiative transfert
51    - updated aerdust.h.ocke97 (changed some variables name) so it can
52      replace aerdust.h (which is currently the same as aerdust.h.clan91).
53    - imported Tran's 'gfluxv.F' routine
54    - imported Trans' version of 'swr.F' routine, saved it as 'swr.F.toon'
55
56>>> Backup of 'old' Morcrette swr.F is 'swr.F.morc'
57    NB: to switch from one radiative transfer to the other, just copy
58    swr.F.morc or swr.F.toon to swr.F (and eventually 'touch swr.F' so that
59    makegcm recompiles swr.F)
60    No other dependencies (swr.F.toon uses 'gfluxv.F' and swr.F.morc uses
61    'dedd.F').
62
63>>> Changed the latter, so that users can switch from one to the other
64    - modified swr.F.toon to become swr_toon.F (and to include gfluxv.F)
65    - modified swr.F.morc to become swr_fouquart.F (and to include dedd.F)
66    - added a flag in callkeys.h, swrtype (parameter to be set/changed by
67      the user 1=Fouquart and 2=Toon)
68    - update readtesassim so that the coefficient by which opacity
69      is multiplied is set according to the 'swrtype' parameter
70
71== 25/09/08 ==
72>>> Implement the use of tracer-by-name in physics
73    - in phymars/tracer.h set 'noms' length to 20 (instead of 10)
74    - in phymars/callsedim2q.F and phymars/callsedim.F, use tracers by name
75    - in phymars/dustopacity.F, use tracers by name
76    - in phymars/vdifc.F, use tracers by name
77
78== 26/09/08 ==
79>>> Change implementation strategy (for now); don't move surface tracer around
80    i.e.: surface ice remains equivalent to qsurf(nqmx)=qsurf(i_h2o_vap)
81          and likewise for surface tendencies ...
82    - modified vdifc.F and callsedim.F back
83    - modified initracer.F (so that water names are h2o_vap & h2o_ice)
84   
85== 29/09/08 ==
86    - modified aeronomars/init_chimie_B (cosmetics)
87    - corrected aeronomars/moldiff.F internal routine tridag; changed
88      "pause" error messages to 'stop' messages
89    - modified phymars/watercloud.F to use tracers by name
90    - corrected aeronomars/molvis.F (undefined 'fac' and 'Akk' written to
91       output at first call)
92   
93== 30/09/08 ==
94    - modified aeronomars/calchim.F to use tracers by name
95    - adapted aeronomars/photochemist_B.F to use tracers by name
96    - adapted aeronomars/chemtermos.F to use tracers by name
97    - adapted aeronomars/concentrations.F to use tracers by name
98    - corrected aeronomars/conduction.F (undefined 'Akk' written to output
99      at first call)
100    - adapted aeronomars/euvheat.F to use tracers by name
101    - adapted aeronomars/moldiff.F and moldiffcoeff.F to use tracers by name
102
103== 01/10/08 ==
104    - For more compatibility with LMDZ4; mimic reading a 'traceur.def' file
105      in the dynamics via a call to a routine 'iniadvtrac.F' and saving
106      tracers names in 'advtrac.h'
107     -> created 'iniadvtrac.F', 'advtrac.h' and modified gcm.F
108    - modified 'dynetat0.F' so that tracers are loaded from 'start.nc' by name
109    - modified 'dynredem.F' so that tracers are written to 'restart.nc'
110      by name
111    - modified 'initracer.F' tu use tracers by name
112
113== 02/10/08 ==
114    - removed use of 'nqchem_min' everywhere:
115      adapted 'euvheat.F','inifis.F','physiq.F'
116      (leave 'inichim.F' for later)
117    - updated 'phyetat0' and 'physdem1.F' to read/write surface tracers by name
118    - modify things so that surface water ice index is the same as
119      atmospheric water ice (except when running without water ice; then
120      simply set i_h2o_ice=i_h2o_vap).
121      NB: the easiest is to have global storage of tracer names/indexes in
122      tracer.h
123      => changed initracer.F & tracer.h to have global igcm_something indexes
124
125== 03/10/08 ==
126    - adaptations for surface ice index, modified files:
127      phyetat0.F : if there is a dynamical tracer 'h2o_vap' then load
128                   surface tracer called 'h2o_ice' instead
129      initracer.F : in 'old' tracer name case: move qsurf(nqmx)->qsurf(nqmx-1)
130                    and set i_h2o_ice=i_h2o_vap if iceparty=.false.
131      physdem1.F : if old tracer names: move qsurf(nqmx-1)->qsurf(nqmx)
132                   if iceparty=.false., write surface tracer 'h2o_ice'
133                   (and not 'h2o_vap') to file.
134      adapted vdifc.F, callsedim.F & watercloud.F & physiq.F so that surface
135      ice is now identified as qsurf(i_h2o_ice)
136    - updated aeronomars/perosat.F (cosmetics)
137
138== 06/10/08 ==
139    - modify newstart.F and lect_start_archive.F to use tracers by name
140== 07/10/08 ==
141    - adapted inichim_newstart.F (added qsurf to arguments)
142      and inichim_readcallphys.F
143== 08/10/08 ==
144    - implement reading traceur.def in dyn3d/iniadvtrac.F
145
146== 16/10/08==
147    -small change in inifis.F (only warn if too many tracers, compared
148     to the expected number, not stop).
149     - corrected bug in initracer.F
150== 21/10/08 ==
151    - modified newstart.F to load B.Diez subsurface ice maps.
152    - corrected small bug (uninitialized variable) in interp_horiz.F
153== 22/10/08 ==
154    - updated iniwritediagsoil.F so that thermal inertia is written to
155      diagsoil.nc
156== 31/10/08 ==
157    - changed xvik.F program so it works even if we don't have atmospheric
158     temperature at hand (then it uses a 10km reference scale height) and so
159     that it does surface pressure interpolation log-wise.
160== 03/11/08 ==
161    - modified physiq to compute (and output) co2 column.
162    - added improvement by Francois in newcondens.F about computing CO2
163      partial pressure. This behavior is turned on by setting internal logical
164      flag 'improved_ztcond' to '.true.' (and running with a co2 tracer)
165    - updated 'start2archive' to work with 'new' gcm output (soil, tracers ...)
166== 04/11/08 ==
167    - upgraded xvik program to look for temperature in 7th layer variable if
168     there is no global atmospheric temperature field at hand.
169== 05/11/08 ==
170    - more modifs to newcondens.F: added another internal flag 'bound_qco2' to
171     enforce (if set to .true.) that co2 mass mixing ratio remains bounded.
172== 07/11/08 ==
173    - corrected 'writediagfi' & 'writediagsoil' so that an error message is
174      issued if called with a variable name which is too long.
175== 18/12/08 ==
176    - corrected bug in dyn3d 'addfi.F', (dimensions of local array p())
177== 23/02/09 ==
178    - modified "aeronomars/param_read.F" to do strictly fortran data
179     initialization (otherwise xlf compiler complains)
180    - changed a few '1.e-30' to '1.d-30' in aeronomars/photochemist_B.F
181     so that max functions has 2 doubles as arguments (otherwise xlf
182     compiler complains)
183
184==07/04/09 ==
185    -cosmetic changes/minor improvements in the handling of tracers in:
186     aeronomars/photochemist_B.F
187     aeronomars/perosat.F
188     aeronomoars/euvheat.F
189     aeronomars/moldiffcoeff.F
190     aeronomars/moldiff.F
191     aeronomars/cocentrations.F
192     aeronomars/chemtermos.F
193     aeronomars/calchim.F
194
195--> NB: still there are differences in outputs when order of tracers is changed
196
197== 09/04/09 ==
198>>> fixed problem in 'vdifc.F' which lead to different results when moving
199    tracers around.
200
201== 10/04/09 ==
202>>> corrected small bug in diagnostic outputs of 'watercloud.F' (tendencies were
203    not added to tracer values).
204
205== 21/04/09 ==
206>>> corrected small bug in "physdem1.F" about writing water ice surface tracer
207    to file
208
209== 07/05/09 ==
210>>> very minor correction (firstcall not set to true after first call
211    if no tracers) in convadj.F
212
213== 30/06/09 ==
214>>> Implement reading *def files with IOIPSL ersatz 'getin' function
215   - import "ioipsl_errioipsl.F90","ioipsl_getincom.F90","ioipsl_stringop.F90"
216     in bibio
217   - adapted 'dyn3d/defrun_new.F' to use "getin" function
218   - adapted 'phymars/inifis.F' to use "getin" function
219
220== 01/07/09 ==
221>>> Adapted 'create_make_gcm' so that the "use" in *.F files is identified and
222    corresponding dependencies included in the makefile rules.
223
224>>> Added the 3D scattering from aerosols by JB Madeleine:
225    - minor changes in aerave.F
226    - added the calls to aeropacity.F, and aeroptproperties.F in callradite.F
227    - changed the calls to lwu.F and swr.F in lwmain.F and swmain.F, respectively
228    - added 3D scattering properties in lwu.F and swr.F
229    - added the new aeroptproperties.F, aeropacity.F and suaer.F90 routines
230        (removed dustopacity.F)
231    - updated aeropacity.F with new tracer names
232    - changed the call to callradite.F in physiq.F, added the initialization
233        of reffrad and nueffrad (aerosol effective radius and variance)
234    - removed all the lines relative to the old "activice" option, including
235        temperature variation due to latent heat release (now in comments)
236    - renamed nsize into naersize in watercloud.F, watersat.F and newsedim.F,
237        to avoid conflicts with another "nsize" variable in the radiative transfer
238    - added the statement of nuice in watercloud.F, which is the effective variance
239        of the log-normal distribution for ice
240    - updated yomaer.h and removed aerice.h (and corresponding "includes")
241
242== 02/07/09 ==
243>>> Adapted 'aeronomars/inichim_readcallphys.F' (called by newstart)
244     to use "getin" routine.
245    + minor correction in 'inifis.F' (close 'iradia.def' file)
246>>> Minor correction in 'dyn3d/dynetat0.F' and 'phymars/phyetat0.F'; do not
247    attempt to reindex tracers if none were found.
248
249>>> in 'deftank' added examples of 'traceur.def' files (traceur.def.co2 : 1
250    co2 tracer; traceur.def.watercycle : 2 traceurs, water vapour and water ice
251    tracer.def.chemistry : all 15 species)
252
253== 06/07/09 ==
254>>> Modified 'makegcm' and makegcm_g95' so that modules files are put
255    with libraries (and not in current directory)
256
257==
258== WORK FOR GENERIC MODEL STARTS HERE
259==
260   
261== 01/08/09 ==
262>>> Old Martian radiative transfer removed completely, new correlated-k
263    scheme implemented in its place. Central function is callcorrk.F.
264    Radiative properties are no longer stored in dimradmars.h, but in the two
265    files radinc_h.F90 and radcommon_h.F90. 3D aerosol scheme
266    incorporated into callcorrk.F. dustopacity.F renamed aeropacity.F
267    and substantially simplified. For now the option to include dust
268    as an aerosol has been removed.
269
270>>> newcondense.F replaced by condense_co2cloud.F90. This is basically
271    Francois' routine from the old model, adapted to work with the new
272    generalised tracer scheme.
273
274>>> Options added in physiq.F and tabfi.F to allow for planets with
275    varying orbital parameters, radii, gravity etc. For the moment we
276    select the planet using the variable 'planettype' in
277    callphys.def. This could probably be improved in the future.
278
279>>> Many new options added to callphys.def.
280
281   
282   
283   
284   
285== 25/11/2009 ==
286>>>> List of changes and modifications
287- modified watercloud.F: added sanity check (i.e. do we have a water tracer?)
288- modified dyn3d/dynetat0.F --> removed possibility of reindexing tracers
289- modified phyetat0.F --> removed possibility of reindexing tracers
290
291-- removed using a "co2ice" array to store surface CO2 ice
292  -> adapted surfini.F & physiq.F to use qsurf(:,igcm_co2_ice)
293     instead of co2ice(:)
294  -> modified initracer.F & tracer.h to properly initialize (and store)
295     a "co2_ice" tracer.
296  -> removed 'co2ice' from vdifc.F (it was not used there anyway)
297     and from phsdem1.F
298  -> removed possibility of calling 'newcondens' from physiq.F
299  -> cleaned up newstart.F, lect_start_archive.F, start2archive.F to not use
300  "co2ice" field but qsurf(igcm_co2_ice)
301
302-- adapted 'create_make_gcm' and 'makegcm' scripts so that we don't need
303   to have and (unused) 'aeronomars' directory around.
304 
305-- shifted to reading traceur.def (dyn3d/iniadvtrac.F) in an Earth-LMDZ4-like
306   fashion:
307   first line == number of tracers
308   and then tracer name (1 per line; later we'll also add advection scheme type)
309-- NOTE BY RW: Here would be a good place to also note which tracer (if any) is
310   the 'variable gas' in the radiative transfer
311
312-- Made some changes in tabfi.F to let user change planet parameters
313   such as rotation rate, molar mass of atmosphere, ...
314   (NB: note however that we seem to lose dynamics/physics coherence ...
315    we should probably read these values from a planet.def file)
316
317-- Changed condens_co2cloud.F : added a check for presence of CO2 gas and output
318   of corresponding tendency.
319
320
321== 15/12/2009 ==
322>>> Correlated-k radiative transfer now reads spectral bands and p-T
323    matrix values from ascii files; the code checks that the number of
324    bands and matrix elements in the files match those written in
325    radinc.F90 on the first call.
326
327>>> Water vapour tracer coupled to variable gas species in radiative
328    transfer; option also given to run with fixed relative humidity
329    profiles. 'Variable gas species' option added to callphys.def.
330
331>>> Surface albedo updated to be one band everywhere.
332
333>>> suaer_corrk.F90 modified to use different ep, omeg, g variables in
334    the visible and infrared. This is necessary because the number of
335    bands is, in general, different.
336
337>>> suaer_corrk.F90 has an option to accept Francois' new CO2 ice
338    values (and convert wvl to metres!!).
339
340>>> optci.F --> optci.F90 so that water vapour continuum subroutine
341    can be included.
342
343== 08/01/10 ==
344>>> Option to change pref for hybrid coordinates added to newstart.F.
345
346
347== 15/01/2010 ==
348>>> Upgraded newstart.F: added possibility to reset refrence surface pressure
349   "preff" (and pa)
350>>> tabfi.F: added possibility of changing value of "year_day"
351>>> cosmetic change in callphys.def : separate "universal" parameters
352    and planet-specific parameters (in a separate file, e.g. earlymars.def)
353   
354== 22/01/2010 ==
355==> call this version LMDZ.GENERIC
356>>> Some cleanup & upgrades:
357-- split parameters in callphys.def into generic stuff (stays in callphys.def)
358   and another more specific file (e.g. earlymars.def).
359-- added 'output_olr' key (in callkeys.h; read in physiq.F) to trigger
360   output of fluxes in ascii file 'olr.txt'
361-- removed (non-generic) 'kastprof' and 'nearcond' keys/options in physiq.F
362  (also removed file kastprof_fn.F)
363-- had to set 'fixh2ovap  =.false. in callcorrk.F to avoid
364   "out of range subscript" pb in callcorrk.F
365   ==> this should be improved / better controlled in the future
366-- updated newsedim.F to use "molrad, visc, avogado values from comcstfi.h
367   (and not local versions of these constants)
368-- fixed buggy -O option in makegcm (and makegcm_g95);
369
370== 22/02/2010 ==
371==> call this version LMDZ.GENERIC.v0.31
372-- rain.F, manabe.F and largescale.F subroutines added to water cycle
373-- several new toggles added to earlymars.def
374
375== 28/03/2010 ==
376==> call this version LMDZ.GENERIC.v0.4
377-- many changes for this version!
378-- radiative transfer --
379   A new system was implemented that automatically reads the p, T, g,
380   Q and band values from files. The dataset required is now specified
381   in callphys.def. We still need to edit radinc_h when the corrk array
382   sizes change - think about improving this in the future.
383-- water cycle --
384   A watercommon_h mod file was created, several files were renamed
385   and moist convection and precipitation subroutines were added.
386   Still needs some testing!
387-- OLR --
388   Two new functions were added: one to produce .nc files of the OLR
389   by band, and the other to save the upgoing radiation by band in 1D
390   as a .txt file.
391-- general structure --
392   tabfi.F, newstart.F etc. cleaned up + it was checked that they pass
393   variables correctly. Several new options added to run.def for 1D,
394   in order to allow truly arbitrary planet simulations. The
395   'planettype' option has been removed as it screwed things up completely.
396-- energy conservation --
397   I found that the planckir function in the radiative transfer did not
398   always produce values that summed to sigma T^4. A new test was implemented
399   to check for this problem and the standard band widths in the IR
400   were increased.
401
402== 31/03/2010 ==
403==> call this version LMDZ.GENERIC.v0.5
404-- OLR --
405   The .nc functions were implemented and tested. It was necessary to add
406   new functions 'writediagspec.F' and 'iniwrite_spec.F'.
407-- CO2 condensation --
408   In 1D we now exit automatically if CO2 is condensing on the
409   surface.
410-- G1D --
411   We can now choose at the beginning of physiq.F, using saveG1D, how
412   many times we want to save per day in 1D (rather than every single
413   time that physiq is called).
414-- water cycle --
415   I corrected a nasty bug in callcorrk involving varfixed, real*8 and
416   epsi. I corrected a simple bug in the writing of qsurf in g1d.dat.
417   rain.F has been tested and the algorithm for precipitation evaporation
418   modified to that written in the manual of Larent Li. Cloud fraction
419   variable is now included. activice and iceparty are gone, ~replaced
420   by watercond and waterrain.
421-- orbit --
422   nres and tlocked were added as basic options to callphys.def
423-- radiative transfer --
424   I added error checking for out-of-bounds temperature in
425   callcorrk.F. I added a new file calc_rayleigh.F90 to calculate
426   Rayleigh scattering using a weighted mean, as opposed to simply the
427   midpoint band values. Band discretisation is now even more
428   automated than before: the coefficients are stored in directories
429   like /earth/32x36/, and we can compile the GCM like this:
430   makegcm -d 32x24x20 -b 32x36 -p std gcm.
431   A bug was fixed involving emissivity not being properly passed from
432   newstart.e to the main part of the code.
433   Stellar spectra are now calculated automatically for any range of
434   bands from high resolution data (originally from the VPL website).
435-- vertical discretisation --
436   I corrected a bug in testphys1d that used a fixed value of
437   temperature to compute the altitude levels in the model. Now we use
438   the scale height from z2sig.def instead. Values of preff and pa are
439   no longer defined in testphys1d (they're not needed).
440-- Non-ideal gases --
441   I have replaced cpp in many places with cpp_3D in physiq. This is a
442   major change, but there are enough cases where it will be useful to
443   make it worthwhile in the universal code. I have done the same with rcp.
444
445== 10/10/2010 ==
446==> call this version LMDZ.GENERIC.v0.6
447-- startup --
448   We now check water tracers exist in newstart.F before all watery initialisation options.
449   Added an option 'autozlevs' to run.def (and logic.h). When true this recalculates the scale
450   height in z2sig.def in order to get the same minimum pressure for any resolution.
451   Currently, this is only useful for one-d simulations.
452   Pressure is now distributed better in newstart.F. There was a bug before when the global mean of phi
453   was not equal to zero and the surface pressure was changed with topography still present.
454   In initracer, we no longer automatically set h2o_vap=h2o_ice.   
455
456-- general --
457   periheli, apheli --> periastr, apoastr. Note this necessitates a change in start_planet too.
458   testphys1d.F --> rcm1d.F
459   physiq.F, callcorrk.F upgraded to Fortran 90 to remove evil zerophys.
460   I cleaned up the method of displaying energy balance and temperature range in the model a bit.
461   Pure H2 atmospheres are now permitted, although the code is _untested_. Rayleigh scattering,
462   specific heat capacities and molar masses are varied, and the H2-H2 collision-induced data
463   of Grushka et al. is used for the radiative transfer.
464
465-- boundary layer --
466   An improved version of vdifc.F has been created that includes the latent heat effect of water vapor,
467   following the method used in 'clmain' in the LMDZ terrestrial model.
468
469-- water cycle --
470   Benjamin's improvements have been added, namely the hydrology, and reevaporation.
471   Variable cloud fractions are allowed, or a global fixed value may be chosen
472   for use in aeropacity. Surface wetness (beta) is now calculated in a simple way, and
473   outputed as a diagnostic, along with the atmospheric relative humidity.
474 
475   mol/mol to kg/kg bug in callcorrk corrected.
476
477-- radiative transfer --
478   A major bug in gfluxv.F was corrected. It involved BSURF, the radiation reflected upwards from
479   the ground.
480   In aeropacity, we now set the cloud opacity in the top layer of the atmosphere to zero. This solves
481   an instability problem that was occurring when CO2 clouds formed.
482   Dust is back! Only fixed profiles allowed for now. It is assigned "naerkind=3" in aeropacity.F90.
483   If 'CLFvarying' is enabled, the corrk subroutine is now called twice per timestep - once for clear
484   skies and once for cloudy. This slows things down but is effective for Earth-like simulations.
485   An optional Newtonian cooling scheme has been implemented that can replace the correlated-k method
486   for dynamical tests etc. It is pretty experimental and has not been extensively tested.
487
488-- Dynamics --
489   callgroupeun in gcm.F has been set to FALSE, as it does not conserve tracers.
490   The coefficient facup has been set to 1 in inidissip.F. We may need to mess
491   with this later if it makes the model too unstable.
492
493== 1/08/2011 ==
494==> call this version LMDZ.GENERIC.v0.7
495
496   Main change: a new file 'gases.def' now required at startup. This tells us which gases are in
497   the planet's atmosphere. It is used to calculate fundamental quantities like cpp and mugaz.
498   A check is made against the radiative transfer data to make sure they correspond.
499
500   Code has been tested successfully using the 'gfortran compiler'.
501
502-- startup --
503   a bug involving tsoil interpolation in lect_start_archive.F was corrected.   
504
505-- aerosols --
506   gauss integration number 5-->10 in aeroptproperties.F90
507
508-- water cycle --
509   Big fat bug in rain.F90 corrected. The routine internally updated the temperature
510   with new tendencies before it was supposed to happen!
511   Bug in oborealis where phi not properly updated was corrected.
512   Improvements to hydrol.F90: zdtsurf_hyd --> pdtsurf_hyd
513   A 'sourceevol' option was added (accessed in callphys.def) that allows us to track the
514   evolution of the surface distribution over time.
515   Another bug in rain corrected involving evaporation - it was heating the atmosphere
516   rather than cooling it...
517
518-- convection --
519   I found a bug in convadj.F that breaks tracer conservation when convection stops at one layer
520   and immediately restarts in the next one.
521
522-- diagnostics --
523   Some bugs corrected in the computation of 3D averages for the H2O / energy conservation
524   diagnostics.
525
526-- radiative transfer --
527   A bug involving continuum opacities (variable DCONT) was corrected in optci.F90 and optcv.F0.
528   H2-H2 warming now in theory reliable and correct (60-1000 K).
529   A bug involving the definition of the Planck function boundaries was corrected in sfluxi.F90
530   and gfluxi.F.
531
532== 21/10/2011 == EM
533- added FF's upgrade of writediagfi. Now, if at runtime there is a diagfi.def
534  file, it should contain the list of variables (1 per line) than will be put
535  in the diagfi.nc file. If there is no diagfi.def file, then all variables
536  are put in the diagfi.nc file (as was the case before).
537
538=== 10/11/2011 == EM
539- Updated the makegcm(s) so that default behaviour is to set LMDGCM env variable
540  to be the directory in which the makegcm script is. Updated the makegcm_*
541  to use "SOURCE" to identify code and be compatible with latest
542  'create_make_gcm'.
543 
544== 10/11/2011 == EM
545- Upgrade: The location of the 'datagcm' directory can now be given in the
546  callphys.def file ( datadir = /absolute/path/to/datagcm ). Changed
547  "datafile.h" into a F90 module "datafile_mod.F90" and spread this change
548  to all routines that used to use "datafile.h".
549
550== 10/11/2011 == EM
551- Upgrade of the 'create_make_gcm' script: objects are removed from the
552  libraries before compilation, which enforces that the gcm will fail to
553  compile if any routine failed to compile.
554
555== 12/12/2011 == AS
556- Use of allocatable arrays to set corrk stuff through reading *.dat files, without the need to change radinc_h manually.
557- Allocation is done in sugas_corrk which is within firstcall loop in callcorrk.
558- Note that N_LGAUSS is still a parameter. It is not supposed to change much.
559- Compiles fine. Tested with debugging options through pgdbg. Runs fine. Exact same results in Early Mars test case.
560
561Modified files:
562M              469   libf/phystd/physiq.F90
563M              469   libf/phystd/sugas_corrk.F90
564M              469   libf/phystd/callcorrk.F90
565M              469   libf/phystd/radinc_h.F90
566M              469   libf/phystd/radcommon_h.F90
567
568== 13/12/2011 == AS
569- Same spirit as previous commit, but for ngasmx which is now read in gases.def -- before arrays w/ dim ngasmx are allocated dynamically
570- Allocation is done in su_gases.F90 which is called in inifis
571- Outside su_gases.F90, very few modifications to the code : the new module "gases_h.F90" simply replaces the old common "gases.h" !
572- Compiles fine. Tested with debugging options through pgdbg. Runs fine. Exact same results in Early Mars test case.
573
574== 20/12/2011 == JL + AS
575- Allocatable gastype in sugas_corrk instead of hardcoded (it was a problem for more than 4 gases!)
576
577== 13/02/2012 == JL + AS
578- All outputs are now in netCDF format. Even in 1D (No more G1D)
579- Clean up of the call to callcorrk when CLFvarying=true
580- Corrects a bug in writediagspecIR/VI. Output are now in W/m2/cm-1 as a function of the wavenumber in cm-1
581- Enable writediagspecIR/V to work in the CLFvarying=true case (output now done in Physiq after writediagfi)
582- Add a simple treatment for the supersaturation of CO2 (see forget et al 2012)
583- corrects a small bug when no clouds are present in aeropacity
584
585== 16/02/2012 == JL + EM
586- Mesh area now present in 1d diag files.
587- Spectral Bandwidth included in the diagspec files
588- Correction of a initialzation bug on day_step and ecritphy in rcm1d
589
590== 17/02/2012 == RW
591- qsurf bug in variable species rad. tran. removed
592- line to update kappa in newstart.F added - necessary to synchronise dynamics and physics
593- three obsolete files removed from dyn3d/ directory
594- calc_cpp_mugaz --> check_cpp_mugaz, with override option in callphys.def
595- kcm1d no longer consistent with new code, but I haven't updated as I'm still working on it
596  and as far as I know noone else uses it. If that changes let me know.
597
598== 27/02/2012 == AS
599- Temperature grid for Planck calculations can now be refined through the parameter NTfac in radinc_h.
600  Default is NTfac = 1.0D-1, i.e. Delta T = 0.1 K
601
602== 16/03/2012 == JL
603- Removed cpp3D and nonideal stuff.
604
605== 19/03/2012 == EM
606Some cleanup and bug fixing:
607- "cloudfrac" was not well written to restartfi (wrong size).
608- missing save attribute for "reffrad" in physiq.F90.
609- cleanup recomputation of surface pressure in newstart and change loop order
610  in interp_horiz (which "fixes" an odd behaviour which fills some arrays with
611  zeros, but only when using some versions of ifort!)
612
613== 19/03/2012 == AS
614- Cleaned rcm1d.F and made it truly generic by asking for planetary constants without any default values.
615- Settings are now needed in a rcm1d.def file. Unbeknown to the user, we create a minimal run.def file, read parameters, then remove this dummy run.def.
616- Introduced a keyword force_cpp if the user wants to give values for cpp and mugaz in def files.
617
618== 19/03/2012 == AS+FF
619- Introduced global1d in callcorrk so that global (using sza) or local (using latitude) 1D simulations can be carried out.
620- Converted all astronomical distances in AU instead of Mkm.
621- This might cause problems with old start files. So added a test in iniorbit. A quite dirty test, but that'll do the job.
622
623== 22/03/2012 == JL
624- New turbulent diffusion scheme solving "most" energy conservation problems:
625     - Turbulent energy created by buoyancy effects is now dissipated back into enthalpy
626     - the scheme is now written in an enthalpy conservative way
627- Turbulent diffusion now treated in routine turbdiff (in F90).
628- Temporarily, for comparison, the old vdifc can be used
629      by setting UseTurbDiff=.false. in physiq.F90
630- The sensible heat flux is now an output
631- Corrected evaporation at the surface when all the surface water is evaporated (JL+BC).
632- Added new energy conservation diagnostic variables and output
633
634== 26/03/2012 == JL
635- Added double gray case (if graybody=true in callphys.def):
636   - opacities are set to a constant value in sugas_corrk.
637   - the values are kappa_IR m^2/kg in the infrared (to be read in callphys.def)
638                    kappa_VI m^2/kg in the visible (to be read in callphys.def)
639- Cleaned continuum part in optc*
640- Added .def files for a typical 1d earth case in deftank (dry case for the moment)
641- Corrects a bug on potential temperature calculation in physic
642
643== 27/03/2012 == JL
644- Corrects the computation of planck function at the surface in sfluxi
645     so that its integral is equal to sigma Tsurf^4.
646- This ensure that no flux is lost due to:
647     -truncation of the planck function at high/low wavenumber
648     -numerical error during first spectral computation of the planck function
649     -discrepancy between Tsurf and NTS/NTfac in sfluxi
650- OLR now equal to LW net heating/cooling at equilibrium!
651- As much as possible, only the value of the stephan boltzmann constant defined in racommon_h (and the
652corresponding variable, sigma) should be used. Now done in physics, vdifc and turbdiff.
653 
654== 16/04/2012 == JL
655- Added consistency checks for calculations including water and global1d+diurnal.
656- Corrected small bugs in precipitation scheme
657
658== 04/05/2012 == JL
659- Correction a huge bug in newstart: rcp and cpp can now be changed in start.nc files and are the same as in startfi.nc;
660       Even when starting from start and startfi files.
661   - rcp, cpp and mugaz can now be computed using gases.def in newstart
662- Correction of a bug arising in gcm.F when the solar days are long (thanks Melanie V.)
663- Corrected the temperature used to differentiate sublimation and evaporation in watersat_grad
664- Minor name changes in watercommon
665- Better physical parametrization of the effective radius of liquid and icy water cloud particles in callcorrk
666       (for radfixed=true)
667- Added consistency check in inifis
668- Moved 1d water initialization from physiqu to rcm1d
669- All enertests in physiq written in a matricial (F90) way. The rest of physiqu should follow soon
670
671== 25/05/2012 == EM
672- Significant update on how the number of scatterers is managed:
673  Instead of having to manualy change 'nearkind' in radinc_h.F90, the
674  number of scatterers must now be set when compiling, using makegcm
675  "makegcm -s 1" for one scatterer or "makegcm -s 2" for two (e.g. dust
676  and water ice), default behaviour (ie not specifying -s #) is -s 1
677  Modified phystd/radinc_h.F90 , added directory phystd/scatterers
678  with script make_scatterers , and adapted makegcm* scripts.
679
680== 06/06/2012 == EM
681- Corrected the polar mesh surface area which was wrong in the physics (changes
682  in phyetat0.F, calfis.F and newstart.F)
683- Some cleanup in newstart.F (removed some obsolete "Mars" options: mons_ice,..)
684  and also added option "q=profile" to initialize a tracer with a profile
685  read from file "profile_tracername"
686
687== 29/06/2012 == EM
688- Some cleanup in start2archive.F and ini_archive.F to get them to work for
689  the generic model (removed some "Martian" specificities).
690 
691== 17/07/2012 == JL for LK
692- Generalization of aerosol scheme:
693    - any number of aerosols can be used and id numbers are determined consistently by the code. Aerosol order
694    not important anymore.
695    - addition of a module with the id numbers for aerosols (aerosol_mod.F90).
696    - initialization of aerosols id numbers in iniaerosol.F90
697    - compile with -s x where x *must* be equal to the number of aerosols turned on in callphys.def (either by a
698    flag or by dusttau>0 for dust).
699      => may have to erase object files when compiling with s option for the first time.
700- For no aerosols, run with aeroco2=.true. and aerofixco2=.true (the default distribution for fixed co2
701aerosols is 1.e-9; can be changed in aeropacity).
702- If starting from an old start file, recreate start file with the q=0 option in newstart.e.
703- update callphys.def with aeroXXX and aerofixXXX options (only XXX=co2,h2o supported for
704now). Dust is activated by setting dusttau>0. See the early mars case in deftank.
705- To add other aerosols, see Laura Kerber.
706
707== 18/07/2012 == JL
708- New water cycle scheme:
709   - largescale now in F90. Robustness increased by i) including evap inside largescale ii) computing the
710        condensed water amount iteratively
711   - same improvements in moistadj.
712   - Water thermodynamical data and saturation curves centralized in module watercommn_h
713       - The saturation curves used are now Tetens formula as they are analyticaly inversible (Ts(P)-> Ps(T)).
714          New saturation curve yields very good agreement with the former one.
715       - Saturation curves are now generalized for arbitrary water amount (not just q<<1)
716       - The old watersat should be removed soon.
717   - The effect of water vapor on total (surface) pressure can be taken into account by setting
718      mass_redistrib=.true. in callphys.def (routine mass_redistribution inspired from co2_condense in martian
719      model but with a different scheme as many routines evaporate/condense water vapor).
720- New cloud and precipitation scheme (JL + BC):
721   - The default recovery assumption for computing the total cloud fraction has been changed (total random gave too
722      large cloud fractions). See totalcloudfrac.F90 for details and to change this.
723   - Totalcloudfraction now set the total cloud fraction to the fraction of the
724      optically thickest cloud and totalcloudfrac is thus called in aeropacity.
725   - Only the total cloud fraction is used to compute optical depth in aeropacity (no more effective
726      optical depth with exponential formula).
727   - 4 precipitation schemes are now available (see rain.F90 for details). The choice can be made using precip_scheme
728      in callphys.def. Usage of the more physically based model of Boucher et al 95 (precip_scheme=4) is recommended.
729      default behavior is set to the former "simple scheme" (precip_scheme=1).
730   - See rain.f90 to determine the parameter to be defined in callphys.def as a function of the precipitation scheme used.
731- Physiq.F90 now written in a matricial (more F90) way.
732- Radii (H2O and CO2 cloud particles, aerosols, duts, ...) calculations now centralized in module radii_mod.F90
733   and work with the new aerosol scheme implemented by Laura K. Some inconsistency may remain in callsedim.
734- Corrected gray gas mode. The use of kappa_VI or kappa_IR far a given band is now based on its wavenumber independently of
735   SW and LW calculations
736   
737Implementation compiled with ifort and pgf90.
738gcm.e runs in Earth and Early Mars case with CO2 and H2O cycle + dust.
739
740== 19/07/2012 == JL
741- Corrected precipitation evaporation scheme + snow fall (JL+BC)
742- Commented some unecessary writediagfi calls that where used for test.
743
744== 24/07/2012 == JL
745- Correction of a bug in turbulent diffusion (turbdiff.F90)
746   => This solves a water conservation problem arising when the code tries to
747   evaporate over dry land.
748
749== 26/07/2012 == AS
750- Bug fix in physiq : the size of OLR_nu is L_NSPECTI and not L_NSPECTV
751- A more robust aerosol_mod + iniaerosol : problems with ifort+parallel solved, while still OK with other compilers and seq runs.
752
753== 05/09/2012 == JL
754- Correction of the calculation of the solar longitude in tlocked case.
755    -Can now handle any prograde resonance with nres=omega_rot/omega_orb.
756    -Sun now goes westward for the standard 2:1 case, as expected.
757- In the gray case, the separation between kappa_IR and VI is now set by
758    wave number, independently of the usual IR/VISIBLE calculation separation.
759    i.e. kappa_IR can be used in the calculation of the downward stellar flux
760      if the wavenumber in the band is low enough and vice versa.
761- In ave_stelspec, stellar flux averaging has been generalized to incorporate
762    very red/blue stellar spectra (great care must however be taken of the band
763    limit used for the corralated k distributions).
764     -Brown dwarf spectra from Allard et al. have been added.
765     -Any Black body temperature can now be used.
766
767== 19/09/2012 == JL
768- Correction in largescale to improve robustness when large water vapor amount
769- Correction in soil_setting to allow change of the number of subsurface layers
770
771== 19/09/2012 == AS
772
773(Sorry for long text but this is a quite major commit)
774
775Paving the path for parallel computations. And moving towards a more flexible code.
776
777Automatic allocation is used within all routines in phystd. No further mention to ngridmx and nqmx.
778
7791. ngridmx and nqmx are still used in LMDZ.GENERIC in the dyn3d part
7802. if the LMDZ4/LMDZ5 dynamical core is used, there is no more fixed dimensions ngridmx and nqmx
781   --> a fully flexible parallel implementation is now possible (e.g. no need to recompile when changing numbers of processors)
782
783The important stuff :
784- Compilation checked with ifort. OK with and without debug mode. No errors.
785  Checked for: gcm, newstart, rcm1d, kcm1d
786- RUN GCM: Running an Earth test case. Comparison with previous revision
787  --> debug mode : perfect match. bit by bit (diff command). checked with plots
788  --> O1 mode : close match (checked with plots)
789  --> O2 mode : sometimes up to 0.5 K departure....
790  BUT in this new version O2 and O1 are quite close while in previous version O1 and O2 differed by about, well, typically 0.5 K
791  (pictures available on request)
792- RUN NEWSTART : perfect match (bit-by-bit) in either debug or normal mode.
793- RUN RCM1D : perfect match in normal mode.
794- RUN KCM1D : not tested (I don't know what is the use of kcm1d)
795
796List of main changes :
797- Additional arguments to some subroutines (ngrid and nq)
798- F77 include strategy is obsolete and replaced by F90 module strategy
799  In this new strategy arrays are allocatable and allocated once at first use
800  This has to be done for all common featuring arrays defined with ngridmx or nqmx
801    surfdat.h >> surfdat_h.F90
802    tracer.h >> tracer_h.F90
803    comsaison.h >> comsaison_h.F90
804    comgeomfi.h >> comgeomfi_h.F90   
805    comsoil.h >> comsoil_h.F90
806    comdiurn.h >> comdiurn_h.F90
807    fisice.h >> DELETED. was not used. probably a fossil.
808    watercap.h >> DELETED. variable put in surfdat_h.F90
809- F77 'save' strategy is obsolete and replaced by F90 'allocatable save' strategy
810  (see previous point and e.g. new version of physiq.F90)
811- Suppressing any mention to advtrac.h which is a common in the dynamics and needs nqmx
812  This was easily solved by adding an argument with tracer names, coming from the dynamics
813  This is probably not a definitive solution,
814  ... but this allows for generic physics to work easily with either LMDZ.GENERIC or LMDZ dynamical cores
815- Removing consistency tests between nq and nqmx ; and ngrid and ngridmx. No use now!
816- Adaptation of rcm1d, kcm1d, newstart given above-mentioned changes
817
818A note on phyetat0 and soil_setting:
819- Now written so that a slice of horizontal size 'ngrid' starting at grid point 'cursor' is read in startfi.nc
820  'cursor' is defined in dimphys.h and initialized by inifis (or in newstart)
821  this is useful for parallel computations.
822  default behavior is the usual one : sequential runs, cursor is 1, size ngrid is the whole global domain
823
824A note on an additional change :
825- nueffrad is now an argument to callcorrk as is the case for reffrad
826  both are saved in physiq
827  this is for consistency and lisibility (previously nueffrad was saved in callcorrk)
828  ... but there is a call to a function which modifies nueffrad in physiq
829  ... previously this was not modifying nueffrad (although it was quite cumbersome to detect this)
830  ... to be conservative I kept this behaviour and highlighted it with an array nueffrad_dummy
831  ... I added a comment because someone might want to change this
832
833== 20/09/2012 == AS
834A more robust way to count lines in setspi and setspv.
835bandlen.txt file is no longer used. This was causing problems with MPI computations.
836
837== 06/11/2012 == EM
838- Fixed bug in disvert: pseudo-altitude pseudoalt() should be computed using
839  the scale height H provided in "z2sig.def" (and not 10.0).
840
841== 10/11/2012 and 23/11/2012 == AS
842- Corrected problems with allocated arrays in start2archive and newstart since the 19/09/2012 major commit
843- Modified those programs (and iniadvtrac) so that they can be used when compiling with -t 0
844
845== 20/12/2012 == EM
846- Fixed sedimentation issue: ensure in callsedim that the correct radii are
847  provided to newsedim and also that the updated temperature and tracer
848  mixing ratios are used to compute sedimentation.
849- Updated the way aerosol radii are considered and used; routines in radii_mod
850  (h2o_reffrad, co2_reffrad, etc.) only handle a single aerosol. The idea here
851  is that these can be called from anywhere and that the caller doesn't need to
852  have the full (naerkind size) array of aerosol radii.
853- cleanup (addition of intent(..) to routine arguments) in various routines
854
855== 10/01/2013 == AS
856- Fixed an allocating bug which arises from previous modifications
857  owing to the double use of callcorrk with CLF_varying
858- Fixed a small bug in a diagnostic in the end of calc_rayleigh. Some picky compilers complain.
859- Fixed a small bug with the array noms which is not allocated when tracer is false. But still need in physdem1.
860
861== 10/01/2013 == AS
862Added calls to FH subroutines to output physical fields in parallel. This is under precompiling flags CPP_PARA.
863This allows for LMDZ.UNIVERSAL users to use writediagfi with parallel computations.
864These lines are not compiled by casual users of LMDZ.GENERIC (or users of LMDZ.UNIVERSAL in sequential mode).
865
866== 23/01/2013 == JL
867- Correction in largescale. a rneb factor was forgotten
868- Added some spectra in ave_stelpec
869- Corrected reevaporation in rain. Now conserve water better
870
871== 24/01/2013 == AS + JL
872A more robust way to refer to gas type.
873- Gas names with an arbitrary number of characters (<20) can be used
874  This is good for C2H2, C2H6, H2SO4, C17H21NO4, etc...
875  !!! Remember this must be compliant with Q.dat in corrk_data !!!
876- igas_... labels are assigned once for all in su_gases
877  Then using igas_... everywhere instead of gnom (except for kcm stuff)
878- Users can still use e.g. H2_ but H2 also works
879- Simplified condense_cloud so that igas_CO2 is used directly
880
881== 09/02/2013 == AS
882- Optimized calculations for continuum (done for H2 and He, to be done for others)
883      - new common bilinear interpolation routine (bilinearbig)
884      - optimization: only one calculation is actually needed
885                      to find indexes of wavelength for bilinear interpolation
886                      ... because this will not change with level and integration step!
887      - optimization: use while loop in bilinearbig
888      - completely similar results obtained (test case for a gas giant, many simulated days)
889  NB: those changes really improve gcm speed (factor 2.2 for whole model!)
890      continuum was very expensive, now very cheap
891      --> e.g. 1 day, 25 dyn ts, 5 phys ts
892      --> before: 243 seconds (including 120 seconds for continuum bilinear interpolation)
893      --> after: 108 seconds
894- Corrected a bug: Continuum in inifis instead of continuum
895    ... until now, most users (unbeknownst to them) were running with the continuum by default!
896- Cosmetic changes in optcv (mostly spaces and line breaks)
897    ... so that comparisons with optci are easy e.g. through vimdiff
898   
899== 11/02/2013 == JL
900- Updated moist convection scheme to handle situations with a large water vapor content
901- Added a keyword to enable ocean runoff in callphys.def (activerunoff)
902
903== 12/02/2013 == JL
904- Follows previous commit by Aymeric about bilinear interpolations:
905   - Extended to all existing continua
906   - generalized bilinearbig to work for various size inputs
907- because N2 and H2O continua databases are smaller, improvement around 15% for
908an earth case.
909 
910== 25/02/2013 == EM
911- added "-fp-model precise" option when compiling with ifort (fixes unexplained
912  mass loss of tracer in the dynamics)
913 
914== 13/03/2013 == AS + EM
915- corrected a bug in bilinearbig (found with debug mode)
916  not harmful but possible -1 index at first call
917
918== 18/03/2013 == EM
919- removed the "-static" ifort compilation option (problematic on Gnome cluster)
920  and added some additional debug options
921- fixed bug in newstart about initialization of albedo and thermal inertia.
922
923== 28/03/2013 == JL
924- optimization of optci and optcv routines. 15to 25% gain on these routines.
925     around 10% on the whole code with 1 scatterer.
926     - No changes on output (byte to byte)
927- corrected bug in gray case in callcorrk.
928- added profiling option in makegcm_ifort. See the file for details
929- changed capcal back to default in physics
930
931== 01/05/2013 == AS + JL
932- added possibility to remove surface
933  (particularly exchanges heat+momentum exchanges between surface and atmosphere)
934- added possibility to add an internal heat flux
935
936== 10/05/2013 == EM
937- moved the 'makbands' script from "grid" to (more appropriate) "phystd/bands"
938  subdirectory, and consequently adapted the makegcm_* scripts
939
940== 15/05/2013 == JL
941- correction in radiative scheme to enforce double precision
942- corrects calculation of ISR
943
944== 22/05/2013 == EM
945- made all outputs (stats.nc,diag*nc files) compatible with running in parallel
946  (MPI mode only)
947
948== 11/06/2013 == JL+EM
949- User manual (+ sources) added in DOC.
950
951== 12/06/2013 == EM
952- Moved "newstart" (and related "lect_start_archive.F") to phystd directory
953- Adapted makegcm_* scripts to enable compiling main prog from physics
954- Added in newstart the possibility to not read in any surface.nc file
955  (when loading a start_archive) with keyword "none" (instead of surface
956  file name)
957- Some general cleanup:
958  - in bibio: removed unused lmdstd.h readstd.F writestd.F mywrite.F
959              readcoord.F scatter.F gather.F ini36.F from36.F to36.F
960              lnblnk.F (F90 len_trim() should be used instead)
961  - in dyn3d: removed unused inigrads.F wrgrads.F gradsdef.h
962              xvik.F (specific to current Mars)
963
964== 14/06/2013 == EM
965- Some minor changes so that gcm compiles with gfortran:
966  - Added option to compile "long lines" (>132 characters) in makegcm_gfortran
967  - Removed use of isnan() in physiq.F90 (it is not a standard function)
968  - Avoid possible underflow of psat in watercommon_h.F90
969  - Adapted the checks on the *IR and *VI band files to be more strict
970
971== 17/06/2013 == EM
972- Some more cleanup in dynamics:
973 - Moved "start2archive" (and auxilliary routines) to phystd
974 - removed unused (obsolete) testharm.F , para_netcdf.h , readhead_NC.F ,
975   angtot.h from dyn3d
976 - removed obsolete addit.F (and change corresponding lines in gcm)
977 - remove unused "description.h" (and many places where it was "included")
978
979== 21/06/2013 == AS
980- Added possibility to initialize temperature from a rcm1d profile (t=profile)
981- Added output for Ls in diagfi
982
983== 28/06/2013 == JL
984- bug fix in setspi & setspv : counters must be initialized in routine in
985  case of multiple calls
986
987== 02/07/2013 == EM
988- some cleanup: ismax and ismin were defined in multiple places...
989
990== 19/07/2013 == EM
991- update the sponge layer: trun it into a module and (more important)
992  compute the sponge quenching analytically rather than via Forward Euler
993  approximation.
994
995== 07/08/2013 == JL
996- Water cycle in double precision (largescale+moistadj)
997- Improved wate rayleigh.
998- First step for rayleigh with variable species. Now, just need to change optcv.
999- changed some interpolation indices in callcorrk to limit dependency of OLR on the number of layers
1000
1001== 05/12/2013 == JL
1002- corrected sugascorrk to work in the two band gray aproximation with -b 1x1 and NGAUSS=2
1003
1004== 03/04/2014 == EM
1005Major cleanup, in order to ease the use of LMDZ.GENERIC with (parallel) dynamics
1006in LMDZ.COMMON: (NB: this will break LMDZ.UNIVERSAL, which should be thrashed
1007in the near future)
1008- Updated makegcm_* scripts (and makdim) and added the "-full" (to enforce
1009  full recomputation of the model) option
1010- In dyn3d: converted control.h to module control_mod.F90 and converted
1011  iniadvtrac.F to module infotrac.F90
1012- Added module mod_const_mpi.F90 in dyn3d (not used in serial mode)
1013- Rearanged input/outputs routines everywhere to handle serial/MPI cases.
1014  physdem.F => phyredem.F90 , phyetat0.F => phyetat0.F90 ; all read/write
1015  routines for startfi files are gathered in module iostart.F90
1016- added parallelism related routines init_phys_lmdz.F90, comgeomphy.F90,
1017  dimphy.F90, iniphysiq.F90, mod_grid_phy_lmdz.F90, mod_phys_lmdz_mpi_data.F90,
1018  mod_phys_lmdz_mpi_transfert.F90, mod_phys_lmdz_omp_data.F90,
1019  mod_phys_lmdz_omp_transfert.F90, mod_phys_lmdz_para.F90,
1020  mod_phys_lmdz_transfert_para.F90 in phymars
1021  and mod_const_mpi.F90 in dyn3d (for compliance with parallelism)
1022- added created generic routines 'planetwide_maxval' and 'planetwide_minval',
1023  in module "planetwide_mod", that enable obtaining the max and min of a field
1024  over the whole planet. This should be further imroved with computation of
1025  means (possibly area weighed), etc.
1026
1027== 05/06/2014 == EM
1028Bug fixes:
1029- hice() in physiq.F90 must be a saved array.
1030- bad use of min/max on arrays in h2o_cloudrad (radii_mod.F90) which actually
1031  ended up setting all array elements to the same value.
1032And some cosmetic cleanup in rain.F90, vdif_kc.F and turbdiff.F90
1033
1034== 10/07/2014 == EM
1035Some cleanup to simplify dynamics/physics interactions by getting rid
1036of dimphys.h (i.e. the nlayermx parameter) and minimizing use of
1037dimension.h in the physics.
1038
1039== 11/07/2014 == EM
1040- Changed the variable passed from LMDZ.GENERIC dynamics to physics:
1041it is now a mass flux (kg/s) which is then converted to a vertical
1042velocity (m/s) in the physics. This is to be consistent with what is
1043done in LMDZ.COMMON.
1044
1045== 18/08/2014 == JL
1046- fixed variable type declaration bug in ave_stelspec
1047- corrected insolation calculation in locked and inclined case (proper calculation of sub solar longitude and declination)
1048- in the ring shadow calculation, temporary variables for the orbbital parameters are now used (we want the declin and RA output at the same time w and wo rings)
1049
1050== 29/09/2014 == EM
1051- Added missing allocation in soil_settings, needed when changing number of
1052  soil layers.
1053
1054== 04/03/2015 == EM
1055- Some code cleanup: turning comcstfi.h into module comcstfi_mod
1056
1057== 31/03/2015 == EM
1058- Reorganizing the physics/dynamics interface, for better compatibility
1059  between models and with the parallel LMDZ.COMMON dyn core. Main structural
1060  changes are:
1061* misc: (replaces what was the "bibio" directory)
1062- Should only contain extremely generic (and non physics or
1063  dynamics-specific) routines
1064* dynlonlat_phylonlat: (new interface directory)
1065- This directory contains routines relevent to physics/dynamics grid
1066  interactions, e.g. routines gr_dyn_fi or gr_fi_dyn and calfis
1067- Moreover the dynlonlat_phylonlat contains directory "phystd".
1068  This subdirectories should only contain specific interfaces (e.g.
1069  iniphysiq) or main programs (e.g. newstart).
1070* phystd/dyn1d: this subdirectory contains the 1D models.
1071
1072== 17/04/2015 == JL & SG
1073- Correct radiative transfer bug for the Top layer in callcorrk (=rev 1419). Only impacts plevrad(2).
1074== 04/05/2015 == SG
1075- Return to a previous interpolation scheme for pmid and tmid in callcorrk.
1076
1077== 16/09/2015 == EM
1078- reorganizing the "datadir" structure: aerosol properties should now be in
1079  subdirectory 'aerosol_properties' of datadir, and surface.nc files should
1080  be in subdirectory 'surface_data'. These subdirectory names are stored in
1081  module datafile_mod.
1082- Made things retro-compatible so that using an 'old' datadir structure (ie.
1083  aerosol properties files and surface files in datadir) still works.
1084
1085== 21/09/2015 == MT
1086- Cleanup of physiq.F90 and changed condense_cloud.F90 to condense_co2.F90
1087
1088== 14/10/2015 == MT
1089- Implementation of the Spectral Albedo. Albedo(ngrid) is now Albedo(ngrid,L_NSPECTV) and has a value for each visible band.
1090- Albedodat/Albedo0 have been removed. We now use Albedo_bareground.
1091- CO2 Ice Albedo North/South dichotomy has been removed. CO2 ice Albedo is no longer stocked in start file. You can now
1092prescribe CO2 ice albedo in callphys.def with "albedoco2ice". Its default value is 0.5.
1093
1094== 14/10/2015 == MT
1095- Cleanup of callcorrk.F90.
1096
1097== 15/10/2015 == MT
1098- Harmonization of the calculation of the surface tracer tendencies in physiq.F90.
1099
1100== 22/10/2015 == MT
1101- Cleaning of condense_co2.F90.
1102
1103== 04/11/2015 == MT
1104- Corrections of bugs in phyetat0.F90 (vap tracer) and in physiq.F90 (ice evolution scheme).
1105
1106== 05/11/2015 == MT
1107- Minor Albedo correction of bugs in rcm1d.
1108
1109== 13/11/2015 == MT
1110- Spectral Snow Albebdo implemented in the code.
1111
1112== 13/01/2016 == EM
1113- Fix/improvement on planetwide_min/max/sum for the 3D fields which assumed the vertical dimension to be klev.
1114  Now works for any (klon,...) field (e.g. albedo).
1115
1116== 10/02/2016 == MT
1117- Added a generic routine (in utilities directory) to extrapolate ice fields.
1118- Added a generic version of streamfunction (in utilities directory).
1119
1120== 17/03/2016 == EM
1121- Added tests to ensure that soil model settings are adequate to resolve
1122  sub-surface diurnal and annual thermal waves.
1123
1124== 24/03/2016 == EM
1125- Some fixes/adjustments to run using OpenMP (in the physics, best practice is to always have "save" variables,
1126  this of course includes all module variables, as "threadprivate").
1127
1128== 25/03/2016 == EM
1129- Code reorganization (to mach comming evolutions on all planetary models),
1130  created a "phy_common" directory to contain routines common (wrt structural
1131  nature of underlying code/grid) to all LMDZ-related physics packages.
1132- Moved ioipsl_getincom_p.F90 from "misc" to "phy_common" and modified it
1133  to match Earth GCM version and renamed it ioipsl_getin_p_mod.F90
1134- Adapted calls from phystd/* routines accordingly
1135- Adapted "create_make_gcm" and "makegcm*" scripts accordingly
1136  (deleted obsolete makegcm_g95)
1137
1138== 28/03/2016 == EM
1139- Added module "regular_lonlat_mod.F90" (to store information on global
1140  lon-lat grid) in phy_common.
1141- Turned iniphysiq (in dynlonlat_phylonlat/phymars)into module
1142  "iniphysiq_mod.F90".
1143
1144== 29/03/2016 == EM
1145- Added "time_phylmdz_mod.F90" module to store information on time and
1146  calendar in the physics, should be used instead of accessing "temps_mod"
1147  from the dynamics. And moved daysec and dtphys from module "comcstfi_mod"
1148  to module "time_phylmdz_mod".
1149- made "inifis" a module.
1150
1151== 30/03/2016 == EM
1152- Got rid of references to "control_mod" from the physics. Added a couple
1153  of relevent variables for outputs in time_phylmdz_mod.
1154
1155== 05/04/2016 == EM
1156- Got rid of references to "dimensions.h" from physics packages:
1157  use nbp_lon (=iim), nbp_lat (=jjp1) and nbp_lev
1158  from module mod_grid_phy_lmdz (in phy_common) instead.
1159- Removed module "comhdiff_mod.F90", as it is only used by module
1160  surf_heat_transp_mod.F90, moved module variables there.
1161- Added in "surf_heat_transp_mod" local versions of some arrays
1162  and routines (from dyn3d) required to compute gradient, divergence, etc.
1163  on the global dynamics grid.
1164  As before, the slab ocean only works in serial.
1165
1166== 07/04/2016 == EM+MT
1167- Fix buggy ouputs in 1D introduced by previous code modifications.
1168
1169== 07/04/2016 == MT
1170- In rcm1d.F (1d model), tracers profiles added in input.
1171
1172== 08/04/2016 == EM
1173- Adapted rcm1d.F so that it also runs when compiled from LMDZ.COMMON.
1174
1175== 08/04/2016 == EM
1176- Bug fix in surf_heat_transp_mod (introduced with revision 1529, 05/04/2016, modifications).
1177- Initialize runoff in hydrol.F90.
1178
1179== 08/04/2016 == EM
1180- Made nsoilmx be no longer a "parameter" and thus added the possibility to define the
1181  number of subsurface layers nsoilmx, along with first layer thickness "lay1_soil" and
1182  companion coefficient "alpha_soil", in callphys.def at run time.
1183  As before (when these were hard-coded), these are such that the depth of
1184  soil mid-layers are:
1185  mlayer(k)=lay1_soil*alpha_soil**(k-1/2), for k=0,nsoil-1
1186
1187== 13/04/2016 == EM
1188- Some code reorganization: "dynlonlat_phylonlat" directory becomes
1189  "dynphy_lonlat".
1190- "iniprint.h" moved from "dyn3d" to "misc".
1191
1192== 18/04/2016 == EM
1193- fix for 1D in writediagfi to enable writing at
1194  "ecritphy" rate.
1195- move iniprint.h to "misc"
1196- Some code cleanup in anticipation of future updates:
1197 - changed variable names in comgeomphy.F90: give them more
1198   explicit names: rlond => longitude ,
1199   rlatd => latitude, airephy => cell_area,
1200   cuphy => dx , cvphy => dy
1201 - removed long(), lati() and area() from comgeomfi_h.F90,
1202   use longitude(), latitude() and cell_are() from
1203   comgeomphy.F90 instead
1204
1205== 22/04/2016 == EM
1206- Updates and cleanup wrt dynamics/physics separation:
1207  Removed init_phys_lmdz.F90 and comgeomphy.F90 from phystd;
1208  comgeomphy is replaced by geometry_mod (located in phy_common).
1209  Added physics_distribution_mod.F90 in phy_common and
1210  mod_interface_dyn_phys.F90 in dynphy_lonlat.
1211  Added nrtype.F90 (contains math const. like PI, etc.) in "misc"
1212
1213== 02/05/2016 == JL+EM
1214- bug fix in calfis: wrong array (pw) sent to physics: the transfered
1215  mass flux should be on the physics grid, not the dynamics grid.
1216  Moreover values at the poles needed to be correctly recomputed.
1217
1218== 06/05/2016 == EM
1219- turn physiq.F90 into module physiq_mod.F90
1220
1221== 20/05/2016 == AS+EM
1222- cleanup around iniphysiq: separate things between planet-independent
1223  initializations (now done by inigeomphy in dynphy_lonlat) and
1224  mosre physics-package specific things (remain in iniphysiq).
1225
1226== 20/05/2016 == EM
1227- Fix in wstats: use "def_var_stats" and not "def_var" (intended for
1228  writediagfi).
1229
1230== 27/05/2016 == EM
1231- missing libf/dynphy_lonlat/phymars/inigeomphy_mod.F90 in updates around
1232  iniphysiq
1233
1234== 12/07/2016 == EM
1235- move initialization of dimphy from inigeomphy to iniphysiq (initializations
1236related to routines in phy_common or dynphy_lonlat can be done in
1237inigeomphy, but any initialization for modules/routines in a physics
1238package (directory phystd) must be done in the related phystd/iniphysiq
1239routine.
1240
1241== 27/07/2016 == EM
1242- further cleanup in the dynamics/physics interface: stop sending information
1243  about tracer advection (tracerdyn) back from physics to dynamics as this
1244  input parameter can be read and set in the dynamics.
1245
1246== 30/08/2016 == EM
1247- fix newstart which was broken due to recent updates of the physics/dynamics
1248  interface.
1249
1250== 09/09/2016 == EM
1251- Some code cleanup (and harmonization with LMDZ.COMMON): remove "ecritphy"
1252  from the dynamics (since it is read/used in the physics) and remove
1253  "grireg" (unused) and "physic" (use iflag_phys instead) parameters from
1254  the dynamics.
1255
1256== 13/09/2016 == EM
1257- Further cleanup to harmonize with LMDZ.COMMON turn "idissip" into
1258  "dissip_period".
1259
1260== 15/09/2016 == TB
1261- bug fix in tpindex.F : when computing weights for abundance of species one
1262  should not return the maximum index (leads to out-of-bounds index use in
1263  the caller).
1264
1265== 25/10/2016 == EM
1266Updates for full physics/dynamics separation:
1267- introduced module vertical_layers_mod.F90 in phy_common to store information
1268  about the vertical grid to be used in the physics. Routines in the physics
1269  should "use vertical_layers_mod" and not "use comvert_mod".
1270- added nqtot to tracer_h.F90. Always "use tracer_h" in physics instead of
1271  infotrac (which is in the dynamics).
1272- removed some purely dynamics-related outputs (etot0, zoom parameters, etc.)
1273  from diagfi.nc and stats.nc outputs as these informations are not available
1274  in the physics.
1275- added scalheight (atmospheric scale height) in comvert_mod.
1276
1277== 31/10/2016 == EM
1278Introducing a first prototype of XIOS outputs: requires compiling with
1279"-io xios" flag and having an XIOS library at hand. Corresponding
1280companion xml files iodef.xml and context_lmdz_physics.xml in the "deftank"
1281subdirectory. Still some work to do concerning the XIOS calendar (definition
1282of an initial date and month number and lenght).
1283
1284== 21/02/2017 == EM
1285Added possibility to run without a startfi.nc file (mainly usefull for
1286tests with coupling with dynamico dynamical core):
1287- added flag "startphy_file" flag (.false. if doing an "academic" start
1288  on the physics side).
1289- turned phyetat0.F90 into module  phyetat0_mod.F90
1290- turned tabfi.F into module tabfi_mod.F90 and added handling of
1291  startphy_file==.false. case
1292- extra initializations in physiq_mod for startphy_file==.false. case.
1293
1294== 09/03/2017 == EM
1295>> Followup on updates in LMDZ.COMMON, add print_control_mod.F90
1296   and abort_physic.F90 inphy_common
Note: See TracBrowser for help on using the repository browser.