source: trunk/LMDZ.MARS/README @ 1313

Last change on this file since 1313 was 1312, checked in by emillour, 10 years ago

Generic and Mars GCM:
LMDZ.COMMON dynamics sends mass flux to physics and not vertical velocity.
Add the computation of vertical velocity from input mass flux in the physics,
and also modify "old" LMDZ.GENERIC and LMDZ.MARS dynamics to be consistent.
EM

File size: 100.6 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== 21/07/09 ==
258>>> Added in "testphys1d.F" a check that the (required) 'run.def' file is
259    around (that file should contain the "INCLUDEDEF=callphys.def" instruction
260    otherwise getin() calls won't work.
261    Also added reding of 'traceur.def' (or initialisation of tracer names
262    to dummy values q01,q02, ...) in testphys1d.F
263
264== 22-24/07/09 == JBM
265>>> Removed "iceparty" everywhere (calchim.F, inichim_readcallphys.F,
266        chimie_data.h, inichim_newstart.F, photochemist_B.F, callkeys.h,
267        callradite.F, callsedim.F, aeropacity.F, inifis.F, initracer.F, physdem1.F,
268        physiq.F, watercloud.F). Water = .true. now implies the use of two
269        tracers, i.e. water vapor and water ice.
270
271>>> Removed fisice.h and stated the corresponding variables in the right
272        places (physiq.F, callsedim.F, watercloud.F, newcondens.F, calchim.F);
273        also removed unused cltop and clsurf variables in physiq.F.
274
275>>> Removed the variable's splitting, which is now obsolete, in callradite.F
276        (and its subroutines lwi.F, lwxb.F, lwxn.F, lwflux.F, lwmain.F, lwxd.F).
277        Also removed the variable's splitting in calldrag_noro.F. Finally removed
278        ndomain from dimradmars.h.
279
280>>> Removed useless tests in aeropacity.F.
281
282== 27-30/07/09 == JBM
283>>> Cleaned the WRITEDIAGFI section in physiq.F, and moved the "mtot",
284        "icetot" and "tauTES" variables from watercloud.F to physiq.F. Also
285        cleaned the albedo change due to water ice deposition.
286
287>>> Renamed rdust into rnuclei in callsedim.F, physiq.F and watercloud.F.
288
289>>> Added a logical test for (water.and..not.tracer) in inifis.F.
290
291>>> Removed "qsurf","zls" and "icount" from the list of inputs in
292        watercloud.F (these variables were not used by the subroutine).
293
294>>> Added a call to watercloud.F at firstcall, using typical dust optical
295        depth (taufirstcall), in order to correctly initialize the ice particle
296        size distribution for the radiative transfer scheme. Also created a new
297        subroutine to load the effective radius and variance of the aerosols used
298        by the radiative transfer scheme. Its name is updatereffrad.F, and it is
299        called before aeroptproperties.F in callradite.F.
300
301== 05/08/09 == JBM
302>>> TES water-ice opacity is now fully computed using the radiatively active
303        aerosol scheme. Absorption coefficient is calculated using Qext and
304        omega at the IR reference wavelength. Omega was not computed before; it
305        was only computed in the GCM channels, not at the reference wavelength.
306        Thus it has been added in suaer.F90, aerave.F, yomaer.h, callradite.F,
307        aeropacity.F and aeroptproperties.F. If "activice" is false, the
308        TES opacity is computed using the old method (fit of the Qabs as a
309        function of reff curve).
310
311== 07/08/09 == EM
312>>> Removed "iceparty" option from callphys.def
313
314>>> modified physiq.F and initracer.F so that building of array niqchem() which
315    contains the indexes of all chemistry tracers + water vapour and water
316    ice is done in initracer.F (array niqchem(:) is now a common
317    in tracer.h ).
318    Also had to adapt inichim_newstart.F to behave similarly.
319
320== 24/08/09 == EM included corrections by JBM
321>>> Added declaration of nqchem(nqmx) local array in
322    aeronomars/inichim_newstart.F
323
324>>> Encapsulated calls to writediagfi & wstats in if (ngrid.ne.1) clause
325    in phymars/aeropacity.F (otherwise it crashes in 1D).
326
327== 26/08/09 == EM
328>>> modified tracer.h, initracer.F, inichim_newstart.F and physiq.F to not use
329    an niqchem() array (added in 07/08/09 changes)
330
331>>> modified phymars/readtesassim.F90 and phymars/aeropacity.F so that
332    assimilated dust for MY24 or MY25 or MY26 may be used (with iaervar=
333    24,25 or 26); we keep iaervar=4 to also read MY24 dust for compatibility
334    with older versions of code.
335    Modified deftank/callphys.def : added comments about new iaervar values
336
337== 25/09/09 == EM
338>>> modified phymars/testphys1D.F : added incrementation of tracer values
339    after call to physiq().
340
341== 27/11/09 == EM
342>>> updated comments in makegcm (translated help to english)
343
344>> shifted to reading file traceur.def
345   (dyn3d/iniadvtrac.F) in an Earth-LMDZ4 like way:
346   first line == number of tracers
347   and then tracer name (1 per line; later we'll add advection scheme type)
348>> also updated example 'traceur.def' files in deftank accordingly
349
350== 02/12/09 == EM
351>>> upgraded testphys1d.F and profile.F to load run parameters with getin()
352    function (from run.def ; no need for a "testphys1d.def" any more)
353    added an example 'run.def.1d' file to 'deftank'
354
355==10/12/09 == EM
356>>> minor correction in testphys1d.F (was still checking if there is a
357    testphys1d.def file around ; which is not used anymore)
358
359==15/01/10 == JBM
360>>> aeropacity.F: implemented a weighting of the dust opacity profile
361  by using the dust size vertical profile defined in updatereffrad.F.
362>>> aeroptproperties.F: changed the integration scheme (Gauss-Legendre)
363  of the scattering parameters.
364>>> suaer.F90: removed the use of an ad-hoc "solsir" factor. It is now
365  directly computed from the scattering properties read in the ASCII
366  files. Consequently, the IR extinction coefficient has been divided
367  by solsir=2 in the ASCII file (called optprop_dustir_x0.5.dat instead
368  of optprop_dustir.dat to allow compatibility with the older version
369  and avoid chaos).
370>>> updatereffrad.F: changed the dust size vertical profile.
371>>> yomaer.h: the particle radius variable is now in simple precision,
372  because the new scattering property integration scheme has changed.
373>>> aeronomars/inichim_readcallphys.F (small) bug correction load value of
374    'water' before testing its value...
375
376== 18/01/10 == EM
377>> added possibility to read (in inifis.F and aeropacity.F) the value of
378   dust opacity tauvis from callphys.def file
379
380== 01/02/10 == EM
381>> added JBM updates of "callradite.F" (coments) "aeroptproperties.F" (bug fix
382   of bad array bounds) and "aeropacity.F" (encapsulate wstats calls in
383   if (callstats) )
384>> added implementation of TES Cap albedos: "albedocaps.F90" and adapted
385   "newcondens.F"  (and physiq.F, because added 'zls' argument to newcondens)
386   and surfdat.h
387>> changed default settings for dust : set a 1.3 factor in readtesassim.F90
388   when using Toon radiative transfer, use M.Wolff-T-Matrix files in suaer.F90
389 
390== 03/02/10 == EM
391>> Updated newstart.F in dyn3d, so that sub-surface thermal inertia values may
392   be different in North and South hemispheres.
393
394>> Updated "makegcm" and "makegcm_g95" scripts (cosmetic + default compilation
395   option changes)
396   
397>> Minor changes in aeronomars/init_chimie_B.F (do not use lnblnk(); F90
398   trim() intrinsic is much safer and better), and in initracer.F (better
399   control over a possible array bound underflow).
400   Also, in dyn3d/iniadvtrac.F, close input file properly,
401   and in infis.F, more verbose message to output.
402
403== 26/02/10 == EM
404>> Updated makegcm and makegcm_g95 : default usage is now to set everything
405   ("environment variables") in the script. Changed some default compilation
406   options.
407>>> removed 'float()' instructions in tabfi.F and iniwrite.F
408    use "real()" to be compliant with standards.
409>> Corrected small bug in testphys1d.F (look for file traceur.def)
410   also added initialisation of tracers
411>> Cleaned up inifis.F and initracer.F (some sanity checks were obsolete
412   and/or wrong)
413>> Improved writediagfi.F so that 1D (individual column in the GCM, or
414   fields in testphys1d) data can be written in the diagfi.nc file
415>> Minor changes/improvements in calls to writediagfi from physiq.F for dust
416
417== 08/03/10 == EM
418>> Minor update of "makegcm" and "makegcm_g95": use instruction "./makdim"
419   (instead of "makdim"; in case "." is not in user's path)
420>> put "real()" instructions instead of "float()" in dyn3d routines:
421   disvert.F , dynredem.F , fluxstoke.F , fxhyp.F , fxy.F ,
422   fxysinus.F , fyhyp.F , gcm.F , grid_atob.F , grid_noro.F , grid_noro1.F ,
423   ini_archive.F , inigeom.F , newstart.F , ran1.F , sortvarc.F ,
424   sortvarc0.F
425>> Minor update of aeropacity.F (added if (callstats) around call to wstats)
426
427== 28/04/10 == EM
428>> Put the splitting in radiative transfer back in the model (JB):
429   updated calldrag_noro.F  callradite.F  dimradmars.h  lwflux.F
430   lwi.F lwmain.F lwxb.F lwxd.F lwxn.F swmain.F
431>> Fix bug (AS) in callradite.F (wrong loop boundaries line 332)
432>> Fix bug (AS+JB) in "swr_toon.F" to enable running with more than
433   100 levels...
434>> Fix bug (JBM) in callsedim2q.F about setting pdqs_sed(:niq(iq)) to zero
435
436== 25/08/10 == EM
437>> Add a 'makegcm_gfortran' for compiling with gfortran
438   and a 'makegcm_ifort' for compiling with ifort (on Gnome)
439   
440== 03/09/10 == EM
441>> Modifications to enable running in double precision (using starts in r4
442   or r8); just add options '-r8 -DNC_DOUBLE' to compile GCM in double precision
443   -> adapted dyn3d/dynetat0.F, physmars/physdem1.F, phymars/soil_settings.F,
444      phymars/readtesassim.F90, phymars/writediagfi.F, phymars/def_var.F90,
445      phymars/writediagsoil.F90, phymars/wstats.F90, phymars/inistats.F
446>> Added dyn3d/writediagdyn.F90 routine (to output scalar dynamical fields),
447   adapted 'comconst.h' and 'comvert.h' to be Fortran77/Fortran 90 compatible.
448
449== 14/12/10 == EM
450>> Add -f option to #!/bin/csh in makegcm* scripts (to make sure that it is
451   the bash environment compiler that is used as a default)
452>> Update convadj.F with RW's version (fixes bug of non conservation of tracers
453   in cases where convection stops at one level and starts at the next).
454
455== 13/12/10 == EM
456>> Update testphys1d.F so that initial tracer profiles may be loaded at
457   initialization
458
459== 24/01/11 == JBM(+ some cleanup by EM)
460>> Reactivated the "doubleq" method (two-moment scheme for dust
461   transport) and connected it with the radiative transfer code. The
462   opacity is set constant below a level indicated by the variable
463   cstdustlevel in aeropacity.F to remove the thick layer of
464   dust near the surface created by the constant lifting rate.
465   The "density scaled opacity" used by the MCS team is computed
466   and saved in dsodust.
467   Updated routines: callradite.F, aeropacity.F, updatereffrad.F,
468   callsedim.F, newsedim.F, initracer.F, vdifc.F, suaer.F90.
469>> Added the use of named scatterers (same method as tracer-by-name)
470   in the radiative transfer code. Scatterers are declared at
471   firstcall in callradite.F (which is the equivalent of traceur.def)
472   and the corresponding indices are saved in the common called
473   aerkind.h (the equivalent of tracer.h).
474   Updated routines: callradite.F, updatereffrad.F, aeropacity.F,
475   suaer.F90, aerkind.h.
476   EM: aerdust.h, aerdata.h and aerice.h are not used any more
477>> Merged callsedim2q.F and callsedim.F in one single routine
478   callsedim.F to allow doubleq to be used with other tracers.
479>> Added an input parameter called beta to newsedim.F, that allows
480   to account for the shape of the particles in the computation of
481   the sedimentation velocity.
482>> Added the ability to transport a radiatively active population of
483   submicron dust particles (flag "submicron" in callphys.def).
484   Updated routines: callradite.F, updatereffrad.F, aeropacity.F,
485   initracer.F, vdifc.F, suaer.F90, inifis.F, callkeys.h.
486>> Connected the predicted size and amount of dust to the water
487   cycle. The size of the particles is now given by rdust in
488   updatereffrad.F, and the amount of cloud condensation nuclei
489   (CCN) is given by ccn in aeropacity.F. The calculation of ccn is
490   done in aeropacity.F because it's deduced from the opacity when
491   doubleq is not used. rnuclei and dustcores are removed from
492   watercloud.F and replaced by rdust and ccn.
493   Updated routines: physiq.F, callradite.F, updatereffrad.F,
494   aeropacity.F, watercloud.F.
495>> Removed the "fake" call to watercloud.F in physiq.F which was used
496   to give the size of the ice particles to the radiative transfer
497   code at firstcall. Instead, rice is computed in updatereffrad.F
498   using a simple equation and a typical amount of dust nuclei (ccn0).
499>> Increased the number of Gauss integration points in
500   aeroptproperties.F.
501>> Added the ability to write the 3D scattering parameters of a
502   given aerosol in the outputs using the out_qwg flag in
503   aeroptproperties.
504>> Changed "DO iir=1,4" into "DO iir=1,nir-1" in suaer.F90 (in case
505   the number of infrared channels is changed).
506>> Added nuice_ref in tracer.h and initracer.F, which is the
507   effective variance of the log-normal distribution used for water-ice
508   particles in the radiative transfer code.
509>> Updated the computation of rice, reffice and rsedice in
510   updatereffrad.F and callsedim.F.
511>> Added nuice_sed in callsedim.F, which is the effective variance
512   of the lognormal distribution used for the sedimentation of
513   water-ice particles.
514>> Added ccn_factor in watercloud.F, which is the ratio of the total
515   number of dust particles over the number of condensation nuclei.
516>> The variable beta is not saved anymore in newsedim.F.
517>> Corrected the BIG bug in lwu.F that was responsible for unstabilities
518   when clouds were radiatively active (FF+EM+JBM!)
519>> Turned ilwd, ilwn and ilwb to 1 in inifis.F.
520>> Added dust and ice visible opacities in the outputs.
521   Modified routine: aeropacity.F.
522>> Named water cycle tuneable parameters (nuice_sed, nuice_ref,
523   alb_surfice, ccn_factor) which are mentioned at firstcall by the GCM
524   (flag "water_param"). Modified routines: callsedim.F, physiq.F,
525   watercloud.F.
526
527== 25/01/2011 == EM
528>> updated testphys1d.F: removed #include "aerdust.h"
529>> cleanup in suaer.F90: no more calls to zerophys; added test to check
530   there is no overflow of isize index (in visible domain averaged properties
531   case)
532>> minor cleanup in newsedim.F (make it more F90 oriented)
533>> added flag 'TESicealbedo' (set to .true. to impose polar surface
534   albedos as observed by TES) in callphys.def
535   
536== 28/01/2011 == EM
537>> added additional tests (to check correct reading of input files) in suaer.F90
538>> updated inifis.F  so that the directory where external data files are to
539   be found (e.g. TES opacities, dust properties, etc.) can be specified in
540   run.def (or callphys.def) as " datadir = /path/to/the/directory "
541
542== 29/01/2011 == AS
543>> added updated mesoscale-related routines in phymars:
544   ----------------------------------------------------------------------------
545   NAME                       CHANGES compared to GCM counterpart
546   ----------------------------------------------------------------------------
547   meso_callkeys.h        --> one variable is added [consider merging w/ GCM?]
548   meso_dustlift.F        --> stress + alpha default, or read in a file
549                               stress.def if here [consider merging w/ GCM?]
550   meso_newcondens.F      --> correction on U V T tendencies is switched
551                               off (unstable in mesoscale)
552   meso_physiq.F          --> major modifications mainly related to I/O
553   meso_slope.h           --> additional common for slope scheme
554   meso_dimphys.h_ref     --> reference common serving as a basis for a
555                               compilation script (makemeso)
556   meso_inifis.F          --> major modifications mainly related to I/O
557   meso_param_slope.F90   --> slope scheme by Spiga and Forget GRL 2008
558                               [consider adding to GCM?]
559   meso_readtesassim.F90  --> an old version because the new F90-compliant
560                               version needs the new makegcm scripts [TBD]
561   meso_testphys1d.F      --> similar to GCM except for routine names
562   ----------------------------------------------------------------------------
563    NB: in meso_dustlift.F and meso_readtesassim.F90, the subroutines
564         have the same name as in the GCM.
565         this is because those files are supposed to be copied
566         in specific temporary folders for compilation
567>> any future change in the following GCM routines in phymars:
568      - callkeys.h
569      - dustlift.F
570      - newcondens.F
571      - physiq.F
572      - inifis.F
573      - readtesassim.F90
574      - testphys1d.F
575   will be in need to be impacted to the corresponding meso_ routines
576   [hence it is important to document this README file]
577>> any change in any other GCM routines than the ones listed will
578   have an effect in mesoscale simulations as well:
579     -- the two models are being kept updated at the same time :)
580     -- the two models would be possibly broken at the same time :(
581
582== 15/02/2011 == EM
583>> updated dissipation coefficients in indissip.F
584
585== 25/02/2011 == EM
586>> corrected bug in 'inifis.F' and 'datafile.h' to really be able to
587   specify (in callphys.def; using datadir=/whatever/path/to/use ) the path
588   to external datafiles (topography, surface properties, etc.)
589
590== 28/02/2011 == JBM + AS
591>> used settings reached by JBM to obtain his PhD results
592      alb_surfice = 0.45  ---  in physiq.F and meso_physiq.F
593      ccn_factor = 4.5    ---  in watercloud.F
594      nuice_sed = 0.45    ---  in callsedim.F
595>> NB: this is supposed to be further refined in the future
596
597== 01/03/2011 == AS + JBM
598>> nasty bug in the water cycle when iradia != 1  [no problem when iradia = 1]
599   --> mesoscale runs w/ water cycle had strange 5-hour fluctuations in RICE, from 80mic to 5mic
600>> PB: calculation of ccn [condensation nuclei] is done in callradite.F
601      * ccn must be saved
602        --> corrected in physiq.F and meso_physiq.F
603      * ccn must not be modified elsewhere [e.g. in watercloud, when divided by ccn_factor]
604        --> all calculations on ccn are now moved in callradite
605
606== 03/03/2011 == AS
607>> Added a pre-compilation flag MESOSCALE so that the LMDZ.MARS GCM
608will compile without stating errors because of mesoscale routines.
609[meso_physiq.F, meso_inifis.F]
610>> Now, this MESOSCALE precompilation flag can be used to lower
611the number of meso_* routines when adaptations for mesoscale
612applications are not very extended.
613   --> meso_testphys1d.F, meso_testphys1d.F, meso_dustlift.F
614       routines were deleted and changes are now moved under
615       the MESOSCALE flag in the original GCM routines
616   --> Completely transparent for GCM compilation
617       since it is devoid of the -DMESOSCALE option
618   --> Very good for syncing because changes in dustlift, newcondens
619       will be directly available in the mesoscale model
620
621== 04/03/2011 == AS + JBM
622>> new version version for aeroptproperties.F in phymars to limit uncertainties and be able to play with ngau
623>> this was coded by JBM in his personal reference version but not transmitted to the team reference version
624
625== 10/05/2011 == AS + JF
626>> in newsedim.F used for mesoscale computations, spurious values close to the surface
627   --> this was related to 1 - exp(-x) calculated as zero in w(ig,l) if x is very small
628   --> fix: when this happens, replace exp(-x) by 1 - x since x ~ 0
629>> in newsedim.F, "if (dztop.gt.epaisseur(ig,l)) then" was closed too soon by an "endif"
630   --> hence basically the simple method was never used
631       and useless calculations with the complex method were carried out
632   --> fix by moving the closing "endif" [in addition to corrections mentioned in the previous point]
633
634== 17/05/2011 == EM
635>> set internal computations using double precision in growthrate.F and
636   watercloud.F (otherwise we sometimes end up with Nans).
637>> add extra checks in newcondens.F to avoid possibility of out of bounds
638   evaluation of array masse()
639 
640== 25/05/2011 == AS
641>> found that the 10/05/2011 bug fix in newsedim.F is also useful for GCM runs.
642>> no more need to modify callradite.F prior to compilation [but still dimradmars.h must be modified]
643   --> in callradite.F we now have
644       -- DEFAULT name_iaer(1) is "dust_conrath"
645       -- IF (doubleq.AND.active) name_iaer(1) = "dust_doubleq"
646       -- IF (water.AND.activice) name_iaer(2) = "h2o_ice" 
647
648== 27/05/2011 == EM
649>> minor bug correction in writeg1d (JYC)
650>> add "-check" to debug option in makegcm_ifort
651
652== 08/06/2011 == EM
653>> minor bug fix in lect_start_archive.F (using wrong surface temp. array).
654   + swiched output messages to english and added that tracers not found
655   in file must be initialized by user.
656>> minor bug fix in datareadnc.F : 'datafile' path must be initialized.
657
658== 08/06/2011 == EM
659>> Significant update on how the number of scatterers is managed:
660   Instead of having to manualy change 'nearkind' in dimradmars.h, the
661   number of scatterers must now be set when compiling, using makegcm
662   "makegcm -s 1" for one scatterer (dust) or "makegcm -s 2" (e.g. dust
663   and water ice), default behaviour (ie not specifying -s #) is -s 1
664   Modified phymars/dimradmars.h , added directory phymars/scatterers
665   with script make_scatterers , and adapted makegcm* scripts.
666
667== 17/06/2011 == AC
668================================================
669======== IMPLEMENTATION OF THERMALS ============
670================================================
671The main goal of this revision is to start including the thermals into the model
672for development purposes. Users should not use the thermals yet, as
673several major configuration changes still need to be done.
674
675This version includes :
676- updraft and downdraft parametrizations
677- velocity in the thermal, including drag
678- plume height analysis
679- closure equation
680- updraft transport of heat, tracers and momentum
681- downdraft transport of heat
682
683This model should not be used without upcoming developments, namely :
684- downdraft transport of tracers and momentum
685- updraft & downdraft transport of q2 (tke)
686- revision of vdif_kc to compute q2 for non-stratified cases
687
688Thermals could also include in a later revision :
689- momentum loss during transport (horizontal drag)
690
691Compilation of the thermals has been successfully tested on ifort, gfortran and pgf90
692
693================================================
694================================================
695
696M      libf/phymars/callkeys.h
697M      libf/phymars/inifis.F
698
699Added new control flags to call the thermals :
700- calltherm (false by default) <- to call thermals
701- outptherm (false by default) <- to output thermal-related diagnostics (for dev purposes)
702================================================
703M      libf/phymars/vdifc.F
704^------> added a temporary output for thermal-related diagnostics
705M      libf/phymars/testphys1d.F
706^------> added treatment for a initialization from a profile of neutral gas (ar)
707      -> will be transformed in a decaying tracer for thermal diagnostics
708M      libf/phymars/physiq.F
709^------> added a section to call the thermals
710      -> changed the call to convadj
711      -> added thermal-related outputs for diagnostics
712M      libf/phymars/convadj.F
713^------> takes now into account the height of thermals to execute convective adjustment
714      => note : convective adjustment needs to be activated when using thermals, in case of a
715         second instable layer above the thermals
716================================================
717A      libf/phymars/calltherm_interface.F90
718^------> Interface between physiq.F and the thermals
719A      libf/phymars/calltherm_mars.F90
720^------> Routine running the sub-timestep of the thermals
721A      libf/phymars/thermcell_main_mars.F90
722^------> Main thermals routine specific to Martian physics
723A      libf/phymars/thermcell_dqupdown.F90
724^------> Thermals subroutine computing transport of quantities by updrafts and downdrafts
725A      libf/phymars/thermcell.F90
726^------> Module including parameters from the Earth to Mars importation. Will disappear in future dev
727================================================
728================================================
729
730== 17/06/2011 == EM
731>>> Updates and corrections (to enable compiling/running in debug mode with
732    ifort)
733- removed option "-free-form" from makegcm_ifort and set mod_loc_dir="."
734  so that module files (produced in local directory by ifort)
735  are moved to LIBO
736- updated initracer.F, physdem1.F, physiq.F, inichim_newstart.F
737  to avoid referencing out-of-bound array indexes (even if unused)
738- cosmetic updates on inwrite.F, datareadnc.F
739- updated newstart.F to initialize and use 'datadir' when looking for files
740- corrected bug on interpolation of sub-surface temperatures in
741  lect_start_archive.F
742
743== 17/06/2011 == AC
744>>> Important updates to thermals parameters
745- Tuned aspect ratio of thermals to suit Buoyancy estimations from LES in CLOSURE relation
746- Renormalization of alim_star after plume
747- Removed alimentation mixing of estimated Teta in plume
748>>> Minor change in makegcm_ifort
749
750== 22/06/2011 == EM
751- added modifications (from JYC & FGG) to tracer.h & initracer.F for ions
752- minor improvement to newstart.F (q=x option, check that tracer index
753  provided by user is valid).
754- minor correction to callradite.F (to enable compilation in debug mode
755  with ifort when there is only one tracer).
756
757== 17/06/2011 == AC
758- Added maximum vertical velocity and heat flux output from thermals
759- Added buoyancy diagnostics
760- Minor modifications in thermals routines
761
762== 23/06/2011 == EM
763- correct bug (introduced previously) in lect_start_archive.F on loop
764  boundaries for soil temperature.
765
766== 01/07/2011 == AC
767- Added new settings for the Martian thermals from new LES observations
768- Revamped thermcell's module variables to allow it's removal
769- Minor changes in physiq and meso_physiq for the call to thermals
770- Switched from dynamic to static memory allocation for all thermals variable
771to gain computation speed
772
773== 04/07/2011 == AC
774- Minor setting modification to thermals
775- Added new flux optimization in thermcell_main_mars.F90, to run properly in 3D
776
777== 14/07/2011 == JBM
778- Tidying up dust properties in DATAFILE for better consistency (cf. suaer.F90)
779- Cosmetic changes in aeropacity.F (changed comment and put a print inside a water flag)
780
781== 15/07/2011 == EM
782>> Implemented using 'z0' roughness length map (important: 'z0' reference
783   field is in datafile surface.nc, which has also been updated).
784- made z0 a z0(ngridmx) array and moved 'z0' from 'planete.h' to 'surfdat.h';
785  added a 'z0_default' (common in surfdat.h) corresponding to the 'control'
786  array value (contole(19) in startfi.nc).
787- adapted 'tabfi.F' to use 'z0_default'.
788- adapted 'phyetat0.F' to look for a 'z0' field in startfi.nc. If 'z0' is not
789  found in the startfi.nc file, then the uniform default value (z0_default)
790  is used.
791- modified 'physdem1.F' to write 'z0' field to restart.nc
792- adapted use of z0() in 'physiq.F' (diagnostic computation of surface stress),
793  'vdifc.F' and 'vdif_cd.F'.
794- adapted 'dustdevil.F' to use 'z0_default'.
795- 'testphys1d.F' now uses 'z0_default', and the value to use can be set
796  in run.def (with "z0=TheValueYouWant").
797- modified 'datareadnc.F' to load reference map of 'z0' from surface.nc, and
798  added a 'z0' option in 'newstart.F' to force a uniform value of z0. Note
799  that the use of the z0 map is automatic when using newstart, but only when
800  it loads a start_archive.nc file.
801
802== 15/07/2011 == AS
803- Modified the mesoscale part so that the previous change by EM does not
804  imply an error in the mesoscale case. More development is needed though
805  to get the "varying z0" capability in the mesoscale model.
806- Worked on versions of meso_physiq and meso_inifis as close as possible
807  to physiq and inifis for more continuity in the process of impacting changes
808  (and even possibly to reach a common version of physiq and inifis).
809  >>> The main point is to make the mesoscale significant specific parts
810  coded into include files in meso_inc so that meso_physiq and meso_inifis
811  looks very close to physiq and inifis.
812  >>> This is completely transparent for GCM users who does not need the
813  contents of meso_inc.
814- Slight cosmetic changes to physiq.f and inifis.F
815  --- some of them e.g. to prepare convergence between meso_physiq and physiq
816- Dropped the meso_ prefix from the slope routines
817  (currently those are only used in the mesoscale model,
818   but one could imagine using those in hi-res GCM runs)
819- Added a MESOSCALE flag to writediagfi so that mesoscale simulations
820  are not bothered with calls put in routines by GCM people
821
822== 19/07/2011 == AS
823- Finished converging meso_physiq.F and meso_inifis.F towards physiq.F and inifis.F
824  --> see previous point 15/07/2011
825  --> meso_ routines no longer exist (everything is in meso_inc and transparent to GCM users)
826  --> GCM routines include mesoscale parts within MESOSCALE precompiler commands
827  --> MESOSCALE parts are as hidden as possible not to mess up with GCM users/developers
828- Cleaned inelegant or useless #ifdef [or] #ifndef MESOSCALE in physiq and inifis so that
829  a minimum amount of such precompiler commands is now reached [mainly related to I/O]
830- Added the SF08 slope insolation model in the general physics parameterizations.
831  Added a callslope keyword in inifis.F and callkeys.h
832  --> This keyword is False by default / True if you use -DMESOSCALE
833- Removed the obsolete call to Viking Lander 1 diagnostic
834  Replaced it with a diagnostic for opacity at the domain center [valid for GCM and mesoscale]
835
836== 01/08/2011 == EM
837- Fixed bug in readtesassim (timeflag was not always set before being used)
838
839== 03/08/2011 == AC
840- Modified physiq.F to interface new SL parametrization
841- New SL parametrization based on a bulk Richardson Monin-Obukhov theory formulation
842   Stability functions are taken from D.E. England et al. (95)
843   Similarity functions coefficients based on Dyer and Hicks (70).
844   Includes thermal roughness length computation, heat and momentum drag coefficient computation
845   Can be used to output hydrodynamic-related SL quantities (bulk Richardson, turbulent Prandtl number estimation, Reynolds number)
846- Minor modification in thermcell_dqupdown.F to suit picky compilers
847- vdifc.F Now takes into account sub-grid gustiness, evaluated from thermals activity (it's proxy being the maximum vertical velocity)
848- Minor modification in meso_inc_les.F: u* is now taken from the new vdifc and not recomputed from a simple law
849== 08/08/2011 == AC
850- Formula correction for the Reynolds in vdif_cd : will affect the thermal roughness length. Results obtained with the precedent formula (previous commit) probably underestimate by about 1K the temperature in the mixing layer.
851- Added a new subroutine to libf/phymars called surflayer_interpol.F. This routine can be called as a diagnostic for interpolation of horizontal velocity norm and temperature in the surface layer, in 1D or 3D. The output height is controlled by a parameter z_out, to be set in physiq.F. This might be later added to a .def file. z_out is set to 0. by default, resulting in no call to this subroutine.
852
853== 16/08/2011 == AC
854- Minor modification in physiq.F to pass Ch from vdifc to meso_inc_les
855- Major modification to the formulation of integrals in surflayer_interpol.F
856  Now stable for most cases. Some cases with highly negative Monin Obukhov length
857  remain to be explored.
858- Added gustiness to the Richardson computation in vdif_cd.F. Gustiness factor is for now of beta=1., after
859  several comparisons with LES aerodynamic conductances. May be subject to a minor change (+/- 0.1)
860  in the near future. (almost transparent for the user)
861- Minor modifications relative to variables in vdifc.F.
862- Esthetic change to calltherm_mars.F
863- Changed the definition for HFX computation in the LES in meso_inc/meso_inc_les.F. New definition yields
864  very similar results to old one and follows a strict definition of what HFX should be.
865
866== 24/08/11 == TN
867Attempts to tune the water cycle by adding outliers
868       + A few structural changes !!
869* watercap.h is now obsolete and removed -- all is in surfdat.h
870* watercaptag initialized in surfini.F (up to 7 areas defined) instead of initracer.F
871  - settings proposed by AS commented
872  - experiments by TN decommented. use with caution.
873* water ice albedo and thermal inertia in callphys.def and inifis.F
874* water ice albedo in surfini.F
875* water ice albedo computation in albedocaps.F90
876* alb_surfice is now obsolete in physiq.F, albedo_h2o_ice is used instead
877* frost_albedo_threshold defined in surfdat.h
878* water ice thermal inertia in soil.F
879TODO: * calibrate thermal inertia and ice albedo
880      * have a look at subgrid-scale ice with dryness ?
881
882== 07/09/2011 == AC
883
884- Added new flag for the Richardson-based surface layer :
885
886callrichsl, can be changed in callphys.def
887
888One should always use the thermals model when using this surface layer model.
889Somes cases (weakly unstable with low winds), when not using thermals, won't be well represented by the
890Richardson surface layer. This stands for Mesoscale and Gcm but not for LES model.
891
892Correct configs :
893
894callrichsl = .true.
895calltherm = .true.
896
897callrichsl = .false.
898calltherm = .false.
899
900callrichsl = .false.
901calltherm = .true.
902
903Previously unstable config :
904
905callrichsl = .true.
906calltherm = .false.
907
908- To be able to run without thermals and with the new surface layer, a modification has been made to
909physiq.F to account for gustiness in GCM and MESOSCALE for negative Richardson, so that :
910
911callrichsl = .true.
912calltherm = .false.
913
914can now be used without problems, but is not recommended.
915
916- Consequently, callrichsl = .false. is now the default configuration for thermals.
917
918We recall the available options in callphys.def for thermals :
919
920outptherm = BOOLEAN (.false. by default) : outputs thermals related quantities (lots of diagfi)
921nsplit_thermals = INTEGER (50 by default in gcm, 2 in mesoscale) : subtimestep for thermals model.
922         It is recommended to use at least 40 in the gcm, and at least 2 in the mesoscale.
923         The user can lower these values but should check it's log for anomalies or errors regarding
924         tracer transport in the thermals, or "granulosity" in the outputs for wmax, lmax and hfmax.
925
926== 08/09/11 == AS
927LMDZ.MARS + MESOSCALE.
928---> Setting up a more realistic water ice source at the poles (notably outliers)
929
930[[ surfini.F ]]
931Main changes and bug fixes
932* reference to comcstfi.h was wrong. big problem because e.g. pi was not known.
933* commented about a problem to be fixed, due to surfini being called before initracer.
934* MESOSCALE: put the mesoscale north cap definition into a precompiling flag #MESOSCALE
935             for the moment: if [alb_mean_TES > 0.26 and lat > 70] then outliers
936             (previously done in meso_inc_caps.F)
937   
938[[ inifis.F ]]
939Just changed a comment with wrong formatting
940
941--> below, only MESOSCALE
942
943[[ soil.F ]]
944if somewhere IT > IT_outliers, then makes it = IT_outliers
945
946[[ physiq.F ]]
947[[ meso_inc/meso_inc_caps.F ]]
948[[ meso_inc/meso_inc_ini.F ]]
949meso_inc_caps no longer called. keep for reference for the moment.
950
951[[ meso_inc/meso_inc_var.F ]]
952deleted lines with *_lim variables, now useless
953
954== 08/09/11 == EM
955-Fixed problem about undefined tracer names in 'surfini.F' by calling
956 'initracer' before 'surfini' in physiq.F
957
958== 09/09/11 == AS
959--> Fixed a problem with .eq. used with booleans in physiq.F
960[some good picky compilers complain about this]
961--> Added a warning in inifis about using
962callrichsl = .false.
963calltherm = .true.
964which is not recommended. The new surface layer has been built to go
965with the new mixing layer scheme (thermals). And anyway it is a much
966better scheme than the previous one.
967
968== 09/09/11 == AC
969
970 This is a major update for thermals and richardson layer parametrization. This update stabilizes thermals (further
971 studies might show that we can reduce the value of nsplit in gcm. To be tested.), and prevent downdrafts from descending into
972 the surface layer, which was acting as a cold feedback on the thermals. The Richardson surface layer now features
973 different gustiness coefficients for Richardson, heat and momentum so that u* and t* are correctly represented.
974 
975 Upcoming updates will change surflayer_interpol.F90 to implement those changes in the interpolation scheme as well.
976 
977 ***************************
978 IMPORTANT : several parts of the vdifc code might want to use these new definitions for gustiness, u* and t*. exemple : dust devil routines
979 that recompute u* ? lifting routines ? TODO !
980 **************************
981 
982 
983 M             289   libf/phymars/thermcell_main_mars.F90
984 ^-----------------> Added iterations to the velocity / buoyancy / entrainment / detrainment
985                     computation to ensure correct convergence. Iteration number is for now set to
986                     4, which is probably too much. This will be changed once several cases are tested.
987                     The minimum is probably 2 iterations.
988 
989 M             289   libf/phymars/vdifc.F
990 ^-----------------> Subgrid gustiness parametrization now uses different gustiness beta coefficients
991                     for heat and momentum. Comparisons with LES at Exomars landing site, matching u*
992                     and teta* suggests values of beta=0.7 for momentum and beta=1.2 for heat, where
993                     the formula for large scale horizontal winds in the first layer is :
994                          U0^2 = pu^2 + pv^2 + (beta*wmax_th)^2
995 
996 M             289   libf/phymars/vdif_cd.F
997 ^-----------------> LES data suggests that Richardson number distribution during daytime has a very large
998                     standart deviation due to highly negative Richardsons on several gridpoints. As a consequence,
999                     the mean Richardson in daytime in the LES is much more negative than in LES. In the gcm,
1000                     parametrized subgrid turbulence prevents such cases, which can be dangerous in nearly unstable conditions.
1001                     Hence, we use beta=0.5 instead of one, so that we keep the anti-crazy-hfx function of beta and we increase the
1002                     norm of negative Richardsons in general for daytime conditions. This is set in conjonction with
1003                     beta settings for heat and momentum in vdifc.
1004 
1005 M             289   libf/phymars/meso_inc/meso_inc_les.F
1006 ^-----------------> HFX and USTM computations now uses the different betas for heat and momentum.
1007
1008== 21/09/11 == AS
1009--> Added MESOINI precompiler flag so that all fields needed to initialize the mesoscale model
1010     are being output in the diagfi.nc file. Previously it was made through a separate physiq.F
1011     which needed to be updated every time...
1012--> This is completely transparent to the casual GCM users and only appears in the WRITEDIAGFI section of physiq.F
1013
1014== 21/09/11 == AC
1015
1016Revision on several settings for the thermals model. This version relies on fits done for an article to be published, and is more precise.
1017
1018 M             299   libf/phymars/thermcell_main_mars.F90
1019 ^-----------------> Changed downdraft to updraft mass flux ratio from -1.8 to -1.9
1020                     Changed first level for downdraft mixing from k=3 to k=2. Only level 1 is non-mixed now.
1021                     Changed coefficients for downdraft to updraft thermal buoyancy ratios.
1022
1023 M             299   libf/phymars/calltherm_mars.F90
1024 ^-----------------> Changed r_aspect_thermals from 2. to 1.5 for the GCM version to better match buoyancy profiles.
1025
1026== 29/09/11 == AS
1027--> To easily explore sensitivity to lifting thresholds: in dustlift.F, ustar_seuil=sqrt(stress/rho)
1028    and alpha_lift[dust_mass] can be prescribed through an external stress.def parameter file.
1029    --- alpha_lift[dust_number] is computed from alpha_lift[dust_mass] as in initracer.F
1030    --- ustar_seuil is more user-friendly than stress because direct comparison with ustar from model
1031--> For the moment this is MESOSCALE only, but potentially useful to everyone
1032
1033== 30/09/11 == TN
1034>> Bug correction in lect_start_archive.F ; in some cases layer(:) was not
1035   initialized.
1036
1037
1038== 10/10/2011 == AC
1039
1040***********
1041This commit aims at increasing the thermals speed. Using these corrections, gcm performances in 64x48x32 using 1 tracer goes from 27.9% elapsed time in thermals to 18.76%.
1042
1043***********
1044Additional work needs to be done in tracer advection to gain speed in high tracer number configuration. (tracer advection (but not momentum nor temperature) could be decoupled from sub-timestep, as they do not act on the thermals scheme (water vapor is neglected as we use theta and not theta_v, and radiative effect of dust is not computed in the thermals.))
1045
1046***********
1047=> TOP 5 of routine contributions to gcm runtime :
1048
1049Each sample counts as 0.01 seconds.
1050  %   cumulative   self              self     total
1051 time   seconds   seconds    calls   s/call   s/call  name
1052 18.76      6.33     6.33      960     0.01     0.01  thermcell_main_mars_
1053 17.19     12.13     5.80                             __svml_powf4.A
1054 13.72     16.76     4.63    10369     0.00     0.00  filtreg_
1055  3.94     18.09     1.33                             __intel_new_memset
1056  3.73     19.35     1.26     2880     0.00     0.00  thermcell_dqupdown_
1057
1058note: thermcell_main_mars_ does call quite a lot power computations (see __svml_powf4.A), but this number will not increase with tracer numbers.
1059
1060***********
1061=> LOG:
1062
1063M             312   libf/phymars/thermcell_main_mars.F90
1064^------------------- removed (commented) computations on buoyancy which is purely diagnostic
1065                     tuned internal convergence loop and added convergence criterion
1066
1067M             312   libf/phymars/thermcell_dqupdown.F90
1068^------------------- removed (commented) downdraft-related if-loops (as we do not advect tracers and momentum in downdrafts for now)
1069
1070M             312   libf/phymars/calltherm_mars.F90
1071^------------------- removed (commented) diagnostic-related computations
1072                     changed default thermals spliting and aspect ratio
1073                     corrected a bug where maximum height was not correctly computed and could result in convective adjustment used in place of thermals
1074                     when using certains sets of nsplit and r_aspect (was not happening with the baseline version, so that this correction is transparent to
1075                     users)
1076********************
1077
1078== 14/10/2011 == AS + AC
1079- Monin-Obukhov length is now output from surflay_interpol and written in diagfi if z_out not 0.
1080- in calltherm_interface, defaut settings for qtransport_thermals and dtke_thermals
1081
1082== 20/10/2011 == EM
1083- added FF's upgrade of writediagfi. Now, if at runtime there is a diagfi.def
1084  file, it should contain the list of variables (1 per line) than will be put
1085  in the diagfi.nc file. If there is no diagfi.def file, then all variables
1086  are put in the diagfi.nc file (as was the case before).
1087 
1088== 21/10/2011 == EM
1089- Corrected small bug in newstart: initracer was not always used and thus
1090  some tracer indexes (igm_co2, igcm_h2o_vap,...) were not set. This
1091  however means that we now also call inifis from newstart and that we read
1092  in flags set in 'callphys.def' (required for sanity checks in initracer).
1093  Also adapted 'inichim_readcallphys': removed some obsolescent tests on
1094  number of tracers for given combinations of options.
1095
1096== 21/10/2011 == AS
1097- Added possibility for CH4 tracer in tracer.h and initracer.F
1098
1099== 27/10/11 == AS
1100--> Added geticecover.F90 which computes seasonal ice cover given ls, lati(ngrid), long(ngrid)
1101    as proposed by T. Titus from TES observations [fitting functions for crocus line]
1102    ... output is icecover(ngrid) which value is 0 [no ice cover] or 1 [ice cover]
1103    ... no calculations are done for latitudes between -40 and +40 [ice cover is directly set to 0]
1104--> In physiq.F, co2ice is set to a dummy high value to simulate a CO2 cap
1105    wherever icecover(ngrid) is 1. This is done at each timestep before newcondens is called.
1106--> For the moment this is MESOSCALE only, but potentially useful to everyone.
1107
1108== 28/10/11 == FL + AS
1109ADDED THE NEW FRAMEWORK FOR PHOTOCHEMISTRY
1110This is not the last version. A new rewritten version of calchim.F [using LAPACK] is yet to be committed.
1111--> A new version for photochemistry routines : *_B.F no longer exists, new routines in aeronomars
1112D              333   libf/aeronomars/photochemist_B.F
1113D              333   libf/aeronomars/init_chimie_B.F
1114A                0   libf/aeronomars/read_phototable.F
1115M              333   libf/aeronomars/calchim.F
1116A                0   libf/aeronomars/photochemistry.F
1117M              333   libf/aeronomars/chimiedata.h
1118--> Changed calls to calchim and watercloud [surfdust and surfice needed] in physiq.F
1119--> Left commented code for outputs in physiq.F [search for FL]
1120--> Added settings which works for 35 levels in inidissip.F according to FL. Commented for the moment.
1121--> Checked compilation and run, looks fine. Note that 'jmars.20101220' is needed.
1122
1123== 02/11/2011 == AC
1124
1125***********
1126This commit aims at increasing the thermals speed, especially for large tracer number configurations. The idea behind this commit is to advect non-active conserved variables outside of the sub-timestep of the thermals. Because these variables are not used in thermals computation, we can decouple them:
1127
1128momentum: can be decoupled because we assume a constant ratio between horizontal velocity in alimentation layer and maximum vertical velocity in the thermal
1129s.
1130
1131tracer: can be decoupled because we do not take condensation of any tracer into account and hence do not liberate latent heat nor form clouds in the thermal
1132s.
1133
1134temperature: cannot be decoupled (of course)
1135***********
1136
1137D             336   libf/phymars/thermcell_dqupdown.F90
1138^----------------   Deleted and replaced by a simpler version. Notes about downdraft advection are still available from revision 336 of SVN in thermcell_dqu
1139pdown.
1140
1141A               0   libf/phymars/thermcell_dqup.F90
1142^----------------   New upward advection for tracers and momentum in thermals. Several changes are done compared to the old approach:
1143                          - Updraft quantities are not longer computed by making hypothesis on the amount of advected air.
1144                          - In general, the formalism for updraft computation is much simpler and clearer.
1145                          - Tracer tendancies are no longer computed using the conservation equation. Instead, we use the divergence
1146                          of an approximated turbulent flux of the concerned quantity, where downdraft are also neglected.
1147
1148M             336   libf/phymars/thermcell_main_mars.F90
1149^----------------   The Main does not call anymore thermcell_dqupdown, which it was doing 2+tracer_number times per subtimestep (140 times per physical step for a 2 tracer config)
1150
1151M             336   libf/phymars/calltherm_mars.F90
1152^----------------   Entrainment, detrainment and mass-fluxes are recomputed in  the sub-timestep loop. Their final value after iterations is used by the new
1153 advection routine to compute tracer and momentum fluxes.
1154
1155*********** Results
1156
1157- Conservation of tracers has been assessed over 1 yr in 1D and found to be comparable to that obtained with the simple convective adjustment. (it actually
1158seems to be better by a factor of 10%!)
1159- GCM speed-up is of about 20% compared to the old thermal configuration, for a 2 tracer case.
1160- Advection of sharp tracer profiles has been successfully observed, similar to the old method.
1161
1162== 07/11/11 == JBM
1163>>> Changed watercloud.F to call two separate routines,
1164simpleclouds.F or improvedclouds.F, which are a simplified and
1165full microphysical scheme for cloud formation, respectively.
1166Removed the tag called "improved" in watercloud.F, and added
1167another tag called "microphys" which is defined in callphys.F
1168instead. Changed routines: callkeys, inifis, physiq, watercloud.
1169
1170>>> Reimplemented the use of typical profiles of dust particle sizes
1171and CCNs in simpleclouds.F. Corrected the previously used
1172analytical CCN profile. Moved ccn_factor to simpleclouds.F,
1173which won't be used in the new microphysical scheme. Changed
1174routines: aeropacity, physiq, simpleclouds, watercloud.
1175
1176>>> Computed rdust at the end of callsedim instead of updatereffrad,
1177except at firstcall. Renamed rfall into rsedcloud and moved it
1178in simpleclouds. Moved nuice_sed to initracer.F and added it to
1179tracer.h. Changed routines: callsedim, physiq, tracer.h,
1180watercloud, initracer, simpleclouds, updatereffrad.
1181
1182>>> Added two tracers for the CCNs. Added the different tests in
1183initracer.F to make sure that, for example, microphys is not
1184used without doubleq, etc. Corrected an inconsistency in
1185callsedim.F, and changed the way r0 is updated. Changes
1186routines: callsedim, inifis, initracer, physiq, testphys1d,
1187tracer.h.
1188
1189>>> Added the ability to have a spatially variable density in
1190newsedim (same method as that used for the radius of
1191sedimentation). Required the addition of one input to newsedim,
1192which is the size of the density variable "rho". Changed
1193routines: callsedim, newsedim.
1194
1195>>> Added an output to aeropacity called "tauscaling", which is a
1196factor to convert dust_mass and dust_number to true quantities,
1197based on tauvis. Removed ccn and qdust from aeropacity, which
1198are obsolete now.
1199
1200>>> Wrote improvedcloud.F which includes all the microphysical
1201scheme, and connected it to the sedimentation scheme. Added and
1202changed routines: callsedim, physiq, growthrate, nuclea,
1203improvedclouds, initracer, watercloud, microphys.h.
1204
1205== 07/11/11 == TN
1206
1207>> Added CCN & dust tracers updates in physiq.F
1208Corrected a bug that can give negative CCN numbers, due to the
1209use of single precision values (only 6 decimals) whereas up to 10E+10
1210CCN can be formed or disappears...
1211
1212>> Corrected physical bug that causes h2o_vap or h2o_ice
1213to be negative in improvedclouds.F.
1214
1215>> Corrected physical bug that causes CCN & dust tracers
1216to be negative in improvedclouds.F when all ice sublimates and
1217releases dust
1218
1219>> Added parameter contact mteta in callphys.def
1220Default value is still 0.95, see inifis.F
1221
1222>> Changed tendancy computation for dust_number in improvedclouds.F
1223that was not the right one. Indeed, the scavenged dust_number tracer
1224is computed from the dust_mass one, and its tendancy before scavenging
1225must be taken into account to compute its scavenging's tendancy.
1226
1227== 09/11/11 == AS
1228
1229Added a more recent version of concentrations.F by FL
1230
1231== 22/11/11 == EM
1232>> Added FL corrections to aeronomars/photochemistry.F :
1233- Bug correction on the chemistry time step (now set to 1/3rd of the
1234  physics time step)
1235- Updated kinetics coefficients (according to JPL 2011)
1236
1237== 22/11/11 == TN
1238
1239>>Changed scavenging in improvedclouds.F : CCNs are now virtual like dust
1240to avoid tauscaling divergence.
1241
1242>>Water ice radius is now updated after sedimentation in callsedim.F.
1243Added tau, tauscaling and zzlay as arguments
1244
1245>>Commented aggressive outputs at first call in suaer.F90, aeropacity.F
1246
1247== 23/11/11 == FGG + MALV
1248
1249>> New parameterization of the NLTE 15 micron cooling. The old parameterization is kept as an option, including or not variable atomic oxygen concentration. A new flag is introduced in callphys.def, nltemodel, to select which parameterization wants to be used (new one, old one with variable [O], or old one with fixed [O], see below). Includes many new subroutines and commons in phymars. Some existing routines are also modified:
1250
1251-physiq.F. Call to the new subroutine NLTE_leedat in first call. Call to nltecool modified to allow for variable atomic oxygen. Depending on the value of nltemodel, the new subroutine NLTEdlvr09_TCOOL is called instead of nltecool.
1252
1253-inifis.F. Reading of nltemodel is added.
1254
1255-callkeys.h Declaration of nltemodel is added.
1256
1257The following lines should be added to callphys.def (ideally after setting callnlte):
1258
1259# NLTE 15um scheme to use.
1260# 0->  Old scheme, static oxygen
1261# 1->  Old scheme, dynamic oxygen
1262# 2->  New scheme
1263nltemodel = 2
1264
1265A new directory, NLTEDAT, has to be included in datagcm.
1266
1267>> Improvements into NLTE NIR heating parameterization to take into account variability with O/CO2 ratio and SZA. A new subroutine, NIR_leedat.F, and a new common, NIRdata.h, are included. A new flag, nircorr, is added in callphys.def, to include or not these corrections. The following files are modified:
1268
1269-nirco2abs.F: nq and pq are added in the arguments. The corrections factors are interpolated to the GCM grid and included in the clculation. A new subroutine, interpnir, is added at the end of the file.
1270
1271-physiq.F: Call to NIR_leedat added at first call. Modified call to nirco2abs
1272
1273-inifis: Reading new flag nircorr.
1274
1275-callkeys.h: Declaration of nircorr.
1276
1277The following lines have to be added to callphys.def (ideally after callnirco2):
1278
1279# NIR NLTE correction for variable SZA and O/CO2?
1280# matters only if callnirco2=T
1281# 0-> no correction
1282# 1-> include correction
1283nircorr=1
1284
1285A new data file, NIRcorrection_feb2011.dat, has to be included in datagcm.
1286
1287>> Small changes to the molecular diffusion scheme to fix the number of species considered, to avoid problems when compiling with more than 15 tracers (for example, when CH4 is included). Modified subroutines: aeronomars/moldiff.F and aeronomars/moldiffcoeff.F
1288
1289== 24/11/11 == TN
1290
1291>> corrected minor bug in updatereffrad.F : reffdust was not saved
1292
1293>> ccn_factor as not correctly used in sedimentation.
1294It is now initialized in inifis.F, declared in tracer.h and
1295used in both simpleclouds.F & callsedim.F to update ice radius.
1296
1297>> Commented diagfi outputs in aeropacity.F & improvedclouds.F for
1298non scavenging users.
1299
1300
1301== 06/12/11 == TN
1302
1303>> tiny change : nuice_sed initialisation is now done in inifis. Also changed initracer and improvedclouds.
1304
1305
1306== 08/12/2011 == EM
1307>> Include changes and updates for photochemistry by FL:
1308- aeronomars/calchim.F : change in units of surface density.
1309- aeronomars/surfacearea.F : new routine to compute ice and dust surface area
1310                             (m2/m3) available for heterogeneous reactions.
1311- phymars/initracer.F : bug correction: initialize igcm_ch4 and change loop
1312                        bounds (when guessing tracer names/properties with
1313                        old input files).
1314- phymars/watercloud.F : cleanup.
1315- phymars/physiq.F : add call to surfacearea; photochemistry is now called
1316                     after sedimentation to take into acount updated rdust
1317                     and rice.
1318 
1319== 08/12/2011 == EM
1320>> more updates for photochemistry:
1321-aeronomars/inichim_newstart.F : add methane + bug correction in "oldnames" case
1322-aeronomars/read_phototable.F : adapt routine so that photolysis table file
1323                                name may be set in the def file with
1324                                phototable = filename
1325                                (default is "jmars.20111014")
1326
1327
1328== 09/12/2011 == EM
1329>> more updates for photochemistry from FL: improved aeronomars/surfacearea.F ,
1330  with a change in arguments.
1331
1332== 14/12/2011 == EM
1333>> fixed bug in callsedim.F: recomputation of rdust and rice should only be done
1334   if the appropriate tracers and flags are set.
1335>> commented out call to uertst in ch.F (uertst crashes with gfortran and is
1336   moreover puerly diagnostic messages).
1337>> In nltecool.F: Enforced using igcm_* indexes to identify tracers and not
1338   hard coded fixed numbers (which would lead to a disaster in cases where the
1339   order of tracers was changed).
1340
1341== 14/12/2011 == AC
1342>> Improved computation of mixing in vdifc for temperatures less than the saturation
1343   temperature.
1344   The scheme works by computing mixing of T and then liberating latent heat when T<Ts.
1345   Taking into account the mass of co2 ice condensated, a new mixing profile for T is computed.
1346   When the computation has converged, the tendancy for mixing of T is taken with respect to
1347   the initial T profile for which co2 ice has been condensated.
1348>> This scheme is based on initial work done by Melanie Vangvichith and has been adapted/tested/bug-fixed
1349   and improved to Mars.
1350
1351== 15/12/2011 == EM
1352>> minor correction in aeronomars/calchim.F and aeronomars/surfacearea.F :
1353   calls to wstats should always be embeded in if (callstats) condition.
1354   
1355== 19/12/2011 == TN
1356>> new option in newstart: 'ini_h2osurf', water ice surface initialisation to keep seasonal frost
1357   but get rid of polar cap positive or negative values.
1358
1359== 20/12/2011 == AS
1360>> new option possible in callphys.def: tituscap [logical]
1361.true. will call functions geticecover to yield a nice evolving CO2 cap as measured by Titus (mostly useful for mesoscale)
1362.false. is the default option, so this change is transparent to the casual user
1363
1364== 11/01/2012 == AC
1365>> Corrections to the thermals scheme following latest revisions of the related paper. Replaced the surface layer interpolator by a more
1366complete routine, that will ultimately become a post-processing utility (and disappear from libf) and a subroutine in the MCD.
1367
1368== 23/11/11 == FGG
1369>> Cleanup of the NLTE routines which have been packed together to limit the
1370   number of files. Also enforced that file names are non-capitalized (needed
1371   by the create_make_gcm scripts to better evaluate dependencies when
1372   building the makefile).
1373   
1374== 07/02/12 == JYC
1375>> Adding the new molecular diffusion routines (old "moldiff" and "moldiffcoeff"
1376   are kept for now and if further tests are needed):
1377   moldiffcoeff_red.F, moldiff_red.F90, diffusion.h
1378   Also updated "phymars/comdiurn.h", "aeronomars/conc.h" and
1379   "aeronomars/chimiedata.h" to be fixed/free form compatible.
1380
1381== 09/02/12 == EM
1382>> Updated the makegcm(s) so that default behaviour is to set LMDGCM env variable
1383   to be the directory in which the makegcm script is. Updated the makegcm_*
1384   to use "SOURCE" to identify main program to compile
1385>> Adapted "create_make_gcm" script so that it can compile a main program that
1386   is either something.F or something.F90. Also added that object files are
1387   removed from archive before compiling a new version.
1388
1389== 10/02/12 == TN
1390>> Major update on watercycle: a smaller integration timestep is now used
1391   in watercloud.F, sedimentation of clouds is done in watercloud instead of
1392   callsedim.F
1393>> Temperature-dependant contact parameter in nuclea.F
1394>> No dust lifting if CO2 ice in vdif.c
1395>> Ice integrated column opacity is written in diagfi from physiq.F, instead
1396   of aeropacity.F. Mandatory if iradia is not 1.
1397>> New definition of permanent ice in surfini.F and possibility to have an ice
1398   cap in it in 1d.
1399>> Update in deftank: callphys.def.outliers,run.def.1d; added traceur.def.scavenging
1400
1401== 15/02/12 == AS
1402>> Optimization of watercycle new capabilities, e.g.:
1403   ... in nuclea, removed 'if' from function fshape, modified **, decrease number of overall variables
1404   ... in growthrate and newsedim, modified **
1405   ... in improvedclouds, modified **, improved recursive calls to erf (now loop w/ 2 erf + 1 log instead of 4 erf + 4 log)
1406>> Checked consistency with previous formulations
1407>> Code 35% faster with a Valles Marineris mesoscale run in springtime (set imicro=25)
1408   ... probably even better at cloudier seasons
1409
1410== 23/02/12 == AS
1411>> In improvedclouds and waterclouds, added optimizations
1412   ... moved calculations to firstcall
1413   ... moved 'if' statement so that only useful calculations are performed
1414>> Code about 10% faster [tests carried out with mesoscale summer Tharsis run]
1415>> Check with a GCM run that results similar
1416
1417== 27/02/12 == AC
1418>> Continuation of thermals setting, comparisons with mesoscale results on Case C
1419>> Added possibility to call gcm (or 1d) with constant prescribed sensible heat flux, in the spirit of direct comparisons with LES
1420   ... This is directly comparable to the variable tke_heat_flux in namelist.input
1421   ... Requires the use of yamada4.F from terrestrial GCM (mixes more, seem more numerically stable)
1422   ... Usually requires high timesteps (>1000) to avoids crashes. Best approach is to compare
1423   height of first model level z1 and teta_1 between LES and 1D, and increase the timesteps until results
1424   between the two models are comparable (might require a slitghly different tke_heat_flux between the two models
1425   due to difference in vertical diffusion schemes and subgrid effects)
1426   ... Syntax for use is to add "tke_heat_flux = ..." in callphys.def
1427>> Corrected some stuff with tke transport in thermals (which is anyway deactivated but one day maybe...)
1428
1429== 02/03/12 == EM
1430>> bug fix in "aeronomars/moldiff_red.F90" (wrong mmol array size in included
1431   subroutine) + adapted extreme limit test for H to altitudes of ~4000km
1432   (compatble with 50 layer model).
1433>> bug fix in "nirco2abs.F" index of "co2" and "o" tracers were hard coded as
1434   1 and 3!
1435>> updates from FGG of euvheat.F, callkeys.h and inifis.F to have the
1436   "euveff" parameter read from callphys.def
1437>> added missing call to surfacearea before call to calchim in physiq (mea
1438   culpa) and also moved photochemistry so it occurs after sedimentation.
1439
1440== 06/03/12 == EM
1441>> Added option "q=profile" in newstart to initialize a given tracer with
1442   a profile specified in an ASCII file.
1443>> Minor fix on lect_start_archive : when tracers were not found, a default
1444   value was asked to user, but twice! Once is enough.
1445
1446== 07/03/12 == AC
1447********************************************************
1448>> UPDATE ON PARAMETERS TO SET TO USE THE THERMALS MODEL
1449********************************************************
1450
1451>> IN CALLPHYS.DEF <<
1452---------------------
1453
1454- calltherm = .true.       > activates the thermals
1455- callrichsl = .true.      > activate the Richardson Monin Obukhov surface layer
1456with subgrid gustiness, and the yamada4 diffusion model from earth (corrected version of vdif_kc)
1457- leave calladj = .true.   > so that the convective adjustment may work ABOVE the PBL.
1458
1459>> IN RUN.DEF <<
1460----------------
1461
1462- 96 physicial timesteps per day (the internal sub-timestep of thermals will adapt
1463so that it costs only 10% more CPU time to go from "48pdt+thermals" to "96pdt+thermals".)
1464> this has to be respected because of a coupling between the radiative transfer and thermals
1465> if you really wish to run with 48 pdt/day, you may want to deactive the thermals...
1466
1467>> USEFULL DIAGNOSTICS <<
1468-------------------------
1469
1470- activating the thermals will automatically add 3 2D-outputs to diagfi.nc files:
1471> zmax_th : interpolated boundary layer height (m)
1472> hfmax_th : maximum vertical eddy heat flux reached in thermals (K.m/s)
1473> wstar : free convection velocity reached in thermals (m/s)
1474
1475A rule of thumb for determining the mean velocities in subgrid-scale structures is:
1476
1477Mean updraft velocity : ~ wstar
1478Maximum updraft velocity : ~ 2 or 3.*wstar
1479Mean downdraft velocity : ~ 0.66*wstar
1480Maximum absolute value of downdraft velocity : ~ 2.*wstar
1481
1482>> AT COMPILATION TIME <<
1483-------------------------
1484
1485- +1 vertical level during the compilation, and then using the updated z2sig.def
1486
1487>> UPDATED Z2SIG.DEF <<
1488-----------------------
1489
1490- one level has been added in the PBL, so that to reach 150km you have to compile with
149133 vertical levels instead of 32.
1492
149310.00000     H: atmospheric scale height (km) (used as a reference only)
14940.0020736
14950.015735
14960.0600151
14970.163344
14980.36358
14990.708007
15001.25334
15012.06571
15023.22069
15034.80327
15046.90787
15059.63834
150613.108
150718.9666
150825.0626
150931.5527
151038.4369
151145.4369
151252.4369
151359.4369
151466.4369
151573.4369
151680.4369
151787.4369
151894.4369
1519101.4369
1520108.437
1521115.437
1522122.437
1523129.437
1524136.437
1525143.437
1526150.437
1527157.437
1528164.437
1529171.437
1530178.437
1531185.437
1532192.437
1533199.437
1534206.437
1535213.437
1536220.437
1537227.437
1538234.437
1539241.437
1540248.437
1541255.437
1542262.437
1543269.437
1544276.437
1545283.437
1546290.437
1547297.437
1548304.437
1549311.437
1550318.437
1551325.437
1552332.437
1553339.437
1554346.437
1555353.437
1556360.437
1557367.437
1558374.437
1559381.437
1560388.437
1561395.437
1562
1563********************************************************
1564>> END OF UPDATE ON PARAMETERS FOR THE THERMALS MODEL
1565********************************************************
1566
1567== 12/03/12 == EM
1568>> correction in nirco2abs: io and ico2 should be declared as integers
1569>> Update sponge: remove posibility of specifying 'hsponge', all modes
1570   apply to the last upper "nsponge" layers (default nsponge=3) and
1571   sponge time scale doubles with every level, starting from top.
1572
1573== 12/03/12 == FL + EM
1574>> update a coefficient in photochemistry.F and some cleanup in watercloud.F
1575  and physiq.F.
1576
1577== 29/03/12 == JYC + EM
1578>> Update vertical grid resolution for diffusion.
1579 
1580== 30/03/12 == EM
1581>> Updated model so that 1) reference pressure for opacity is now 610 Pa (and
1582   not 700 Pa anymore) and 2) the new MY24-MY30 dust scenarios (input files
1583   dust_MY24.nc, dust_MY25.nc, ..., dust_MY30.nc) can be used
1584   (when setting iaervar=24,25,...,30 in callphys.def): changed
1585   "readtesassim.F90" into "read_dust_scenario.F90" and apadpted aeropacity.F.
1586   one can still use the "old" MY24-MY25-MY26 (input files dust_tes_MY24.nc,
1587   dust_tes_MY25.nc and dust_tes_MY26.nc) scenarios by setting
1588   iaervar=124, 125 or 126 in callphys.def.
1589
1590== 31/03/12 == AS & FF
1591>> Deleted obsolete lines in solarlong   
1592
1593== 13/04/12 == FL
1594>> Update of the chemistry package:
1595- calchim.F90 :
1596  - upgraded from calchim.F
1597  - can run with or without CH4
1598  - fixed the mass conservation scheme
1599- photochemistry.F :
1600  -chemistry timestep is now independant from physics timestep
1601  -can run with or without a CH4 tracer
1602  - removed initial tests on species, since these are already done in calchim
1603- removed inichim_readcallphys.F (not used any more)
1604- concentrations.F: adaptated to better handle indexes and molar masses of
1605                    tracers. "ncomp" (in chimiedata.h) no longer needed.
1606- inichim_newstart.F90 : rewritten and cleaned (won't be compatible with
1607                         old start files where tracer names are q01,...).
1608                         Now handles hybrid levels and automaticaly adapts
1609                         depending on which tracers are available.
1610- newstart.F : adapted to followup changes in inchim_newstart.F90 and some
1611               cleanup around the initialization of tracer names and surface
1612               values.
1613
1614== 18/04/12 == TN
1615>> New scheme in improvedclouds.F based on an analytical solution of the crystal radius growth equation
1616>> Sedimentation of clouds done in callsedim.F, as it was done before version 520
1617>> Latent heat release of sublimating ground ice in vdifc.F
1618>> Bug corrected in lwu.F, that was a source of NaN for very thick water ice clouds
1619>> Bug corrected in updatereffrad.F, ice and dust radius are now updated each timestep before radiative transfer
1620
1621== 20/04/12 == EM
1622>> Some cleanup on messages and comments in code about the reference pressure
1623   for dust opacity which is now 610 Pa.
1624
1625== 25/04/12 == TN
1626>> The new scheme does not work for now. Instead, use of a subtimestep for nucleation and growth.
1627
1628== 26/04/12 == FGG+FL
1629>> Update of the chemistry package, including:
1630- 93 reactions are accounted for (instead of 22); tracking 28 species (instead
1631  of 11)
1632- computation of photoabsorption using raytracing
1633- improved time stepping in the photochemistry
1634- updated parameters (cross-sections); with this new version input files
1635   are in 'EUV/param_v5' of "datafile" directory.
1636- transition between lower and upper atmosphere chemistry set to 0.1 Pa
1637  (calchim.F90)
1638- Lots of code clean-up: removed obsolete files column.F, param_v3.h,
1639  flujo.F, phdisrate.F, ch.F, interpfast.F, paramfoto.F, getch.F
1640  Converted chemtermos.F -> chemthermos.F90 and euvheat.F -> euvheat.F90.
1641  Added paramfoto_compact.F , param_v4.h and iono.h
1642- Upadted surfacearea.F
1643- Cleaned initracer.F and callkeys.h (removed use of obsolete "nqchem"
1644  and "oldnames" case when initializing tracers).
1645- Minor correction in "callsedim": compute "rdust" and/or "rice" only when
1646  it makes sense.
1647
1648== 03/05/12 == JYC+EM
1649- Update of molecular diffusion routines (diffusion.h, moldiff_red.F90
1650  and moldiffcoeff_red.F): optimized to run faster and diffuse only
1651  specific tracers (if they are present).
1652- bugs fixed in simpleclouds.F (extra arguments) and watercloud.F (wrong
1653  arguments in call to simpleclouds and rdust() should only be recomputed
1654  if dust_mass & dust_number tracers are available).
1655
1656== 04/05/12 == JYC+EM
1657- some syntax corrections in thermcall_main_mars, vdif_cd, pbl_parameters
1658  which cause problems when compiling with some strict compilers (g95, gfortran)
1659- added an initialisation of 'varian' in initracer for cases when using
1660  conrath dust; because that value can be is used elsewhere (e.g. surfacearea)
1661
1662== 11/05/12 == FGG+FL
1663- aeronomars/inichim_newstart.F : initialization of chemistry now handles
1664  nitrogen species and ions
1665- aeronomars/conc.h : cleanup of obsolete variables
1666- aeronomars/chimiedata.h : cleanup of obsolete variables
1667
1668== 12/05/12 == FGG+JYC+EM
1669- updated high atmosphere photochemistry (jthermcalc.F, param_v4.h, iono.h,
1670  paramfoto_compact.F, param_read.F , thermosphere.F).
1671- minor change in calchim.F90 (to not use maxloc(zycol, dim = 2) function
1672  which seems to be a problem for g95) .
1673- minor bug fix in perosat.F; set tendency on pdqscloud for h2o2 to zero if
1674  none is computed.
1675- in "moldiff.F", changed "tridag" to "tridag_sp", "LUBKSB" to "LUBKSB_SP"
1676  and "LUDCMP" to "LUDCMP_SP" to avoid possible conflicts with same routines
1677  defined in "moldiff_red.F". Added use of automatic-sized array in "tridag"
1678  and "tridag_sp" local array "gam" (to avoid using an a priori oversized
1679  local array).
1680
1681== 21/05/12 == JYC+FL
1682- corrected bug in computation of HCO2+ in paramfoto_compact.F
1683- avoid infinite H2O saturation ratio at very low temperatures in improvedclouds.F
1684
1685== 29/05/12 == EM
1686- Added the possibility to use the "cold" (iaervar=6) or "warm" (iaervar=7)
1687  dust scenarios (derived from the 7 MY24 to MY30 scenarios) in
1688  aeropacity.F and read_dust_scenario.F
1689
1690== 04/06/12 == AC
1691- Code re-organization in diverse parts of the GCM code. These are NOT cosmetic
1692changes, but are needed for compilation of the Mesoscale model in NESTED configuration
1693using the new physics.
1694
1695== 05/06/12 == AS
1696- Change few function names in nlte_aux.F so that nesting is possible. This is
1697completely transparent to GCM users.
1698
1699== 06/06/12 == EM
1700- Minor cleanup in surfini.F
1701- Corrected the polar mesh surface area which was wrong in the physics (changes
1702  in phyetat0.F, calfis.F and newstart.F)
1703
1704== 14/06/12 == EM
1705- update z2sig.def file in deftank with improved vertical discretization for
1706  better thermals (this update should should have been done a while back...)
1707
1708== 14/06/12 == FGG
1709- Added possibility to run with a varying EUV cycle following real one.
1710  The flag solvarmod=1 triggers this behaviour, with companion flag
1711  solvaryear=## , where ## is the Mars Year (from 23 to 30).
1712  Setting solvarmod=0 reverts to 'old' behaviour, where there is a constant
1713  EUV forcing throughout the run, set by the "solarcondate" flag.
1714- Needs corresponding input data files ("param_v6" subdirectory of "EUV"
1715  subdirectory in "datadir").
1716- Added files jthermcalc_e107.F and param_read_e107.F in "aeronomars",
1717  modified files euvheat.F90, hrtherm.F, chemthermos.F90, param_v4.h and
1718  param_read.F in "aeronomars" and files inifis.F, physiq.F and callkeys.h
1719  in "phymars".
1720
1721== 15/06/12 == EM
1722- Minor fix in "nuclea.F", max() and min() functions must have arguments
1723  of identical types.
1724- Bug correction in "physiq.F": only water (and possibly dust and cnn if
1725  using microphysics) tracer tendencies should be updated after call
1726  to watercloud.
1727
1728== 22/06/12 == EM
1729- Enforce that imposed TES ice albedo can never be greater than 0.9
1730
1731== 28/06/12 == JYC+EM
1732- Decreased time step for molecular diffusion (diffusion.h) for better stability
1733- Added test in moldiff_red.F90 to enforce that the system can't be stuck in an
1734  infinite loop.
1735- The creation and output of coefficients in file 'coeffs.dat' in moldiff_red.F
1736  is now controled by an internal flag (by default set to false).
1737
1738== 12/07/12 == TN
1739- Use of stats.def to write variables in stats.nc, same as diagfi.def
1740- some outputs in physiq.F
1741
1742== 25/07/12 == TN
1743- Added module updaterad.F90, that computes ice and dust radius:
1744  ---> for ice particles: typical profile (even if doubleq is used) or microphysics
1745  ---> for dust particles: geometric mean radius (sedimentation,radiative transfer)
1746                           or mass mean radius (for heterogenous nucleation of microphysics)
1747- Possibility to use microphys without scavenging:
1748     dust population will not be affected by nucleation and CCN release
1749- New ice definition in surfini, based on latest CO2 cycle parameters
1750
1751== 07/08/12 == FGG + MALV
1752- Improvement of the NLTE 15um scheme (for running with nltemodel = 2); now
1753  MUCH faster than previously (by a factor 5 or so):
1754- Improvements included to the parameterization:
1755  - Cool-to-space calculation included above P(atm)=1e-10, with a soft
1756    merging to the full result (without the CTS approximation) below that
1757    level
1758  - exhaustive cleaning of the code, including FTNCHK and reordering of
1759    loops, subroutines and internal calls
1760  - simplification of the precomputed tables of CO2 bands' atmospheric
1761    transmittances
1762  - the two internal grids (the one used in the CTS region and the one
1763    below) have been , in order to reduce the CPU time consumption
1764  - reading of the spectroscopic histograms is made only once, at the
1765    beginning of the GCM, to avoid repetitive readings of ASCII files
1766  - F90 matrix operations (matmul,...) included.
1767- Changes in routines:
1768  - removed nlte_leedat.F
1769  - updated nlte_calc.F, nlte_tcool.F, nlte_aux.F
1770  - updated nlte_commons.h, nlte_paramdef.h
1771  - added nlte_setup.F
1772- Important: The input files (in the NLTEDAT directory) read as input by
1773  these routines have changed. the NLTEDAT directory should now on contain
1774  only the following files:
1775   deltanu26.dat  enelow27.dat  hid26-3.dat  parametp_Tstar_IAA1204.dat
1776   deltanu27.dat  enelow28.dat  hid26-4.dat  parametp_VC_IAA1204.dat
1777   deltanu28.dat  enelow36.dat  hid27-1.dat
1778   deltanu36.dat  hid26-1.dat   hid28-1.dat
1779   enelow26.dat   hid26-2.dat   hid36-1.dat
1780
1781== 08/08/12 == EM
1782>> Some minor changes and adaptations for the MCDv5 runs:
1783- removed the 'nice' instruction from run0 script
1784- update dissipation factors in inidissip.F (fac_mid=3,fac_up=30,startalt=70)
1785- add some outputs in physiq.F
1786- put example def files used for MCDv5 simulations in deftank:
1787  callphys.def.MCD5 run.def.64x48x49.MCD5 traceur.def.MCD5
1788
1789== 08/08/12 == FGG
1790>> commented out some messages in nlte_tcool.F (which were informations
1791   useful and meaningful during code development only)
1792
1793== 27/08/12 == FGG
1794>> bug correction in the varying EUV case; now correctly account for things
1795   as the year cycles.
1796
1797== 20/09/2012 == EM
1798>> update of zrecast utility: add possibility to have automatic "MCD/GCM"
1799   altitude above surface levels as well as the possibility to specify min,
1800   max and number of levels.
1801
1802== 21/09/2012 == EM
1803>> Adapted code so that it can run fractions of days: e.g. if "nday=1.5" in
1804  run.def, then run a sol and a half, "nday=0.75" to run three quarters of
1805  a sol... Of course the fraction should correspond to a number of complete
1806  dynamics/physics cycles. The fraction of the sol that a (re)start.nc
1807  file corresponds to is (read)written as 'Time' in the file.
1808
1809== 25/09/2012 == EM
1810>> Minor improvement for running fractions of sols; enforce some rounding of
1811   'Time' (ie: fraction of day) read from the start.nc file in order to limit
1812
1813== 05/11/2012 == TN
1814>> Added new option : ndynstep in run.def, that allows to run for a specific number a dynamical timesteps.
1815   If ndynstep is not specified or is negative, nday is used. Otherwise nday value is discarded.
1816   The problem with nday alone is that one can only run the GCM for a decimal fraction of one sol.
1817
1818== 06/11/2012 == EM
1819>> update of zrecast utility: now the planetary constants (radius, gravity,
1820   reduced gas constant) are read from the "controle" array in the file and
1821   not hard coded. That way zrecast can also be used for the generic model.
1822   Note that the "distance to center of Mars" and "MCD" options still contain
1823   some hard coded Mars constants.
1824
1825== 15/02/2013 == TN
1826>> Various bugs
1827- watercloud.F : latent heat release was not correctly added
1828- updaterad.F90 : minimal rdust is changed from 0.1 to 0.01 microns
1829- vdifc.F : The scheme with potential temperature mixing that takes into acount CO2 condensation
1830            could not work without CO2 condensation (callcond=false) -- see commit r473
1831            This caused a quick GCM crash. Now there is no condensation at all with callcond=false
1832- physiq.F : pressure levels are now correctly used with surface pressure changes due to CO2
1833             condensation. Only zplev and zplay variables should be used in physiq.
1834             Bug corrected in case of scavenging=false that led to instabilities. CCN tracers were not checked.
1835- makegcm : use of phy$physique instead of phymars for scatterrers
1836 
1837== 25/02/2013 == EM
1838- added "-fp-model precise" option when compiling with ifort (fixes unexplained
1839  mass loss of tracer in the dynamics)
1840 
1841== 27/02/2013 == EM
1842- minor bug correction in newcondens.F and some code tidying (in co2snow.F also).
1843
1844== 12/03/2013 == EM
1845- added possibility to set slope parameters in testphys1d
1846
1847== 12/03/2013 == TN
1848- added possibility to use the radiative slope scheme in the 3D-GCM
1849
1850== 10/05/2013 == FGG
1851- bug correction in "extract" utility
1852
1853== 02/07/2013 == TN
1854>> Added the possibility to store multiple initial states in one start/startfi
1855>> New option 'ecrithist' in run.def to write data in start/startfi every ecrithist
1856   dynamical timestep (default is to write it at the end of the GCM run).
1857>> New option 'timestart' in run.def to initialize the GCM with the time timestart
1858   stored in start (default is last time).
1859>> This new feature is (supposedly) totally RETROCOMPATIBLE. Changes are:
1860  - Time axis added in startfi
1861  - Time axis can be longer than one in start/startfi
1862  - Possibility to initialize the GCM with old start/startfi
1863  - Compatibility with start2diagfi, newstart, testphys1d, expandstartfi
1864  - Absolute date is stored in diagfi for less-than-a-day runs
1865>> Quick documentation about dates :
1866  - Day at the beginning of the start (integer) is stored in controle(4)
1867    for start and diagfi and controle(3) for startfi.
1868  - Fraction of the day at the beginning of the start (real between 0 included and 1 excluded)
1869    is stored in controle(29) for start, controle(27) for diagfi and controle(4) for startfi.
1870  - The "Time" variable stores all the dates from the beginning of the start (positive real)
1871    for start, startfi and diagfi
1872  - Time is stored in start_archive in the "Time" variable.
1873  - Time-related data in the controle field of start_archive are useless.
1874For instance the i-th date of diagfi is controle(4)+controle(27)+Time(i)
1875
1876== 04/07/2013 == EM
1877- Removed options "-static" and "-xSSE4.2" from ifort default options from
1878  makegcm_ifort (-static not usable on Gnome computer, and not much benefit
1879  anyways, and -xSSE4.2 causes unexplained crashes with thermosphere on
1880  Gnome)
1881
1882== 18/07/2013 == EM
1883- Bug fix: when running with photochemistry, ccns did not sediment! Fixed
1884  initracer.F. Also added that callsedim/newsedim use updated temperatures.
1885- Converted run0 and run_mcd scripts to bash.
1886
1887== 26/07/2013 == FGG +JYC
1888- Upgrade on the thermospheric photochemical reaction rates. These are now
1889  read in from a file "chemthermos_reactionrates.def".
1890
1891== 06/09/2013 == AC + EM + AS
1892- Cleaned and commented version of thermal plume model with automatic arrays
1893- Checked: exact same results than before modifications
1894
1895== 11/09/2013 == EM
1896- Bug fix in vdifc.F: in some cases, some elements of pdqsdif() were not given
1897  any value. In all cases, it is safer to start with clean initialization of
1898  output tendencies to zero.
1899- Bug fix in concentration.F: error in cpi() and aki() indexes led to
1900  wrong computation of atmospheric conductivity and specific heat.
1901
1902== 11/09/2013 == EM
1903- IMPORTANT CHANGE: Implemented dynamic tracers. It is no longer necessary to
1904  compile the model with the '-t #' option, number of tracers is simply read
1905  from tracer.def file (as before).
1906  Adapted makegcm_* scripts (and co.) accordingly.
1907  Technical aspects of the switch to dynamic tracers are:
1908  - advtrac.h (in dyn3d) removed and replaced by module infotrac.F
1909  - tracer.h (in phymars) removed and replaced by module tracer_mod.F90 (which
1910    contains nqmx, the number of tracers, etc. and can be used anywhere in the
1911    physics).
1912- Included some side cleanups: removed unused files (in dyn3d) anldoppler2.F,
1913  anl_mcdstats.F and anl_stats-diag.F, and all the unecessary dimensions.*
1914  files in grid/dimension.
1915- Checked that changes are clean and that GCM yields identical results (in
1916  debug mode) to previous svn version.
1917
1918== 13/09/2013 == AS
1919- Performed the necessary modifications for dynamic tracers
1920  to work with the mesoscale model
1921- Added precompiling flag MESOSCALE around pressure modifications
1922  done in revision 883. This makes the mesoscale model become crazy.
1923
1924== 21/09/2013 == EM
1925- Bug fix in yamada4.F: values for near-surface diffusion coefficients were
1926  used but not set.
1927- NB: FH recommends updating to latest yamada4 from Earth GCM and using
1928  their iflag_pbl=11 scheme.
1929
1930== 23/09/2013 == EM
1931- IMPORTANT CHANGE: Removed all reference/use of ngridmx (dimphys.h) in
1932  routines (necessary prerequisite to using parallel dynamics); in most
1933  cases this just means adding 'ngrid' as routine argument, and making
1934  local saved variables allocatable (and allocated at first call).
1935  In the process, had to convert many *.h files to equivalent
1936  modules: yomaer.h => yomaer_h.F90 , surfdat.h => surfdat_h.F90 ,
1937  comsaison.h => comsaison_h.F90 , yomlw.h => yomlw_h.F90 ,
1938  comdiurn.h => comdiurn_h.F90 , dimradmars.h => dimradmars_mod.F90 ,
1939  comgeomfi.h => comgeomfi_h.F90, comsoil.h => comsoil_h.F90 ,
1940  slope.h => slope_mod.F90
1941- Also updated EOF routines, everything is now in eofdump_mod.F90
1942- Removed unused routine lectfux.F (in dyn3d)
1943
1944== 31/10/2013 == TN
1945- Added a freedust mode, to be used with doubleq :
1946  Dust is not lifted, not rescaled, dust opacity is predicted instead of being forced.
1947  A corresponding freedust option is added in newstart to rescale dust to acceptable values
1948  before such a GCM run, although 'q=profile' could be used too.
1949
1950== 13/11/2013 == AS
1951--> Added precompiling flag MESOSCALE around pressure modifications
1952    done in revision 883. This makes the mesoscale model become crazy.
1953
1954== 20/11/2013 == EM
1955- Correction: in physiq.F, move newcondens (CO2 condensation routine) so that
1956  it is the last atmospheric physical process to be computed.
1957- Also corrected the setting of the South Pole surface temperature to
1958  CO2 condensation temperature (when obliquity < 27) to account for varying
1959  CO2 mixing ratio. This operation is now done in newcondens.
1960
1961== 28/11/2013 == FGG
1962- Bug fix: Sun-Mars distance was not correctly taken into account in the
1963  solvarmod==1 (daily varying realistic EUV input) case.
1964
1965== 10/12/2013 == FGG
1966- Improved 15um cooling routines, with also better handling of errors.
1967
1968== 18/12/2013 == EM
1969- Bug fix in thermcall_main_mars, layer thickness "zdz" must be recomputed
1970  in every do ig=1,ngrid loop.
1971
1972== 20/12/2013 == EM
1973Series of changes to enable running in parallel (using LMDZ.COMMON dynamics);
1974Current LMDZ.MARS can still notheless be compiled and run in serial mode
1975"as previously".
1976Summary of main changes:
1977- Main programs (newstart, start2archive, xvik) that used to be in dyn3d have
1978  been moved to phymars.
1979- dyn3d/control.h is now module control_mod.F90
1980- rearanged input/outputs routines everywhere to handle serial/MPI cases.
1981  physdem.F => phyredem.F90 , phyetat0.F => phyetat0.F90 ; all read/write
1982  routines for startfi files are gathered in module iostart.F90
1983- added parallelism related routines init_phys_lmdz.F90, comgeomphy.F90,
1984  dimphy.F90, iniphysiq.F90, mod_grid_phy_lmdz.F90, mod_phys_lmdz_mpi_data.F90,
1985  mod_phys_lmdz_mpi_transfert.F90, mod_phys_lmdz_omp_data.F90,
1986  mod_phys_lmdz_omp_transfert.F90, mod_phys_lmdz_para.F90,
1987  mod_phys_lmdz_transfert_para.F90 in phymars
1988  and mod_const_mpi.F90 in dyn3d (for compliance with parallel case)
1989- created generic routines 'planetwide_maxval' and 'planetwide_minval', in
1990  module "planetwide_mod", that enable obtaining the min and max of a field
1991  over the whole planet.
1992
1993== 08/01/2014 == EM
1994- Update of the read_dust_scenario routine: when input dust scenarios file
1995  contain variable "dustop", it is assumed to be visible extinction opacity,
1996  and if it is "cdod" (recent change, for the MCDv5.1 dust scenarios), then
1997  it is IR absorption opacity (and is multiplied by 2.6 to be converted to
1998  visible extinction opacity).
1999
2000== 12/03/2014 == EM
2001- Bug fix in surfini.F, nb_ice array should be the size of the full grid.
2002  Only was an issue when runiing in MPI and mode icelocationmode = 1
2003  Note that it would make more sense for the initialization of watercaptag and co.
2004  to be done in newstart, and that these values be stored in startfi.nc
2005
2006== 12/03/2014 == TN
2007- Added tauscaling (the conversion factor from virtual to real dust) in startfi.nc file.
2008  It is needed for 3 cases:
2009  1. Compute ice particles size when using microphysics on the first physics step
2010     before the call to the radiative transfer (updatereffrad)
2011  2. The conversion to real dust values with newstart, to be used for the freedust mode.
2012  3. It brings the necessary information for the calculation of the dust 3D opacity
2013     from start & startfi files only when using virtual dust.
2014  If tauscaling is not present, the default value is 10^-3 everywhere when needed.
2015  If the freedust mode is used, tauscaling is equal to 1 everywhere.
2016  Modified accordingly startfi and start_archive writing and reading routines.
2017
2018== 24/03/2014 == AS
2019--> fixed a potential bug in thermal plume model because zlmax was computed both in thermcell_main_mars and calltherm_interface... so made it an OUT argument
2020 of calltherm_interface. also: changed the name to limz. and added precompiling flags to avoid the use of planetwide in MESOSCALE. in MESOSCALE we just go hi
2021gh enough (nlayer-5) and do not care about computational cost (although we certainly gain from not using MAXVAL).
2022--> moved allocations upward in inifis. does not change anything for GCM, but make MESOSCALE modifications simpler, and overall make inifis better organized:
2023 first allocations, then reading callphys.def file.
2024--> added precompiling flags around lines that are both useless for MESOSCALE (notably I/O) and recently adapted to parallel computations in the GCM
2025--> tidied up what is MESOSCALE vs. GCM in surfini
2026
2027== 15/04/2014 == AS
20281. No more SAVE,ALLOCATABLE arrays outside modules.
2029     This is important to solve the nesting conundrum in MESOSCALE.
2030     And overall this is good for the harmony of the universe.
2031     (Joke apart, this is good for any interfacing task. And compliant with a F90 spirit).
2032     Note that bit-to-bit compatibility of results in debug mode was checked.
20332. inifis is split in two : phys_state_var_init + conf_phys
2034     This makes interfacing with MESOSCALE more transparent.
2035     This is also clearer for LMDZ.MARS.
2036     Before, inifis has two very different tasks to do.
20373. a bit of cleaning as far as modules and saves are concerned
2038
2039== 15/04/2014 == AS
2040Replaced comcstfi and planete includes by modules
2041
2042== 18/04/2014 == EM
2043Some minor fixes and cleanup.
2044- use surfdat_h, ... qsurf was missing in start2archive
2045- 'tauscaling' was missing from argument list when calling physdem1
2046  in testphys1d
2047
2048== 19/04/2014 == FF+EM
2049Add "composition" option in newstart to enable global modification of
2050CO2,N2,Ar,O2 and CO mixing ratios. Plus some cleanup on physics variables
2051(saved arrays) which have been moved to modules.
2052
2053== 01/05/2014 == AS
2054- Filling geom arrays is now out of phys_var_state_init. Done
2055  through a merged function ini_fillgeom within the comgeomfi_h module.
2056- Cosmetic changes
2057- New interface with the mesoscale model: lesser amount of dirty MESOSCALE includes
2058
2059== 04/05/2014 == AS
2060- Further reduction of the amount of MESOSCALE precompiling steps and code bits
2061- Changed the I/O interface with the mesoscale model
2062  --> I are not longer arguments but are passed through modules
2063  --> O are no longer generated as additional includes
2064      but passed through the module comm_wrf.F90
2065      !! this new module is harmless
2066      !!   in GCM applications
2067      !!   (arrays are not allocated)
2068- Note: the easiest for interfacing is to put all fields
2069        to be output in a module with allocatable arrays.
2070        see for instance in turb_mod for ustar.
2071        but this could conflict with GCM developers' habits
2072        so we use the comm_wrf.F90 strategy instead for
2073        several arrays (radiative transfer, clouds, etc...)
2074
2075== 07/05/2014 == EM+FF
2076Some fixes and updates:
2077- addfi (dyn3d): Add correction on theta when surface pressure changes
2078- vdif_cd (phymars): Correction for coefficients in stable nighttime case
2079- jthermcalc (aeronomars): Fix for some pathological cases (further investigations
2080  on the origin of these is needed)
2081
2082== 09/05/2014 == AS
2083- Added a flag callyamada4 in callphys.def to activate or not the latest version
2084for subgrid-scale mixing. It is T by default.
2085- Warnings in conf_phys modified accordingly.
2086
2087== 10/05/2014 == AS
2088- Further reduction (or 'factorisation') of mesoscale includes
2089- ustar and tstar are calculated in vdifc. so no need to recalculate
2090  those elsewhere. use turb_mod module to store it.
2091
2092== 11/05/2014 == AS
2093- Number of scatterers no longer prescribed at compiling time
2094- Number of scatterers must now be set in callphys.def (keyword: naerkind)
2095- Added in dimradmars_mod a subroutine ini_scatterers to initialize arrays once naerkind is known
2096  -- NB: ini_scatterers is not called in phys_var_init
2097  --     but rather in conf_phys once naerkind is read in callphys.def
2098- Checks + names of scatterers moved from callradite to conf_phys
2099- Put what was in scatterers.h in dimradmars_mod
2100- Put what was in aerkind.h in dimradmars_mod
2101- Put what was in yomaer_h in dimradmars_mod
2102- Moved conc_mod in phymars rather than aeronomars.
2103  Otherwise pb of cyclic dependencies (plus compiling without aeronomars is impossible).
2104
2105== 14/05/2014 == FGG
2106- Bug fix in jthermcalc.F: rounding issues in computation of the solar zenith
2107  angle when SZA slightly greater than 90
2108- Corrected misleading warning in nlte_tcool.F
2109
2110== 20/05/2014 == AS
2111IMPORTANT CHANGE
2112- Remove all reference/use of nlayermx and dimphys.h
2113- Made use of automatic arrays whenever arrays are needed with dimension nlayer
2114- Remove lots of obsolete reference to dimensions.h
2115- Converted iono.h and param_v4.h into corresponding modules
2116   (with embedded subroutine to allocate arrays)
2117   (no arrays allocated if thermosphere not used)
2118- Deleted param.h and put contents into module param_v4_h
2119- Adapted testphys1d, newstart, etc...
2120- Made DATA arrays in param_read to be initialized by subroutine
2121   fill_data_thermos in module param_v4_h
2122- Optimized computations in paramfoto_compact (twice less dlog10 calculations)
2123- Checked consistency before/after modification in debug mode
2124- Checked performance is not impacted (same as before)
2125
2126== 21/05/2014 == EM
2127- Bug fix in thermosphere.F, always initialize all tendencies to zero. (only
2128  really matters in cases when only some of the included parametrizations
2129  are used).
2130
2131== 02/06/2014 == EM
2132- Add possibility to use clim or MY31 dust scenarios (and realistic EUV for MY31).
2133
2134== 11/07/2014 == EM
2135- Changed the variable passed from LMDZ.MARS dynamics to physics: it is now
2136a mass flux (kg/s) which is then converted to a vertical velocity (m/s) in
2137the physics. This is to be consistent with what is done in LMDZ.COMMON.
2138
Note: See TracBrowser for help on using the repository browser.