source: trunk/LMDZ.MARS/README @ 517

Last change on this file since 517 was 517, checked in by emillour, 13 years ago

Mars GCM: Adding the new molecular diffusion routines (old "moldiff" and "moldiffcoeff" are kept for now and if further tests are needed) by JYC:
moldiffcoeff_red.F, moldiff_red.F90, diffusion.h
Also updated "phymars/comdiurn.h", "aeronomars/conc.h" and "aeronomars/chimiedata.h" to be fixed/free form compatible.

File size: 67.2 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.
Note: See TracBrowser for help on using the repository browser.