commit f62a5c86017c9a66700d8bcdc8921d6a12758cd3
parent bdf62c71ef8c05d70df7c27450414e756fe0116f
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Mon, 12 Feb 2018 12:17:48 +0100
Add the kspectrum section
Diffstat:
5 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,3 +1,4 @@
+kspectrum.html
schiff.html
stardis.html
index.html
diff --git a/Makefile b/Makefile
@@ -35,6 +35,7 @@ all: misc solstice schiff star-engine
clean:
@rm -rf \
man \
+ kspectrum.html \
schiff.html \
solstice.html \
solstice-downloads.html \
@@ -55,6 +56,7 @@ publish:
rsync -avz \
index.html \
pgp_signatures.html \
+ kspectrum.html \
schiff.html \
solstice.html \
solstice-downloads.html \
diff --git a/kspectrum.html.in b/kspectrum.html.in
@@ -0,0 +1,76 @@
+<header>
+ <h1>Kspectrum - molecular absorption spectra for arbitrary gas mixtures.</h1>
+</header>
+
+<p>Kspectrum computes the synthetic absorption spectrum for a gas mixture in
+arbitrary thermodynamic conditions (pressure, temperature and molar
+composition) from public spectroscopic databases. The main and only purpose of
+the code is to produce high-resolution absorption spectra for a given set of
+thermodynamic conditions; in particular, kspectrum will <b>NOT</b> perform the
+following tasks:</p>
+
+<ul>
+ <li> compute molecular absorption for any other source than allowed energetic
+ transitions: even if some limited effort has been put into the representation
+ of collision-induced absorption and continua, these sources of opacity will
+ have to be computed separately for each application in a separate step.</li>
+
+ <li> perform radiative transfer computations: one of the main ideas behind
+ kspectrum is that the resulting absorption spectra can be used for a wide
+ variety of applications, possibly in complex 3D scenes (as, for instance, in
+ combustion engines). Dedicated tools will have to be used in order to solve
+ radiative transfer; kspectrum by itself will only be used to produce the
+ input spectral data.</li>
+</ul>
+
+<p>Spectroscopic databases: kspectrum uses the HITRAN spectroscopic database in
+order to retrieve transition parameters (versions 2004, 2008 and 2012).
+Additionally, it can use the HITEMP-2010 and CDSD-4000 databases (respectively
+for water and carbon dioxide) at high-temperature levels. Further development
+would be required for additional databases (HITRAN-2016 ? GEISA ?)</p>
+
+<p>Reference results: the main idea behind kspectrum was initially to develop a
+code that would not need to use numerical simplifications such as a line
+profile truncation (assuming the distant line-wing profile is well known, which
+is obviously not the case). The resulting code was therefore capable of adding
+the contribution of every known transition at every wavenumber, in order to
+produce a value of the absorption coefficient with a known accuracy; also, a
+custom spectral discretisation algorithm was implemented in order to produce a
+non-uniform spectral grid according to a second accuracy criteria. Further
+versions quickly acquired the possibility to perform a line-wings truncation
+and use a specified constant spectral step, but the original algorithms that
+give the possibility to compute reference results (in the sense that a
+numerical accuracy is provided over resulting spectra) are still available.</p>
+
+<p>Physical models: this code can take into account the Lorentz and the Voigt line
+profiles, as well as common sub-lorentzian corrective profiles. The isotopic
+composition can be specified, making this code suitable for non-terrestrial
+applications. The code was mainly thought for thermal infrared applications,
+but absorption spectra can be produced for any spectral range as long as
+transition parameters are available. As a general rule, kspectrum was designed
+to remain as polyvalent as possible; one immediate disadvantage is that special
+sources of opacity, such as collision-induced absorption or continua, should be
+computed separately for any given application. Also, line-mixing processes have
+not yet been taken into consideration, and require further developments.</p>
+
+<p>Some neat features: every time-consuming step of the computation has been
+parallelised, even though the parallel architecture is far from optimal and
+should require a major revision: the computation time does not scale very well
+with the number of processes because of inter-processes communication, and also
+it was not thought for multi-node clusters. But at least kspectrum will run
+faster on a reasonably good single node (approx. 20 cores). Also, the code has
+been implemented with the obsessions of:</p>
+
+<ul>
+ <li>working with arbitrary large numbers of transitions. For instance, the
+ CDSD-4000 database holds the parameters for more than 6 hundred millions of
+ transitions for carbon dioxide; kspectrum will, in time, eventually compute
+ the contribution of every transition at every wavenumber of the spectrum.</li>
+
+ <li>being able to resume interrupted runs: whether your PC crashes or kspectrum
+ reaches the maximum computation time allowed by the cluster's queue, it will
+ be possible to resume a interrupted computation instead of starting over from
+ scratch: as in a video game, kspectrum performs frequent backups of the
+ current run.</li>
+</ul>
+
diff --git a/meso-menu.sh b/meso-menu.sh
@@ -165,6 +165,11 @@ print_header() {
else
echo " <h2><a href=${root}index.html>About</a></h2>"
fi
+ if [ "$section" == "Kspectrum" ]; then
+ echo ' <h2>Kspectrum</h2>'
+ else
+ echo " <h2><a href=${root}kspectrum.html>Kspectrum</a></h2>"
+ fi
if [ "$section" == "Schiff" ]; then
echo ' <h2>Schiff</h2>'
print_schiff_sub_menu "$root" "$name"
diff --git a/misc.sh b/misc.sh
@@ -27,6 +27,13 @@ echo "Write index.html"
print_footer
} > index.html
+echo "Write kspectrum.html"
+{
+ print_header Kspectrum dummy
+ cat kspectrum.html.in
+ print_footer
+} > kspectrum.html
+
echo "Write stardis.html"
{
print_header Stardis dummy