-
Notifications
You must be signed in to change notification settings - Fork 35
/
CHANGELOG
752 lines (667 loc) · 33.3 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
version 1.6.1
- radiation_cloud:set_overlap_param now has alternative form in
which input decorrelation_length may vary with column, useful for
models with a latitudinal or other dependence
- radiation_ecckd:calc_optical_depth has vector version for NEC
- test/ckdmip can now run CKDMIP scenarios of concentrations
downloaded (see Makefile)
- ecCKD gas optics can now be used with older cloud/aerosol optics
files provided they have the same number of bands
- Added dependence to Makefile ensuring libradiation built after
libifsrrtm, ensuring that multi-threaded make works
- Added radiation_driver:do_save_cloud_optics namelist entry which
saves look-up table averaged to the bands of the radiation scheme
(general cloud optics only)
- Increased security value in single-precision SW
reflectance-transmittance calculation from 1e-12 to 1e-6
- Added radiation/ecrad_config.h file to provide site-specific
optimization options as preprocessor parameters
- Replaced slow "sum" intrinsic function in McICA and Tripleclouds
solvers with optimized versions for x86-64 and DWD's NEC
- Enable different gas optics models for shortwave and longwave:
namelist gas_model_name can still be used, or use
sw_gas_model_name and lw_gas_model_name to specify separate models
- Fix the general aerosol optics + RRTMG combination, so that
optical properties correctly weighted by solar or terrestrial
Planck function, rather than unweighted. This changes fluxes by up
to 0.3 W m-2 in SW and 0.03 in LW, heating rates by up to 0.015
K/d in SW and 0.0015 in LW. Reverts bug introduced between git
commits a405cca (5 Dec 2022) and 7182230 (8 Dec 2022).
- Added ifs/satur.F90, used in the IFS to compute relative
humidity for aerosol hydration, and the ability to call it from
ecrad_driver.F90, but note that this routine computes saturation
with respect to ice at colder temperatures. If used, the impact on
fluxes is up to around 1 W m-2 in the SW and 0.05 in the LW, and
for heating rates 0.002 K/d in the SW and 0.003 in the LW.
- Provide get_uv_biological_weights to enable calculation of UV
index from shortwave g-points (ecCKD only)
version 1.6.0 (27 April 2023)
- Removed compiler flag specifying to load unformated Fortran
files as big endian: now the OPEN commands for the files RADRRTM
and RADSRTM specify CONVERT='BIG_ENDIAN' in rrtm_kgb1.F90 and
srtm_kgb16.F90
- make test_programs to make test programs in driver directory
- Unpublished "Baran" and "Baran2017" ice optics models are
deprecated, only accessible with namelist entries
"Baran-EXPERIMENTAL" and "Baran2017-EXPERIMENTAL"
- Wavelength tolerance for requesting monochromatic aerosol info
increased from 1% to 2%
- test/ifs directory contains configCY*.nam files corresponding to
more previous operational IFS cycles, and added
ecrad_meridian_default_out_REFERENCE.log indicating how the
reference file (now updated) was produced
- Default generalized aerosol optics file changed to
aerosol_ifs_49R1_20230119.nc
version 1.5.1 (8 December 2022)
- Added Makefile_include.intel_atos to match compiler options on
ECMWF supercomputer, plus "-heap-arrays" which is necessary for
- Fix occasional crash in single-precision fast_expm_exchange_3
for shortwave SPARTACUS entrapment
- Fixed radiation_random_numbers.F90 in single precision
- Removed Dr Hook implementation for profiling; instead optionally
call make with FIATDIR to specify the location of ECMWF's fiat
library which contains Dr Hook
- Added "make ifsdriver" which compiles ifs/libifs.a and
bin/ecrad_ifs to demonstrate use of IFS's radiation_scheme and
setup_radiation_scheme; test with make test_ifsdriver in
test/ifs. Note that the input file must have variables with the
dimensions expected in the IFS, as in test/ifs/ecrad_meridian.nc.
- Added "make ifsdriver_blocked" from Balthasar Reuter which
compiles bin/ecrad_ifs_blocked, gathering the input data into
blocks of length driver_config%nblocksize as in the IFS, which can
benefit memory locality
- Added capability for ecCKD to represent the solar cycle in solar
spectral irradiance, via "radiation" namelist parameter
use_spectral_solar_cycle and new file ssi_nrl2.nc (which can be
overridden with ssi_override_file_name). Caller provides
single_level%spectral_solar_cycle_multiplier from -1 (solar
minimum) to +1 (solar maximum), or "radiation_driver" namelist
parameter solar_cycle_multiplier_override
- If use_spectral_solar_cycle then if also
use_updated_solar_spectrum, the mean solar irradiance per g-point
will be updated from the solar cycle file. This only works for
gas-optics models from ecCKD >= 1.4, since these store the solar
spectrum on a wavenumber grid.
- Added get_sw_mapping, which returns a matrix to map from fluxes
in solar bands to fluxes in user-specified wavelength intervals,
useful for (for example) computing spectral fluxes for ocean
biology or UV index
- Added demonstration of get_sw_mapping: radiation_driver namelist
now accepts sw_diag_wavelength_bound, which takes a list of
wavenumber bounds for shortwave diagnostics. These are written to
radiation_driver: sw_diag_file_name, or sw_diagnostics.nc by
default. Test with "make test_ecckd_diag" in test/ifs.
- do_toa_spectral_flux namelist option stores top-of-atmosphere
spectral flux diagnostics per band
version 1.5.0 (22 May 2022)
- Added ecCKD gas optics scheme and generalized cloud description
- Optimized the LW Tripleclouds solver for cloud but not aerosol
scattering
- Added general spectral description of aerosol, compatible with
ecCKD gas optics model
- Added 50 CKDMIP test profiles in test/ckdmip directory
- General cloud and aerosol optics controlled with
use_general_cloud_optics and use_general_aerosol_optics
- Added use_thick_cloud_spectral_averaging config vector
corresponding to cloud_type_name
- Generalized clouds and aerosols can compute optical properties
per g-point or band, controlled with
do_cloud_aerosol_per_[lw|sw]_g_point
- Default is to average albedo/emissivity source data to ecRad
bands/g-points, rather than just to find the nearest value
(i.e. do_nearest_spectral_sw_albedo and
do_nearest_spectral_lw_emiss are now false by default)
- Replaced dry_sw_aerosol_mass_extinction and
aerosol_sw_extinction routines with dry_aerosol_mass_extinction
and aerosol_extinction, which take wavelength rather than band
number
- "make GPROF=1" compiles with -pg option for the GNU profiler
- For consistency with IFS, "PARKIND1_SINGLE" is now the
preprocessor variable to detect single precision
- "make OMPFLAG=-DNO_OPENMP" compiles without OpenMP
- Generalized aerosol has ability to read old-style aerosol
property files in predefined (e.g. RRTM) bands into the spectral
intervals of the ecCKD gas optics scheme
- Added radiation_driver:do_save_aerosol_optics namelist option to
save aerosol optical properties in aerosol_optics.nc, and "make
test_aerosol_averaging" in test/ifs to test the various
combinations of gas optics scheme and aerosol optics file
- Added do_weighted_surface_mapping, which if false does not
weight the surface albedo/emissivity by the solar/terrestrial
reference Planck function, thereby reproducing ecRad-1.4.x
behaviour
- Added Fu-Muskatel ice optics model, which can be used by the
generalized cloud optics and extends the Fu model to larger
effective radius
version 1.4.2 (15 October 2021)
- radiation_driver:do_write_double_precision writes fluxes as
doubles in NetCDF file, which reduces noise in heating rate
differences between two experiments
- Added use_vectorizable_generator for vectorizable random number
generator that speeds-up McICA solver on NEC hardware
- Numerous modifications to improve performance on DWD's NEC but
which don't affect performance on Intel
- Removed unused radsurf code - use SPARTACUS-Surface instead
version 1.4.1 (17 March 2021)
- Added Jupyter notebook to the practical directory
version 1.4.0 (5 November 2020)
- Replaced OpenIFS license with Apache License (version 2.0) and
added copyright statements to each file
- Bug fix in cum_cloud_cover_exp_exp that was triggered if exactly
zero overlap parameter between cloud objects
- Corrected the metadata in fu_ice_scattering_rrtm.nc for the
meaning of the coefficients representing the single-scattering
albedo (or mass absorption coefficient) of ice in the longwave
- Fixed bug in McICA solvers in single-precision where ssa*od can
underflow to zero even when the terms individually are larger than
zero
version 1.3.1 (10 August 2020)
- Functional Dr Hook added by Ioan Hadade, enabled with "make
DR_HOOK=1"
- Fix from Daniel Rieger in ifsrrtm/srtm_taumol[16-29].F90,
correcting a bug that violated bit-reproducibility when changing
the number of MPI tasks
- Makefile_include.cray added by Ioan Hadade so that "make
PROFILE=cray" uses the Cray compiler, if available
- Added securities to Fu ice optics: re <= 100um and g < 1
- Added securities to SOCRATES liquid optics: 1.2um <= re <= 50um
version 1.3.0 (20 March 2020)
- Corrected shortwave band fluxes in Cloudless and Homogeneous
solvers, which scaled the direct downwelling spectral flux by the
cosine of the solar zenith angle twice
- Write "experiment" global attribute to output if
radiation_driver variable "experiment_name" is present
- Previously overlap_decorr_length_scaling=0.0 was ignored; now it
implements random overlap
- Added the ecRad practical exercises to the "practical" directory
- Removed non-functioning hooks to PSRAD code
version 1.2.0 (30 October 2019)
- Increased default minimum cloud effective size to 100 m
(although 500 m is used in the IFS for better SPARTACUS
stability)
- Reduced max_cloud_od to 16 for SPARTACUS stability
- Allow water vapour to be specified by "h2o_mmr" or "h2o_vmr" if
"q" not present in input file
- Fixed effective_size_scaling namelist variable, broken in v1.1.8
- cos_solar_zenith_angle not needed if do_sw=false
- skin_temperature set to lowest air temperature if not provided
- Warning issued if default solar_irradiance of 1366 is used
- Added radiation_driver namelist variable "vmr_suffix_str"
(default "_vmr") to enable the expected variable names containing
gas volume mixing ratios to be overridden
- Use the nf-config utility to set NETCDF_INCLUDE and NETCDF_LIB
version 1.1.10 (8 April 2019)
- Renamed occurrences of "encroachment" with "entrapment" to match
terminology of Hogan et al. entrapment paper, but namelist
interface still accepts sw_encroachment_name (sw_entrapment_name
preferred) and encroachment_scaling (overhang_factor preferred).
- Added gas%scale routine to scale gas concentrations and namelist
parameters driver_config%co2_scaling (and all gases) so that users
can easily test the effect of, for example, doubling CO2 or
setting it to zero.
- Fixed parameterization of cloud scales in radiation_cloud to
optionally take as input the range of columns to process.
- Redefined use of scale_factor in radiation_gas.F90
version 1.1.9 (9 Feb 2019)
- Mapping from albedo/emissivity intevals to bands may be done as
before by selecting the nearest interval to the centre of each
band, or now by computing the fractional overlap of each interval
with each band. This is controlled by the
do_nearest_spectral_[sw_albedo|lw_emiss] configuration parameter
- The user can specify the spectral range of the albedo/emissivity
intervals using namelist parameters
[sw_albedo|lw_emiss]_wavelength_bound and
i_[sw_albedo|lw_emiss]_index, or calling the
config%define_[sw_albedo|lw_albedo]_intervals routines before
calling setup_radiation, which does the actual mapping once the
ecRad bands are known
- Parameterize cloud separation scale via radiation_driver
namelist options "cloud_separation_scale_[toa|surface|power]"
- radiation_driver:do_correct_unphysical_inputs namelist option
does not simply warn about unphysical inputs (e.g. negative gas
concentrations) but fixes them
- Replaced LwDiffusivity by 2.0 in
radiation_two_stream:calc_frac_scattered_diffuse_sw, which is
more consistent with the Zdunkowski scheme, but has a very small
effect
version 1.1.8 (17 January 2019)
- easy_netcdf.F90 allows for reading and writing slices of larger
arrays and writing HDF5 files, overcoming the maximum array size
limitation of classic NetCDF files
- cloud%inv_inhom_effective_size allows different effective sizes
for cloud inhomogeneities and cloud boundaries in SPARTACUS,
important for realistic behaviour when cloud fraction is near one,
and can be specified directly in the NetCDF input file
- The namelist variable "do_ignore_inhom_effective_size" in
"driver_config" means that "inv_inhom_effective_size" will be
ignored if it is present in the file, reverting to the old
behaviour
- Alternative input variables "inv_cloud_effective_separation" and
"inv_inhom_effective_separation" allow cloud structure for
SPARTACUS to be specified in a way less dependent on cloud
fraction
- If "inv_cloud_effective_separation" provided but not
"inv_inhom_effective_separation" then the effective size of
inhomogeneities is computed as that for the clouds themselves
multiplied by the "cloud_inhom_separation_factor" namelist
variable from "driver_config" (or 1 if not provided).
- Check physical bounds of inputs to radiation interface
- [aerosol|ice|liq]_optics_override_file_name now read from namelist
- radiation_homogeneous_[sl]w.F90 now stores spectral flux
profiles, if required
version 1.1.7 (8 January 2019)
- Added "Cloudless" solvers in shortwave and longwave
- Writing radiative_properties*.nc files now thread-safe
- Fixed segmentation fault in solver_tripleclouds_sw when
do_save_spectral_flux .and. .not. do_sw_direct
- Initialize shortwave properties in radiation_ifs_rrtm in case
sun is below horizon, needed for some compiler options
- Modified test/ifs/ecrad_meridian.nc to allow sun to go below
horizon, rather than including the online correction for Earth
curvature.
- Modified driver/ecrad_driver_read_input.F90 so that if sw_albedo
and lw_emissivity override namelist parameters are provided, they
don't also need to be provided in the input files
version 1.1.6 (17 December 2018)
- Generalized "alpha" overlap matrix calculation to allow for
possibility that the two cloudy regions in the Tripleclouds
assumption are not of equal size
- Introduced radiation_regions.F90 to compute region fractions and
optical depth scalings at the same time
- New gamma distribution behaviour in Tripleclouds and SPARTACUS:
if fractional standard deviation FSD > 1.5 then use non-equal
fractions for the two cloudy regions, which better predicts
fluxes. Also set a minimum optical depth scaling of 1/40, which
means that Tripleclouds and SPARTACUS will give slightly different
fluxes from before (< 0.1 W m-2) even for FSD < 1.5
- SPARTACUS shortwave encroachment uses new fast_expm_exchange
routine given that matrix to be exponentiated has a regular structure
- Execution halts if gases not provided with 0 (well-mixed) or 2
dimensions; before execution silently continued with these gases
not present
version 1.1.5 (15 September 2018)
- Added "Zero" option for sw_encroachment_name, which turns off
not only encroachment due to horizontal transport within regions,
but also encroachment due to horizontal transport between regions
version 1.1.4 (13 September 2018)
- Added "Fractal" option for sw_encroachment_name, which makes a
better assumption about the cloud size distribution than
"Computed" in the part that uses the horizontal radiation
migration distance to work out how much exchange has occurred
under regions
version 1.1.3 (4 September 2018)
- Added (shortwave) encroachment_scaling to namelist, configuring
how one assumes cloud boundaries line up in adjacent layers: 0.0
(the boundaries line up to the greatest extent possible given the
overlap parameter) and 1.0 (the boundaries line up to the minimum
extent possible, which was the old behaviour)
- Fixed related minor bug where encroachment transfer rate was
computed from the edge lengths in the wrong layer
version 1.1.2 (3 September 2018)
- Added Python script test/ifs/plot_ifs.py (thanks to Alessio
Bozzo)
- Bug fix in calculation of direct horizontal migration distance
in radiation_spartacus_sw.F90
- Added namelist parameter min_cloud_effective_size to help with
stability of SPARTACUS
version 1.1.1 (29 August 2018)
- Complete reformulation of the calculation of horizontal
migration distances in radiation_spartacus_sw.F90
- Option to set particulate single-scattering albedo and asymmetry
factor via namelist in LW and SW monochromatic case
version 1.1.0 (21 August 2018)
- Clean-up for release
- Updated test/i3rc/duplicate_profiles.sh to work with latest nco
tools
version 1.0.16 (7 May 2018)
- "make PRINT_ENCROACHMENT_DATA=1" prints encroachment data from
SPARTACUS shortwave solver to units 101 and 102, which can be
tested with test/i3rc/plot_encroachment.m
- Enabled radsurf canopies to include longwave gas
absorption/emission at full spectral resolution
- Monochromatic shortwave properties now more consistent with 0.55
micron wavelength (g=0.86, ssa=0.999999, delta-Eddington applied)
- Now pass in KLEV rather than a structure to ifsrrtm routines
version 1.0.15 (18 April 2018)
- Added capability to provide aerosol optical properties rather
than mixing ratios, implemented via the add_aerosol_optics_direct
routine
- Removed dummy "method" argument to calc_two_stream_gammas_?w
- Removed a large number of unused dummy arguments
- Updated README and test/ifs/ecrad_meridian_default_out_REFERENCE.nc
version 1.0.14 (23 March 2018)
- Large number of improvements and fixes to the treatment of urban
areas
version 1.0.13 (14 March 2018)
- Extra securities on transmittance, reflectance etc. in shortwave
SPARTACUS solver
- Reduced default max_cloud_od for SPARTACUS solver to 18 for
stability
- Finally fixed permute option when writing 3D array using
easy_netcdf.F90
version 1.0.12 (22 February 2018)
- Optimized radiation_ifs_rrtm.F90 and radiation_cloud_generator.F90
version 1.0.11 (20 February 2018)
- Corrected "computed encroachment" in SPARTACUS shortwave solver
to propagate migration distances according to overlap rules
- Default configuration file in test/ifs directory is for Cycle
46R1 of IFS, which includes longwave scattering, fixes LW ice
optics bug and computes shortwave delta-Eddington scaling for
particulates only
version 1.0.10 (23 October 2017)
- Added single precision option: compile with "make
SINGLE_PRECISION=1"
- easy_netcdf can read 4D arrays (thanks to Alessio Bozzo)
- Renamed single-character variables
- New data/yi_ice_scattering_rrtm.nc with longwave extinction
rather than absorption coefficient (thanks to Mark Fielding)
- Added security on n_scat_diffuse
version 1.0.9 (26 July 2017)
- Refined shortwave SPARTACUS such that computed encroachment
estimates the number of diffuse scattering events and reduces the
migration distance accordingly
- Optimized calculation of longwave reflection/transmission coeffs
version 1.0.8 (22 July 2017)
- Added lognormal/gamma cloud PDF options that affect McICA,
Tripleclouds and SPARTACUS solvers: namelist entry
"cloud_pdf_shape_name" can be "Lognormal" or "Gamma" (default
"Gamma")
- radiation_driver can read "iseed" variable for seeding the McICA
cloud generator
- Added Yi et al. (2013) ice optics model (thanks to Mark
Fielding): namelist entry ice_model_name="Yi"
version 1.0.7 (7 July 2017)
- Bug fix in reformulated SPARTACUS solver
version 1.0.6 (4 July 2017)
- Reformulated shortwave SPARTACUS solver to have the option of
explicitly computing "encroachment" (what Shonk & Hogan called
"anomalous transport") accounting for expected horizontal
migration distance during a reflection event
version 1.0.5 (29 June 2017)
- Added "urban" tile type
version 1.0.4 (24 April 2017)
- Added "flat" and "vegetation" tile types
- Added "make DEBUG=1" option for turning on debug flags
version 1.0.3 (11 April 2017)
- Converted code to use "surface" type for multi-tile surfaces in
future
(version 1.0.2surface - unstable intermediate version)
version 1.0.1 (15 February 2017)
- Fixed Makefile options for PGI Fortran
- Removed erroneous commas from test/i3rc/Makefile
- Renamed variables shadowing intrinsics "scale" and "index"
version 1.0 (13 February 2017)
- Read RADRRTM and RADSRTM from data directory
- Renamed "PROFILE" in test/i3rc/Makefile to avoid clash with use
of the same name in top-level Makefile
version 0.9.48 (13 January 2017)
- test/ifs now includes a test where aerosol is turned off, and a
reference output NetCDF file so that the compilation can be checked
version 0.9.47 (9 January 2017)
- Can specify output precision via "is_double" argument in easy_netcdf
- save_inputs stores iseed in double precision
- test/i3rc contains I3RC test case
- test/ifs contains IFS test case
- Preliminary "Baran-2017" ice optics scheme: a new
parameterization derived from the Baran et al. (2016) ice optical
properties
version 0.9.46 (3 January 2017)
- Added mcica_bidisperse.nc to enable McICA to reproduce the
two-mode PDF used by the Tripleclouds and SPARTACUS schemes
version 0.9.45 (25 November 2016)
- Added OpenIFS license
- Changed build system to use Makefile_include.<prof> files
- Renamed package from "spartacus" to "ecrad"
- Fixed writing of 3D arrays in easy_netcdf to permute
withorder=i_permute_3d(i_permute_3d)
- Offline code can be run on input data written by
radiation_save:save_inputs
- New file socrates_droplet_scattering_rrtm.nc with manually
changed coefficients for shortwave band 11 to prevent singularity
in SSA calculation at re=25.733um. Note that there is still a
singularity at re=1.63um in shortwave optical depth in band 10,
so effective radius should be capped to the range 2-50 microns.
version 0.9.44 (22 October 2016)
- Revised aerosol scattering file aerosol_ifs_rrtm_43R1.nc
- Fixed radiation_cloud_cover: it could access arrays out of
bounds - provided that the memory address was accessible this
would have had no impact since the data were not used
version 0.9.43 (23 September 2016)
- RADRRTM and RADSRTM can now be read from directory in
environment variable "DATA"
- do_fu_lw_ice_optics_bug is now a namelist option
- Added Baran 2016 ice optics option
- Optimized calculation of Planck function
- Better ordered the printing of configuration information
- Added configCY43R3.nam to match expected configuration in ECMWF
IFS cycle 43R3
version 0.9.42 (31 August 2016)
- Optimized radiation_ifs_rrtm.F90 and added
rrtm_gas_optical_depth.F90 to replace rrtm_gasabs1a_140gp.F90
- Optimized calc_two_stream_gammas_sw
- Added Tripleclouds solvers in longwave and shortwave
version 0.9.41 (16 August 2016)
- Added possibility to reproduce IFS bug in longwave ice where
single scattering albedo is one minus what it should be
- Ensure initialization to zero of [od/ssa/g]_[sw/lw]_[liq/ice]
variables in radiation_cloud_optics.F90
- Removed Dr Hook calls for small routines called many times:
everything in radiation_two_stream, plus
radiation_aerosol_optics_data:calc_rh_index, calc_liq_optics_*,
calc_ice_optics_*
version 0.9.40 (14 July 2016)
- Updated files in ifs directory
version 0.9.39 (22 June 2016)
- Renamed cloud_cover_* routines to cum_cloud_cover_* since they
compute the cumulative cloud cover, and added a "cloud_cover"
function that does actually compute the total cloud cover (only)
- Use gamma rather than lognormal distribution for McICA to better
match the current IFS
- radiation_cloud::set_overlap_param now uses the correct layer
separation from temperature and pressure, rather than an
approximate one using a constant atmospheric scale height
- radiation_cloud_generator now correlates cloud inhomogeneities
between non-adjacent layers if the Exp-Exp overlap scheme is used
- radiation_cloud_cover::cum_cloud_cover_exp_exp now checks for
pair_cloud_cover not consistent with the cumulative cloud cover
profile
version 0.9.38 (2 June 2016)
- Added Tegen climatology data file and modified
radiation_aerosol_optics_data to read data files that don't
contain hydrophilic aerosols
- Added Slingo (1989) and Lindner and Li (2000) liquid droplet
optics parameterizations for backwards compatibility with the IFS,
although note that Slingo (1989) has been found to have errors
version 0.9.37 (17 May 2016)
- Added do_3d_lw_multilayer_effects to mirror the same for
shortwave. This controls whether off-diagonal elements are
permitted in the total_albedo matrix - these represent the
probability that downwelling radiaton exiting a region is
reflected up in another region. This may be due to transport
through cloud sides, or due to "anomalous" horizontal transport
where fluxes are homogenized in regions. Unlike in the shortwave,
this option is not forced on if 3D effects are enabled; in fact,
it is probably better to turn it off in both 1D and 3D cases
because this homogenization is not likely to occur to any
significant degree in the longwave.
- Added capability to select single/double precision in
easy_netcdf.F90, and radiative properties are now stored in double
precision.
- Changed verbosity settings of driver: 2 = print *all* setup
info, 3 = also print numbers of current profiles being processed.
- radiation_ifs_rrtm now checks solar zenith angle for positivity
to decide whether to set incident solar radiation to zero
version 0.9.36 (10 May 2016)
- Bug fix in radiation_monochromatic.F90: Planck profile calculation
- Maximum 3D transfer rate is now configurable (max_3d_transfer_rate)
- Inverse effective cloud size can be specified separately for eta
in the bands 0-0.45, 0.45-0.8 and 0.8-1 via high_inv_eff_size,
middle_inv_eff_size, low_inv_eff_size in the radiation_driver
namelist.
- License and copyright now in LICENSE and NOTICE; COPYING has
been removed
- "ifs" directory added illustrating how the radiation scheme is
called from the IFS, including the routines for computing cloud
particle effective radius.
version 0.9.35 (29 April 2016)
- Added Exponential-Exponential overlap capability to match
original IFS Raisanen cloud generator
- Overlap in McICA can be selected with overlap_scheme_name in
namelist = Exp-Exp, Exp-Ran or Max-Ran
- Removed test on od_over_mu0 in
calc_reflectance_transmittance_sw, which speeds up IFS
implementation
- In same routine, increased minimum "k^2" to 1.0e-12_jprb which
removes noise in clear-sky upwelling versus solar zenith angle
version 0.9.34 (20 April 2016)
- Added option to do delta-Eddington scaling after merging with
gases, which seems less "correct", but is how the original IFS
scheme works
- Delta-Eddington now a header file included by several modules
- Clarified that RRTMG license is now BSD 3-clause
version 0.9.33 (March 2016)
- Removed PS-Rad implementation of RRTMG
- Added delta-Eddington scaling of aerosol scattering properties
version 0.9.32 (17 March 2016)
- Slight change to the way that cloud overlap is specified
- Added aerosol optics data files matching IFS cycles
- Default aerosol file is aerosol_ifs_rrtm_42R1.nc
version 0.9.31 (26 January 2016)
- Print out description of aerosol types being used
- Added iverbosesetup in order to specify separately the verbosity
of the setup and normal execution parts
- Removed "is_verbose" from namelist
- Removed "ncol" as an argument from the solvers
- PS-Rad RRTMG option now prefixed by PSRAD in the code and the
directory structure; radiation_ifsrrtm renamed to
radiation_ifs_rrtm
version 0.9.30 (16 January 2016)
- Bug fix: if layer overcast and only 2 regions then 3D
calculations not performed
- Split cloud optics into separate source files
version 0.9.29 (7 January 2016)
- Support for separate direct and diffuse shortwave albedos
- Explicit loop indices in radiation_adding_ica_*w and
radiation_ifsrrtm speeds these routines up somewhat
- Added capability to calculate longwave derivatives for Hogan &
Bozzo (2015) method
- Faster longwave McICA solver if cloud scattering not represented
- Added homogeneous solvers
version 0.9.28 (17 November 2015)
- Added some comments to McICA parts and cleaned up
version 0.9.27 (13 November 2015)
- Capped the transfer rate between regions in 3D SPARTACUS to "10"
per layer, equivalent to an optical depth of 10
- Fixed cloud cover calculation in cloud generator
- Fixed bug in McICA LW where surface Planck function taken from
wrong column
- Optimized SW reflectance transmittance: use simple expression
for optically thin points
version 0.9.26 (6 November 2015)
- Added no-scattering solver for McICA longwave, typically used in
clear skies when aerosol scattering is turned off
version 0.9.25 (4 November 2015)
- Reordered gas and cloud optical properties to have g-point
varying fastest, leading to a significant speed-up
version 0.9.24 (4 November 2015)
- Added possibility for radiation to be transported directly
between regions a and c, via clear_to_thick_fraction
- Added capability for direct beam from overhead sun to pass
through cloud sides, to improve 3D effect for overhead sun
- Read McICA PDF look-up table from mcica_lognormal.nc to
radiation_pdf_sampler.F90
- Verified McICA cloud generator
- Added capability to interpret overlap parameter as Hogan &
Illingworth's "alpha" rather than Shonk et al.'s "beta", made this
the default and verified that McICA and SPARTACUS give the same
total cloud cover.
- Added capability to repeat calculation multiple times for better
profiling
- Gas optics unit scaling now done all at once to avoid bugs
associated with part of mixing_ratio array being in one unit and
another part being in another unit (for the same gas)
- Some optimization of gamma calculations
version 0.9.23 (19 October 2015)
- Thresholds on gas optical depth now performed in
radiation_ifsrrtm.F90 to avoid problems with unphysical ssa after
aerosol optics
version 0.9.22 (13 October 2015)
- Protection for zero Kelvin in monochromatic Planck function
- Check on dimensions read from aerosol optics file
- Better diagnostic of aerosol settings in print_config
- Included longwave internal radiation distribution
parameterization for 3D (config%do_lw_side_emissivity)
- Added requirement for non-zero water content in
radiation_spartacus_?w.F90
version 0.9.21
- Fixed the monochromatic option
version 0.9.20
- Bug fixes in radiation_matrix.F90 and radiation_ifsrrtm.F90
- Better printing of the configuration in radiation_config.F90
version 0.9.19 (not a stable version)
- Moved solar irradiance from config to single_level
version 0.9.18
- Module radiation_io for abort and output units
- Started shortwave McICA implementation
- Better IFS compatibility
- Revised config_type structure
version 0.9.17
- Optical depth thresholds now in the radiation namelist as
max_gas_od_3d and max_cloud_od
- Can process limited number of columns via istartcol and iendcol
in the radiation_driver namelist
- Fixed bug where upwelling longwave surface clear-sky flux was
underestimated if a cloud was present in lowest model level
- Incoming solar flux scaled in radiation_ifsrrtm to match
requested TSI
version 0.9.16
- Rather than turning off 3D radiation if OD in a region is too
high, we cap the OD of the cloud and still do 3D calculations.
Note that to enable 3D effect to be calculated, this is done even
if 3D effects are turned OFF.
version 0.9.15
- Added capability to output fluxes per g-point with
do_save_gpoint_flux
- Check for "ghost" clouds (zero water content, non-zero cloud
fraction)
- 3D radiation only called if optical depth of gas < 8 and total
optical depth of thickest region < 30
version 0.9.14
- Cleaned up the text output via separate "iverbose" config
variables for the driver and the main radiation code
version 0.9.13
- driver/radiation_driver_config.F90 now handles the aspects of
the configuration that are limited to the driver rather than the
radiation code itself
version 0.9.12
- Now use IFS version of RRTM-G gas optics
- g_lw zeroed in radiation_interface
version 0.9.11
- Monochromatic is now a run-time rather than compile-time option
- Option to output spectral fluxes
version 0.9.10
- Added overlap_decorr_length_scaling option for namelists
version 0.9.9
- Added IFS RRTM code in ifsrrtm/
- Added "make resort" in work/ to provide re-sorted g points for
radiation_rrtm.f90
version 0.9.8
- Better compatibility with IFS: added dr_hook, nulout,
nulerr, abor1
- easy_netcdf into utilities library
- Revised the variable name convention in radiation/*.f90 so
that can be converted to IFS coding norms if required
version 0.9.7
- Added Fu (1996) and Fu et al. (1998) ice optics
version 0.9.6
- Implemented aerosols
version 0.9.5
- Implemented ice optics
version 0.9.4
- Combined clear-sky calculations into single spartacus call
- Fixed the optimized matrix operations for shortwave sparsity
version 0.9.3
- Fixed ozone in standard atmosphere profiles
- Fixed bug in Meador-Weaver direct transmittance calculation
version 0.9.2
- First beta release