[135] | 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) |
---|
[426] | 256 | |
---|
| 257 | == |
---|
| 258 | == WORK FOR GENERIC MODEL STARTS HERE |
---|
| 259 | == |
---|
[135] | 260 | |
---|
| 261 | == 01/08/09 == |
---|
| 262 | >>> Old Martian radiative transfer removed completely, new correlated-k |
---|
| 263 | scheme implemented in its place. Central function is callcorrk.F. |
---|
| 264 | Radiative properties are no longer stored in dimradmars.h, but in the two |
---|
| 265 | files radinc_h.F90 and radcommon_h.F90. 3D aerosol scheme |
---|
| 266 | incorporated into callcorrk.F. dustopacity.F renamed aeropacity.F |
---|
| 267 | and substantially simplified. For now the option to include dust |
---|
| 268 | as an aerosol has been removed. |
---|
| 269 | |
---|
| 270 | >>> newcondense.F replaced by condense_co2cloud.F90. This is basically |
---|
| 271 | Francois' routine from the old model, adapted to work with the new |
---|
| 272 | generalised tracer scheme. |
---|
| 273 | |
---|
| 274 | >>> Options added in physiq.F and tabfi.F to allow for planets with |
---|
| 275 | varying orbital parameters, radii, gravity etc. For the moment we |
---|
| 276 | select the planet using the variable 'planettype' in |
---|
| 277 | callphys.def. This could probably be improved in the future. |
---|
| 278 | |
---|
| 279 | >>> Many new options added to callphys.def. |
---|
| 280 | |
---|
| 281 | |
---|
| 282 | |
---|
| 283 | |
---|
| 284 | |
---|
| 285 | == 25/11/2009 == |
---|
| 286 | >>>> List of changes and modifications |
---|
| 287 | - modified watercloud.F: added sanity check (i.e. do we have a water tracer?) |
---|
| 288 | - modified dyn3d/dynetat0.F --> removed possibility of reindexing tracers |
---|
| 289 | - modified phyetat0.F --> removed possibility of reindexing tracers |
---|
| 290 | |
---|
| 291 | -- removed using a "co2ice" array to store surface CO2 ice |
---|
| 292 | -> adapted surfini.F & physiq.F to use qsurf(:,igcm_co2_ice) |
---|
| 293 | instead of co2ice(:) |
---|
| 294 | -> modified initracer.F & tracer.h to properly initialize (and store) |
---|
| 295 | a "co2_ice" tracer. |
---|
| 296 | -> removed 'co2ice' from vdifc.F (it was not used there anyway) |
---|
| 297 | and from phsdem1.F |
---|
| 298 | -> removed possibility of calling 'newcondens' from physiq.F |
---|
| 299 | -> cleaned up newstart.F, lect_start_archive.F, start2archive.F to not use |
---|
| 300 | "co2ice" field but qsurf(igcm_co2_ice) |
---|
| 301 | |
---|
| 302 | -- adapted 'create_make_gcm' and 'makegcm' scripts so that we don't need |
---|
| 303 | to have and (unused) 'aeronomars' directory around. |
---|
| 304 | |
---|
| 305 | -- shifted to reading traceur.def (dyn3d/iniadvtrac.F) in an Earth-LMDZ4-like |
---|
| 306 | fashion: |
---|
| 307 | first line == number of tracers |
---|
| 308 | and then tracer name (1 per line; later we'll also add advection scheme type) |
---|
| 309 | -- NOTE BY RW: Here would be a good place to also note which tracer (if any) is |
---|
| 310 | the 'variable gas' in the radiative transfer |
---|
| 311 | |
---|
| 312 | -- Made some changes in tabfi.F to let user change planet parameters |
---|
| 313 | such as rotation rate, molar mass of atmosphere, ... |
---|
| 314 | (NB: note however that we seem to lose dynamics/physics coherence ... |
---|
| 315 | we should probably read these values from a planet.def file) |
---|
| 316 | |
---|
| 317 | -- Changed condens_co2cloud.F : added a check for presence of CO2 gas and output |
---|
| 318 | of corresponding tendency. |
---|
| 319 | |
---|
| 320 | |
---|
| 321 | == 15/12/2009 == |
---|
| 322 | >>> Correlated-k radiative transfer now reads spectral bands and p-T |
---|
| 323 | matrix values from ascii files; the code checks that the number of |
---|
| 324 | bands and matrix elements in the files match those written in |
---|
| 325 | radinc.F90 on the first call. |
---|
| 326 | |
---|
| 327 | >>> Water vapour tracer coupled to variable gas species in radiative |
---|
| 328 | transfer; option also given to run with fixed relative humidity |
---|
| 329 | profiles. 'Variable gas species' option added to callphys.def. |
---|
| 330 | |
---|
| 331 | >>> Surface albedo updated to be one band everywhere. |
---|
| 332 | |
---|
| 333 | >>> suaer_corrk.F90 modified to use different ep, omeg, g variables in |
---|
| 334 | the visible and infrared. This is necessary because the number of |
---|
| 335 | bands is, in general, different. |
---|
| 336 | |
---|
| 337 | >>> suaer_corrk.F90 has an option to accept Francois' new CO2 ice |
---|
| 338 | values (and convert wvl to metres!!). |
---|
| 339 | |
---|
| 340 | >>> optci.F --> optci.F90 so that water vapour continuum subroutine |
---|
| 341 | can be included. |
---|
| 342 | |
---|
| 343 | == 08/01/10 == |
---|
| 344 | >>> Option to change pref for hybrid coordinates added to newstart.F. |
---|
| 345 | |
---|
| 346 | |
---|
| 347 | == 15/01/2010 == |
---|
| 348 | >>> Upgraded newstart.F: added possibility to reset refrence surface pressure |
---|
| 349 | "preff" (and pa) |
---|
| 350 | >>> tabfi.F: added possibility of changing value of "year_day" |
---|
| 351 | >>> cosmetic change in callphys.def : separate "universal" parameters |
---|
| 352 | and planet-specific parameters (in a separate file, e.g. earlymars.def) |
---|
| 353 | |
---|
| 354 | == 22/01/2010 == |
---|
| 355 | ==> call this version LMDZ.GENERIC |
---|
| 356 | >>> Some cleanup & upgrades: |
---|
| 357 | -- split parameters in callphys.def into generic stuff (stays in callphys.def) |
---|
| 358 | and another more specific file (e.g. earlymars.def). |
---|
| 359 | -- added 'output_olr' key (in callkeys.h; read in physiq.F) to trigger |
---|
| 360 | output of fluxes in ascii file 'olr.txt' |
---|
| 361 | -- removed (non-generic) 'kastprof' and 'nearcond' keys/options in physiq.F |
---|
| 362 | (also removed file kastprof_fn.F) |
---|
| 363 | -- had to set 'fixh2ovap =.false. in callcorrk.F to avoid |
---|
| 364 | "out of range subscript" pb in callcorrk.F |
---|
| 365 | ==> this should be improved / better controlled in the future |
---|
| 366 | -- updated newsedim.F to use "molrad, visc, avogado values from comcstfi.h |
---|
| 367 | (and not local versions of these constants) |
---|
| 368 | -- fixed buggy -O option in makegcm (and makegcm_g95); |
---|
| 369 | |
---|
| 370 | == 22/02/2010 == |
---|
| 371 | ==> call this version LMDZ.GENERIC.v0.31 |
---|
| 372 | -- rain.F, manabe.F and largescale.F subroutines added to water cycle |
---|
| 373 | -- several new toggles added to earlymars.def |
---|
| 374 | |
---|
| 375 | == 28/03/2010 == |
---|
| 376 | ==> call this version LMDZ.GENERIC.v0.4 |
---|
| 377 | -- many changes for this version! |
---|
| 378 | -- radiative transfer -- |
---|
| 379 | A new system was implemented that automatically reads the p, T, g, |
---|
| 380 | Q and band values from files. The dataset required is now specified |
---|
| 381 | in callphys.def. We still need to edit radinc_h when the corrk array |
---|
| 382 | sizes change - think about improving this in the future. |
---|
| 383 | -- water cycle -- |
---|
| 384 | A watercommon_h mod file was created, several files were renamed |
---|
| 385 | and moist convection and precipitation subroutines were added. |
---|
| 386 | Still needs some testing! |
---|
| 387 | -- OLR -- |
---|
| 388 | Two new functions were added: one to produce .nc files of the OLR |
---|
| 389 | by band, and the other to save the upgoing radiation by band in 1D |
---|
| 390 | as a .txt file. |
---|
| 391 | -- general structure -- |
---|
| 392 | tabfi.F, newstart.F etc. cleaned up + it was checked that they pass |
---|
| 393 | variables correctly. Several new options added to run.def for 1D, |
---|
| 394 | in order to allow truly arbitrary planet simulations. The |
---|
| 395 | 'planettype' option has been removed as it screwed things up completely. |
---|
| 396 | -- energy conservation -- |
---|
| 397 | I found that the planckir function in the radiative transfer did not |
---|
| 398 | always produce values that summed to sigma T^4. A new test was implemented |
---|
| 399 | to check for this problem and the standard band widths in the IR |
---|
| 400 | were increased. |
---|
| 401 | |
---|
| 402 | == 31/03/2010 == |
---|
[253] | 403 | ==> call this version LMDZ.GENERIC.v0.5 |
---|
[135] | 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. |
---|
[253] | 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. |
---|
[323] | 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). |
---|
[371] | 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 | |
---|
[374] | 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". |
---|
[375] | 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. |
---|
[470] | 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 |
---|
[471] | 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. |
---|
[484] | 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!) |
---|
[527] | 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 | |
---|
[533] | 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 |
---|
[527] | 589 | |
---|
[540] | 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. |
---|
[543] | 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 |
---|
[588] | 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!) |
---|
[589] | 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. |
---|
[590] | 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. |
---|
[594] | 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 |
---|
[595] | 631 | - Corrected evaporation at the surface when all the surface water is evaporated (JL+BC). |
---|
| 632 | - Added new energy conservation diagnostic variables and output |
---|
[594] | 633 | |
---|
[596] | 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) |
---|
[597] | 641 | - Corrects a bug on potential temperature calculation in physic |
---|
[600] | 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 | |
---|
[622] | 654 | == 16/04/2012 == JL |
---|
| 655 | - Added consistency checks for calculations including water and global1d+diurnal. |
---|
[649] | 656 | - Corrected small bugs in precipitation scheme |
---|
[622] | 657 | |
---|
[649] | 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.) |
---|
[650] | 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 |
---|
[651] | 669 | - All enertests in physiq written in a matricial (F90) way. The rest of physiqu should follow soon |
---|
[671] | 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. |
---|
[699] | 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" |
---|
[711] | 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). |
---|
[726] | 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 | |
---|
[730] | 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 | |
---|
[731] | 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. |
---|
[736] | 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. |
---|
[747] | 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. |
---|
[773] | 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 | |
---|
[786] | 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 | |
---|
[787] | 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 |
---|
[789] | 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. |
---|
[830] | 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). |
---|
[851] | 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 |
---|
[858] | 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 |
---|
[861] | 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. |
---|
[862] | 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). |
---|
[863] | 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 | |
---|
[869] | 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 |
---|
[873] | 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 |
---|
[875] | 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 | |
---|
[878] | 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. |
---|
[875] | 909 | |
---|
[889] | 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 | |
---|
[903] | 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 |
---|
[905] | 917 | |
---|
| 918 | == 18/03/2013 == EM |
---|
[906] | 919 | - removed the "-static" ifort compilation option (problematic on Gnome cluster) |
---|
[905] | 920 | and added some additional debug options |
---|
| 921 | - fixed bug in newstart about initialization of albedo and thermal inertia. |
---|
| 922 | |
---|
[918] | 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 |
---|
[905] | 930 | |
---|
[952] | 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 |
---|
[955] | 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 |
---|
[959] | 939 | |
---|
| 940 | == 15/05/2013 == JL |
---|
| 941 | - correction in radiative scheme to enforce double precision |
---|
[1016] | 942 | - corrects calculation of ISR |
---|
[965] | 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 | |
---|
[987] | 948 | == 11/06/2013 == JL+EM |
---|
| 949 | - User manual (+ sources) added in DOC. |
---|
[965] | 950 | |
---|
[988] | 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) |
---|
[989] | 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 | |
---|
[994] | 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") |
---|
[996] | 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 |
---|
[997] | 982 | |
---|
| 983 | == 28/06/2013 == JL |
---|
| 984 | - bug fix in setspi & setspv : counters must be initialized in routine in |
---|
| 985 | case of multiple calls |
---|
[1000] | 986 | |
---|
| 987 | == 02/07/2013 == EM |
---|
| 988 | - some cleanup: ismax and ismin were defined in multiple places... |
---|
| 989 | |
---|
[1006] | 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. |
---|
[1016] | 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 |
---|
[1122] | 1000 | |
---|
| 1001 | == 05/12/2013 == JL |
---|
| 1002 | - corrected sugascorrk to work in the two band gray aproximation with -b 1x1 and NGAUSS=2 |
---|
[1216] | 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. |
---|