meso-web

Sources of the |Méso|Star> website
git clone git://git.meso-star.fr/meso-web.git
Log | Files | Refs | README | LICENSE

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:
M.gitignore | 1+
MMakefile | 2++
Akspectrum.html.in | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mmeso-menu.sh | 5+++++
Mmisc.sh | 7+++++++
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