Comparing 1D solvers in the TenStream lib vs the new DISORT implementation

Wed 10 April 2019

Experiment setup:

We run a small simulations for the solar and thermal spectral range and compare the results to various 1D solvers in the TenStream lib. There is a cloud with LWC=\(0.01\ [g / kg]\) between 800 and 700 hPa. The dynamics grid extends up to 250 hPa and has a temperature gradient of 60K. Above that we use the US standard atmosphere file up to a height of 20km.

The 1D solvers which are used are:

  • DISORT — using 32 streams for benchmark computations
  • DISORT6 — with 6 streams
  • RRTMG\(\delta\)-four-stream
  • TwoStream — \(\delta\)-Eddington
  • Schwarzschild — only in the thermal spectral range, the number tells the number of sampling points for polar angles \(\mu\)



The following plot depicts the differences between the various solver routines and uses the DISORT with 32 streams as benchmark results.



Appendix: Scripts to reproduce the plot

The following computations have been done

with Tenstream @ Rev 4fabaa24031ef8602e2a3d8f67f1860ee409ddb2

and the following … script:

make ex_pprts_rrtm_iterations -j || exit
bin/ex_pprts_rrtm_iterations -atm_filename afglus.dat -Nz 60 -thermal no -theta0 40 -twostr_only                        |& tee log.solar.twostr
bin/ex_pprts_rrtm_iterations -atm_filename afglus.dat -Nz 60 -thermal no -theta0 40 -rrtmg_only                         |& tee log.solar.rrtmg
bin/ex_pprts_rrtm_iterations -atm_filename afglus.dat -Nz 60 -thermal no -theta0 40 -disort_only                        |& tee log.solar.disort

bin/ex_pprts_rrtm_iterations -atm_filename afglus.dat -Nz 60 -solar no -twostr_only                                     |& tee log.thermal.twostr
bin/ex_pprts_rrtm_iterations -atm_filename afglus.dat -Nz 60 -solar no -twostr_only -schwarzschild -schwarzschild_Nmu 5 |& tee log.thermal.schwarz
bin/ex_pprts_rrtm_iterations -atm_filename afglus.dat -Nz 60 -solar no -rrtmg_only                                      |& tee log.thermal.rrtmg
bin/ex_pprts_rrtm_iterations -atm_filename afglus.dat -Nz 60 -solar no -disort_only -disort_streams 32                  |& tee log.thermal.disort

Then remove any debug output from the logs

rm log.*.clean
for f in log.*.*
do
  grep 'edn' $f > ${f}.clean
done

Python Plot Script … here