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