1 | == 17/09/08 == |
---|
2 | >>> Build a version with new soil but old radiative transfer, |
---|
3 | but keeping possibility of switching back to new radiative transfer), |
---|
4 | which incorporates changes & improvements currently included in the |
---|
5 | 'reference version' GCM (see /u/emlmd/LMDZ.MARS.mixdyn) |
---|
6 | |
---|
7 | >>> start by modifying makegcm as in /u/emlmd/LMDZ.MARS.mixdyn, so that it runs |
---|
8 | without environment variables and set LIBOGCM to /tmp15/emlmd/libo |
---|
9 | |
---|
10 | >>> directory contents of 'aeronomars', 'grid' and 'filtrez' are simillar |
---|
11 | to those in /u/emlmd/LMDZ.MARS.mixdyn |
---|
12 | |
---|
13 | >>> in bibio , only file mxva.F needed be upgraded |
---|
14 | |
---|
15 | >>> get phymars and dyn3d contents from /u/emlmd/LMDZ.MARS.mixdyn |
---|
16 | (and remove all *old files) |
---|
17 | |
---|
18 | >>> check differences between dyn3d and /u/emlmd/LMDZ.MARS.170908/libf/dyn3d |
---|
19 | and upgrade when necessary: |
---|
20 | - removed 'netcdf.inc' file (has nothing to do there!) |
---|
21 | - comgeom.h and comgeom.h : made fortran90 compliant |
---|
22 | - control.h : made fortran90 compliant |
---|
23 | - dynredem.F : more read/write controls + comments in english |
---|
24 | - ini_archive.F : new soil/thermal inertia changes |
---|
25 | - integrd.F : added additional information to output when crashing |
---|
26 | - lect_start_archive.F : new soil/thermal inertia changes |
---|
27 | - newstart.F : new soil/thermal inertia changes + comments in english |
---|
28 | - start2archive.F : new soil/thermal inertia changes |
---|
29 | - vanleer.F : removed inapropriate 'external' statement |
---|
30 | - write_archive.F : enable writting a subterranean field |
---|
31 | |
---|
32 | >>> check differences between phymars and /u/emlmd/LMDZ.MARS.170908/libf/phymars |
---|
33 | and upgrade when necessary: |
---|
34 | New soil stuff: |
---|
35 | - added comsoil.h |
---|
36 | - iniwrite.F : new soil changes |
---|
37 | - added iniwritesoil.F90 and writediagsoil.F90 for subterranean fields |
---|
38 | - added interp_line.F (for subterranean grid interpolation) |
---|
39 | - adapted phyetat0.F for subterranean temperature & inertia |
---|
40 | - adapted physdem1.F to include new soil stuff |
---|
41 | - physiq.F : added calls to writediagsoil |
---|
42 | - soil.F : new routine (fixed vertical grid + variable thermal inertia) |
---|
43 | - added soil_settings.F (to read/initialize/interpolate soil properties) |
---|
44 | - updated surfdat.h (since thermal inertia is now in comsoil.h) |
---|
45 | - updated tabfi.F : include new soil properties |
---|
46 | - updated testphys1d.F |
---|
47 | - updated dimphys.h (set nsoil=18 as default) |
---|
48 | |
---|
49 | == 18/09/08 == |
---|
50 | >>> add the possibility of easily switching to Tran radiative transfert |
---|
51 | - updated aerdust.h.ocke97 (changed some variables name) so it can |
---|
52 | replace aerdust.h (which is currently the same as aerdust.h.clan91). |
---|
53 | - imported Tran's 'gfluxv.F' routine |
---|
54 | - imported Trans' version of 'swr.F' routine, saved it as 'swr.F.toon' |
---|
55 | |
---|
56 | >>> Backup of 'old' Morcrette swr.F is 'swr.F.morc' |
---|
57 | NB: to switch from one radiative transfer to the other, just copy |
---|
58 | swr.F.morc or swr.F.toon to swr.F (and eventually 'touch swr.F' so that |
---|
59 | makegcm recompiles swr.F) |
---|
60 | No other dependencies (swr.F.toon uses 'gfluxv.F' and swr.F.morc uses |
---|
61 | 'dedd.F'). |
---|
62 | |
---|
63 | >>> Changed the latter, so that users can switch from one to the other |
---|
64 | - modified swr.F.toon to become swr_toon.F (and to include gfluxv.F) |
---|
65 | - modified swr.F.morc to become swr_fouquart.F (and to include dedd.F) |
---|
66 | - added a flag in callkeys.h, swrtype (parameter to be set/changed by |
---|
67 | the user 1=Fouquart and 2=Toon) |
---|
68 | - update readtesassim so that the coefficient by which opacity |
---|
69 | is multiplied is set according to the 'swrtype' parameter |
---|
70 | |
---|
71 | == 25/09/08 == |
---|
72 | >>> Implement the use of tracer-by-name in physics |
---|
73 | - in phymars/tracer.h set 'noms' length to 20 (instead of 10) |
---|
74 | - in phymars/callsedim2q.F and phymars/callsedim.F, use tracers by name |
---|
75 | - in phymars/dustopacity.F, use tracers by name |
---|
76 | - in phymars/vdifc.F, use tracers by name |
---|
77 | |
---|
78 | == 26/09/08 == |
---|
79 | >>> Change implementation strategy (for now); don't move surface tracer around |
---|
80 | i.e.: surface ice remains equivalent to qsurf(nqmx)=qsurf(i_h2o_vap) |
---|
81 | and likewise for surface tendencies ... |
---|
82 | - modified vdifc.F and callsedim.F back |
---|
83 | - modified initracer.F (so that water names are h2o_vap & h2o_ice) |
---|
84 | |
---|
85 | == 29/09/08 == |
---|
86 | - modified aeronomars/init_chimie_B (cosmetics) |
---|
87 | - corrected aeronomars/moldiff.F internal routine tridag; changed |
---|
88 | "pause" error messages to 'stop' messages |
---|
89 | - modified phymars/watercloud.F to use tracers by name |
---|
90 | - corrected aeronomars/molvis.F (undefined 'fac' and 'Akk' written to |
---|
91 | output at first call) |
---|
92 | |
---|
93 | == 30/09/08 == |
---|
94 | - modified aeronomars/calchim.F to use tracers by name |
---|
95 | - adapted aeronomars/photochemist_B.F to use tracers by name |
---|
96 | - adapted aeronomars/chemtermos.F to use tracers by name |
---|
97 | - adapted aeronomars/concentrations.F to use tracers by name |
---|
98 | - corrected aeronomars/conduction.F (undefined 'Akk' written to output |
---|
99 | at first call) |
---|
100 | - adapted aeronomars/euvheat.F to use tracers by name |
---|
101 | - adapted aeronomars/moldiff.F and moldiffcoeff.F to use tracers by name |
---|
102 | |
---|
103 | == 01/10/08 == |
---|
104 | - For more compatibility with LMDZ4; mimic reading a 'traceur.def' file |
---|
105 | in the dynamics via a call to a routine 'iniadvtrac.F' and saving |
---|
106 | tracers names in 'advtrac.h' |
---|
107 | -> created 'iniadvtrac.F', 'advtrac.h' and modified gcm.F |
---|
108 | - modified 'dynetat0.F' so that tracers are loaded from 'start.nc' by name |
---|
109 | - modified 'dynredem.F' so that tracers are written to 'restart.nc' |
---|
110 | by name |
---|
111 | - modified 'initracer.F' tu use tracers by name |
---|
112 | |
---|
113 | == 02/10/08 == |
---|
114 | - removed use of 'nqchem_min' everywhere: |
---|
115 | adapted 'euvheat.F','inifis.F','physiq.F' |
---|
116 | (leave 'inichim.F' for later) |
---|
117 | - updated 'phyetat0' and 'physdem1.F' to read/write surface tracers by name |
---|
118 | - modify things so that surface water ice index is the same as |
---|
119 | atmospheric water ice (except when running without water ice; then |
---|
120 | simply set i_h2o_ice=i_h2o_vap). |
---|
121 | NB: the easiest is to have global storage of tracer names/indexes in |
---|
122 | tracer.h |
---|
123 | => changed initracer.F & tracer.h to have global igcm_something indexes |
---|
124 | |
---|
125 | == 03/10/08 == |
---|
126 | - adaptations for surface ice index, modified files: |
---|
127 | phyetat0.F : if there is a dynamical tracer 'h2o_vap' then load |
---|
128 | surface tracer called 'h2o_ice' instead |
---|
129 | initracer.F : in 'old' tracer name case: move qsurf(nqmx)->qsurf(nqmx-1) |
---|
130 | and set i_h2o_ice=i_h2o_vap if iceparty=.false. |
---|
131 | physdem1.F : if old tracer names: move qsurf(nqmx-1)->qsurf(nqmx) |
---|
132 | if iceparty=.false., write surface tracer 'h2o_ice' |
---|
133 | (and not 'h2o_vap') to file. |
---|
134 | adapted vdifc.F, callsedim.F & watercloud.F & physiq.F so that surface |
---|
135 | ice is now identified as qsurf(i_h2o_ice) |
---|
136 | - updated aeronomars/perosat.F (cosmetics) |
---|
137 | |
---|
138 | == 06/10/08 == |
---|
139 | - modify newstart.F and lect_start_archive.F to use tracers by name |
---|
140 | == 07/10/08 == |
---|
141 | - adapted inichim_newstart.F (added qsurf to arguments) |
---|
142 | and inichim_readcallphys.F |
---|
143 | == 08/10/08 == |
---|
144 | - implement reading traceur.def in dyn3d/iniadvtrac.F |
---|
145 | |
---|
146 | == 16/10/08== |
---|
147 | -small change in inifis.F (only warn if too many tracers, compared |
---|
148 | to the expected number, not stop). |
---|
149 | - corrected bug in initracer.F |
---|
150 | == 21/10/08 == |
---|
151 | - modified newstart.F to load B.Diez subsurface ice maps. |
---|
152 | - corrected small bug (uninitialized variable) in interp_horiz.F |
---|
153 | == 22/10/08 == |
---|
154 | - updated iniwritediagsoil.F so that thermal inertia is written to |
---|
155 | diagsoil.nc |
---|
156 | == 31/10/08 == |
---|
157 | - changed xvik.F program so it works even if we don't have atmospheric |
---|
158 | temperature at hand (then it uses a 10km reference scale height) and so |
---|
159 | that it does surface pressure interpolation log-wise. |
---|
160 | == 03/11/08 == |
---|
161 | - modified physiq to compute (and output) co2 column. |
---|
162 | - added improvement by Francois in newcondens.F about computing CO2 |
---|
163 | partial pressure. This behavior is turned on by setting internal logical |
---|
164 | flag 'improved_ztcond' to '.true.' (and running with a co2 tracer) |
---|
165 | - updated 'start2archive' to work with 'new' gcm output (soil, tracers ...) |
---|
166 | == 04/11/08 == |
---|
167 | - upgraded xvik program to look for temperature in 7th layer variable if |
---|
168 | there is no global atmospheric temperature field at hand. |
---|
169 | == 05/11/08 == |
---|
170 | - more modifs to newcondens.F: added another internal flag 'bound_qco2' to |
---|
171 | enforce (if set to .true.) that co2 mass mixing ratio remains bounded. |
---|
172 | == 07/11/08 == |
---|
173 | - corrected 'writediagfi' & 'writediagsoil' so that an error message is |
---|
174 | issued if called with a variable name which is too long. |
---|
175 | == 18/12/08 == |
---|
176 | - corrected bug in dyn3d 'addfi.F', (dimensions of local array p()) |
---|
177 | == 23/02/09 == |
---|
178 | - modified "aeronomars/param_read.F" to do strictly fortran data |
---|
179 | initialization (otherwise xlf compiler complains) |
---|
180 | - changed a few '1.e-30' to '1.d-30' in aeronomars/photochemist_B.F |
---|
181 | so that max functions has 2 doubles as arguments (otherwise xlf |
---|
182 | compiler complains) |
---|
183 | |
---|
184 | ==07/04/09 == |
---|
185 | -cosmetic changes/minor improvements in the handling of tracers in: |
---|
186 | aeronomars/photochemist_B.F |
---|
187 | aeronomars/perosat.F |
---|
188 | aeronomoars/euvheat.F |
---|
189 | aeronomars/moldiffcoeff.F |
---|
190 | aeronomars/moldiff.F |
---|
191 | aeronomars/cocentrations.F |
---|
192 | aeronomars/chemtermos.F |
---|
193 | aeronomars/calchim.F |
---|
194 | |
---|
195 | --> NB: still there are differences in outputs when order of tracers is changed |
---|
196 | |
---|
197 | == 09/04/09 == |
---|
198 | >>> fixed problem in 'vdifc.F' which lead to different results when moving |
---|
199 | tracers around. |
---|
200 | |
---|
201 | == 10/04/09 == |
---|
202 | >>> corrected small bug in diagnostic outputs of 'watercloud.F' (tendencies were |
---|
203 | not added to tracer values). |
---|
204 | |
---|
205 | == 21/04/09 == |
---|
206 | >>> corrected small bug in "physdem1.F" about writing water ice surface tracer |
---|
207 | to file |
---|
208 | |
---|
209 | == 07/05/09 == |
---|
210 | >>> very minor correction (firstcall not set to true after first call |
---|
211 | if no tracers) in convadj.F |
---|
212 | |
---|
213 | == 30/06/09 == |
---|
214 | >>> Implement reading *def files with IOIPSL ersatz 'getin' function |
---|
215 | - import "ioipsl_errioipsl.F90","ioipsl_getincom.F90","ioipsl_stringop.F90" |
---|
216 | in bibio |
---|
217 | - adapted 'dyn3d/defrun_new.F' to use "getin" function |
---|
218 | - adapted 'phymars/inifis.F' to use "getin" function |
---|
219 | |
---|
220 | == 01/07/09 == |
---|
221 | >>> Adapted 'create_make_gcm' so that the "use" in *.F files is identified and |
---|
222 | corresponding dependencies included in the makefile rules. |
---|
223 | |
---|
224 | >>> Added the 3D scattering from aerosols by JB Madeleine: |
---|
225 | - minor changes in aerave.F |
---|
226 | - added the calls to aeropacity.F, and aeroptproperties.F in callradite.F |
---|
227 | - changed the calls to lwu.F and swr.F in lwmain.F and swmain.F, respectively |
---|
228 | - added 3D scattering properties in lwu.F and swr.F |
---|
229 | - added the new aeroptproperties.F, aeropacity.F and suaer.F90 routines |
---|
230 | (removed dustopacity.F) |
---|
231 | - updated aeropacity.F with new tracer names |
---|
232 | - changed the call to callradite.F in physiq.F, added the initialization |
---|
233 | of reffrad and nueffrad (aerosol effective radius and variance) |
---|
234 | - removed all the lines relative to the old "activice" option, including |
---|
235 | temperature variation due to latent heat release (now in comments) |
---|
236 | - renamed nsize into naersize in watercloud.F, watersat.F and newsedim.F, |
---|
237 | to avoid conflicts with another "nsize" variable in the radiative transfer |
---|
238 | - added the statement of nuice in watercloud.F, which is the effective variance |
---|
239 | of the log-normal distribution for ice |
---|
240 | - updated yomaer.h and removed aerice.h (and corresponding "includes") |
---|
241 | |
---|
242 | == 02/07/09 == |
---|
243 | >>> Adapted 'aeronomars/inichim_readcallphys.F' (called by newstart) |
---|
244 | to use "getin" routine. |
---|
245 | + minor correction in 'inifis.F' (close 'iradia.def' file) |
---|
246 | >>> Minor correction in 'dyn3d/dynetat0.F' and 'phymars/phyetat0.F'; do not |
---|
247 | attempt to reindex tracers if none were found. |
---|
248 | |
---|
249 | >>> in 'deftank' added examples of 'traceur.def' files (traceur.def.co2 : 1 |
---|
250 | co2 tracer; traceur.def.watercycle : 2 traceurs, water vapour and water ice |
---|
251 | tracer.def.chemistry : all 15 species) |
---|
252 | |
---|
253 | == 06/07/09 == |
---|
254 | >>> Modified 'makegcm' and makegcm_g95' so that modules files are put |
---|
255 | with libraries (and not in current directory) |
---|
256 | |
---|
257 | == |
---|
258 | == WORK FOR GENERIC MODEL STARTS HERE |
---|
259 | == |
---|
260 | |
---|
261 | == 01/08/09 == |
---|
262 | >>> Old Martian radiative transfer removed completely, new correlated-k |
---|
263 | scheme implemented in its place. Central function is callcorrk.F. |
---|
264 | Radiative properties are no longer stored in dimradmars.h, but in the two |
---|
265 | files radinc_h.F90 and radcommon_h.F90. 3D aerosol scheme |
---|
266 | incorporated into callcorrk.F. dustopacity.F renamed aeropacity.F |
---|
267 | and substantially simplified. For now the option to include dust |
---|
268 | as an aerosol has been removed. |
---|
269 | |
---|
270 | >>> newcondense.F replaced by condense_co2cloud.F90. This is basically |
---|
271 | Francois' routine from the old model, adapted to work with the new |
---|
272 | generalised tracer scheme. |
---|
273 | |
---|
274 | >>> Options added in physiq.F and tabfi.F to allow for planets with |
---|
275 | varying orbital parameters, radii, gravity etc. For the moment we |
---|
276 | select the planet using the variable 'planettype' in |
---|
277 | callphys.def. This could probably be improved in the future. |
---|
278 | |
---|
279 | >>> Many new options added to callphys.def. |
---|
280 | |
---|
281 | |
---|
282 | |
---|
283 | |
---|
284 | |
---|
285 | == 25/11/2009 == |
---|
286 | >>>> List of changes and modifications |
---|
287 | - modified watercloud.F: added sanity check (i.e. do we have a water tracer?) |
---|
288 | - modified dyn3d/dynetat0.F --> removed possibility of reindexing tracers |
---|
289 | - modified phyetat0.F --> removed possibility of reindexing tracers |
---|
290 | |
---|
291 | -- removed using a "co2ice" array to store surface CO2 ice |
---|
292 | -> adapted surfini.F & physiq.F to use qsurf(:,igcm_co2_ice) |
---|
293 | instead of co2ice(:) |
---|
294 | -> modified initracer.F & tracer.h to properly initialize (and store) |
---|
295 | a "co2_ice" tracer. |
---|
296 | -> removed 'co2ice' from vdifc.F (it was not used there anyway) |
---|
297 | and from phsdem1.F |
---|
298 | -> removed possibility of calling 'newcondens' from physiq.F |
---|
299 | -> cleaned up newstart.F, lect_start_archive.F, start2archive.F to not use |
---|
300 | "co2ice" field but qsurf(igcm_co2_ice) |
---|
301 | |
---|
302 | -- adapted 'create_make_gcm' and 'makegcm' scripts so that we don't need |
---|
303 | to have and (unused) 'aeronomars' directory around. |
---|
304 | |
---|
305 | -- shifted to reading traceur.def (dyn3d/iniadvtrac.F) in an Earth-LMDZ4-like |
---|
306 | fashion: |
---|
307 | first line == number of tracers |
---|
308 | and then tracer name (1 per line; later we'll also add advection scheme type) |
---|
309 | -- NOTE BY RW: Here would be a good place to also note which tracer (if any) is |
---|
310 | the 'variable gas' in the radiative transfer |
---|
311 | |
---|
312 | -- Made some changes in tabfi.F to let user change planet parameters |
---|
313 | such as rotation rate, molar mass of atmosphere, ... |
---|
314 | (NB: note however that we seem to lose dynamics/physics coherence ... |
---|
315 | we should probably read these values from a planet.def file) |
---|
316 | |
---|
317 | -- Changed condens_co2cloud.F : added a check for presence of CO2 gas and output |
---|
318 | of corresponding tendency. |
---|
319 | |
---|
320 | |
---|
321 | == 15/12/2009 == |
---|
322 | >>> Correlated-k radiative transfer now reads spectral bands and p-T |
---|
323 | matrix values from ascii files; the code checks that the number of |
---|
324 | bands and matrix elements in the files match those written in |
---|
325 | radinc.F90 on the first call. |
---|
326 | |
---|
327 | >>> Water vapour tracer coupled to variable gas species in radiative |
---|
328 | transfer; option also given to run with fixed relative humidity |
---|
329 | profiles. 'Variable gas species' option added to callphys.def. |
---|
330 | |
---|
331 | >>> Surface albedo updated to be one band everywhere. |
---|
332 | |
---|
333 | >>> suaer_corrk.F90 modified to use different ep, omeg, g variables in |
---|
334 | the visible and infrared. This is necessary because the number of |
---|
335 | bands is, in general, different. |
---|
336 | |
---|
337 | >>> suaer_corrk.F90 has an option to accept Francois' new CO2 ice |
---|
338 | values (and convert wvl to metres!!). |
---|
339 | |
---|
340 | >>> optci.F --> optci.F90 so that water vapour continuum subroutine |
---|
341 | can be included. |
---|
342 | |
---|
343 | == 08/01/10 == |
---|
344 | >>> Option to change pref for hybrid coordinates added to newstart.F. |
---|
345 | |
---|
346 | |
---|
347 | == 15/01/2010 == |
---|
348 | >>> Upgraded newstart.F: added possibility to reset refrence surface pressure |
---|
349 | "preff" (and pa) |
---|
350 | >>> tabfi.F: added possibility of changing value of "year_day" |
---|
351 | >>> cosmetic change in callphys.def : separate "universal" parameters |
---|
352 | and planet-specific parameters (in a separate file, e.g. earlymars.def) |
---|
353 | |
---|
354 | == 22/01/2010 == |
---|
355 | ==> call this version LMDZ.GENERIC |
---|
356 | >>> Some cleanup & upgrades: |
---|
357 | -- split parameters in callphys.def into generic stuff (stays in callphys.def) |
---|
358 | and another more specific file (e.g. earlymars.def). |
---|
359 | -- added 'output_olr' key (in callkeys.h; read in physiq.F) to trigger |
---|
360 | output of fluxes in ascii file 'olr.txt' |
---|
361 | -- removed (non-generic) 'kastprof' and 'nearcond' keys/options in physiq.F |
---|
362 | (also removed file kastprof_fn.F) |
---|
363 | -- had to set 'fixh2ovap =.false. in callcorrk.F to avoid |
---|
364 | "out of range subscript" pb in callcorrk.F |
---|
365 | ==> this should be improved / better controlled in the future |
---|
366 | -- updated newsedim.F to use "molrad, visc, avogado values from comcstfi.h |
---|
367 | (and not local versions of these constants) |
---|
368 | -- fixed buggy -O option in makegcm (and makegcm_g95); |
---|
369 | |
---|
370 | == 22/02/2010 == |
---|
371 | ==> call this version LMDZ.GENERIC.v0.31 |
---|
372 | -- rain.F, manabe.F and largescale.F subroutines added to water cycle |
---|
373 | -- several new toggles added to earlymars.def |
---|
374 | |
---|
375 | == 28/03/2010 == |
---|
376 | ==> call this version LMDZ.GENERIC.v0.4 |
---|
377 | -- many changes for this version! |
---|
378 | -- radiative transfer -- |
---|
379 | A new system was implemented that automatically reads the p, T, g, |
---|
380 | Q and band values from files. The dataset required is now specified |
---|
381 | in callphys.def. We still need to edit radinc_h when the corrk array |
---|
382 | sizes change - think about improving this in the future. |
---|
383 | -- water cycle -- |
---|
384 | A watercommon_h mod file was created, several files were renamed |
---|
385 | and moist convection and precipitation subroutines were added. |
---|
386 | Still needs some testing! |
---|
387 | -- OLR -- |
---|
388 | Two new functions were added: one to produce .nc files of the OLR |
---|
389 | by band, and the other to save the upgoing radiation by band in 1D |
---|
390 | as a .txt file. |
---|
391 | -- general structure -- |
---|
392 | tabfi.F, newstart.F etc. cleaned up + it was checked that they pass |
---|
393 | variables correctly. Several new options added to run.def for 1D, |
---|
394 | in order to allow truly arbitrary planet simulations. The |
---|
395 | 'planettype' option has been removed as it screwed things up completely. |
---|
396 | -- energy conservation -- |
---|
397 | I found that the planckir function in the radiative transfer did not |
---|
398 | always produce values that summed to sigma T^4. A new test was implemented |
---|
399 | to check for this problem and the standard band widths in the IR |
---|
400 | were increased. |
---|
401 | |
---|
402 | == 31/03/2010 == |
---|
403 | ==> call this version LMDZ.GENERIC.v0.5 |
---|
404 | -- OLR -- |
---|
405 | The .nc functions were implemented and tested. It was necessary to add |
---|
406 | new functions 'writediagspec.F' and 'iniwrite_spec.F'. |
---|
407 | -- CO2 condensation -- |
---|
408 | In 1D we now exit automatically if CO2 is condensing on the |
---|
409 | surface. |
---|
410 | -- G1D -- |
---|
411 | We can now choose at the beginning of physiq.F, using saveG1D, how |
---|
412 | many times we want to save per day in 1D (rather than every single |
---|
413 | time that physiq is called). |
---|
414 | -- water cycle -- |
---|
415 | I corrected a nasty bug in callcorrk involving varfixed, real*8 and |
---|
416 | epsi. I corrected a simple bug in the writing of qsurf in g1d.dat. |
---|
417 | rain.F has been tested and the algorithm for precipitation evaporation |
---|
418 | modified to that written in the manual of Larent Li. Cloud fraction |
---|
419 | variable is now included. activice and iceparty are gone, ~replaced |
---|
420 | by watercond and waterrain. |
---|
421 | -- orbit -- |
---|
422 | nres and tlocked were added as basic options to callphys.def |
---|
423 | -- radiative transfer -- |
---|
424 | I added error checking for out-of-bounds temperature in |
---|
425 | callcorrk.F. I added a new file calc_rayleigh.F90 to calculate |
---|
426 | Rayleigh scattering using a weighted mean, as opposed to simply the |
---|
427 | midpoint band values. Band discretisation is now even more |
---|
428 | automated than before: the coefficients are stored in directories |
---|
429 | like /earth/32x36/, and we can compile the GCM like this: |
---|
430 | makegcm -d 32x24x20 -b 32x36 -p std gcm. |
---|
431 | A bug was fixed involving emissivity not being properly passed from |
---|
432 | newstart.e to the main part of the code. |
---|
433 | Stellar spectra are now calculated automatically for any range of |
---|
434 | bands from high resolution data (originally from the VPL website). |
---|
435 | -- vertical discretisation -- |
---|
436 | I corrected a bug in testphys1d that used a fixed value of |
---|
437 | temperature to compute the altitude levels in the model. Now we use |
---|
438 | the scale height from z2sig.def instead. Values of preff and pa are |
---|
439 | no longer defined in testphys1d (they're not needed). |
---|
440 | -- Non-ideal gases -- |
---|
441 | I have replaced cpp in many places with cpp_3D in physiq. This is a |
---|
442 | major change, but there are enough cases where it will be useful to |
---|
443 | make it worthwhile in the universal code. I have done the same with rcp. |
---|
444 | |
---|
445 | == 10/10/2010 == |
---|
446 | ==> call this version LMDZ.GENERIC.v0.6 |
---|
447 | -- startup -- |
---|
448 | We now check water tracers exist in newstart.F before all watery initialisation options. |
---|
449 | Added an option 'autozlevs' to run.def (and logic.h). When true this recalculates the scale |
---|
450 | height in z2sig.def in order to get the same minimum pressure for any resolution. |
---|
451 | Currently, this is only useful for one-d simulations. |
---|
452 | Pressure is now distributed better in newstart.F. There was a bug before when the global mean of phi |
---|
453 | was not equal to zero and the surface pressure was changed with topography still present. |
---|
454 | In initracer, we no longer automatically set h2o_vap=h2o_ice. |
---|
455 | |
---|
456 | -- general -- |
---|
457 | periheli, apheli --> periastr, apoastr. Note this necessitates a change in start_planet too. |
---|
458 | testphys1d.F --> rcm1d.F |
---|
459 | physiq.F, callcorrk.F upgraded to Fortran 90 to remove evil zerophys. |
---|
460 | I cleaned up the method of displaying energy balance and temperature range in the model a bit. |
---|
461 | Pure H2 atmospheres are now permitted, although the code is _untested_. Rayleigh scattering, |
---|
462 | specific heat capacities and molar masses are varied, and the H2-H2 collision-induced data |
---|
463 | of Grushka et al. is used for the radiative transfer. |
---|
464 | |
---|
465 | -- boundary layer -- |
---|
466 | An improved version of vdifc.F has been created that includes the latent heat effect of water vapor, |
---|
467 | following the method used in 'clmain' in the LMDZ terrestrial model. |
---|
468 | |
---|
469 | -- water cycle -- |
---|
470 | Benjamin's improvements have been added, namely the hydrology, and reevaporation. |
---|
471 | Variable cloud fractions are allowed, or a global fixed value may be chosen |
---|
472 | for use in aeropacity. Surface wetness (beta) is now calculated in a simple way, and |
---|
473 | outputed as a diagnostic, along with the atmospheric relative humidity. |
---|
474 | |
---|
475 | mol/mol to kg/kg bug in callcorrk corrected. |
---|
476 | |
---|
477 | -- radiative transfer -- |
---|
478 | A major bug in gfluxv.F was corrected. It involved BSURF, the radiation reflected upwards from |
---|
479 | the ground. |
---|
480 | In aeropacity, we now set the cloud opacity in the top layer of the atmosphere to zero. This solves |
---|
481 | an instability problem that was occurring when CO2 clouds formed. |
---|
482 | Dust is back! Only fixed profiles allowed for now. It is assigned "naerkind=3" in aeropacity.F90. |
---|
483 | If 'CLFvarying' is enabled, the corrk subroutine is now called twice per timestep - once for clear |
---|
484 | skies and once for cloudy. This slows things down but is effective for Earth-like simulations. |
---|
485 | An optional Newtonian cooling scheme has been implemented that can replace the correlated-k method |
---|
486 | for dynamical tests etc. It is pretty experimental and has not been extensively tested. |
---|
487 | |
---|
488 | -- Dynamics -- |
---|
489 | callgroupeun in gcm.F has been set to FALSE, as it does not conserve tracers. |
---|
490 | The coefficient facup has been set to 1 in inidissip.F. We may need to mess |
---|
491 | with this later if it makes the model too unstable. |
---|
492 | |
---|
493 | == 1/08/2011 == |
---|
494 | ==> call this version LMDZ.GENERIC.v0.7 |
---|
495 | |
---|
496 | Main change: a new file 'gases.def' now required at startup. This tells us which gases are in |
---|
497 | the planet's atmosphere. It is used to calculate fundamental quantities like cpp and mugaz. |
---|
498 | A check is made against the radiative transfer data to make sure they correspond. |
---|
499 | |
---|
500 | Code has been tested successfully using the 'gfortran compiler'. |
---|
501 | |
---|
502 | -- startup -- |
---|
503 | a bug involving tsoil interpolation in lect_start_archive.F was corrected. |
---|
504 | |
---|
505 | -- aerosols -- |
---|
506 | gauss integration number 5-->10 in aeroptproperties.F90 |
---|
507 | |
---|
508 | -- water cycle -- |
---|
509 | Big fat bug in rain.F90 corrected. The routine internally updated the temperature |
---|
510 | with new tendencies before it was supposed to happen! |
---|
511 | Bug in oborealis where phi not properly updated was corrected. |
---|
512 | Improvements to hydrol.F90: zdtsurf_hyd --> pdtsurf_hyd |
---|
513 | A 'sourceevol' option was added (accessed in callphys.def) that allows us to track the |
---|
514 | evolution of the surface distribution over time. |
---|
515 | Another bug in rain corrected involving evaporation - it was heating the atmosphere |
---|
516 | rather than cooling it... |
---|
517 | |
---|
518 | -- convection -- |
---|
519 | I found a bug in convadj.F that breaks tracer conservation when convection stops at one layer |
---|
520 | and immediately restarts in the next one. |
---|
521 | |
---|
522 | -- diagnostics -- |
---|
523 | Some bugs corrected in the computation of 3D averages for the H2O / energy conservation |
---|
524 | diagnostics. |
---|
525 | |
---|
526 | -- radiative transfer -- |
---|
527 | A bug involving continuum opacities (variable DCONT) was corrected in optci.F90 and optcv.F0. |
---|
528 | H2-H2 warming now in theory reliable and correct (60-1000 K). |
---|
529 | A bug involving the definition of the Planck function boundaries was corrected in sfluxi.F90 |
---|
530 | and gfluxi.F. |
---|
531 | |
---|
532 | == 21/10/2011 == EM |
---|
533 | - added FF's upgrade of writediagfi. Now, if at runtime there is a diagfi.def |
---|
534 | file, it should contain the list of variables (1 per line) than will be put |
---|
535 | in the diagfi.nc file. If there is no diagfi.def file, then all variables |
---|
536 | are put in the diagfi.nc file (as was the case before). |
---|
537 | |
---|
538 | === 10/11/2011 == EM |
---|
539 | - Updated the makegcm(s) so that default behaviour is to set LMDGCM env variable |
---|
540 | to be the directory in which the makegcm script is. Updated the makegcm_* |
---|
541 | to use "SOURCE" to identify code and be compatible with latest |
---|
542 | 'create_make_gcm'. |
---|
543 | |
---|
544 | == 10/11/2011 == EM |
---|
545 | - Upgrade: The location of the 'datagcm' directory can now be given in the |
---|
546 | callphys.def file ( datadir = /absolute/path/to/datagcm ). Changed |
---|
547 | "datafile.h" into a F90 module "datafile_mod.F90" and spread this change |
---|
548 | to all routines that used to use "datafile.h". |
---|
549 | |
---|
550 | == 10/11/2011 == EM |
---|
551 | - Upgrade of the 'create_make_gcm' script: objects are removed from the |
---|
552 | libraries before compilation, which enforces that the gcm will fail to |
---|
553 | compile if any routine failed to compile. |
---|
554 | |
---|
555 | == 12/12/2011 == AS |
---|
556 | - Use of allocatable arrays to set corrk stuff through reading *.dat files, without the need to change radinc_h manually. |
---|
557 | - Allocation is done in sugas_corrk which is within firstcall loop in callcorrk. |
---|
558 | - Note that N_LGAUSS is still a parameter. It is not supposed to change much. |
---|
559 | - Compiles fine. Tested with debugging options through pgdbg. Runs fine. Exact same results in Early Mars test case. |
---|
560 | |
---|
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 |
---|