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 1b1e6a2474c2f5b469d98346275da8e91e8d19c9
parent e6cd634631641c21c7d71bfaf0bcd356747657d0
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Thu, 28 Aug 2025 18:29:31 +0200

Merge branch 'feature_kiss_edit'

Diffstat:
M.gitignore | 5+++++
MMakefile | 125+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Mart/.gitignore | 3+++
Dart/Makefile | 124-------------------------------------------------------------------------------
Dart/art.html.in | 68--------------------------------------------------------------------
Aart/art.md | 64++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dart/art_build.sh | 84-------------------------------------------------------------------------------
Aart/hooks/00-sign-archives.sh | 35+++++++++++++++++++++++++++++++++++
Dart/hr_ppart.html.in | 135-------------------------------------------------------------------------------
Aart/hr_ppart.md | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rart/Tb.svg -> art/images/Tb.svg | 0
Rart/Te_signal_500-505.svg -> art/images/Te_signal_500-505.svg | 0
Rart/emission_altitude_500-505.svg -> art/images/emission_altitude_500-505.svg | 0
Rart/k001.svg -> art/images/k001.svg | 0
Rart/pne_mls_ac.svg -> art/images/pne_mls_ac.svg | 0
Rart/pne_mls_cs.svg -> art/images/pne_mls_cs.svg | 0
Rart/si_flux.svg -> art/images/si_flux.svg | 0
Rart/tau_cumulated_1180-1200.svg -> art/images/tau_cumulated_1180-1200.svg | 0
Rart/venus_ner.svg -> art/images/venus_ner.svg | 0
Aart/index.tsv | 7+++++++
Dart/karine.html.in | 129-------------------------------------------------------------------------------
Aart/karine.md.in | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aart/karine.sh | 4++++
Dart/kdistribution.html.in | 85-------------------------------------------------------------------------------
Aart/kdistribution.md.in | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aart/kdistribution.sh | 4++++
Dart/kspectrum.html.in | 176-------------------------------------------------------------------------------
Aart/kspectrum.md.in | 171+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aart/kspectrum.sh | 4++++
Dart/ppart_lw.html.in | 134-------------------------------------------------------------------------------
Aart/ppart_lw.md | 111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dart/ppart_sw.html.in | 130-------------------------------------------------------------------------------
Aart/ppart_sw.md | 122+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dbuild_htaccess.sh | 66------------------------------------------------------------------
Dconfig.mk | 17-----------------
Dconfigure.sh | 48------------------------------------------------
Dconfigure_targets.sh | 84-------------------------------------------------------------------------------
Dconvert_man.sh | 83-------------------------------------------------------------------------------
Dconvert_mdoc.sh | 58----------------------------------------------------------
Afonts/courier-prime/Courier Prime Bold Italic.ttf | 2++
Afonts/courier-prime/Courier Prime Bold.ttf | 2++
Afonts/courier-prime/Courier Prime Italic.ttf | 2++
Rfonts/Courier Prime.ttf -> fonts/courier-prime/Courier Prime.ttf | 0
Afonts/courier-prime/OFL.txt | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mhtrdr/.gitignore | 4++++
Dhtrdr/CLEMENT.jpg | 2--
Dhtrdr/DZVAR_ortho.jpg | 2--
Dhtrdr/Makefile | 267-------------------------------------------------------------------------------
Dhtrdr/city.jpg | 2--
Ahtrdr/config.sh.in | 45+++++++++++++++++++++++++++++++++++++++++++++
Dhtrdr/downloads/High-Tune-0.0.0-r3-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.0.0-r3-Sources.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.0.3-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.0.3-Sources.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.0.4-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.0.4-Sources.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.1.0-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.1.0-Sources.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.1.0-r1-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.1.0-r1-Sources.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.2.0-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.2.0-Sources.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.3.0-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.3.0-Sources.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.5.0-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.5.1-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.6.0-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.6.0-Sources.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.6.1-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/High-Tune-0.6.1-Sources.tar.gz | 2--
Dhtrdr/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz | 2--
Dhtrdr/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz | 2--
Dhtrdr/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz | 2--
Dhtrdr/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz | 2--
Dhtrdr/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz | 2--
Dhtrdr/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.10-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.7.0-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.7.0-Sources.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.8.0-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.8.0-Sources.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.8.1-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.8.1-Sources.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.9.0-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.9.0-Sources.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.9.1-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.9.1-Sources.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.9.2-GNU-Linux64.tar.gz | 2--
Dhtrdr/downloads/htrdr-0.9.2-Sources.tar.gz | 2--
Dhtrdr/downloads/htrdr-Atmosphere-Starter-Pack-0.6.1.tar.gz | 2--
Dhtrdr/downloads/htrdr-Atmosphere-Starter-Pack-0.7.0.tar.gz | 2--
Dhtrdr/downloads/htrdr-Combustion-Starter-Pack-0.0.0.tar.gz | 2--
Dhtrdr/downloads/htrdr-Planeto-Starter-Pack-0.0.0.tar.gz | 2--
Dhtrdr/downloads/htrdr-Planeto-Starter-Pack-0.0.1.tar.gz | 2--
Dhtrdr/dummy_medium_clip.png | 2--
Dhtrdr/gulder_sideview.jpg | 2--
Ahtrdr/hooks/00-extract-archive.sh | 38++++++++++++++++++++++++++++++++++++++
Ahtrdr/hooks/00-sign-archives.sh | 35+++++++++++++++++++++++++++++++++++
Ahtrdr/hooks/01-generate-man.sh | 79+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ahtrdr/hooks/01-setup-redirections.sh | 82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ahtrdr/htrdr-atmosphere-spk.sh | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
Ahtrdr/htrdr-combustion-spk.sh | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dhtrdr/htrdr-docs.html.in | 63---------------------------------------------------------------
Ahtrdr/htrdr-docs.md | 43+++++++++++++++++++++++++++++++++++++++++++
Ahtrdr/htrdr-planets-spk.sh | 48++++++++++++++++++++++++++++++++++++++++++++++++
Dhtrdr/htrdr.html.in | 439-------------------------------------------------------------------------------
Ahtrdr/htrdr.md.in | 358+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ahtrdr/htrdr.sh | 31+++++++++++++++++++++++++++++++
Dhtrdr/htrdr_build.sh | 388-------------------------------------------------------------------------------
Ahtrdr/images/CLEMENT.jpg | 2++
Rhtrdr/CLEMENT_lw_9000_10000.jpg -> htrdr/images/CLEMENT_lw_9000_10000.jpg | 0
Rhtrdr/DZVAR.jpg -> htrdr/images/DZVAR.jpg | 0
Rhtrdr/DZVAR2.jpg -> htrdr/images/DZVAR2.jpg | 0
Rhtrdr/L12km_BOMEX.jpg -> htrdr/images/L12km_BOMEX.jpg | 0
Rhtrdr/L25_Fire.jpg -> htrdr/images/L25_Fire.jpg | 0
Rhtrdr/R8tr3.1.ARMCu.OUT.218.jpg -> htrdr/images/R8tr3.1.ARMCu.OUT.218.jpg | 0
Rhtrdr/city_thin_lens.jpg -> htrdr/images/city_thin_lens.jpg | 0
Rhtrdr/downward_flux_500x500x2048_lw_4000_100000_425.156.jpg -> htrdr/images/downward_flux_500x500x2048_lw_4000_100000_425.156.jpg | 0
Rhtrdr/downward_flux_500x500x2048_sw_380_4000_879.349.jpg -> htrdr/images/downward_flux_500x500x2048_sw_380_4000_879.349.jpg | 0
Rhtrdr/dummy_medium.jpg -> htrdr/images/dummy_medium.jpg | 0
Rhtrdr/dummy_medium_clipped.jpg -> htrdr/images/dummy_medium_clipped.jpg | 0
Rhtrdr/gulder_horizontal_slides.jpg -> htrdr/images/gulder_horizontal_slides.jpg | 0
Rhtrdr/gulder_lateral.jpg -> htrdr/images/gulder_lateral.jpg | 0
Rhtrdr/random01_LW_10-12um.jpg -> htrdr/images/random01_LW_10-12um.jpg | 0
Rhtrdr/random01_visible.jpg -> htrdr/images/random01_visible.jpg | 0
Rhtrdr/titan_1280x960x4096.jpg -> htrdr/images/titan_1280x960x4096.jpg | 0
Rhtrdr/titan_transit.jpg -> htrdr/images/titan_transit.jpg | 0
Ahtrdr/index.tsv | 6++++++
Dhtrdr/mods/Ebudget_Streetcanyon_Broadband.svg | 2--
Dhtrdr/mods/MRT_map_icif_district_day.svg | 2--
Dhtrdr/mods/Rendering_icif_district_spp200.jpg | 2--
Dhtrdr/mods/htrdr-urban.html.in | 68--------------------------------------------------------------------
Ahtrdr/thumbs/CLEMENT.jpg | 2++
Ahtrdr/thumbs/CLEMENT_lw_9000_10000.jpg | 2++
Ahtrdr/thumbs/DZVAR.jpg | 2++
Ahtrdr/thumbs/DZVAR2.jpg | 2++
Ahtrdr/thumbs/L12km_BOMEX.jpg | 2++
Ahtrdr/thumbs/L25_Fire.jpg | 2++
Ahtrdr/thumbs/city_thin_lens.jpg | 2++
Ahtrdr/thumbs/downward_flux_500x500x2048_lw_4000_100000_425.156.jpg | 2++
Ahtrdr/thumbs/downward_flux_500x500x2048_sw_380_4000_879.349.jpg | 2++
Ahtrdr/thumbs/dummy_medium.jpg | 2++
Ahtrdr/thumbs/dummy_medium_clipped.jpg | 2++
Ahtrdr/thumbs/gulder_horizontal_slides.jpg | 2++
Ahtrdr/thumbs/gulder_lateral.jpg | 2++
Ahtrdr/thumbs/random01_LW_10-12um.jpg | 2++
Ahtrdr/thumbs/random01_visible.jpg | 2++
Ahtrdr/thumbs/titan_1280x960x4096.jpg | 2++
Ahtrdr/thumbs/titan_transit.jpg | 2++
Dlint_html.sh | 27---------------------------
Amenu.tsv | 6++++++
Dmeso-menu.sh | 542-------------------------------------------------------------------------------
Mmeso.css | 359++++++++++++++++---------------------------------------------------------------
Dmisc/Makefile | 82-------------------------------------------------------------------------------
Dmisc/about-en.html.in | 41-----------------------------------------
Amisc/about-en.md | 44++++++++++++++++++++++++++++++++++++++++++++
Dmisc/about-fr.html.in | 44--------------------------------------------
Amisc/about-fr.md | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Dmisc/about.html | 17-----------------
Amisc/index.tsv | 2++
Dmisc/legal-en.html.in | 22----------------------
Amisc/legal-en.md | 17+++++++++++++++++
Dmisc/legal-fr.html.in | 22----------------------
Amisc/legal-fr.md | 17+++++++++++++++++
Dmisc/misc_build.sh | 51---------------------------------------------------
Dmisc/pgp_signatures.html.in | 72------------------------------------------------------------------------
Mschiff/.gitignore | 6++++--
Dschiff/Makefile | 118-------------------------------------------------------------------------------
Aschiff/config.sh.in | 6++++++
Dschiff/downloads/Schiff-0.3.1-GNU-Linux64.tar.gz | 2--
Dschiff/downloads/Schiff-0.3.1-Sources.tar.gz | 2--
Dschiff/downloads/Schiff-0.4.0-GNU-Linux64.tar.gz | 2--
Dschiff/downloads/Schiff-0.4.0-Source.tar.gz | 2--
Dschiff/downloads/Schiff-0.4.1-GNU-Linux64.tar.gz | 2--
Dschiff/downloads/Schiff-0.4.1-Source.tar.gz | 2--
Aschiff/hooks/00-extract-archive.sh | 23+++++++++++++++++++++++
Aschiff/hooks/00-sign-archives.sh | 36++++++++++++++++++++++++++++++++++++
Aschiff/hooks/01-generate-man.sh | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rschiff/particles.png -> schiff/images/particles.png | 0
Aschiff/index.tsv | 4++++
Dschiff/schiff-docs.html.in | 13-------------
Aschiff/schiff-docs.md | 5+++++
Aschiff/schiff-downloads.sh | 30++++++++++++++++++++++++++++++
Dschiff/schiff.html.in | 202-------------------------------------------------------------------------------
Aschiff/schiff.md.in | 177+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aschiff/schiff.sh | 20++++++++++++++++++++
Dschiff/schiff_build.sh | 57---------------------------------------------------------
Aschiff/thumbs/particles.jpg | 2++
Ascripts/convert_man.sh | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
Ascripts/generate_header.sh | 243+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ascripts/hooks.sh | 131+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ascripts/index.sh | 33+++++++++++++++++++++++++++++++++
Ascripts/list.sh | 114+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ascripts/meso-web.sh | 186+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dsolstice.html | 17-----------------
Msolstice/.gitignore | 9+++------
Dsolstice/Makefile | 175-------------------------------------------------------------------------------
Asolstice/config.sh.in | 5+++++
Dsolstice/downloads/Solstice-0.4.0-GNU-Linux64.tar.gz | 2--
Dsolstice/downloads/Solstice-0.4.0-Sources.zip | 2--
Dsolstice/downloads/Solstice-0.4.0-Win64.zip | 2--
Dsolstice/downloads/Solstice-0.4.1-GNU-Linux64.tar.gz | 2--
Dsolstice/downloads/Solstice-0.4.1-Sources.zip | 2--
Dsolstice/downloads/Solstice-0.4.1-Win64.zip | 2--
Dsolstice/downloads/Solstice-0.5.0-GNU-Linux64.tar.gz | 2--
Dsolstice/downloads/Solstice-0.5.0-Sources.zip | 2--
Dsolstice/downloads/Solstice-0.6.1-GNU-Linux64.tar.gz | 2--
Dsolstice/downloads/Solstice-0.6.1-Sources.zip | 2--
Dsolstice/downloads/Solstice-0.6.1-Win64.zip | 2--
Dsolstice/downloads/Solstice-0.7.1-GNU-Linux64.tar.gz | 2--
Dsolstice/downloads/Solstice-0.7.1-Sources.zip | 2--
Dsolstice/downloads/Solstice-0.7.1-Win64.zip | 2--
Dsolstice/downloads/Solstice-0.8.1-GNU-Linux64.tar.gz | 2--
Dsolstice/downloads/Solstice-0.8.1-Sources.zip | 2--
Dsolstice/downloads/Solstice-0.8.1-Win64.zip | 2--
Dsolstice/downloads/Solstice-0.9.0-GNU-Linux64.tar.gz | 2--
Dsolstice/downloads/Solstice-0.9.0-Sources.zip | 2--
Dsolstice/downloads/Solstice-0.9.0-Win64.zip | 2--
Dsolstice/downloads/Solstice-PP-Sources-0.1.0.tar.gz | 2--
Dsolstice/downloads/Solstice-PP-Sources-0.2.0.tar.gz | 2--
Dsolstice/downloads/Solstice-PP-Sources-0.3.0.tar.gz | 2--
Dsolstice/downloads/Solstice-PP-Sources-0.3.1.tar.gz | 2--
Dsolstice/downloads/Solstice-PP-Sources.tar.gz | 2--
Asolstice/hooks/00-extract-archive.sh | 23+++++++++++++++++++++++
Asolstice/hooks/00-setup-redirections.sh | 24++++++++++++++++++++++++
Asolstice/hooks/00-sign-archives.sh | 36++++++++++++++++++++++++++++++++++++
Asolstice/hooks/01-generate-man.sh | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsolstice/solaris.jpg -> solstice/images/solaris.jpg | 0
Rsolstice/themis.png -> solstice/images/themis.png | 0
Asolstice/index.tsv | 5+++++
Dsolstice/solstice-abg.html.in | 21---------------------
Dsolstice/solstice-docs.html.in | 14--------------
Asolstice/solstice-docs.md | 6++++++
Asolstice/solstice-downloads.sh | 30++++++++++++++++++++++++++++++
Dsolstice/solstice-pp.html.in | 153-------------------------------------------------------------------------------
Asolstice/solstice-resources.md | 132+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dsolstice/solstice.html.in | 168-------------------------------------------------------------------------------
Asolstice/solstice.md.in | 191+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asolstice/solstice.sh | 5+++++
Dsolstice/solstice_build.sh | 106-------------------------------------------------------------------------------
Asolstice/thumbs/solaris.jpg | 2++
Asolstice/thumbs/themis.jpg | 2++
Mstardis/.gitignore | 15++++++++++-----
Dstardis/Makefile | 240-------------------------------------------------------------------------------
Astardis/config.sh.in | 33+++++++++++++++++++++++++++++++++
Dstardis/consortium-en.html.in | 97-------------------------------------------------------------------------------
Astardis/consortium-en.md | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dstardis/consortium-fr.html.in | 96-------------------------------------------------------------------------------
Astardis/consortium-fr.md | 96+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dstardis/downloads/Stardis-0.11.0-r1-GNU-Linux64.tar.gz | 2--
Dstardis/downloads/Stardis-0.11.0-r1-Sources.tar.gz | 2--
Dstardis/downloads/Stardis-0.12.3-GNU-Linux64.tar.gz | 2--
Dstardis/downloads/Stardis-0.12.3-Sources.tar.gz | 2--
Dstardis/downloads/Stardis-0.13.1-GNU-Linux64.tar.gz | 2--
Dstardis/downloads/Stardis-0.13.1-Sources.tar.gz | 2--
Dstardis/downloads/Stardis-0.14.0-GNU-Linux64.tar.gz | 2--
Dstardis/downloads/Stardis-0.14.0-Sources.tar.gz | 2--
Dstardis/downloads/Stardis-0.15.2-GNU-Linux64.tar.gz | 2--
Dstardis/downloads/Stardis-0.16-GNU-Linux64.tar.gz | 2--
Dstardis/downloads/Stardis-Starter-Pack-0.0.0.tar.gz | 2--
Dstardis/downloads/Stardis-Starter-Pack-0.1.0.tar.gz | 2--
Astardis/hooks/00-extract-archive.sh | 30++++++++++++++++++++++++++++++
Astardis/hooks/00-sign-archives.sh | 35+++++++++++++++++++++++++++++++++++
Astardis/hooks/01-generate-man.sh | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astardis/index.tsv | 6++++++
Dstardis/release-notes.html.in | 13-------------
Astardis/release-notes.md | 5+++++
Astardis/sgreen-release-notes.sh | 22++++++++++++++++++++++
Dstardis/stardis-docs.html.in | 21---------------------
Astardis/stardis-docs.md | 13+++++++++++++
Astardis/stardis-release-notes.sh | 22++++++++++++++++++++++
Astardis/stardis-solver-release-notes.sh | 22++++++++++++++++++++++
Dstardis/stardis.html.in | 479-------------------------------------------------------------------------------
Astardis/stardis.md.in | 384+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astardis/stardis.sh | 23+++++++++++++++++++++++
Dstardis/stardis_build.sh | 210-------------------------------------------------------------------------------
Astardis/starter-pack.sh | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astardis/thumbs/IR_city_640x480x1024_273-275.jpg | 2++
Dstardis/thumbs/ramier_island.jpg | 2--
Mstardis/thumbs/ramier_island_sun.jpg | 4++--
Dstardis/validation.html.in | 157-------------------------------------------------------------------------------
Astardis/validation.md | 151++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atemplates/footer.html | 26++++++++++++++++++++++++++
Atemplates/redirect.html | 15+++++++++++++++
284 files changed, 4974 insertions(+), 6467 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -10,3 +10,8 @@ .lint tags man +*.hook +.hooks +.index +solstice.html +high-tune diff --git a/Makefile b/Makefile @@ -12,56 +12,81 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. + .POSIX: +.SUFFIXES: .md .html .sh .lint .shlint + +# Destination where to synchronise data +PREFIX=OVH:www/projects + +# Tool used to convert Markdown to HTML +MD2HTML=md2html + +# Additional resources to install +RESOURCES=fonts + +LINT=$(HTML:.html=.lint) $(SH:.sh=.shlint) templates/redirect.lint + +default: build + +build clean distclean lint install: hooks index + @$(MAKE) -f.hooks -f.index -fMakefile $@__ \ + HTML=" $$($(SHELL) ./scripts/list.sh html | tr '\n' ' ')" \ + SHTML="$$($(SHELL) ./scripts/list.sh shtml | tr '\n' ' ')" \ + HOOK=" $$($(SHELL) ./scripts/list.sh hook | tr '\n' ' ')" \ + SH=" $$($(SHELL) ./scripts/list.sh shell | tr '\n' ' ')" + +hooks index: + $(SHELL) scripts/$@.sh > .$@ + +build__: $(HTML) $(HOOK:.sh=.hook) -include config.mk - -SUBDIRS=art htrdr misc schiff solstice stardis - -SCRIPTS=\ - build_htaccess.sh\ - lint_html.sh\ - configure.sh\ - configure_targets.sh\ - convert_man.sh\ - convert_mdoc.sh\ - meso-menu.sh - -build: - @for subdir in $(SUBDIRS); do \ - printf "\e[1m>>> %s\e[0m\n" $$subdir; \ - $(MAKE) -C $${subdir}; echo ""; done - -distclean: - @echo "Removing .htaccess" - @rm -f .htaccess && echo "" - @for subdir in $(SUBDIRS); do \ - printf "\e[1m>>> %s\e[0m\n" $$subdir; \ - $(MAKE) -C $${subdir} $@; echo ""; done - -clean: - @echo "Removing .htaccess" - @rm -f .htaccess && echo "" - @for subdir in $(SUBDIRS); do \ - printf "\e[1m>>> %s\e[0m\n" $$subdir; \ - $(MAKE) -C $${subdir} $@; echo ""; done - -lint: - @for i in $(SCRIPTS); do \ - printf "Linting %s\n" "$${i}"; \ - shellcheck -o all -x "$${i}"; done - @echo "" - @for subdir in $(SUBDIRS); do \ - printf "\e[1m>>> %s\e[0m\n" $$subdir; \ - $(MAKE) -C $${subdir} $@; echo ""; done - -install: htaccess - @for subdir in $(SUBDIRS); do \ - printf "\e[1m>>> %s\e[0m\n" $$subdir; \ - $(MAKE) -C $$subdir $@; echo ""; done - @rsync -avzrR --delete-after --progress\ - solstice.html .htaccess fonts meso.css ${PREFIX} - -htaccess: +clean__: + rm -f .hooks + rm -f $(HTML) + rm -f $(SHTML:.sh=.md) + +distclean__: clean__ + +install__: $(HTML) $(SIG) + @rsync --mkpath -avzrR --delete-after --progress \ + meso.css $(HTML) $$($(SHELL) ./scripts/list.sh subdir) $(RESOURCES) \ + $(PREFIX) + +################################################################################ +# Generate content +################################################################################ +$(HTML): scripts/generate_header.sh menu.tsv templates/footer.html + +.sh.md: + @cd -- "$$(dirname "$<")"; \ + $(SHELL) ./"$$(basename "$<")" > "$$(basename "$@")" + +.md.html: @echo "Building $@" - @$(SHELL) build_htaccess.sh /$$(basename "$(PREFIX)") > .htaccess + @{ \ + $(SHELL) scripts/generate_header.sh $${PWD}/$@; \ + $(MD2HTML) $<; \ + cat templates/footer.html; \ + } > $@ + +################################################################################ +# Check files +################################################################################ +.html.lint: + @echo "Linting $<" + @tidy --show-info no -qe $< + +.sh.shlint: + @echo "Linting $<" + @# Scripts are executed relative to their section directory. + @# Scripts belonging to the compilation system are executed + @# relative to the working directory. + @i="$<"; \ + if [ "$${i%%/*}" != "scripts" ]; then \ + cd -- "$${i%%/*}"; \ + i="$${i#*/}"; \ + fi; \ + shellcheck -o all -x "$${i}" + +lint__: $(LINT) diff --git a/art/.gitignore b/art/.gitignore @@ -1,7 +1,10 @@ art.html hr_ppart.html karine.html +karine.md kdistribution.html +kdistribution.md ppart_lw.html ppart_sw.html kspectrum.html +kspectrum.md diff --git a/art/Makefile b/art/Makefile @@ -1,124 +0,0 @@ -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -.POSIX: - -include ../config.mk - -KSPECTRUM_VERSION=1.3 -KDISTRIBUTION_VERSION=1.1.1 -KARINE_VERSION=3.5 - -ART_PKG=\ - downloads/kspectrum$(KSPECTRUM_VERSION).tgz\ - downloads/kdistribution_light$(KDISTRIBUTION_VERSION).tgz\ - downloads/hr_ppart.tgz\ - downloads/ppart_lw.tgz\ - downloads/ppart_sw.tgz\ - downloads/karine$(KARINE_VERSION).tgz -ART_SIG=$(ART_PKG:=.sig) - -ART_FILES=\ - downloads/install_kspectrum$(KSPECTRUM_VERSION).bash\ - downloads/kspectrum$(KSPECTRUM_VERSION)_manual.pdf\ - downloads/install_kdistribution_light$(KDISTRIBUTION_VERSION).bash\ - downloads/kdistribution_light$(KDISTRIBUTION_VERSION)_manual.pdf\ - downloads/karine$(KARINE_VERSION)_manual.pdf - -KSPECTRUM_IMG=k001.svg tau_cumulated_1180-1200.svg -HR_PPART_IMG=emission_altitude_500-505.svg Te_signal_500-505.svg -KARINE_IMG=pne_mls_cs.svg pne_mls_ac.svg venus_ner.svg -IMG=$(KSPECTRUM_IMG) $(HR_PPART_IMG) $(KARINE_IMG) Tb.svg si_flux.svg - -HTML=\ - art.html\ - kspectrum.html\ - kdistribution.html\ - hr_ppart.html\ - ppart_lw.html\ - ppart_sw.html\ - karine.html - -build: .sig - @$(MAKE) -fMakefile -f .sig build_all - -build_all: $(ART_SIG) $(HTML) - -clean: - @echo "Cleaning generated files" - @rm -f $(HTML) $(HTML:=.err) .sig .lint - -distclean: clean - @echo "Cleaning PGP signatures" - @rm -f $(ART_SIG) - -install: build - @rsync -avzrR --delete-after --progress \ - $(HTML) $(IMG) $(ART_FILES) $(ART_PKG) $(ART_SIG) $(PREFIX)/art/ - -art_build.sh: ../meso-menu.sh - @touch art_build.sh - -################################################################################ -# html -################################################################################ -art.html: art.html.in art_build.sh - @echo "Building $@" - @$(SHELL) art_build.sh overview > $@ - -kspectrum.html: kspectrum.html.in art_build.sh Makefile $(KSPECTRUM_IMG) - @echo "Building $@" - @$(SHELL) art_build.sh kspectrum $(KSPECTRUM_VERSION) > $@ - -kdistribution.html: kdistribution.html.in art_build.sh Makefile - @echo "Building $@" - @$(SHELL) art_build.sh kdistribution $(KDISTRIBUTION_VERSION) > $@ - -hr_ppart.html: hr_ppart.html.in art_build.sh $(HR_PPART_IMG) - @echo "Building $@" - @$(SHELL) art_build.sh hr_ppart > $@ - -ppart_lw.html: ppart_lw.html.in Tb.svg art_build.sh - @echo "Building $@" - @$(SHELL) art_build.sh ppart_lw > $@ - -ppart_sw.html: ppart_sw.html.in si_flux.svg art_build.sh - @echo "Building $@" - @$(SHELL) art_build.sh ppart_sw > $@ - -karine.html: karine.html.in art_build.sh Makefile $(KARINE_IMG) - @echo "Building $@" - @$(SHELL) art_build.sh karine $(KARINE_VERSION) > $@ - -################################################################################ -# Check files -################################################################################ -lint: build .lint - @$(MAKE) -fMakefile -f .lint lint_all - -lint_all: lint_shells $(HTML:=.lint) - -lint_shells: - @echo "Linting art_build.sh" && shellcheck -o all -x art_build.sh - -################################################################################ -# Miscellaneous targets -################################################################################ -.sig: Makefile ../configure_targets.sh - @echo "Setup .sig" - @$(SHELL) ../configure_targets.sh sig $(ART_PKG) > .sig - -.lint: Makefile ../configure_targets.sh - @echo "Setup .lint" - @$(SHELL) ../configure_targets.sh lint $(HTML) > .lint diff --git a/art/art.html.in b/art/art.html.in @@ -1,68 +0,0 @@ -<header> - <h1>Atmospheric Radiative Transfer</h1> -</header> - -<p>We propose a number of open-source codes selected within our -<b>A</b>tmospheric <b>R</b>adiative <b>T</b>ransfer toolchain. Each code is -released under the copyleft licenses, which means anyone has the right to modify -and redistribute the code within specific conditions; please refer to their -license for details.</p> - -The codes currently available are briefly described bellow. - -<h3><a href="kspectrum.html">Kspectrum</a></h3> - -<p>produces high-resolution synthetic spectra of any gas mixture, in arbitrary -thermodynamic conditions (pressure, temperature and molar composition) from -public spectroscopic databases. Please note this code does NOT compute -application-specific opacities (collision-induced absorption, continua, ...) -and does NOT perform radiative transfer computations. This is all about adding -energetic transitions contributions.</p> - -<h3><a href="kdistribution.html">Kdistribution</a></h3> - -<p>produces k-distribution data sets from the high-resolution spectra that have -been produced by kspectrum. The output spectral data is intended to be used -subsequently by radiative transfer codes that are based on the k-distribution -spectral model.</p> - -<h3><a href="hr_ppart.html">HR_PPart</a></h3> - -<p>performs atmospheric radiative transfer computations using high-resolution -spectra produced by kspectrum. This code is based on analytic radiative -transfer solutions, and is suitable for non-scattering atmospheres: in the case -of the terrestrial atmosphere, it means in the LW, and for clear-sky -configurations only. This version is intended to be used in the case of the -terrestrial atmosphere: it can compute collision-induced opacities and also the -water vapour continuum, in order to add these opacities to high-resolution -spectra, before actually performing radiative transfer computations.</p> - -<h3><a href="ppart_lw.html">PPart_LW</a></h3> - -<p>performs atmospheric radiative transfer computations using the -k-distribution spectral model, in the LW part of the spectrum. This code is -based on the same analytic solutions of radiative transfer than HR_PPart. It -was recently updated to use a variable quadrature order in each spectral -interval. The atmosphere is supposed to absorb and emit radiation (LW -computation).</p> - - -<h3><a href="ppart_sw.html">PPart_SW</a></h3> - -<p>performs atmospheric radiative transfer computations using the -k-distribution spectral model, in the SW part of the spectrum. Even if it is -based on the same analytic radiative transfer solutions than HR_PPart and -PPart_LW, and should therefore not be suitable for the SW range because of -Rayleigh scattering, we still maintain this tool as a toy model: the atmosphere -is supposed to absorb solar radiation only: scattering and self-emission are -neglected.</p> - -<h3><a href="karine.html">Karine</a></h3> - -<p>performs atmospheric radiative transfer computations using the -k-distribution spectral model, in the LW part of the spectrum. This code is -based on a Monte-Carlo algorithm, which means scattering (both by the gas and -by clouds) is taken into account. A inhomogeneous atmosphere is stratified into -a succession of homogeneous layers, that can also contain cloud particles and -aerosol particles.</p> - diff --git a/art/art.md b/art/art.md @@ -0,0 +1,64 @@ +# Atmospheric Radiative Transfer + +We propose a number of open-source codes selected within our +*A*tmospheric *R*adiative *T*ransfer toolchain. +Each code is released under the copyleft licenses, which means anyone +has the right to modify and redistribute the code within specific +conditions; please refer to their license for details. + +The codes currently available are briefly described bellow : + +- [Kspectrum](kspectrum.html) produces high-resolution synthetic spectra + of any gas mixture, in arbitrary thermodynamic conditions (pressure, + temperature and molar composition) from public spectroscopic + databases. + Please note this code does *NOT* compute application-specific + opacities (collision-induced absorption, continua, ...) and does *NOT* + perform radiative transfer computations. + This is all about adding energetic transitions contributions. + +- [Kdistribution](kdistributio.html) produces k-distribution data sets + from the high-resolution spectra that have been produced by kspectrum. + The output spectral data is intended to be used subsequently by + radiative transfer codes that are based on the k-distribution spectral + model. + +- [HR\_PPart](hr_ppart.html) performs atmospheric radiative transfer + computations using high-resolution spectra produced by kspectrum. + This code is based on analytic radiative transfer solutions, and is + suitable for non-scattering atmospheres: in the case of the + terrestrial atmosphere, it means in the LW, and for clear-sky + configurations only. + This version is intended to be used in the case of the terrestrial + atmosphere: it can compute collision-induced opacities and also the + water vapour continuum, in order to add these opacities to + high-resolution spectra, before actually performing radiative transfer + computations. + +- [PPart\_LW](ppart_lw.html) performs atmospheric radiative transfer + computations using the k-distribution spectral model, in the LW part + of the spectrum. + This code is based on the same analytic solutions of radiative + transfer than HR\_PPart. + It was recently updated to use a variable quadrature order in each + spectral interval. + The atmosphere is supposed to absorb and emit radiation (LW + computation). + +- [PPart\_SW](ppart_sw.html) performs atmospheric radiative transfer + computations using the k-distribution spectral model, in the SW part + of the spectrum. + Even if it is based on the same analytic radiative transfer solutions + than HR\_PPart and PPart\_LW, and should therefore not be suitable for + the SW range because of Rayleigh scattering, we still maintain this + tool as a toy model: the atmosphere is supposed to absorb solar + radiation only: scattering and self-emission are neglected. + +- [Karine](karine.html) performs atmospheric radiative transfer + computations using the k-distribution spectral model, in the LW part + of the spectrum. + This code is based on a Monte-Carlo algorithm, which means scattering + (both by the gas and by clouds) is taken into account. + A inhomogeneous atmosphere is stratified into a succession of + homogeneous layers, that can also contain cloud particles and aerosol + particles. diff --git a/art/art_build.sh b/art/art_build.sh @@ -1,84 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -. ../meso-menu.sh - -overview() -{ - print_header -s ART -n Overview -r ../ - cat art.html.in - print_footer -} - -kspectrum() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s kspectrum <version>\n" "$0" >&2 - exit 1 - fi - - print_header -s ART -n Kspectrum -r ../ - VERSION="$1" envsubst < kspectrum.html.in - print_footer -} - -kdistribution() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s kdistribution <version>\n" "$0" >&2 - exit 1 - fi - - print_header -s ART -n Kdistribution -r ../ - VERSION="$1" envsubst < kdistribution.html.in - print_footer -} - -hr_ppart() -{ - print_header -s ART -n HR_PPart -r ../ - cat hr_ppart.html.in - print_footer -} - -ppart_lw() -{ - print_header -s ART -n PPart_LW -r ../ - cat ppart_lw.html.in - print_footer -} - -ppart_sw() -{ - print_header -s ART -n PPart_SW -r ../ - cat ppart_sw.html.in - print_footer -} - -karine() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s karine <version>\n" "$0" >&2 - exit 1 - fi - - print_header -s ART -n Karine -r ../ - VERSION="$1" envsubst < karine.html.in - print_footer -} - -"$@" diff --git a/art/hooks/00-sign-archives.sh b/art/hooks/00-sign-archives.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +find downloads -name "*.tgz" \ +| sort \ +| while read -r i; do + + sign="${i}.sig" + + if ! [ -f "${sign}" ]; then + >&2 printf 'Signing %s\n' "${i}" + gpg --yes -a -o "${sign}" --detach-sign "${i}" + fi + + # Write the generated files to standard output to inform the build + # system which files it needs to handle during installation. + printf '%s/%s\n' "${PWD##*/}" "${i}.sig" + +done diff --git a/art/hr_ppart.html.in b/art/hr_ppart.html.in @@ -1,135 +0,0 @@ -<header> - <h1>HR PPart - <span class=subtitle> - High-Resolution Plane-Parallel atmospheric radiative transfer - </span> - </h1> -</header> - -<div class="news"> - <p><b>Download HR_PPart</b></p> - <ul> - <li>Sources: - <a href="downloads/hr_ppart.tgz">tarball</a> / - <a href="downloads/hr_ppart.tgz.sig">pgp</a></li> - </ul> -</div> - -<p>The purpose of HR_PPart is to perform radiative transfer computations using -high-resolution spectra that have been produced using <a -href="kspectrum.html">Kspectrum</a>. Radiative transfer will actually be -computed for every wavenumber that defines the input high-resolution spectra. -This code is based on analytic radiative transfer solutions that are valid only -in the case of a emitting and absorbing, but non-scattering, atmosphere. This -code should therefore be used, in the case of the terrestrial atmosphere, for -clear-sky LW computations only. However, this code provides the possibility to -use cloud data: the scattering optical thickness is then partly integrated in -the absorption optical thickness. This is only an approximation, not intended -to provide accurate results. Reference results are only achieved for a purely -absorbing atmosphere.</p> - -<h2>Installation</h2> - -<div class="img" style="width: 20em"> - <a href="emission_altitude_500-505.svg"> - <img src="emission_altitude_500-505.svg" alt="emission-altitude_500-505"> - </a> - <div class="caption"> - Emission altitude signal in the [500-505] inv. cm spectral range, for a - Mid-Latitude Summer standard atmosphere. - </div> -</div> - -<p>Download and extract the archive (<code>tar -zxvf hr_ppart.tgz</code>); then -move into the HR_PPart directory, and use the <code>make all</code> command to -compile. You should use the <code>make clean</code> command in the case you -want to recompile from scratch only (when include files are modified). If only -source files are modified, the <code>make all</code> command will recompile -modified files.</p> - -<p>HR_PPart has been parallelized, which means you will have to launch it using -the "mpirun" command:</p> - -<pre class=code> -mpirun -np &lt;NPROCS&gt; ./analytic_RT.exe -</pre> - -<p>with <code>&lt;NPROCS&gt;</code> the number of processes requested for the -computation; MacOS users might encounter a error where the OS considers the -user requested a number of processes higher than recommended. You can bypass it -using the <code>-oversubscribe</code> option:</p> - -<pre class=code> -mpirun -oversubscribe -np &lt;NPROCS&gt;./analytic.exe -</pre> - -<p><b>Prerequistes</b>: only a fortran compiler is needed (no external -libraries). the "gfortran" compiler has been used for development, but other -common compilers should work too (ifort, pgfortran, <i>etc.</i>).</p> - -<h2>Usage</h2> - -<div class="img" style="width: 20em"> - <a href="Te_signal_500-505.svg"> - <img src="Te_signal_500-505.svg" alt="Te_signal_500-505"> - </a> - <div class="caption"> - Emission temperature signal in the [500-505] inv. cm spectral range, for a - Mid-Latitude Summer standard atmosphere. - </div> -</div> - -<p>Before performing a computation, you should specify where high-resolution -spectra of interest are located: you need to provide a link named -<code>hires_spectra</code> within the <code>/data</code> directory. This link -should be pointing to a directory that contains all spectra produced by -Kspectrum for a given atmospheric profile, in addition to the -<code>composition.in</code> and <code>molparam.in</code> files used by -Kspectrum in order to produce these spectra. This directory should also contain -a simple ascii file named <code>profile_parameters.in</code> with the following -structure:</p> - -<pre class=code> -Input data for program "analytic_RT" - -Temperature of ground (K) -294.0D+0 -Temperature of space (K) -3.0D+0 -Ground emissivity -1.0D+0 -</pre> - -Simulation input is provided through the <code>data.in</code> and -<code>options.in</code> files (located in the main <code>HR_PPart</code> -directory): - -<ul> - <li> the <code>options.in</code> file provides the possibility to perform a - angular integration, or perform a single-direction radiative transfer - computation. It provides the possibility to use a specular or a diffuse - reflective ground. It provides many options for pre-computing spectral data - (collision-induced opacities, water continuum). The last options provide a - way to disable the computation of time-consuming results, and also to disable - the recording of specific spectral data, which should further speed up the - computation.</li> - - <li> the <code>data.in</code> file lets the user specify the spectral - integration domain, the probe pressure (some results are computed at a given - "probe" pressure level) and the direction to use for a single-direction - radiative transfer computation.</li> -</ul> - -<p>Results are located into the <code>/results</code> directory; several -gnuplot scripts are provided in order to visualise various results.</p> - -<h2>License</h2> - -<p>Copyright &#169; 2014-2018 Centre National de la Recherche Scientifique -(CNRS), <a href="mailto:contact@meso-star.com">|Méso|Star&gt;</a>.</p> - -<p>HR_PPart is free software released under the CeCILL v2.1 license. You are -welcome to redistribute it under certain conditions; refer to the <a -href="http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt">license</a> -for details.</p> - diff --git a/art/hr_ppart.md b/art/hr_ppart.md @@ -0,0 +1,117 @@ +# HR\_PPart + +The purpose of HR\_PPart is to perform radiative transfer computations +using high-resolution spectra that have been produced using +[Kspectrum](kspectrum.html). +Radiative transfer will actually be computed for every wavenumber that +defines the input high-resolution spectra. +This code is based on analytic radiative transfer solutions that are +valid only in the case of a emitting and absorbing, but non-scattering, +atmosphere. +This code should therefore be used, in the case of the terrestrial +atmosphere, for clear-sky LW computations only. +However, this code provides the possibility to use cloud data: the +scattering optical thickness is then partly integrated in the absorption +optical thickness. +This is only an approximation, not intended to provide accurate results. +Reference results are only achieved for a purely absorbing atmosphere. + +[![Emission altitude](images/emission_altitude_500-505.svg)](images/emission_altitude_500-505.svg) + +> Emission altitude signal in the [500-505] inv. cm spectral range, for +> a Mid-Latitude Summer standard atmosphere. + +[![Emission temperature](images/Te_signal_500-505.svg)](images/Te_signal_500-505.svg) + +> Emission temperature signal in the [500-505] inv. cm spectral range, +> for a Mid-Latitude Summer standard atmosphere. + +## Quick start + +- Sources: [tarball](downloads/hr_ppart.tgz) / + [pgp](downloads/hr_ppart.tgz.sig) + +### Prerequisites + +Only a fortran compiler is needed (no external libraries). +The "gfortran" compiler has been used for development, but other common +compilers should work too (ifort, pgfortran, etc.). + +### Installation + +Download and extract the archive (`tar -zxvf hr_ppart.tgz`); then move +into the HR\_PPart directory, and use the `make all` command to compile. +You should use the `make clean` command in the case you want to +recompile from scratch only (when include files are modified). +If only source files are modified, the `make all` command will recompile +modified files. + +### Run + +HR\_PPart has been parallelized, which means you will have to launch it +using the "mpirun" command: + + mpirun -np <NPROCS> ./analytic_RT.exe + +with `<NPROCS>` the number of processes requested for the computation; +MacOS users might encounter a error where the OS considers the user +requested a number of processes higher than recommended. +You can bypass it using the `-oversubscribe` option: + + mpirun -oversubscribe -np <NPROCS> ./analytic.exe + +## Usage + +Before performing a computation, you should specify where +high-resolution spectra of interest are located: you need to provide a +link named `hires_spectra` within the `/data` directory. +This link should be pointing to a directory that contains all spectra +produced by Kspectrum for a given atmospheric profile, in addition to +the `composition.in` and `molparam.in` files used by Kspectrum in order +to produce these spectra. +This directory should also contain a simple ascii file named +`profile_parameters.in` with the following structure: + + Input data for program "analytic_RT" + + Temperature of ground (K) + 294.0D+0 + Temperature of space (K) + 3.0D+0 + Ground emissivity + 1.0D+0 + +Simulation input is provided through the `data.in` and `options.in` +files (located in the main `HR_PPart` directory): + +- the `options.in` file provides the possibility to perform a angular + integration, or perform a single-direction radiative transfer + computation. + It provides the possibility to use a specular or a diffuse reflective + ground. + It provides many options for pre-computing spectral data + (collision-induced opacities, water continuum). + The last options provide a way to disable the computation of + time-consuming results, and also to disable the recording of specific + spectral data, which should further speed up the computation. + +- the `data.in` file lets the user specify the spectral + integration domain, the probe pressure (some results are computed at a given + "probe" pressure level) and the direction to use for a single-direction + radiative transfer computation. + +Results are located into the `/results` directory; several +gnuplot scripts are provided in order to visualise various results. + +## License + +Copyright © 2014-2018 Centre National de la Recherche Scientifique (CNRS) +Copyright © 2014-2018 |Méso|Star> +([contact@meso-star.com](mailto:contact@meso-star.com)) + +HR\_PPart is free software released under the CeCILL v2.1 license. +You are welcome to redistribute it under certain conditions; refer to +the +[license](http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt) +for details. + diff --git a/art/Tb.svg b/art/images/Tb.svg diff --git a/art/Te_signal_500-505.svg b/art/images/Te_signal_500-505.svg diff --git a/art/emission_altitude_500-505.svg b/art/images/emission_altitude_500-505.svg diff --git a/art/k001.svg b/art/images/k001.svg diff --git a/art/pne_mls_ac.svg b/art/images/pne_mls_ac.svg diff --git a/art/pne_mls_cs.svg b/art/images/pne_mls_cs.svg diff --git a/art/si_flux.svg b/art/images/si_flux.svg diff --git a/art/tau_cumulated_1180-1200.svg b/art/images/tau_cumulated_1180-1200.svg diff --git a/art/venus_ner.svg b/art/images/venus_ner.svg diff --git a/art/index.tsv b/art/index.tsv @@ -0,0 +1,7 @@ +Overview art.html +Kspectrum kspectrum.html +Kdistribution kdistribution.html +HR_PPart hr_ppart.html +PPart_LW ppart_lw.html +PPart_SW ppart_sw.html +Karine karine.html diff --git a/art/karine.html.in b/art/karine.html.in @@ -1,129 +0,0 @@ -<header> - <h1>Karine - <span class=subtitle> - K-distribution Atmospheric Radiation & Infrared Net Exchanges - </span> - </h1> -</header> - -<div class="news"> - <p><b>Download Karine ${VERSION}</b></p> - <ul> - <li>Sources: - <a href="downloads/karine${VERSION}.tgz">tarball</a> / - <a href="downloads/karine${VERSION}.tgz.sig">pgp</a></li> - <li>Manual: - <a href="downloads/karine${VERSION}_manual.pdf">pdf</a></li> - </ul> -</div> - -<p>This code performs radiative transfer computations in the LW spectral -region, for a absorbing, emitting and scattering atmosphere. karine uses the -k-distribution spectral model (and the CK hypothesis for inhomogeneities). -Radiative transfer results that are computed are: fluxes (upward, downward, -net), the radiative budget (average per layer) and its gas-gas, gas-ground and -gas-space components, and the Net Exchange Rate matrix. All results are -provided for each spectral interval the input data is defined for, and is also -spectrally integrated.</p> - -<h3>Physical model</h3> - -<p>The inhomogeneous atmosphere is represented as a succession of homogeneous -slabs. The temperature profile is taken as linear between layers centres. In -each layer, absorption and scattering properties must be provided for the gas -mixture (k-distribution data set), for a water cloud, and for aerosols. -Reflection by the ground is taken into account.</p> - -<h3>Numerical method</h3> - -<p>Karine is based on a Monte-Carlo algorithm. In addition to the possibility -to take into account scattering, this method has the advantage to compute a -statistical uncertainty over each result; this uncertainty can be interpreted -in terms of a numerical error. In this respect, the Monte-Carlo method is -considered as a reference method: the numerical uncertainty can be lowered as -much as necessary by increasing the number of realisations.</p> - -<h3>Net Exchange Formalism</h3> - -<p>The Monte-Carlo algorithm consists in computing the Net Exchange Rate -between each couple (i,j) of atmospheric layers (+ ground and space). See -figures for examples. This formalism provides a graphical representation of all -radiative net exchanges in the atmospheres: dominant and non-dominant terms can -be immediately identified, for any given spectral interval.</p> - -<div style="display: inline-block;"> - <div style="float: left; width: 16em"> - <a href="pne_mls_cs.svg"><img src="pne_mls_cs.svg" alt="pne_mls_cs"></a> - </div> - <div style="float: left; width: 16em"> - <a href="pne_mls_ac.svg"><img src="pne_mls_ac.svg" alt="pne_mls_ac"></a> - </div> - <div style="float: left; width: 16em"> - <a href="venus_ner.svg"><img src="venus_ner.svg" alt="venus_ner"></a> - </div> -</div> - -<div style="display: inline-block;"> - <div style="float: left; width: 16em"> - <div class="caption"> - Matrix of Net Exchange Rates, spectrally integrated over the LW interval - (4-100 micrometers) for a standard clear-sky Mid-Latitude Summer - atmospheric profile. - </div> - </div> - <div style="float: left; width: 16em"> - <div class="caption"> - Matrix of Net Exchange Rates, spectrally integrated over the LW interval - (4-100 micrometers) for a standard Mid-Latitude Summer atmospheric profile, - in the presence of three water clouds. - </div> - </div> - <div style="float: left; width: 16em"> - <div class="caption"> - Matrix of Net Exchange Rates, spectrally integrated over the LW interval - (1.71-250 micrometers) for the Venus atmosphere. - </div> - </div> -</div> - -<h2>Installation</h2> - -<b>Prerequisites</b>: a fortran compiler (no external libraries are needed). It -should work fine with common compilers (gfortran, ifort, pgfortran, -<i>etc.</i>). - -<p>Download and uncompress the <code>.tgz</code> archive. Then you can try to -compile the <code>karine</code> executable: go to the main karine directory, -then use the <code>make all</code> command to compile. The most common sources -of failure can be fixed by editing the <code>Makefile</code> file in order to -check compilation options (and more specifically options related to the target -architecture and optimisations). Whenever you modify a source file, you can -re-compile using the <code>make all</code> command. But in the case you have to -modify a include file, you will have to erase all existing object files first -using the <code>make clean</code> command, before recompiling from scratch -using the <code>make all</code> command again.</p> - -<h2>Usage</h2> - -<p>Please refer to the documentation in order to produce the -<code>/data/atmos_data.txt</code> input data file required by karine. A example -program (<code>make_data</code>) is provided in the <code>/data</code> -directory: use the <code>f0</code> script in order to compile it, but this -program will only produce a dummy data set (not a physical configuration). The -user has the possibility to set many options and input data by editing the -<code>options.in</code> and <code>data.in</code> input data files. Please refer -to the documentation for a description of the content of these files.</p> - -<h2>License</h2> - -<p>Copyright &#169; 2014-2018 <a -href="mailto:contact@meso-star.com">|Méso|Star&gt;</a>.<br> -Copyright &#169; 2008-2014 Centre National de la Recherche Scientifique -(CNRS), Institut Mines-Télécom Albi-Carmaux, Université Paul Sabatier.</p> - -<p>Karine is free software released under the GPLv2+ license: GNU GPL version 2 -or later. x You can freely study, modify or extend it. You are also welcome to -redistribute it under certain conditions; refer to the <a -href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">license</a> -for details.</p> - diff --git a/art/karine.md.in b/art/karine.md.in @@ -0,0 +1,118 @@ +# Karine + +This code performs radiative transfer computations in the LW spectral +region, for a absorbing, emitting and scattering atmosphere. +`karine` uses the k-distribution spectral model (and the CK hypothesis +for inhomogeneities). +Radiative transfer results that are computed are: fluxes (upward, +downward, net), the radiative budget (average per layer) and its +gas-gas, gas-ground and gas-space components, and the Net Exchange Rate +matrix. +All results are provided for each spectral interval the input data is +defined for, and is also spectrally integrated. + +## Physical model + +The inhomogeneous atmosphere is represented as a succession of +homogeneous slabs. +The temperature profile is taken as linear between layers centres. +In each layer, absorption and scattering properties must be provided for +the gas mixture (k-distribution data set), for a water cloud, and for +aerosols. +Reflection by the ground is taken into account. + +## Numerical method + +Karine is based on a Monte-Carlo algorithm. +In addition to the possibility to take into account scattering, this +method has the advantage to compute a statistical uncertainty over each +result; this uncertainty can be interpreted in terms of a numerical +error. +In this respect, the Monte-Carlo method is considered as a reference +method: the numerical uncertainty can be lowered as much as necessary by +increasing the number of realisations. + +## Net Exchange Formalism + +The Monte-Carlo algorithm consists in computing the Net Exchange Rate +between each couple (i,j) of atmospheric layers (+ ground and space). +See figures for examples. +This formalism provides a graphical representation of all radiative net +exchanges in the atmospheres: dominant and non-dominant terms can be +immediately identified, for any given spectral interval. + +[![Net Exchange Rates (clear-sky)](images/pne_mls_cs.svg)](images/pne_mls_cs.svg) + +> Matrix of Net Exchange Rates, spectrally integrated over the LW +> interval (4-100 micrometers) for a standard clear-sky Mid-Latitude +> Summer atmospheric profile. + + +[![Net Exchange Rates](images/pne_mls_ac.svg)](images/pne_mls_ac.svg) + +> Matrix of Net Exchange Rates, spectrally integrated over the LW +> interval (4-100 micrometers) for a standard Mid-Latitude Summer +> atmospheric profile, in the presence of three water clouds. + +[![Net Exchange Rates (Venus)](images/venus_ner.svg)](images/venus_ner.svg) + +> Matrix of Net Exchange Rates, spectrally integrated over the LW +> interval (1.71-250 micrometers) for the Venus atmosphere. + +## Quick start + +Karine @VERSION@: + +- Sources: [tarball](downloads/karine@VERSION@.tgz) / + [pgp](downloads/karine@VERSION@.tgz.sig) +- Manual: [pdf](downloads/karine@VERSION@_manual.pdf) + +### Prerequisites + +Only a fortran compiler is needed (no external libraries). +The `gfortran` compiler has been used for development. + + +### Installation + +Download and uncompress the `.tgz` archive. +Then you can try to compile the `karine` executable: go to the main +karine directory, then use the `make all` command to compile. +The most common sources of failure can be fixed by editing the +`Makefile` file in order to check compilation options (and more +specifically options related to the target architecture and +optimisations). +Whenever you modify a source file, you can re-compile using the `make +all` command. +But in the case you have to modify a include file, you will have to +erase all existing object files first using the `make clean` command, +before recompiling from scratch using the `make all` command again. + +## Usage + +Please refer to the documentation in order to produce the +`/data/atmos_data.txt` input data file required by karine. +A example program (`make_data`) is provided in the `/data` directory: +use the `f0` script in order to compile it, but this program will only +produce a dummy data set (not a physical configuration). +The user has the possibility to set many options and input data by +editing the `options.in` and `data.in` input data files. +Please refer to the documentation for a description of the content of +these files. + +## License + +Copyright © 2014-2018 |Méso|Star> +([contact@meso-star.com](mailto:contact@meso-star.com)) +Copyright © 2008-2014 Centre National de la Recherche Scientifique (CNRS) +Copyright © 2008-2014 Institut Mines-Télécom Albi-Carmaux +Copyright © 2008-2014 Université Paul Sabatier + + +Karine is free software released under the GPLv2+ license: GNU GPL +version 2 or later. +You can freely study, modify or extend it. You are also welcome to +redistribute it under certain conditions; +refer to the +[license](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) for +details. diff --git a/art/karine.sh b/art/karine.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +version=3.5 +sed "s/@VERSION@/${version}/g" karine.md.in diff --git a/art/kdistribution.html.in b/art/kdistribution.html.in @@ -1,85 +0,0 @@ -<header> - <h1>Kdistribution - <span class=subtitle> - Production of k-distribution data sets - </span> - </h1> -</header> - -<div class="news"> - <p><b>Download Kdistribution ${VERSION}</b></p> - <ul> - <li>Sources: - <a href="downloads/kdistribution_light${VERSION}.tgz">tarball</a> / - <a href="downloads/kdistribution_light${VERSION}.tgz.sig">pgp</a></li> - <li>Installation script: - <a href="downloads/install_kdistribution_light${VERSION}.bash">bash</a></li> - <li>Manual: - <a href="downloads/kdistribution_light${VERSION}_manual.pdf">pdf</a></li> - </ul> -</div> - -<p>Kdistribution computes k-distribution data sets from high-resolution spectra -that have been produced by <a href="kspectrum.html">Kspectrum</a>. The user -should specify some basic information to the code by editing the -<code>options.in</code> and <code>data.in</code> input files:</p> - -<ul> - <li><code>options.in</code>: various quadratures can be selected; a Legendre - quadrature is used by default. Then the quadrature order should be specified, - and various quadrature-dependant parameters can be adjusted. One interesting - option is the possibility to use quadratic splines over high-resolution - spectra instead of a linear interpolation between two successive values of - the absorption coefficient.</li> - - <li><code>data.in</code>: lets the user specify the first and last levels of - the high-resolution spectra set that should be converted to k-distribution - data.</li> -</ul> - -<p>Before using the code, the user should create a link named -<code>hires_spectra</code> within the <code>/data</code> directory; this link -should be pointing to the directory that contains the high-resolution spectra -produced by Kspectrum for a given atmospheric profile, as well as the -<code>composition.in</code> file used by Kspectrum. The <code>data</code> -directory should also contain a file named <code>narrowbands.in</code> used to -describe the spectral intervals over which the k-distribution data set should -be computed. This file has to use the same format as the -<code>narrowbands.in</code> Kspectrum input data file. However, the -<code>narrowbands.in</code> file used by Kdistribution does not necessarily -have to be identical to the file used by Kspectrum.</p> - -<h2>Installation</h2> - -<p>You will have to download both the <code>.tgz</code> file and the -installation script, and place both files in the same directory. Then run the -installation script. This will mainly uncompress the archive.</p> - -<p><b>Prerequisites</b>: all you need is a fortran compiler. The gfortran -compiler is used for development, but compilation should also work with other -fortran compilers (ifort, pgfortran, <i>etc.</i>).</p> - -<p>Then you can try to compile Kdistribution: go to the main Kdistribution -directory, then use the <code>make all</code> command to compile. The most -common sources of failure can be fixed by editing the <code>Makefile</code> -file in order to check compilation options (and more specifically options -related to the target architecture and optimisations). Whenever you modify a -source file, you can re-compile using the <code>make all</code> command. But in -the case you have to modify a include file, you will have to erase all existing -object files first using the <code>make clean</code> command, before -recompiling from scratch using the <code>make all</code> command again.</p> - -<h2>License</h2> - -<p>Copyright &#169; 2014-2018 <a -href="mailto:contact@meso-star.com">|Méso|Star&gt;</a>.<br> -Copyright &#169; 2008-2014 Fondation Sciences et Technologies pour -l'Aéronotique et l'Espace, Institut Mines-Télécom Albi-Carmaux, Centre National -de la Recherche Scientifique (CNRS), Université Bordeaux 1, Université Paul -Sabatier.</p> - -<p>Kdistribution is free software released under the CeCILL v2.1 license. You -are welcome to redistribute it under certain conditions; refer to the <a -href="http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt">license</a> -for details.</p> - diff --git a/art/kdistribution.md.in b/art/kdistribution.md.in @@ -0,0 +1,83 @@ +# Kdistribution + +Kdistribution computes k-distribution data sets from high-resolution +spectra that have been produced by [Kspectrum](kspectrum.html). +The user should specify some basic information to the code by editing +the `options.in` and `data.in` input files: + +- `options.in`: various quadratures can be selected; a Legendre + quadrature is used by default. + Then the quadrature order should be specified, and various + quadrature-dependant parameters can be adjusted. + One interesting option is the possibility to use quadratic splines + over high-resolution spectra instead of a linear interpolation between + two successive values of the absorption coefficient. + +- `data.in`: lets the user specify the first and last levels of the + high-resolution spectra set that should be converted to k-distribution + data. + +Before using the code, the user should create a link named +`hires_spectra` within the `/data` directory; this link should be +pointing to the directory that contains the high-resolution spectra +produced by Kspectrum for a given atmospheric profile, as well as the +`composition.in` file used by Kspectrum. +The `data` directory should also contain a file named `narrowbands.in` +used to describe the spectral intervals over which the k-distribution +data set should be computed. +This file has to use the same format as the `narrowbands.in` Kspectrum +input data file. +However, the `narrowbands.in` file used by Kdistribution does not +necessarily have to be identical to the file used by Kspectrum. + + +## Quickstart + +- Sources: [tarball](downloads/kdistribution_light@VERSION@.tgz) / + [pgp](downloads/kdistribution_light@VERSION@.tgz.sig) +- Installation script: [bash](downloads/install_kdistribution_light@VERSION@.bash) +- Manual: [pdf](downloads/kdistribution_light@VERSION@_manual.pdf) + +### Prerequisites + +All you need is a fortran compiler. +The gfortran compiler is used for development, but compilation should +also work with other fortran compilers (ifort, pgfortran, etc.). + +Then you can try to compile Kdistribution: go to the main Kdistribution +directory, then use the `make all` command to compile. +The most common sources of failure can be fixed by editing the +`Makefile` file in order to check compilation options (and more +specifically options related to the target architecture and +optimisations). +Whenever you modify a source file, you can re-compile using the `make +all` command. +But in the case you have to modify a include file, you will have to +erase all existing object files first using the `make clean` command, +before recompiling from scratch using the `make all` command again. + +### Installation + +You will have to download both the `.tgz` file and the installation +script, and place both files in the same directory. +Then run the installation script. +This will mainly uncompress the archive. + + +## Copyright notice + +Copyright © 2014-2018 |Méso|Star> +([contact@meso-star.com](mailto:contact@meso-star.com)) +Copyright © 2008-2014 Centre National de la Recherche Scientifique (CNRS) +Copyright © 2008-2014 Fondation Sciences et Technologies pour l'Aéronotique et l'Espace +Copyright © 2008-2014 Institut Mines-Télécom Albi-Carmaux +Copyright © 2008-2014 Université Bordeaux 1 +Copyright © 2008-2014 Université Paul Sabatier + +## License + +Kdistribution is free software released under the CeCILL v2.1 license. +You are welcome to redistribute it under certain conditions; refer to +the +[license](http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt) +for details. diff --git a/art/kdistribution.sh b/art/kdistribution.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +version=1.1.1 +sed "s/@VERSION@/${version}/g" kdistribution.md.in diff --git a/art/kspectrum.html.in b/art/kspectrum.html.in @@ -1,176 +0,0 @@ -<header> - <h1>Kspectrum - <span class=subtitle> - Molecular absorption spectra for arbitrary gas mixtures - </span> - </h1> -</header> - -<div class="news"> - <p><b>Download Kspectrum ${VERSION}</b></p> - <ul> - <li>Sources: - <a href="downloads/kspectrum${VERSION}.tgz">tarball</a> / - <a href="downloads/kspectrum${VERSION}.tgz.sig">pgp</a></li> - <li>Installation script: - <a href="downloads/install_kspectrum${VERSION}.bash">bash</a></li> - <li>Manual: - <a href="downloads/kspectrum${VERSION}_manual.pdf">pdf</a></li> - </ul> -</div> - -<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> - -<div class="img" style="width: 20em"> - <a href="k001.svg"> - <img src="k001.svg" alt="k001"> - </a> - <div class="caption"> - Absorption spectrum for terrestrial air, at ground level, for a - Mid-Latitude Summer standard atmospheric profile. The absorption - coefficient is also provided for each one of the three molecular species - used in the gas mixture (logscale). - </div> -</div> - -<h3>Spectroscopic databases</h3> - -<p>Kspectrum uses the -<a href="http://hitran.org">HITRAN</a> spectroscopic database in -order to retrieve transition parameters (versions 2004, 2008 and 2012). -Additionally, it can use the -<a href="http://hitran.org/hitemp/">HITEMP</a>-2010 and -<a href="ftp://ftp.iao.ru/pub">CDSD</a>-4000 databases (respectively -for water and carbon dioxide) at high-temperature levels. Further development -would be required for additional databases (HITRAN-2016 ? GEISA ?)</p> - -<h3>Reference results</h3> -<p>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> - -<div class="img" style="width: 20em"> - <a href="tau_cumulated_1180-1200.svg"> - <img src="tau_cumulated_1180-1200.svg" alt="tau-cumul"> - </a> - <div class="caption"> - Plot of the atmospheric cumulated optical depth as a function of - wavenumber, for a clear-sky Mid-Latitude Summer standard terrestrial - atmospheric profile. Two kspectrum results are provided: using a 25 inverse - centimeters truncation of the line profile, and without any truncation. The - same result (with a truncation) obtained from the 4A code is also - presented. - </div> -</div> - -<h3>Physical models</h3> - -<p>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> - -<h3>Some neat features</h3> -<p>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 an interrupted computation instead of starting over from - scratch: as in a video game, Kspectrum performs frequent backups of the - current run.</li> -</ul> - -<h2>Installation</h2> - -<p>You will have to download both the <code>.tgz</code> file and the -installation script, and place both files in the same directory. Then run the -installation script. This will uncompress the archive, compile and run a small -program that will generate an example composition file (for Venus' atmosphere). -The installation script will also try to link Line-by-Line spectroscopic -databases to your new installation of Kspectrum, but will most probably fail if -you are not a frequent Kspectrum user, and you will have to read the -documentation in order to link LBL databases yourself (and probably download -then first if you have not already done so). Please <a -href="mailto:vincent.eymet@meso-star.com">contact us</a> if you want a specific -setup script for your machine so that the linking step is performed when you -download the next version.</p> - -<p><b>Prerequisites:</b> all you need is a fortran compiler. We are using -gfortran for development, but it should also work with other fortran compilers -(ifort, pgfortran, <i>etc.</i>). You should export the name of your fortran -compiler into the F77 environment variable; for instance, using the bash -interpreter:</p> - -<pre class="code"> -export F77=gfortran -</pre> - -<p>Then you can try to compile Kspectrum: go to the main Kspectrum directory, -then use the <code>make all</code> command to compile. The most common sources -of failure can be fixed by editing the "Makefile" file in order to check -compilation options (and more specifically options related to the target -architecture and optimisations). Whenever you modify a source file, you can -re-compile using the <code>make all</code> command. But in the case you have to -modify an include file, you will have to erase all existing object files first -using the <code>make clean</code> command, before recompiling from scratch -using the <code>make all</code> command again.</p> - -<h2>License</h2> - -<p>Copyright &#169; 2014-2018 <a -href="mailto:contact@meso-star.com">|Méso|Star&gt;</a>.<br> -Copyright &#169; 2008-2014 -Fondation Sciences et Technologies pour l'Aéronotique et l'Espace, Institut -Mines-Télécom Albi-Carmaux, Centre National de la Recherche Scientifique -(CNRS), Université Bordeaux 1, Université Paul Sabatier.</p> - -<p>Kspectrum is free software released under the CeCILL v2.1 license. You are -welcome to redistribute it under certain conditions; refer to the <a -href="http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt">license</a> -for details.</p> diff --git a/art/kspectrum.md.in b/art/kspectrum.md.in @@ -0,0 +1,171 @@ +# Kspectrum + +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 *NOT* perform the following tasks: + +- 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. + +- 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. + +[![Absorption spectrum](images/k001.svg)](images/k001.svg) + +> Absorption spectrum for terrestrial air, at ground level, for a +> Mid-Latitude Summer standard atmospheric profile. +> The absorption coefficient is also provided for each one of the three +> molecular species used in the gas mixture (logscale). + +## Spectroscopic databases + +Kspectrum uses the [HITRAN](http://hitran.org) spectroscopic database in +order to retrieve transition parameters (versions 2004, 2008 and 2012). +Additionally, it can use the [HITEMP](http://hitran.org/hitemp/)-2010 +and [CDSD](ftp://ftp.iao.ru/pub)-4000 databases (respectively for water +and carbon dioxide) at high-temperature levels. +Further development would be required for additional databases +(HITRAN-2016 ? GEISA ?). + +## 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. + +[![Cumulated optical depth](images/tau_cumulated_1180-1200.svg)](images/tau_cumulated_1180-1200.svg) + +> Plot of the atmospheric cumulated optical depth as a function of +> wavenumber, for a clear-sky Mid-Latitude Summer standard terrestrial +> atmospheric profile. +> Two kspectrum results are provided: using a 25 inverse centimeters +> truncation of the line profile, and without any truncation. +> The same result (with a truncation) obtained from the 4A code is also +> presented. + +## 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. + +## 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: + +- 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. + +- 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 an interrupted + computation instead of starting over from scratch: as in a video game, + Kspectrum performs frequent backups of the current run. + +## Quickstart + +Kspectrum @VERSION@: + +- Sources: [tarball](downloads/kspectrum@VERSION@.tgz) / + [pgp](downloads/kspectrum@VERSION@.tgz.sig) +- Installation script: [bash](downloads/install_kspectrum@VERSION@.bash) +- Manual: [pdf](downloads/kspectrum@VERSION@_manual.pdf) + +### Preqrequisites + +All you need is a fortran compiler. +We are using gfortran for development, but it should also work with +other fortran compilers (ifort, pgfortran, etc.). +You should export the name of your fortran compiler into the F77 +environment variable; for instance, using the bash interpreter: + + export F77=gfortran + +Then you can try to compile Kspectrum: go to the main Kspectrum +directory, then use the `make all` command to compile. +The most common sources of failure can be fixed by editing the +"Makefile" file in order to check compilation options (and more +specifically options related to the target architecture and +optimisations). +Whenever you modify a source file, you can re-compile using the `make +all` command. +But in the case you have to modify an include file, you will have to +erase all existing object files first using the `make clean` command, +before recompiling from scratch using the `make all` command again. + +### Installation + +You will have to download both the `.tgz` file and the installation +script, and place both files in the same directory. +Then run the installation script. +This will uncompress the archive, compile and run a small program that +will generate an example composition file (for Venus' atmosphere). +The installation script will also try to link Line-by-Line spectroscopic +databases to your new installation of Kspectrum, but will most probably +fail if you are not a frequent Kspectrum user, and you will have to read +the documentation in order to link LBL databases yourself (and probably +download then first if you have not already done so). +Please [contact us](mailto:contact@meso-star.com) if you want a specific +setup script for your machine so that the linking step is performed when +you download the next version. + +## Copyright notice + +Copyright © 2014-2018 |Méso|Star> +([contact@meso-star.com](mailto:contact@meso-star.com)) +Copyright © 2008-2014 Centre National de la Recherche Scientifique (CNRS) +Copyright © 2008-2014 Fondation Sciences et Technologies pour l'Aéronotique et l'Espace +Copyright © 2008-2014 Institut Mines-Télécom Albi-Carmaux +Copyright © 2008-2014 Université Bordeaux 1 +Copyright © 2008-2014 Université Paul Sabatier + +## License + +Kspectrum is free software released under the CeCILL v2.1 license. +You are welcome to redistribute it under certain conditions; refer to +the +[license](http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt) +for details. diff --git a/art/kspectrum.sh b/art/kspectrum.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +version=1.3 +sed "s/@VERSION@/${version}/g" kspectrum.md.in diff --git a/art/ppart_lw.html.in b/art/ppart_lw.html.in @@ -1,134 +0,0 @@ -<header> - <h1>PPart LW - <span class=subtitle> - Plane-Parallel atmospheric radiative transfer - LongWave - </span> - </h1> -</header> - -<div class="news"> - <p><b>Download PPart_LW</b></p> - <ul> - <li>Sources: - <a href="downloads/ppart_lw.tgz">tarball</a> / - <a href="downloads/ppart_lw.tgz.sig">pgp</a></li> - </ul> -</div> - -<p>The purpose of PPart_LW is to perform radiative transfer computations using -k-distribution data sets (that can be produced by <a -href="kdistribution.html">Kdistribution</a>, or any other code). This code is -based on analytic radiative transfer solutions that are valid only in the case -of a emitting and absorbing, but non-scattering, atmosphere. This code should -therefore be used, in the case of the terrestrial atmosphere, for clear-sky LW -computations only.</p> - -<h2>Installation</h2> - -<div class="img" style="width: 20em"> - <a href="Tb.svg"> - <img src="Tb.svg" alt="Tb"> - </a> - <div class="caption"> - Brightness temperature in the [4-20] micrometers range, for a Mid-Latitude - Summer standard atmospheric profile. - </div> -</div> - -<p>Download and extract the archive (<code>tar -zxvf ppart_lw.tgz</code>); then -move into the <code>PPart_LW</code> directory, and use the <code>make -all</code> command to compile. You should use the <code>make clean</code> -command in the case you want to recompile from scratch only (when include files -are modified). If only source files are modified, the <code>make all</code> -command will recompile modified files.</p> - -<p>PPart_LW has been parallelized, which means you will have to launch it using -the <code>mpirun</code> command:</p> - -<pre class=code> -mpirun -np &lt;NPROCS&gt; ./PPart.exe -</pre> - -<p>with <code>&lt;NPROCS&gt;</code> the number of processes requested for the -computation; MacOS users might encounter a error where the OS considers the -user requested a number of processes higher than recommended. You can bypass it -using the <code>-oversubscribe</code> option:</p> - -<pre class=code> -mpirun -oversubscribe -np &lt;NPROCS&gt; ./PPart.exe -</pre> - -<p><b>Prerequistes</b>: only a fortran compiler is needed (no external -libraries). the gfortran compiler has been used for development, but other -common compilers should work too (ifort, pgfortran, <i>etc.</i>)</p> - -<h2>Usage</h2> - -<p>The code can run either using a pre-computed (and provided) k-distribution -data set among 5 standard atmospheric profiles, or from a user-defined spectral -data file. This user-defined spectral data file should be name -<code>ecrad_opt_prop.txt</code>, and located into the <code>/data</code> -directory. The format of this file can be found in the -<code>/Doc/gas_opt_prop.pdf</code> documentation file, and a example -<code>/Doc/input.for</code> source file provides a fortran subroutine for -reading this file. A example <code>ecrad_opt_prop.txt</code> file is provided -in the <code>/data</code> directory (for the Mid-Latitude Summer profile).</p> - -<p>Simulation input is provided through the <code>data.in</code> and -<code>options.in</code> files (located in the main <code>PPart_LW</code> -directory):</p> - -<!--div class="img" style="width: 20em"> - <a href="NER_animation.gif"> - <img src="NER_animation.gif" alt="NER"> - </a> - <div class="caption"> - Matrix of Net Exchange Rates in a Mid-Latitude Summer standard atmosphere, - as a function of the wavelength (each frame is for a given spectral - interval). The NER between layers i and j is found at the intersection - between column index i and row index j ; the ground is the first element - and space is the last element. - </div> -</div--> - -<ul> - <li>the <code>options.in</code> file provides the possibility to use either a - (provided) standard atmospheric data set or a user-defined spectral data set - (in this case, the <code>/data/ecrad_opt_prop.txt</code> file has to be - found). It provides the possibility to use a specular or diffuse reflective - ground, and the possibility to perform the spectral integration over a - limited number of spectral intervals. Then the user should specify whether a - angular integration should be performed or a single-direction radiative - transfer computation is required. Finally, the user can disable the - computation of a NER matrix for every spectral interval.</li> - - <li>the <code>data.in</code> file lets the user specify the spectral - integration domain (if a limited spectral domain should be used), and the - direction to use for a single-direction radiative transfer computation. - Finally, the user should specify the index of the standard atmospheric - profile to use, when the corresponding option has been selected.</li> - -</ul> - -<p>Results are located into the <code>/results</code> directory; several -gnuplot scripts are provided in order to visualise various results. When a NER -matrix has been computed for every spectral interval, a script named -<code>anim.bash</code> can be found in the <code>/results/NER_animation</code> -directory; this script will produce a animated gif of these NER matrices (the -spectral interval evolving with time). This script requires the GraphicsMagick -package.</p> - - -<h2>License</h2> - -<p>Copyright &#169; 2014-2018 <a -href="mailto:contact@meso-star.com">|Méso|Star&gt;</a>.<br> -Copyright &#169; 2010-2014 Institut Mines-Télécom Albi-Carmaux, Université -Bordeaux 1.</p> - -<p>PPart_LW is free software released under the GPLv2+ license: GNU GPL version 2 -or later. You can freely study, modify or extend it. You are also welcome to -redistribute it under certain conditions; refer to the <a -href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">license</a> -for details.</p> - diff --git a/art/ppart_lw.md b/art/ppart_lw.md @@ -0,0 +1,111 @@ +# PPart\_LW + +The purpose of PPart\_LW is to perform radiative transfer computations using +k-distribution data sets (that can be produced by +[Kdistribution](kdistribution.html), or any other code). +This code is based on analytic radiative transfer solutions that are +valid only in the case of a emitting and absorbing, but non-scattering, +atmosphere. +This code should therefore be used, in the case of the terrestrial +atmosphere, for clear-sky LW computations only. + +[![Brightness temperature](images/Tb.svg)](images/Tb.svg) + +> Brightness temperature in the [4-20] micrometers range, for a +> Mid-Latitude Summer standard atmospheric profile. + +## Quick start + +- Sources: [tarball](downloads/ppart_lw.tgz) / + [pgp](downloads/ppart_lw.tgz.sig) + +### Prerequisites + +Only a fortran compiler is needed (no external libraries). +The `gfortran` compiler has been used for development. + +### Installation + +Download and extract the archive (`tar -zxvf ppart_lw.tgz`); then move +into the `PPart_LW` directory, and use the `make all` command to +compile. +You should use the `make clean` command in the case you want to +recompile from scratch only (when include files are modified). +If only source files are modified, the `make all` command will recompile +modified files. + +### Run + +PPart\_LW has been parallelized, which means you will have to launch it +using the `mpirun` command: + + mpirun -np <NPROCS> ./PPart.exe + +with `<NPROCS>` the number of processes requested for the +computation; +MacOS users might encounter a error where the OS considers the user +requested a number of processes higher than recommended. +You can bypass it using the `-oversubscribe` option: + + mpirun -oversubscribe -np <NPROCS> ./PPart.exe + +## Usage + +The code can run either using a pre-computed (and provided) +k-distribution data set among 5 standard atmospheric profiles, or from a +user-defined spectral data file. +This user-defined spectral data file should be name +`ecrad_opt_prop.txt`, and located into the `/data` directory. The format +of this file can be found in the `/Doc/gas_opt_prop.pdf` documentation +file, and a example `/Doc/input.for` source file provides a fortran +subroutine for reading this file. +An example `ecrad_opt_prop.txt` file is provided in the `/data` +directory (for the Mid-Latitude Summer profile). + +Simulation input is provided through the `data.in` and `options.in` +files (located in the main `PPart_LW` directory): + +- the `options.in` file provides the possibility to use either a + (provided) standard atmospheric data set or a user-defined spectral + data set (in this case, the `/data/ecrad_opt_prop.txt` file has to be + found). + It provides the possibility to use a specular or diffuse reflective + ground, and the possibility to perform the spectral integration over a + limited number of spectral intervals. + Then the user should specify whether a angular integration should be + performed or a single-direction radiative transfer computation is + required. + Finally, the user can disable the computation of a NER matrix for + every spectral interval. + +- the `data.in` file lets the user specify the spectral integration + domain (if a limited spectral domain should be used), and the + direction to use for a single-direction radiative transfer + computation. + Finally, the user should specify the index of the standard atmospheric + profile to use, when the corresponding option has been selected. + +Results are located into the `/results` directory; several gnuplot +scripts are provided in order to visualise various results. +When a NER matrix has been computed for every spectral interval, a +script named `anim.bash` can be found in the `/results/NER_animation` +directory; +this script will produce a animated gif of these NER matrices (the +spectral interval evolving with time). +This script requires the GraphicsMagick package. + + +## License + +Copyright © 2014-2018 |Méso|Star> +([contact@meso-star.com](mailto:contact@meso-star.com)) +Copyright © 2010-2014 Institut Mines-Télécom Albi-Carmaux +Copyright © 2010-2014 Université Bordeaux 1 + +PPart\_LW is free software released under the GPLv2+ license: GNU GPL version 2 +or later. +You can freely study, modify or extend it. +You are also welcome to redistribute it under certain conditions; refer +to the +[license](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) for +details. diff --git a/art/ppart_sw.html.in b/art/ppart_sw.html.in @@ -1,130 +0,0 @@ -<header> - <h1>PPart SW - <span class=subtitle> - Plane-Parallel atmospheric radiative transfer - ShortWave - </span> - </h1> -</header> - -<div class="news"> - <p><b>Download PPart_SW</b></p> - <ul> - <li>Sources: - <a href="downloads/ppart_sw.tgz">tarball</a> / - <a href="downloads/ppart_sw.tgz.sig">pgp</a></li> - </ul> -</div> - - -<p>The purpose of PPart_SW is to perform radiative transfer computations using -k-distribution data sets (that can be produced by <a -href="kdistribution.html">Kdistribution</a>, or any other code). This code is -based on analytic radiative transfer solutions that are valid only in the case -of a emitting and absorbing, but non-scattering, atmosphere. This code should -therefore not be used in the case of the SW domain. However, Rayleigh -scattering is not actually taken into account by the code. It can be used as a -toy-model in which only the transmission of incoming SW radiation is taken into -account (as well as the emitted radiation when the atmosphere is hot -enough).</p> - -<h2>Installation</h2> - -<div class="img" style="width: 20em"> - <a href="si_flux.svg"> - <img src="si_flux.svg" alt="si_flux"> - </a> - <div class="caption"> - Spectrally integrated SW flux profiles (upward, downward and net) as a - function of altitude for a Mid-Latitude Summer standard atmosphere. - </div> -</div> - -<p>Download and extract the archive (<code>tar -zxvf ppart_sw.tgz</code>); then -move into the <code>PPart_SW</code> directory, and use the <code>make -all</code> command to compile. You should use the <code>make clean</code> -command in the case you want to recompile from scratch only (when include files -are modified). If only source files are modified, the <code>make all</code> -command will recompile modified files.</p> - -<p>PPart_SW has been parallelized, which means you will have to launch it using -the <code>mpirun</code> command:</p> - -<pre class=code> -mpirun -np &lt;NPROCS&gt; ./PPart.exe -</pre> - -<p>with <code>&lt;NPROCS&gt;</code> the number of processes requested for the -computation; MacOS users might encounter a error where the OS considers the -user requested a number of processes higher than recommended. You can bypass it -using the <code>-oversubscribe</code> option:</p> - -<pre class=code> -mpirun -oversubscribe -np &lt;NPROCS&gt; ./PPart.exe -</pre> - -<p><b>Prerequistes</b>: only a fortran compiler is needed (no external -libraries). the gfortran compiler has been used for development, but other -common compilers should work too (ifort, pgfortran, <i>etc.</i>)</p> - -<h2>Usage</h2> - -<p>The code can run either using a pre-computed (and provided) k-distribution data -set among 5 standard atmospheric profiles, or from a user-defined spectral data -file. This user-defined spectral data file should be name -<code>ecrad_opt_prop.txt</code> and located into the <code>data</code> -directory. The format of this file can be found in the -<code>/Doc/gas_opt_prop.pdf</code> documentation file, and a example -<code>/Doc/input.for</code> source file provides a fortran subroutine for -reading this file. A example <code>ecrad_opt_prop.txt</code> file is provided -in the <code>/data</code> directory (for the Mid-Latitude Summer profile).</p> - -<p>Since this code has been adapted to the SW range, it also needs the incoming -SW solar radiation at the top of the atmosphere. This data has to be provided -in the <code>/data/incoming_sw.txt</code> input data file. A example file is -provided in the case of the Earth atmosphere. It should be usable for other -planets of the solar system by rescaling the values of the input solar -flux.</p> - -<p>Simulation input is provided through the <code>data.in</code> and -<code>options.in</code> files (located in the main <code>PPart_SW</code> -directory):</p> - -<ul> - <li> the <code>options.in</code> file provides the possibility to use either - a (provided) standard atmospheric data set or a user-defined spectral data - set (in this case, the <code>/data/ecrad_opt_prop.txt</code> file has to be - found). It provides the possibility to use a specular or diffuse reflective - ground, and the possibility to perform the spectral integration over a - limited number of spectral intervals. Then the user should specify whether a - angular integration should be performed or a single-direction radiative - transfer computation is required. Finally, the user can disable the - computation of a NER matrix for every spectral interval.</li> - - <li> the <code>data.in</code> file lets the user specify the spectral - integration domain (if a limited spectral domain should be used), and the - direction to use for a single-direction radiative transfer computation. - Finally, the user should specify the index of the standard atmospheric - profile to use, when the corresponding option has been selected.</li> -</ul> - -<p>Results are located into the <code>/results</code> directory; several -gnuplot scripts are provided in order to visualise various results. When a NER -matrix has been computed for every spectral interval, a script named -<code>anim.bash</code> can be found in the <code>/results/NER_animation</code> -directory; this script will produce a animated gif of these NER matrices (the -spectral interval evolving with time). This script requires the GraphicsMagick -package.</p> - -<h2>License</h2> - -<p>Copyright &#169; 2014-2018 <a -href="mailto:contact@meso-star.com">|Méso|Star&gt;</a>.<br> -Copyright &#169; 2010-2014 Institut Mines-Télécom Albi-Carmaux, Université -Bordeaux 1.</p> - -<p>PPart_SW is free -software released under the GPLv2+ license: GNU GPL version 2 or later. You -can freely study, modify or extend it. You are also welcome to redistribute it -under certain conditions; refer to the <a -href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">license</a> -for details.</p> diff --git a/art/ppart_sw.md b/art/ppart_sw.md @@ -0,0 +1,122 @@ +# PPart\_SW + +The purpose of PPart\_SW is to perform radiative transfer computations +using k-distribution data sets (that can be produced by +[Kdistribution](kdistribution.html), or any other code). +This code is based on analytic radiative transfer solutions that are +valid only in the case of a emitting and absorbing, but non-scattering, +atmosphere. +This code should therefore not be used in the case of the SW domain. +However, Rayleigh scattering is not actually taken into account by the +code. +It can be used as a toy-model in which only the transmission of incoming +SW radiation is taken into account (as well as the emitted radiation +when the atmosphere is hot enough). + +[![Spectrally integrated SW flux](images/si_flux.svg)](images/si_flux.svg) + +> Spectrally integrated SW flux profiles (upward, downward and net) as a +> function of altitude for a Mid-Latitude Summer standard atmosphere. + +## Quick start + +- Sources: [tarball](downloads/ppart_sw.tgz) / + [pgp](downloads/ppart_sw.tgz.sig) + +### Prerequisites + +Only a fortran compiler is needed (no external libraries). +The `gfortran` compiler has been used for development. + +### Installation + +Download and extract the archive (`tar -zxvf ppart_sw.tgz`); then move +into the `PPart_SW` directory, and use the `make all` command to +compile. +You should use the `make clean` command in the case you want to +recompile from scratch only (when include files are modified). +If only source files are modified, the `make all` command will recompile +modified files. + +### Run + +PPart\_SW has been parallelized, which means you will have to launch it +using the `mpirun` command: + + mpirun -np <NPROCS> ./PPart.exe + +with `<NPROCS>` the number of processes requested for the computation; +MacOS users might encounter a error where the OS considers the user +requested a number of processes higher than recommended. +You can bypass it using the `-oversubscribe` option: + + mpirun -oversubscribe -np <NPROCS> ./PPart.exe + +## Usage + +The code can run either using a pre-computed (and provided) +k-distribution data set among 5 standard atmospheric profiles, or from a +user-defined spectral data file. +This user-defined spectral data file should be name `ecrad_opt_prop.txt` +and located into the `data` directory. +The format of this file can be found in the `/Doc/gas_opt_prop.pdf` +documentation file, and a example `/Doc/input.for` source file provides +a fortran subroutine for reading this file. +A example `ecrad_opt_prop.txt` file is provided in the `/data` directory +(for the Mid-Latitude Summer profile). + +Since this code has been adapted to the SW range, it also needs the +incoming SW solar radiation at the top of the atmosphere. +This data has to be provided in the `/data/incoming_sw.txt` input data +file. +A example file is provided in the case of the Earth atmosphere. +It should be usable for other planets of the solar system by rescaling +the values of the input solar flux. + +Simulation input is provided through the `data.in` and `options.in` +files (located in the main `PPart_SW` directory): + +- the `options.in` file provides the possibility to use either a + (provided) standard atmospheric data set or a user-defined spectral + data set (in this case, the `/data/ecrad_opt_prop.txt` file has to be + found). + It provides the possibility to use a specular or diffuse reflective + ground, and the possibility to perform the spectral integration over a + limited number of spectral intervals. + Then the user should specify whether a angular integration should be + performed or a single-direction radiative transfer computation is + required. + Finally, the user can disable the computation of a NER matrix for + every spectral interval. + +- the `data.in` file lets the user specify the spectral integration + domain (if a limited spectral domain should be used), and the + direction to use for a single-direction radiative transfer + computation. + Finally, the user should specify the index of the standard atmospheric + profile to use, when the corresponding option has been selected. + +Results are located into the `/results` directory; +several gnuplot scripts are provided in order to visualise various +results. +When a NER matrix has been computed for every spectral interval, a +script named `anim.bash` can be found in the `/results/NER_animation` +directory; +this script will produce a animated gif of these NER matrices (the +spectral interval evolving with time). +This script requires the GraphicsMagick package. + +## License + +Copyright © 2014-2018 |Méso|Star> +([contact@meso-star.com](mailto:contact@meso-star.com)) +Copyright © 2010-2014 Institut Mines-Télécom Albi-Carmaux +Copyright © 2010-2014 Université Bordeaux 1 + +PPart\_SW is free software released under the GPLv2+ license: GNU GPL version 2 +or later. +You can freely study, modify or extend it. +You are also welcome to redistribute it under certain conditions; refer +to the +[license](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) for +details. diff --git a/build_htaccess.sh b/build_htaccess.sh @@ -1,66 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -if [ $# -lt 1 ]; then - printf "Usage: %s <remote-dir>\n" "$0" >&2 - exit 1 -fi - -redirections="\ - index.html misc/about-fr.html - high-tune/high-tune.html htrdr/htrdr.html - high-tune/starter-pack.html htrdr/htrdr-atmosphere-spk.html - high-tune/downloads/gas_opt_prop_en.pdf htrdr/downloads/gas_opt_prop_en.pdf - high-tune/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz - high-tune/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz.sig - high-tune/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz - high-tune/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz.sig - high-tune/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz - high-tune/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz.sig - high-tune/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz - high-tune/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz.sig - high-tune/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz - high-tune/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz.sig - high-tune/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz - high-tune/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz.sig - high-tune/downloads/HRES_ARMCu.mp4 htrdr/downloads/HRES_ARMCu.mp4 - high-tune/man/man1/htpp.1.html htrdr/man/man1/htpp.1.html - high-tune/man/man1/htrdr.1.html htrdr/man/man1/htrdr.1.html - high-tune/man/man1/htrdr-atmosphere.1.html htrdr/man/man1/htrdr-atmosphere.1.html - high-tune/man/man1/htrdr-combustion.1.html htrdr/man/man1/htrdr-combustion.1.html - high-tune/man/man1/les2htcp.1.html htrdr/man/man1/les2htcp.1.html - high-tune/man/man5/atrri.5.html htrdr/man/man5/atrri.5.html - high-tune/man/man5/atrtp.5.html htrdr/man/man5/atrtp.5.html - high-tune/man/man5/htcp.5.html htrdr/man/man5/htcp.5.html - high-tune/man/man5/htmie.5.html htrdr/man/man5/htmie.5.html - high-tune/man/man5/htrdr-image.5.html htrdr/man/man5/htrdr-image.5.html - high-tune/man/man5/htrdr-materials.5.html htrdr/man/man5/htrdr-materials.5.html - high-tune/man/man5/htrdr-obj.5.html htrdr/man/man5/htrdr-obj.5.html - high-tune/man/man5/mrumtl.5.html htrdr/man/man5/mrumtl.5.html - high-tune/man/man5/sth.5.html htrdr/man/man5/sth.5.html - htrdr/man/man1/htrdr-planeto.1.html htrdr/man/man1/htrdr-planets.1.html" - -remote_dir=$1 - -echo "Options -Indexes" - -printf "%s\n" "${redirections}" | \ -while read -r i; do - from=$(printf "%s" "${i}" | awk '{print $1}') - to=$(printf "%s" "${i}" | awk '{print $2}') - printf "Redirect %s/%s %s/%s\n" "${remote_dir}" "${from}" "${remote_dir}" "${to}" -done diff --git a/config.mk b/config.mk @@ -1,17 +0,0 @@ -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# Destination where to synchronise data -PREFIX=OVH:www/projects diff --git a/configure.sh b/configure.sh @@ -1,48 +0,0 @@ -#!/bin/sh - -set -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# This script checks that the commands expected by the build process exist - -commands="\ - envsubst - gpg - gzip - make - man2html - mandoc - rsync - shellcheck - tar - tidy" - -printf "%s\n" "${commands}" | while read -r i; do - if ! command -v "${i}" > /dev/null; then - printf "\e[1;31mError\e[0m:%s: command not found\n" "${i}" - exit 1 - fi -done - -if ! command -v "markdown" > /dev/null \ -&& ! command -v "markdown2" > /dev/null \ -&& ! command -v "markdown_py" > /dev/null; then - printf "\e[1;31mError\e[0m: no valid 'markdown' command was found\n" - exit 1 -fi - -echo "configure done" diff --git a/configure_targets.sh b/configure_targets.sh @@ -1,84 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -sig() -{ - for i in "$@"; do - printf "%s.sig: %s\n" "${i}" "${i}" - printf "\t@echo Signing %s\n" "${i}" - printf "\t@gpg --yes -a -o %s.sig --detach-sign %s\n" "${i}" "${i}" - done -} - -lint() -{ - dir=$(dirname "$0") - for i in "$@"; do - printf "%s.lint: %s %s/lint_html.sh\n" "${i}" "${i}" "${dir}" - printf "\t@echo Linting %s\n" "${i}" - printf "\t@PATH+=:%s sh lint_html.sh %s\n" "${dir}" "${i}" - done -} - -man() -{ - if [ $# -lt 2 ]; then - printf "Usage: %s <section> <version> [man...]" "$0" >&2 - exit 1 - fi - - section=$1 - version=$2 - dir=$(dirname "$0") - - shift 2 - for i in "$@"; do \ - man=${i#*share/}.html - printf "man: %s\n" "${man}" - printf "%s: %s %s/meso-menu.sh %s/convert_man.sh\n" \ - "${man}" "${i}" "${dir}" "${dir}" - printf "\t@echo \"Building %s\"\n" "${man}" - printf "\t@mkdir -p %s\n" "${man%/*}" - printf "\t@PATH+=:%s sh convert_man.sh %s %s %s %s\n" \ - "${dir}" "${section}" "${i}" "${man}" "${version}" - done -} - -mdoc() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s <section> [mdoc ...]" "$0" >&2 - exit 1 - fi - - section=$1 - dir=$(dirname "$0") - - shift 1 - for i in "$@"; do \ - mdoc=${i#*share/}.html - printf "man: %s\n" "${mdoc}" - printf "%s: %s %s/meso-menu.sh %s/convert_mdoc.sh\n" \ - "${mdoc}" "${i}" "${dir}" "${dir}" - printf "\t@echo \"Building %s\"\n" "${mdoc}" - printf "\t@mkdir -p %s\n" "${mdoc%/*}" - printf "\t@PATH+=:%s sh convert_mdoc.sh %s %s %s\n" \ - "${dir}" "${section}" "${i}" "${mdoc}" - done -} - -"$@" diff --git a/convert_man.sh b/convert_man.sh @@ -1,83 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -. meso-menu.sh - -if [ $# -lt 4 ]; then - echo "Usage: $0 <section> <input> <output> <version>" >&2 - exit 1 -fi - -section="$1" -input="$2" -output="$3" -version="$4" - -man_name=${input##*/} -man_name=${man_name%.*} -man_section=$(echo "${input}" \ - | sed 's/.*man\([[:digit:]]\{1\}[[:alpha:]]\{0,1\}\)\/.*/\1/g') - -{ - print_header -s "${section}" -n "${man_name}" -r ../../../ - echo "<header>" - echo " <h1>${man_name}(${man_section})</h1>"; - echo "</header>" - - # First, we fix the input man to avoid unexpected html conversions. For - # example, the .P macros are not handled by man2html and the .PP macro followed - # by a .RE macro is badly converted while the reverse works, i.e. the .RE macro - # followed by the .PP macro. - # - # After html conversion, the output file is modified to remove its header and - # its footer (that are replaced by ours), and to fix some html patterns that - # are not correctly handled by tidy (see below) - sed 's/^\.P$/.PP/' "${input}" \ - | sed '/^\.PP$/{$!{N;s/\.PP\n\.RE/.RE\n.PP/;t sub;P;D;:sub}}' \ - | man2html -r \ - | tail -n +10 \ - | sed '/^<HR>$/,$d' \ - | sed 's/\(\&nbsp;\)\{1,\}/\&nbsp;/g' \ - | sed 's/^<A NAME="[[:alpha:]]\{0,\}">\&nbsp;<\/A>//g' \ - | sed 's/<TT>//g' \ - | sed 's/<\/TT>//g' \ - | sed 's/<DL COMPACT>/<DL>/g' \ - | sed '/^<PRE>$/{$!{N;s/<PRE>\n<DL><DT><DD>/<DL><DT><DD><PRE>/;t sub;P;D;:sub}}' - print_footer -} > "${output}" - -# Remove hyperlink on csplit, feh, gnuplot, sed, mmap and mpirun commands -# Fix the hyperlink toward the GPLv3+ license -# Remove unexpected link on sqrt(2) -# Fix the man2html issues that translates the ' char in cq -tmp=$(mktemp) -chmod 644 "${tmp}" -sed\ - -e 's/<B><A HREF="\.\.\/man1\/csplit\.1\.html">csplit<\/A><\/B>/csplit/g'\ - -e 's/<B><A HREF="\.\.\/man1\/feh\.1\.html">feh<\/A><\/B>/feh/g'\ - -e 's/<B><A HREF="\.\.\/man1\/gnuplot\.1\.html">gnuplot<\/A><\/B>/gnuplot/g'\ - -e 's/<B><A HREF="\.\.\/man1\/sed\.1\.html">sed<\/A><\/B>/sed/g'\ - -e 's/<B><A HREF="\.\.\/man1\/mpirun\.1\.html">mpirun<\/A><\/B>/mpirun/g'\ - -e 's/<B><A HREF="\.\.\/man2\/mmap\.2\.html">mmap<\/A><\/B>/mmap/g'\ - -e 's/gpl\.html\.">\(.*\).<\/A>/gpl.html">\1<\/A>./g'\ - -e 's/<A HREF="\.\.\/man2\/sqrt\.2\.html">sqrt<\/A>/sqrt/g'\ - -e "s/cq\([a-z]\)\>/'\1/g" "${output}" > "${tmp}" - -mv "${tmp}" "${output}" - -# Clean the html file generated by man2html and lint it if necessary -tidy --show-info no -m "${output}" > /dev/null 2>&1 || sh lint_html.sh "${output}" diff --git a/convert_mdoc.sh b/convert_mdoc.sh @@ -1,58 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -set -e - -. meso-menu.sh - -section="$1" -input="$2" -output="$3" - -if [ $# -lt 3 ]; then - printf "usage: %s <section> <input> <output>\n" "${0##*/}" >&2 - exit 1 -fi - -man_name=${input##*/} -man_name=${man_name%.*} - -root="../../../" - -{ - print_header -s "${section}" -n "${man_name}" -r "${root}" - mandoc -O man=../man%S/%N.%S.html,fragment -I os=UNIX -T html "${input}" \ - | sed \ - -e 's/"Nm">htrdr-atmosphere/"Nm">htrdr\&#8209;atmosphere/g' \ - -e 's/"Nm">htrdr-combustion/"Nm">htrdr\&#8209;combustion/g' \ - -e 's/"Nm">htrdr-image/"Nm">htrdr\&#8209;image/g' \ - -e 's/"Nm">htrdr-materials/"Nm">htrdr\&#8209;materials/g' \ - -e 's/"Nm">htrdr-planets/"Nm">htrdr\&#8209;planets/g' \ - -e "s#href=\"../man1/htpp.1.html\"#href=\"${root}htrdr/man/man1/htpp.1.html\"#g" \ - -e "s#href=\"../man5/htrdr-image.5.html\"#href=\"${root}htrdr/man/man5/htrdr-image.5.html\"#g" \ - -e 's/<a class="Xr"[^>]\{0,\}>csplit(1)<\/a>/<a class "Xr">csplit(1)<\/a>/g' \ - -e 's/<a class="Xr"[^>]\{0,\}>gnuplot(1)<\/a>/<a class "Xr">gnuplot(1)<\/a>/g' \ - -e 's/<a class="Xr"[^>]\{0,\}>mmap(2)<\/a>/<a class "Xr">mmap(2)<\/a>/g' \ - -e 's/<a class="Xr"[^>]\{0,\}>mpirun(1)<\/a>/<a class "Xr">mpirun(1)<\/a>/g' \ - -e 's/<a class="Xr"[^>]\{0,\}>ppm(5)<\/a>/<a class "Xr">ppm(5)<\/a>/g' \ - -e 's/<a class="Xr"[^>]\{0,\}>sysconf(3)<\/a>/<a class "Xr">sysconf(3)<\/a>/g' \ - -e 's/<a class="Xr"[^>]\{0,\}>wordexp(3)<\/a>/<a class "Xr">wordexp(3)<\/a>/g' - - print_footer -} > "${output}" - -sh lint_html.sh "${output}" diff --git a/fonts/courier-prime/Courier Prime Bold Italic.ttf b/fonts/courier-prime/Courier Prime Bold Italic.ttf @@ -0,0 +1 @@ +#$# git-wad cfc77df22c0516962b6ba841e63c59ad8c2f95aff4d7a44f6328eeaaeff7e7d8 91908 +\ No newline at end of file diff --git a/fonts/courier-prime/Courier Prime Bold.ttf b/fonts/courier-prime/Courier Prime Bold.ttf @@ -0,0 +1 @@ +#$# git-wad aa5a0a31d25dac006fe2d71fc6ff0feff250bc6de3b3c81b7e9d3a58e1329b52 91368 +\ No newline at end of file diff --git a/fonts/courier-prime/Courier Prime Italic.ttf b/fonts/courier-prime/Courier Prime Italic.ttf @@ -0,0 +1 @@ +#$# git-wad e1c9bde2ef55f90a5619cff5dac0d5674700045d666a7d2cddee1879bb83d552 96196 +\ No newline at end of file diff --git a/fonts/Courier Prime.ttf b/fonts/courier-prime/Courier Prime.ttf diff --git a/fonts/courier-prime/OFL.txt b/fonts/courier-prime/OFL.txt @@ -0,0 +1,94 @@ +Copyright (c) 2013, Quote-Unquote Apps (http://quoteunquoteapps.com), +with Reserved Font Name Courier Prime. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/htrdr/.gitignore b/htrdr/.gitignore @@ -1,8 +1,12 @@ +htrdr.md htrdr.html htrdr-docs.html htrdr-mods.html +htrdr-atmosphere-spk.md htrdr-atmosphere-spk.html +htrdr-combustion-spk.md htrdr-combustion-spk.html +htrdr-planets-spk.md htrdr-planets-spk.html htrdr-*-GNU-Linux64/ htrdr_*_doc/ diff --git a/htrdr/CLEMENT.jpg b/htrdr/CLEMENT.jpg @@ -1 +0,0 @@ -#$# git-wad 9d6c853f3abbf14375eca49457613c9bab0d4c8f6a457e2c4e940273d9a1ccbf 280047 -\ No newline at end of file diff --git a/htrdr/DZVAR_ortho.jpg b/htrdr/DZVAR_ortho.jpg @@ -1 +0,0 @@ -#$# git-wad 16ac882503e76e5c1a20b6a22148b797d995bf4c0d62b6783c203d093c0dd992 393861 -\ No newline at end of file diff --git a/htrdr/Makefile b/htrdr/Makefile @@ -1,267 +0,0 @@ -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -.POSIX: - -include ../config.mk - -HTRDR_VERSION=0.11 -HTRDR_DIR=htrdr_$(HTRDR_VERSION)_doc -HTRDR_ARCH=downloads/$(HTRDR_DIR).tar.gz -HTRDR_README=$(HTRDR_DIR)/share/doc/htrdr/README.md - -ATMSPK_VERSION=0.8.0 -ATMSPK_DIR=htrdr-Atmosphere-Starter-Pack-$(ATMSPK_VERSION) -ATMSPK_ARCH=downloads/$(ATMSPK_DIR).tar.gz -ATMSPK_README=$(ATMSPK_DIR)/README.md -ATMSPK_PKG=\ - downloads/htrdr-Atmosphere-Starter-Pack-0.8.0.tar.gz\ - downloads/htrdr-Atmosphere-Starter-Pack-0.7.0.tar.gz\ - downloads/htrdr-Atmosphere-Starter-Pack-0.6.1.tar.gz\ - downloads/High-Tune-Starter-Pack-0.6.0.tar.gz\ - downloads/High-Tune-Starter-Pack-0.5.0.tar.gz\ - downloads/High-Tune-Starter-Pack-0.4.0.tar.gz\ - downloads/High-Tune-Starter-Pack-0.3.0.tar.gz\ - downloads/High-Tune-Starter-Pack-0.2.0.tar.gz\ - downloads/High-Tune-Starter-Pack-0.1.1.tar.gz -ATMSPK_SIG=$(ATMSPK_PKG:=.sig) - -COMSPK_VERSION=0.1.0 -COMSPK_DIR=htrdr-Combustion-Starter-Pack-$(COMSPK_VERSION) -COMSPK_ARCH=downloads/$(COMSPK_DIR).tar.gz -COMSPK_README=$(COMSPK_DIR)/README.md.in -COMSPK_PKG=\ - downloads/htrdr-Combustion-Starter-Pack-0.1.0.tar.gz\ - downloads/htrdr-Combustion-Starter-Pack-0.0.0.tar.gz -COMSPK_SIG=$(COMSPK_PKG:=.sig) - -PLANETSSPK_VERSION=0.1.0 -PLANETSSPK_DIR=htrdr-Planets-Starter-Pack-$(PLANETSSPK_VERSION) -PLANETSSPK_ARCH=downloads/$(PLANETSSPK_DIR).tar.gz -PLANETSSPK_README=$(PLANETSSPK_DIR)/README.md.in -PLANETSSPK_PKG=\ - downloads/htrdr-Planets-Starter-Pack-0.1.0.tar.gz -PLANETSSPK_SIG=$(PLANETSSPK_PKG:=.sig) - -MAN=\ - $(HTRDR_DIR)/share/man/man1/htpp.1\ - $(HTRDR_DIR)/share/man/man1/htrdr.1\ - $(HTRDR_DIR)/share/man/man1/htrdr-atmosphere.1\ - $(HTRDR_DIR)/share/man/man1/htrdr-combustion.1\ - $(HTRDR_DIR)/share/man/man1/htrdr-planets.1\ - $(HTRDR_DIR)/share/man/man1/les2htcp.1\ - $(HTRDR_DIR)/share/man/man5/atrri.5\ - $(HTRDR_DIR)/share/man/man5/atrtp.5\ - $(HTRDR_DIR)/share/man/man5/htcp.5\ - $(HTRDR_DIR)/share/man/man5/htmie.5\ - $(HTRDR_DIR)/share/man/man5/htrdr-image.5\ - $(HTRDR_DIR)/share/man/man5/htrdr-materials.5\ - $(HTRDR_DIR)/share/man/man5/htrdr-obj.5\ - $(HTRDR_DIR)/share/man/man5/mrumtl.5\ - $(HTRDR_DIR)/share/man/man5/rngt.5\ - $(HTRDR_DIR)/share/man/man5/rnpfi.5\ - $(HTRDR_DIR)/share/man/man5/rnrl.5\ - $(HTRDR_DIR)/share/man/man5/rnsf.5\ - $(HTRDR_DIR)/share/man/man5/rnsl.5\ - $(HTRDR_DIR)/share/man/man5/rnsp.5\ - $(HTRDR_DIR)/share/man/man5/sars.5\ - $(HTRDR_DIR)/share/man/man5/sbuf.5\ - $(HTRDR_DIR)/share/man/man5/sck.5\ - $(HTRDR_DIR)/share/man/man5/smsh.5 - -OVERVIEW_IMG=\ - CLEMENT.jpg\ - CLEMENT_lw_9000_10000.jpg\ - downward_flux_500x500x2048_sw_380_4000_879.349.jpg\ - downward_flux_500x500x2048_lw_4000_100000_425.156.jpg\ - downloads/teapot_city_clouds.mp4\ - gulder_horizontal_slides.jpg\ - gulder_sideview.jpg\ - R8tr3.1.ARMCu.OUT.218.jpg\ - titan_1280x960x4096.jpg\ - titan_transit.jpg - -ATMSPK_IMG=\ - DZVAR.jpg\ - DZVAR_ortho.jpg\ - DZVAR2.jpg\ - L12km_BOMEX.jpg\ - L25_Fire.jpg\ - city.jpg\ - city_thin_lens.jpg - -COMSPK_IMG=\ - dummy_medium.jpg\ - dummy_medium_clipped.jpg\ - gulder_lateral.jpg - -PLANETSSPK_IMG=\ - random01_visible.jpg\ - random01_LW_10-12um.jpg - -MODS_IMG=\ - mods/Rendering_icif_district_spp200.jpg\ - mods/Ebudget_Streetcanyon_Broadband.svg\ - mods/MRT_map_icif_district_day.svg - -IMG=$(OVERVIEW_IMG) $(ATMSPK_IMG) $(COMSPK_IMG) $(PLANETSSPK_IMG) $(MODS_IMG) -HTML=\ - htrdr.html\ - htrdr-atmosphere-spk.html\ - htrdr-combustion-spk.html\ - htrdr-planets-spk.html\ - htrdr-docs.html\ - htrdr-mods.html - -build: .sig .man - @$(MAKE) -fMakefile -f .sig -f .man build_all - -build_all: $(HTML) man - -clean: - @echo "Cleaning generated files" - @rm -rf man - @rm -f .sig .lint .man $(HTML) $(HTML:=.err) - -distclean: clean - @echo "Cleaning PGP signatures and extracted files" - @rm -f\ - $(ATMSPK_SIG)\ - $(ATMSPK_README)\ - $(COMSPK_SIG)\ - $(COMSPK_README)\ - $(PLANETSSPK_SIG)\ - $(PLANETSSPK_README)\ - $(HTRDR_README)\ - $(MAN) - -install: build - @rsync -avzrR --delete-after --progress\ - downloads/gas_opt_prop_en.pdf\ - $(HTML)\ - $(IMG)\ - $$(find man -name "*.html")\ - $(ATMSPK_PKG)\ - $(ATMSPK_SIG)\ - $(COMSPK_PKG)\ - $(COMSPK_SIG)\ - $(PLANETSSPK_PKG)\ - $(PLANETSSPK_SIG)\ - $(PREFIX)/htrdr/ - -htrdr_build.sh: ../meso-menu.sh - @touch $@ - -################################################################################ -# Overview -################################################################################ -htrdr.html: \ - htrdr.html.in \ - $(HTRDR_README) \ - $(OVERVIEW_IMG) \ - htrdr_build.sh \ - Makefile - @echo "Building $@" - @$(SHELL) htrdr_build.sh overview $(HTRDR_README) $(HTRDR_VERSION) > $@ - -$(HTRDR_README) $(MAN): - @echo "Extracting data from $(HTRDR_ARCH)" - @tar -xz -f $(HTRDR_ARCH) $(HTRDR_README) $(MAN) - -################################################################################ -# Reference documentations -################################################################################ -htrdr-docs.html: htrdr-docs.html.in htrdr_build.sh - @echo "Building $@" - @$(SHELL) htrdr_build.sh documentations > $@ - -################################################################################ -# Atmosphere Starter-Pack -################################################################################ -htrdr-atmosphere-spk.html: \ - $(ATMSPK_IMG) \ - $(ATMSPK_SIG) \ - $(ATMSPK_README) \ - htrdr_build.sh - @echo "Building $@" - @$(SHELL) htrdr_build.sh atmspk $(ATMSPK_README) $(ATMSPK_VERSION) > $@ - -$(ATMSPK_README): - @echo "Extracting data from $(ATMSPK_ARCH)" - @tar -xz -f $(ATMSPK_ARCH) $(ATMSPK_README) - -################################################################################ -# Combustion Starter-Pack -################################################################################ -htrdr-combustion-spk.html: \ - $(COMSPK_IMG) \ - $(COMSPK_SIG) \ - $(COMSPK_README) \ - htrdr_build.sh - @echo "Building $@" - @$(SHELL) htrdr_build.sh comspk $(COMSPK_README) $(COMSPK_VERSION) > $@ - -$(COMSPK_README): - @echo "Extracting data from $(COMSPK_ARCH)" - @tar -xz -f $(COMSPK_ARCH) $(COMSPK_README) - -################################################################################ -# Planets Starter-Pack -################################################################################ -htrdr-planets-spk.html:\ - $(PLANETSSPK_IMG) \ - $(PLANETSSPK_SIG) \ - $(PLANETSSPK_README) \ - htrdr_build.sh - @echo "Building $@" - @$(SHELL) htrdr_build.sh planetsspk $(PLANETSSPK_README) $(PLANETSSPK_VERSION) \ - $(PLANETSSPK_ARCH) > $@ - -$(PLANETSSPK_README): - @echo "Extracting data from $(PLANETSSPK_ARCH)" - @tar -xz -f $(PLANETSSPK_ARCH) $(PLANETSSPK_README) - -################################################################################ -# Mods -################################################################################ -htrdr-mods.html: mods/htrdr-urban.html.in htrdr_build.sh $(MODS_IMG) - @echo "Building $@" - @$(SHELL) htrdr_build.sh mods > $@ - -################################################################################ -# Check files -################################################################################ -lint: build .lint - @$(MAKE) -fMakefile -f .lint lint_all - -lint_all: lint_shells $(HTML:=.lint) - -lint_shells: - @echo "Linting htrdr_build.sh" && shellcheck -o all -x htrdr_build.sh - -################################################################################ -# Miscellaneous -################################################################################ -.sig: Makefile ../configure_targets.sh - @echo "Setup .sig" - @$(SHELL) ../configure_targets.sh sig \ - $(ATMSPK_PKG) $(COMSPK_PKG) $(PLANETSSPK_PKG) > .sig - -.lint: Makefile ../configure_targets.sh - @echo "Setup .lint" - @$(SHELL) ../configure_targets.sh lint $(HTML) > .lint - -.man: Makefile ../configure_targets.sh - @echo "Setup .man" - @$(SHELL) ../configure_targets.sh mdoc htrdr $(MAN) > $@ diff --git a/htrdr/city.jpg b/htrdr/city.jpg @@ -1 +0,0 @@ -#$# git-wad 9fc72f6327d558ce1c2f9f0647295127af67a9279604affd7950ec5c12fcaabb 346144 -\ No newline at end of file diff --git a/htrdr/config.sh.in b/htrdr/config.sh.in @@ -0,0 +1,45 @@ +#!/bin/sh + +# htrdr +htrdr_version="0.11" +htrdr_dir="htrdr_${htrdr_version}_doc" +htrdr_arch="downloads/${htrdr_dir}.tar.gz" +htrdr_readme="${htrdr_dir}/share/doc/htrdr/README.md" + +# Atmosphere starter-pack +atmspk_version="0.8.0" +atmspk_dir="htrdr-Atmosphere-Starter-Pack-${atmspk_version}" +atmspk_arch="downloads/${atmspk_dir}.tar.gz" +atmspk_readme="${atmspk_dir}/README.md" + +# Combustion starter-pack +comspk_version="0.1.0" +comspk_dir="htrdr-Combustion-Starter-Pack-${comspk_version}" +comspk_arch="downloads/${comspk_dir}.tar.gz" +comspk_readme="${comspk_dir}/README.md.in" + +# Planets starter-pack +pntspk_version="0.1.0" +pntspk_dir="htrdr-Planets-Starter-Pack-${pntspk_version}" +pntspk_arch="downloads/${pntspk_dir}.tar.gz" +pntspk_readme="${pntspk_dir}/README.md.in" + +################################################################################ +# Helper function +################################################################################ +list_starter_packs() +( + printf '<table class="list">\n' + printf ' <tr><th>Version</th><th>Archive</th></tr>\n' + while read -r _i ; do + _version="$(echo "${_i}" | sed "s/.*Starter-Pack-\(.*\)\.tar.gz/\1/g")" + printf ' <tr>\n' + printf ' <td>%s</td>\n' "${_version}" + printf ' <td>\n' + printf ' [<a href="%s">tarball</a>]\n' "${_i}" + printf ' [<a href="%s.sig">pgp</a>]\n' "${_i}" + printf ' </td>\n' + printf ' </tr>\n' + done + printf '</table>\n\n' +) diff --git a/htrdr/downloads/High-Tune-0.0.0-r3-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.0.0-r3-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 71b26bcbf7863da87731d8df55792d4de3c81209e15f4e72316a2da955ec0a76 17983854 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.0.0-r3-Sources.tar.gz b/htrdr/downloads/High-Tune-0.0.0-r3-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad cb448b256841cc26a6d6e33b3adfa1cbc2d7a8b47c3c10fbe80364ce556acc31 562457 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.0.3-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.0.3-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 0c1c46bd59345b7f3f87e3d789cb1809dcca265ceaf3499c310555d03c1800a0 18747965 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.0.3-Sources.tar.gz b/htrdr/downloads/High-Tune-0.0.3-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad 1d625261d1aea7bb76ed30e1e2001ac7081e58c81abde1e3cba01c31e8d133c4 564112 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.0.4-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.0.4-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad ee4ed38f3c104027a7ea5758d6305171b7db3f4b58b511743e7053e80e8fe785 18763711 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.0.4-Sources.tar.gz b/htrdr/downloads/High-Tune-0.0.4-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad e59196367236cb9924aa5d8f2896bbb1db8e6d3f299512c4b4e5e1ec6aaa2410 492399 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.1.0-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.1.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad e77a90e8953b750c37ac179a9ca3ecb48bc8e605cdc8857b39de12951cd6e947 18764414 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.1.0-Sources.tar.gz b/htrdr/downloads/High-Tune-0.1.0-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad c0779c39e7831c1a49bb0bab5496fdf7c608b9345ea21d5b6713d08cc3fb5dc0 566282 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.1.0-r1-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.1.0-r1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 16262f1ff2b86abf51ec8e21ce7ceb43dc4d7140663dc12f979a35606dbc1c05 18760226 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.1.0-r1-Sources.tar.gz b/htrdr/downloads/High-Tune-0.1.0-r1-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad 09cf8deedb851d89629ed80e045153a3e57f6b135e54c8bd17991dac3278ff1b 568423 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.2.0-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.2.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 49d5faa8a2e211599e191dffa40b19e56c653d295673eb7e574ad92fea6e68fb 22078473 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.2.0-Sources.tar.gz b/htrdr/downloads/High-Tune-0.2.0-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad 7da2984b26e3a913f4e80b666ddbdc171145cd81c1d85b0aa319d4f284500725 585533 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.3.0-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.3.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 26b7c44b0af103bdf933fd068572c5a8259bab35abc6039eb93201149cea8ed1 22093396 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.3.0-Sources.tar.gz b/htrdr/downloads/High-Tune-0.3.0-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad e69a72633a9ad18866651296a39bfe2ca03644b3612be7764306bef5a3acd7d7 611247 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.5.0-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.5.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 8f26ff0e0029b7c203582ba68908b2e0a9e292a6eb4d7fadfaadb75513735b05 22156780 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.5.1-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.5.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad d07aeb5a85662c1ef2ec8d398156a1b1b1afe92fc2d90cbf6a9ca88fad821c8e 22166496 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.6.0-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.6.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 88a40049f0027db8880ba385d4c4bdae489142909246797da397f482938ba892 22176744 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.6.0-Sources.tar.gz b/htrdr/downloads/High-Tune-0.6.0-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad a20ad011e2aaf6e47a0e75d42a93c28069b60b3cfda2362b4ca85fc3134e1b74 670296 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.6.1-GNU-Linux64.tar.gz b/htrdr/downloads/High-Tune-0.6.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 1b908c5bb19e78c38242f78ae762ba64c50670c2e3900bd84b73c1ff7d370a15 22176825 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-0.6.1-Sources.tar.gz b/htrdr/downloads/High-Tune-0.6.1-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad 80c28ba8476bb40fb9e2c80466174939ef3fb97c7d10e57cea56de69d66ca782 670454 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz b/htrdr/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz @@ -1 +0,0 @@ -#$# git-wad b55b1300296c6198f50caf144d0ab9a4d6728e0323dff2ed83208449bd1ff245 1415193848 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz b/htrdr/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad 468c901fb7045c1a89a9a8af6ca800737e1c5e391ef3f060d3a18851728d32e5 1415201553 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz b/htrdr/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad 31d3f88c9f3706b5a25062b8cd62181ddfe026ccacfd8512efb7d4e22f080bd4 1475149993 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz b/htrdr/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad 7cde60c3bead7db556733e8cb5fd89819914efc38a1c7a92ba918de64dde677f 1475148322 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz b/htrdr/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad 8b54f8a3269fdea100b116959162a9b055a381bae1be43ebb0061f8f1fad2f02 1713729710 -\ No newline at end of file diff --git a/htrdr/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz b/htrdr/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad 41ae83a9d44d7659bcf08d6b7479f9290a45b735325e34d98db4cbe1ad916cc6 1801735219 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.10-GNU-Linux64.tar.gz b/htrdr/downloads/htrdr-0.10-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 558076a6de5b5bdbffe50c3bcb96a6280acfbe6c5d83461474fd82c21f08177c 33674 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.7.0-GNU-Linux64.tar.gz b/htrdr/downloads/htrdr-0.7.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 0fdcfee727df2f70d428901c7399dae73eb43bbb6df0a2c339728b4720a920b6 21719093 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.7.0-Sources.tar.gz b/htrdr/downloads/htrdr-0.7.0-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad b642fc3b1c48f34ee01d2f1d21f179bff5c73e345f1d291dc150102700d1503f 2841602 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.8.0-GNU-Linux64.tar.gz b/htrdr/downloads/htrdr-0.8.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad ed9e6b837f7c53e3e2788f99f316382c6f2666a490a9bfced08259ba190665ed 21740818 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.8.0-Sources.tar.gz b/htrdr/downloads/htrdr-0.8.0-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad 60abb3c36d7a99d3cf4c180eeb6a61179e065ef03b01c9f1e035ba7c7245cfee 2866562 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.8.1-GNU-Linux64.tar.gz b/htrdr/downloads/htrdr-0.8.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 968509dafccb8a4364291664add13cb7dc4b39004d293327f91ec0944270dccd 22010388 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.8.1-Sources.tar.gz b/htrdr/downloads/htrdr-0.8.1-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad 4f849241652d1bbfdc1c0fdc1451ffbb19175780771967925e50bbdfd72b31e4 2867598 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.9.0-GNU-Linux64.tar.gz b/htrdr/downloads/htrdr-0.9.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad a334ec66b373fb726928f4327fe351bb25d7c1edd973a24e6c09b7bd752842b4 22426877 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.9.0-Sources.tar.gz b/htrdr/downloads/htrdr-0.9.0-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad fe18291fe9837f3d2a0aa5ce980847d1132b6dd5a9e6aa2247fc41bfd8fe5697 3102706 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.9.1-GNU-Linux64.tar.gz b/htrdr/downloads/htrdr-0.9.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 2a821b1226bd20c939624b1bd73d2b936e69c50539e982f446608c8fdd7c94f6 22447523 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.9.1-Sources.tar.gz b/htrdr/downloads/htrdr-0.9.1-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad c0fe483e57fb5d09867c0cac2d4327133bf1ae02b5b9ada4ba6be7e66c62045d 3104292 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.9.2-GNU-Linux64.tar.gz b/htrdr/downloads/htrdr-0.9.2-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad cebdac73fbc56afe4ee99cba141033699901b3884c16a63f45be08c2c011de6a 16428674 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-0.9.2-Sources.tar.gz b/htrdr/downloads/htrdr-0.9.2-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad 2ace975c216d53653a638f5f177ee49c25bd7a9bfe3deedd58ff88593d104d68 1390354 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-Atmosphere-Starter-Pack-0.6.1.tar.gz b/htrdr/downloads/htrdr-Atmosphere-Starter-Pack-0.6.1.tar.gz @@ -1 +0,0 @@ -#$# git-wad e0211cab9de4611213bcd6807bb0dbd1e7a6a57bb37b20281b1021b27896c177 1801729478 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-Atmosphere-Starter-Pack-0.7.0.tar.gz b/htrdr/downloads/htrdr-Atmosphere-Starter-Pack-0.7.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad 791326c1eb5a4a6992cc31c6a14d12f68721d5ea6031082617069633b5993ec0 1801729400 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-Combustion-Starter-Pack-0.0.0.tar.gz b/htrdr/downloads/htrdr-Combustion-Starter-Pack-0.0.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad ed0cd14efbd19890ec6ba217890d8f814b74febe4763eb0e434a7d6995707b93 103817503 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-Planeto-Starter-Pack-0.0.0.tar.gz b/htrdr/downloads/htrdr-Planeto-Starter-Pack-0.0.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad 8eaa0eeca2a55d63e7745bbd893c73e0f2d3d0b51655080ceb643a2af2bc2323 142011948 -\ No newline at end of file diff --git a/htrdr/downloads/htrdr-Planeto-Starter-Pack-0.0.1.tar.gz b/htrdr/downloads/htrdr-Planeto-Starter-Pack-0.0.1.tar.gz @@ -1 +0,0 @@ -#$# git-wad 98190c985935c7677a43f15724e3212d100eb58da4afaa5efc87a0ffdfe2127a 142012265 -\ No newline at end of file diff --git a/htrdr/dummy_medium_clip.png b/htrdr/dummy_medium_clip.png @@ -1 +0,0 @@ -#$# git-wad 9be6773f7c00a9d624adced11b7594000f662f6e3ded9b9f106786f93fc2fd88 171106 -\ No newline at end of file diff --git a/htrdr/gulder_sideview.jpg b/htrdr/gulder_sideview.jpg @@ -1 +0,0 @@ -#$# git-wad 5f3eb49701408d77169ed56c7d41f0b01a8a82a58db52baad9a1fe7fdd4d3e4b 76037 -\ No newline at end of file diff --git a/htrdr/hooks/00-extract-archive.sh b/htrdr/hooks/00-extract-archive.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +. "./config.sh.in" + +>&2 printf 'Extracting %s\n' "${htrdr_arch}" +tar -xz -f "${htrdr_arch}" "${htrdr_dir}/share/man" "${htrdr_readme}" + +if ! [ -f "${atmspk_readme}" ]; then + >&2 printf 'Extracting %s\n' "${atmspk_arch}" + tar -xz -f "${atmspk_arch}" "${atmspk_readme}" +fi + +if ! [ -f "${comspk_readme}" ]; then + >&2 printf 'Extracting %s\n' "${comspk_arch}" + tar -xz -f "${comspk_arch}" "${comspk_readme}" +fi + +if ! [ -f "${pntspk_readme}" ]; then + >&2 printf 'Extracting %s\n' "${pntspk_arch}" + tar -xz -f "${pntspk_arch}" "${pntspk_readme}" +fi diff --git a/htrdr/hooks/00-sign-archives.sh b/htrdr/hooks/00-sign-archives.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +find downloads -name "*Starter-Pack*.tar.gz" \ +| sort \ +| while read -r i; do + + sign="${i}.sig" + + if ! [ -f "${sign}" ]; then + >&2 printf 'Signing %s\n' "${i}" + gpg --yes -a -o "${sign}" --detach-sign "${i}" + fi + + # Write the generated files to standard output to inform the build + # system which files it needs to handle during installation. + printf '%s/%s\n' "${PWD##*/}" "${i}.sig" + +done diff --git a/htrdr/hooks/01-generate-man.sh b/htrdr/hooks/01-generate-man.sh @@ -0,0 +1,79 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +. "./config.sh.in" + +######################################################################## +# Helper function +######################################################################## +man_pages() +{ + find "${htrdr_dir}/share/man" -type f -name "*.[1-9]" +} + +# Man to convert is submitted on stdin +man2html() # output_filename +{ + { + cd .. + sh ./scripts/generate_header.sh "${OLDPWD##*/}/$1" + mandoc -O man=../man%S/%N.%S.html,fragment -I os=UNIX -T html + cat ./templates/footer.html + cd "${OLDPWD}" + } \ + | sed \ + -e 's/"Nm">htrdr-atmosphere/"Nm">htrdr\&#8209;atmosphere/g' \ + -e 's/"Nm">htrdr-combustion/"Nm">htrdr\&#8209;combustion/g' \ + -e 's/"Nm">htrdr-image/"Nm">htrdr\&#8209;image/g' \ + -e 's/"Nm">htrdr-materials/"Nm">htrdr\&#8209;materials/g' \ + -e 's/"Nm">htrdr-planets/"Nm">htrdr\&#8209;planets/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>csplit(1)<\/a>/<a class "Xr">csplit(1)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>gnuplot(1)<\/a>/<a class "Xr">gnuplot(1)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>mmap(2)<\/a>/<a class "Xr">mmap(2)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>mpirun(1)<\/a>/<a class "Xr">mpirun(1)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>ppm(5)<\/a>/<a class "Xr">ppm(5)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>sysconf(3)<\/a>/<a class "Xr">sysconf(3)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>wordexp(3)<\/a>/<a class "Xr">wordexp(3)<\/a>/g' \ + > "$1" +} + +######################################################################## +# The script +######################################################################## +man_pages | while read -r i; do + filename="$(basename "${i}")" + section="${filename##*.}" + + if ! [ -d "./man/man${section}" ]; then + mkdir -p "./man/man${section}"; + fi + + dst="man/man${section}/${filename}.html" + man2html "${dst}" < "${i}" + + # Check the result of the HTML conversion + if ! tidy --show-info no --show-filename yes -qe "${dst}"; then + >&2 printf '%s: error converting %s\n' "${0##*/}" "${i}" + exit 1 + fi + + # Write the generated files to standard output to inform the build + # system which files it needs to handle during installation. + printf '%s/%s\n' "${PWD##*/}" "${dst}" +done diff --git a/htrdr/hooks/01-setup-redirections.sh b/htrdr/hooks/01-setup-redirections.sh @@ -0,0 +1,82 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "../scripts/meso-web.sh" + +set -e + +redirections="\ + high-tune/high-tune.html htrdr/htrdr.html + high-tune/starter-pack.html htrdr/htrdr-atmosphere-spk.html + high-tune/downloads/gas_opt_prop_en.pdf htrdr/downloads/gas_opt_prop_en.pdf + high-tune/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz + high-tune/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.1.1.tar.gz.sig + high-tune/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz + high-tune/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.2.0.tar.gz.sig + high-tune/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz + high-tune/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.3.0.tar.gz.sig + high-tune/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz + high-tune/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.4.0.tar.gz.sig + high-tune/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz + high-tune/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.5.0.tar.gz.sig + high-tune/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz htrdr/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz + high-tune/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz.sig htrdr/downloads/High-Tune-Starter-Pack-0.6.0.tar.gz.sig + high-tune/man/man1/htpp.1.html htrdr/man/man1/htpp.1.html + high-tune/man/man1/htrdr.1.html htrdr/man/man1/htrdr.1.html + high-tune/man/man1/htrdr-atmosphere.1.html htrdr/man/man1/htrdr-atmosphere.1.html + high-tune/man/man1/htrdr-combustion.1.html htrdr/man/man1/htrdr-combustion.1.html + high-tune/man/man1/les2htcp.1.html htrdr/man/man1/les2htcp.1.html + high-tune/man/man5/atrri.5.html htrdr/man/man5/atrri.5.html + high-tune/man/man5/atrtp.5.html htrdr/man/man5/atrtp.5.html + high-tune/man/man5/htcp.5.html htrdr/man/man5/htcp.5.html + high-tune/man/man5/htmie.5.html htrdr/man/man5/htmie.5.html + high-tune/man/man5/htrdr-image.5.html htrdr/man/man5/htrdr-image.5.html + high-tune/man/man5/htrdr-materials.5.html htrdr/man/man5/htrdr-materials.5.html + high-tune/man/man5/htrdr-obj.5.html htrdr/man/man5/htrdr-obj.5.html + high-tune/man/man5/mrumtl.5.html htrdr/man/man5/mrumtl.5.html + high-tune/man/man5/sth.5.html htrdr/man/man5/smsh.5.html + htrdr/man/man1/htrdr-planeto.1.html htrdr/man/man1/htrdr-planets.1.html" + +redirection() +{ + sed -e "s;@REDIRECTION@;$1;g" -e 's;@TIME@;5;g' \ + templates/redirect.html +} + +cd .. # Move to the root of working directory + +printf "%s\n" "${redirections}" | \ +while read -r i; do + + from="$(printf '%s\n' "${i}" | cut -d' ' -f1)" + mkdir -p "$(dirname "${from}")" + + # Set the destination file relative to the source file directory + to="$(printf '%s\n' "${i}" | cut -d' ' -f2)" + to="$(relpath_to_dir "${from}" "${PWD}")${to}" + + >&2 printf 'Redirecting %s to %s\n' "${from}" "${to}" + + + if [ "${from##*.}" = "html" ]; then + redirection "${to}" > "${from}" + else + ln -sf "${to}" "${from}" + fi + + printf '%s\n' "${from}" +done diff --git a/htrdr/htrdr-atmosphere-spk.sh b/htrdr/htrdr-atmosphere-spk.sh @@ -0,0 +1,52 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" + +set -e + +sed -n '0,/^## Content/p' "${atmspk_readme}" | sed '$d' # Intro + +printf '[![City thin lens](thumbs/city_thin_lens.jpg)](images/city_thin_lens.jpg)\n' +printf '\n' +printf '> The image of the city scene rendered with\n' +printf "> \`htrdr-atmosphere\`.\n" +printf '> The thin lens camera used in this rendering focuses on\n' +printf '> background elements; the foreground vegetation is out of focus.\n' +printf '\n' + +printf '## Downloads\n' + +archs=$(find downloads -name "htrdr-Atmosphere-Starter-Pack*.tar.gz" \ + -o -name "High-Tune-Starter-Pack*.tar.gz" | sort -r) +printf '%s\n' "${archs}" | list_starter_packs + +sed -n '/^## Quick start/,/^## Release notes/p' "${atmspk_readme}" | sed '$d' + +sed -n '/^## Content/,/^### Water/p' "${atmspk_readme}" | sed '$d' + +printf '[![DZVAR](thumbs/DZVAR.jpg)](images/DZVAR.jpg)\n\n' +printf '[![DZVAR2](thumbs/DZVAR2.jpg)](images/DZVAR2.jpg)\n\n' +printf '[![BOMEX](thumbs/L12km_BOMEX.jpg)](images/L12km_BOMEX.jpg)\n\n' +printf '[![Fire](thumbs/L25_Fire.jpg)](images/L25_Fire.jpg)\n\n' +printf '\n' +printf '> Images of the DZVAR, DZVAR2, L12km_BOMEX and L25_Fire scenes\n' +printf "> rendered with \"htrdr-atmosphere\".\n" + +sed -n '/^### Water/,/^## Quick start/p' "${atmspk_readme}" | sed '$d' + +sed -n '/^## Release notes/,$p' "${atmspk_readme}" diff --git a/htrdr/htrdr-combustion-spk.sh b/htrdr/htrdr-combustion-spk.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" + +set -e + + sed -n '0,/^## Gulder/p' "${comspk_readme}" \ +| sed '$d' \ +| sed "s/\${VERSION}/${comspk_version}/g" \ +| sed 's#https://www.meso-star.com/projects/htrdr/##g' + +printf '## Downloads\n' + +archs=$(find downloads -name "htrdr-Combustion-Starter-Pack*.tar.gz" | sort -r) +printf '%s\n' "${archs}" | list_starter_packs + +sed -n '/^## Gulder/,/^## Dummy medium/p' "${comspk_readme}" | sed '$d' + +printf '[![Gulder Lateral](thumbs/gulder_lateral.jpg)](images/gulder_lateral.jpg)\n' +printf '\n' +printf '> Rendering in the visible range of the Gülder flame calculated\n' +printf '> by [htrdr-combustion](man/man1/htrdr-combustion.1.html).\n' +printf '> The flame is illuminated by a vertical laser sheet that\n' +printf '> crosses the central axis of the flame, from left to right.\n' +printf '> The image displays the radiation emitted by the laser,\n' +printf '> scattered and transmitted by the combustion medium for\n' +printf '> wavelength (here 532 nm).\n' + +sed -n '/^## Dummy medium/,/^## Validation program/p' "${comspk_readme}" | sed '$d' + +printf '[![Dummy medium](thumbs/dummy_medium.jpg)](images/dummy_medium.jpg)\n' +printf '\n' +printf '> Illustration of the dummy medium provided in the Starter Pack.\n' +printf '> This medium is illuminated by a laser sheet whose surface of\n' +printf '> emission is here represented in red. \n' +printf '\n' +printf '[![Clipped Dummy medium](thumbs/dummy_medium_clipped.jpg)]' +printf '(images/dummy_medium_clipped.jpg)\n' +printf '\n' +printf '> Dummy medium clipped along the y axis to emphasize\n' +printf '> the axisymmetric profile of its soot volume fraction.\n' + + sed -n '/^## Validation program/,$p' "${comspk_readme}" \ +| sed "s/\${VERSION}/${comspk_version}/g" diff --git a/htrdr/htrdr-docs.html.in b/htrdr/htrdr-docs.html.in @@ -1,63 +0,0 @@ -<header> - <h1><code style="color: #000000">htrdr</code> - <span class=subtitle> - Reference documentation - </span> - </h1> -</header> - -<div class=row> - <div class=column> - <h3>Main commands</h3> - <ul> - <li><a href=man/man1/htrdr.1.html>htrdr(1)</a></li> - <li><a href=man/man1/htrdr-atmosphere.1.html>htrdr-atmosphere(1)</a></li> - <li><a href=man/man1/htrdr-combustion.1.html>htrdr-combustion(1)</a></li> - <li><a href=man/man1/htrdr-planets.1.html>htrdr-planets(1)</a></li> - </ul> - - <h3>Additional tools</h3> - <ul> - <li><a href=man/man1/htpp.1.html>htpp(1)</a></li> - <li><a href=man/man1/les2htcp.1.html>les2htcp(1)</a></li> - </ul> - - <h3>Common file formats</h3> - <ul> - <li><a href=man/man5/htrdr-image.5.html>htrdr-image(5)</a></li> - <li><a href=man/man5/htrdr-materials.5.html>htrdr-materials(5)</a></li> - <li><a href=man/man5/htrdr-obj.5.html>htrdr-obj(5)</a></li> - <li><a href=man/man5/mrumtl.5.html>mrumtl(5)</a></li> - <li><a href=man/man5/sars.5.html>sars(5)</a> - <li><a href=man/man5/sbuf.5.html>sbuf(5)</a></li> - <li><a href=man/man5/sck.5.html>sck(5)</a></li> - <li><a href=man/man5/smsh.5.html>smsh(5)</a></li> - </ul> - </div> - - <div class=column> - <h3>Describe a plane parallel atmosphere</h3> - <ul> - <li><a href=man/man5/htmie.5.html>htmie(5)</a></li> - <li><a href=man/man5/htcp.5.html>htcp(5)</a></li> - <li><a href="downloads/gas_opt_prop_en.pdf">htgop</a> [pdf]</li> - </ul> - - <h3>Describe a combustion medium</h3> - <ul> - <li><a href=man/man5/atrri.5.html>atrri(5)</a></li> - <li><a href=man/man5/atrtp.5.html>atrtp(5)</a></li> - </ul> - - <h3>Describe a terrestrial planet</h3> - <ul> - <li><a href=man/man5/rngt.5.html>rngt(5)</a> - <li><a href=man/man5/rnpfi.5.html>rnpfi(5)</a> - <li><a href=man/man5/rnrl.5.html>rnrl(5)</a> - <li><a href=man/man5/rnsf.5.html>rnsf(5)</a> - <li><a href=man/man5/rnsl.5.html>rnsl(5)</a> - <li><a href=man/man5/rnsp.5.html>rnsp(5)</a> - </ul> - </div> -</div> - diff --git a/htrdr/htrdr-docs.md b/htrdr/htrdr-docs.md @@ -0,0 +1,43 @@ +# Reference documentation + +## Main commands + +- [htrdr(1)](man/man1/htrdr.1.html) +- [htrdr-atmosphere(1)](man/man1/htrdr-atmosphere.1.html) +- [htrdr-combustion(1)](man/man1/htrdr-combustion.1.html) +- [htrdr-planets(1)](man/man1/htrdr-planets.1.html) + +## Additionnal tools + +- [htpp(1)](man/man1/htpp.1.html) +- [les2htcp(1)](man/man1/les2htcp.1.html) + +## Common file formats + +- [htrdr-image(5)](man/man5/htrdr-image.5.html) +- [htrdr-materials(5)](man/man5/htrdr-materials.5.html) +- [htrdr-obj(5)](man/man5/htrdr-obj.5.html) +- [mrumtl(5)](man/man5/mrumtl.5.html) +- [sars(5)](man/man5/sars.5.html) +- [sbuf(5)](man/man5/sbuf.5.html) +- [sck(5)](man/man5/sck.5.html) +- [smsh(5)](man/man5/smsh.5.html) + +## Describe a plane parallel atmosphere + +- [htmie(5)](man/man5/htmie.5.html) +- [htcp(5)](man/man5/htcp.5.html) +- [htgop](downloads/gas_opt_prop_en.pdf) (pdf) + +## Describe a combustion medium + +- [atrri(5)](man/man5/atrri.5.html) +- [atrtp(5)](man/man5/atrtp.5.html) + +## Describe a terrestrial planet + +- [rngt(5)](man/man5/rngt.5.html) +- [rnpfi(5)](man/man5/rnpfi.5.html) +- [rnrl(5)](man/man5/rnrl.5.html) +- [rnsf(5)](man/man5/rnsf.5.html) +- [rnsl(5)](man/man5/rnsl.5.html) diff --git a/htrdr/htrdr-planets-spk.sh b/htrdr/htrdr-planets-spk.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" + +set -e + + sed -n '0,/^## Content/p' "${pntspk_readme}" \ +| sed '$d' \ +| sed "s/\${VERSION}/${pntspk_version}/g" + +printf '## Downloads\n' + +archs=$(find downloads -name "htrdr-Planets-Starter-Pack*.tar.gz" | sort -r) +printf '%s\n' "${archs}" | list_starter_packs + + sed -n "/^## Content/,/^### \`sun_intensity_lite.bin\`/p" "${pntspk_readme}" \ +| sed '$d' + +printf '[![Random01 Visible](thumbs/random01_visible.jpg)]' +printf '(images/random01_visible.jpg)\n' +printf '\n' +printf '> Images rendered by [htrdr-planets](man/man1/htrdr-planets.1.html)\n' +printf '> from the random01 dataset.\n' +printf '\n' +printf '[![Random01 Infrared](thumbs/random01_LW_10-12um.jpg)]' +printf '(images/random01_LW_10-12um.jpg)\n' +printf '\n' +printf '> Brightness temperature, in Kelvins of the random01 dataset.\n' +printf '> Cold zones (in altitude) or highly reflective (i.e. weakly emitting)\n' +printf '> zones are made visible because of their lower specific intensity.\n' +printf '\n' + +sed -n '/^### `sun_intensity_lite.bin`/,$p' "${pntspk_readme}" diff --git a/htrdr/htrdr.html.in b/htrdr/htrdr.html.in @@ -1,439 +0,0 @@ -<header> - <h1><code style="color: #000000">htrdr</code> - <span class=subtitle> - The Monte-Carlo radiative transfer simulator - </span> - </h1> -</header> - -<div class="news"> - <p><b><code>htrdr</code> ${VERSION} is available</b></p> - <ul> - <li><a href="#INSTALL">Install</a> from source - </li> - </ul> -</div> - -<p><code>htrdr</code> evaluates the intensity at any position (probe) of the -scene, in any direction, in the presence of <b>surfaces</b> and an <b>absorbing -and diffusing semi-transparent medium</b>, for both <b>internal</b> (longwave) -or <b>external</b> (shortwave) <b>radiation sources</b>. The intensity is -calculated using the <b>Monte-Carlo</b> method: a number of optical paths are -simulated backward, from the probe position and into the medium. Various -algorithms are used, depending on the specificities of the nature and shape of -the radiation source.</p> - -<div class="news"> - <p><b>Related articles</b></p> - <ul> - <li><p> - <a href="https://doi.org/10.1007/s10546-022-00750-5">Caliot et al.</a> - <br>(BLM 2022) - <br><a href="https://hal.science/hal-03813906/">open access</a> - </p></li> - <li><p> - <a href="https://doi.org/10.1126/sciadv.abp8934">Villefranque et al.</a> - <br>(Science Advances 2022) - <br><a href="https://arxiv.org/abs/2204.14227">open access</a> - </p></li> - <li><p> - <a href="https://doi.org/10.1016/j.jqsrt.2021.107725">Sans et al.</a> - <br>(JQSRT 2021) - <br><a href="https://imt-mines-albi.hal.science/hal-03224186v1">open - access</a> - </p></li> - <li><p> - <a href="https://doi.org/10.1029/2018MS001602">Villefranque et al.</a> - <br>(JAMES 2019) - <br><a href="https://arxiv.org/abs/1902.01137">open access</a> - </p></li> - </ul> -</div> - -<p>Applications are theoretically possible to any configuration. However, it -all eventually comes down to the possibility of using the physical data of -interest, in their most common formats, in each scientific community. -<code>htrdr</code> is currently suitable for three main application fields:</p> - -<ol> -<li> - <p><a href="man/man1/htrdr-atmosphere.1.html">Atmospheric radiative - transfer</a>: a clear-sky atmosphere is vertically stratified, neglecting - Earth sphericity, and described in terms of absorption coefficients as a - function of height and spectral quadrature point as per a correlated-k model. - Cloud physical properties are provided on a 3D rectangular grid. Surface - geometrical and optical properties can be provided for an arbitrary number of - geometries. Internal radiation and solar radiation are taken into - account.</p> -</li> -<li> - <p><a href="man/man1/htrdr-combustion.1.html">Combustion processes</a>: - thermodynamic data is provided at the nodes of an unstructured tetrahedral - mesh, while surface properties can still be provided for various materials. - The radiation source is only external: a monochromatic laser sheet - illuminates the inside of the combustion chamber for diagnostic purposes.</p> -</li> -<li> - <div class="img" style="width: 20em"> - <a href="titan_1280x960x4096.jpg"> - <img src="titan_1280x960x4096.jpg" alt="Titan"> - </a> - <a href="titan_transit.jpg"> - <img src="titan_transit.jpg" alt="Titan_transit"> - </a> - <div class="caption"> - Images of Titan rendered with <a - href="man/man1/htrdr-planets.1.html">htrdr-planets</a>. Its 3D atmosphere - is composed of a gas mixture and two aerosol modes for haze and clouds. In - the bottom image, the source is positioned behind Titan to simulate a - transit situation, i.e. a solar eclipse by Titan. - </div> - </div> - <p><a href="man/man1/htrdr-planets.1.html">Planetary science</a>: takes into - account the geometry of a "ground" of arbitrary shape, described by a - triangular mesh, with the possibility of using an arbitrary number of - materials. The radiative properties of a gas mixture must be provided on a - tetrahedral mesh, using the k-distribution spectral model. The radiative - properties of an arbitrary number of aerosol and hydrometeores can also be - provided on their individual tetrahedral mesh. Calculations can be made for - both internal and external radiation sources. In the case of an external - source, a sphere of arbitrary size and position is used. This sphere can - radiate as a Planck source at a specified brightness temperature, or be - associated with a high-resolution radiance spectrum.</p> -</li> -</ol> - -<p>Since any radiative transfer observable is expressed as an integral of the -radiance, and since there is a strict equivalence between the integral to be -solved and the underlying Monte-Carlo algorithm (each integral is associated -with the sampling of a random variable), the algorithms that calculate the -radiance are used for computing various quantities:</p> - -<ul> -<li> - <p><b>Images</b> on a camera sensor, in a given field of view. For combustion - applications, only monochromatic images are supported. In atmospheres and in - planetary science, spectral integration is also possible, both for solar and thermal - images: CIE colorimetry is used for solar images, while thermal images are in - fact brightness temperature maps, obtained from the incoming radiative flux - over a specified spectral interval.</p> -</li> -<li> - <p><b>Flux density maps</b>, on a grid of sensors, integrated over an entire - hemisphere. In the case of combustion chambers, flux density maps can be - calculated, while spectrally integrated flux density maps are also possible - for atmospheric application, both for solar and thermal radiation.</p> -</li> -</ul> - -<div class="video"> - <video style="width:100%; text-align:center" - controls poster="R8tr3.1.ARMCu.OUT.218.jpg"> - <source src="downloads/teapot_city_clouds.mp4" type="video/mp4"> - Your browser does not support the video tag. - </video> - <div class="caption"> - This film demonstrates the capacity of Monte-Carlo path-tracing methods to - handle large scale ratios from large cloud fields to cities to buildings to - trees and down to a teapot. The 4D cloud field has been produced by the - Meso-NH (<a - href="https://www.ann-geophys.net/16/90/1998/angeo-16-90-1998.html">Lafore et - al 1998</a>, <a href="https://www.geosci-model-dev.net/11/1929/2018/">Lac et - al 2018</a>) Large Eddy model. Spectral materials are defined in particular - from data from the Spectral Library - of impervious Urban Materials (<a - href="https://zenodo.org/record/4263842">Kotthaus et al 2013</a>) . Each frame was - rendered with <a href="man/man1/htrdr-atmosphere.1.html">htrdr-atmosphere</a> - using 8192 samples per pixel component. The resulting images are then - post-processed with the <a href="man/man1/htpp.1.html">htpp</a> program. - Refer to the video for a complete description of how it was produced. - </div> -</div> - -<h2 id="rel_projects">Related projects</h2> - -<div class="img" style="width: 20em"> - <a href="CLEMENT.jpg"> - <img src="CLEMENT.jpg" alt="CLEMENT"> - </a> - <a href="CLEMENT_lw_9000_10000.jpg"> - <img src="CLEMENT_lw_9000_10000.jpg" alt="CLEMENT_lw"> - </a> - <div class="caption"> - Images rendered with <a - href="man/man1/htrdr-atmosphere.1.html">htrdr-atmosphere</a> of a - 1000<sup>3</sup> cloud field produced by the Meso-NH (<a - href="https://www.ann-geophys.net/16/90/1998/angeo-16-90-1998.html">Lafore et - al 1998</a>, <a href="https://www.geosci-model-dev.net/11/1929/2018/">Lac et - al 2018</a>) Large Eddy Model. The initial conditions and model set-up for - the simulation are described in <a - href="https://rmets.onlinelibrary.wiley.com/doi/full/10.1002/qj.3614">Strauss - et al. (2019)</a>. - The infrared rendering is calculated in [9, 10]&nbsp;µm spectral range; the - color map displays the brightness temperature in Kelvin. - </div> -</div> - -<p><code>htrdr</code> has been used, developped and extended in the following -research projects:</p> - -<ul> - <li>The development of <code>htrdr</code> began with the <a - href="https://anr.fr/Projet-ANR-16-CE01-0010">High-Tune</a> project. - Originally, it simulated the radiative transfer of an <b>external source</b> - (solar) in a scene composed of a triangulated ground and an - <b>atmosphere</b>, neglecting Earth sphericity, in the presence of a <b>cloud - field</b> provided over a structured grid. It was later extended in order to - take into account a <b>non-gray surface</b>, and the possibility to perform - radiative transfer computations for a <b>internal source</b> (ground and - atmosphere).</li> - - <li>In project <a - href="https://www.umr-cnrm.fr/spip.php?article1204">ModRadUrb</a> the - emphasis was put on taking into account the representation of <b>complex - geometries</b> (detailled city scenes) using <b>spectral properties of an - arbitrary number of materials</b>. The solver was extended to solve upward - and downward <b>hemispherical atmospheric fluxes</b> on a plane positioned - anywhere in the scene, both in the visible and the infrared spectral - ranges.</li> - - <li>In project <a href="https://anr.fr/Projet-ANR-18-CE46-0012">MCG-Rad</a> - the <code>htrdr</code> codebase was used to explore a whole new class of - radiative transfer algorithms: instead of relying on the full atmospheric - radiative properties data set (prerequisite for current algorithms), the - so-called <b>line sampling</b> algorithms will <b>not</b> require <b>nor</b> - compute the absorption coefficient of the atmosphere. Instead, it will sample - energetic transitions and use a Line-by-Line parameters database (such as <a - href="https://hitran.org/">HITRAN</a>) in order to perform a <b>rigorous - spectral integration</b>, both in the visible and the infrared spectral - ranges.</li> - - <li>In project <a href=https://anr.fr/Project-ANR-18-CE05-0015>Astoria</a>, - <code>htrdr</code> was used to produce images in the visible, in the presence - of <b>combustion chambers</b> where radiation scattering is performed by soot - aggregates. One of the main difficulty resides in the fact that the chamber - is <b>illuminated by a laser</b>: the classical solar radiative transfer - algorithm then fails to converge because of the collimated radiation source, - and a <a href="https://doi.org/10.1016/j.jqsrt.2021.107725">new algorithm</a> - was thus designed in order to ensure numerical convergence.</li> - - <li>In project <a href="https://anr.fr/Projet-ANR-21-CE49-0020">Rad-Net</a>, - <code>htrdr</code> was adapted for applications in <b>planetary science</b> - and <b>astrophysics</b>. The application is now a scene composed of an - <b>arbitrary number of solid surfaces</b> (a planet, satellites) represented - by triangular meshes and materials which describe their <b>spectral - reflectivity/emissivity</b> properties. The <b>3D atmopshere</b> is defined by - a number of participating semi-transparent media (a gas mixture and an - arbitrary number of aerosol modes) whose radiative properties are provided at - the nodes of a <b>unstructured tetrahedral volumetric grid</b>, independant - for ach medium.</li> -</ul> - -<h2>A straight interface</h2> - -<div class="img" style="width: 20em"> - <a href="city.jpg"><img src="city.jpg" alt="city"></a> - <div class="caption"> - Image rendered with <a - href="man/man1/htrdr-atmosphere.1.html">htrdr-atmosphere</a>, of a city - procedurally generated with spectral materials defined in particular from - data from the <a href="https://zenodo.org/record/4263842">Spectral Library - of impervious Urban Materials</a>. The entire dataset (geometry, materials - and cloud field) is included in the <a - href="htrdr-atmosphere-spk.html">atmosphere Starter-Pack</a>. - </div> -</div> - -<p><code>htrdr</code> is a <b>command-line tool</b> that performs computations -on input data, writes the rendered image and nothing more. No assumption is -made on how input data are created, the only requirement is compliance with -the expected file formats. In the same spirit, the output image is written in -plain text, as a list of raw pixel estimations, which makes it easier to -post-process. - -<p>This thin interface is, by nature, particularly well suited to be -<b>extended</b> and <b>integrated</b> into any workflow. For instance, one can -save the cloud properties used by <a -href="man/man1/htrdr-atmosphere.1.html">htrdr-atmosphere</a> directly in the - -<a href=man/man5/htcp.5.html>htcp</a> file format or use the <a -href=man/man1/les2htcp.1.html>les2htcp</a> tool to convert cloud properties -from <a href="https://www.unidata.ucar.edu/software/netcdf/">NetCDF</a> to -<code>htcp</code>. In the same way, the output image can be post-processed -through <a href="http://www.gnuplot.info">gnuplot</a> or converted in a regular -PPM image by the <a href="man/man1/htpp.1.html">htpp</a> program, and then -visualised in an image viewer as for instance <a -href="https://feh.finalrewind.org/">feh</a> or <a -href="https://imagemagick.org/script/display.php">display</a>. - -<h2 id="INSTALL">Installation</h2> - -<div class="img" style="width: 20em"> - <a href="gulder_horizontal_slides.jpg"> - <img src="gulder_horizontal_slides.jpg" alt="gulder_horizontal_slides"> - </a> - <div class="caption"> - Renderings in the visible range calculated by <a - href="man/man1/htrdr-combustion.1.html">htrdr-combustion</a> of a laminar - sooting flame seen from above and illuminated by a laser sheet. The images - display radiation that is emitted by the laser, scattered and transmitted by - the combustion medium. The laser sheet is horizontal, and intersects the - medium at various heights. One can see the difference in the scattered signal - between the left and right parts of the image; since the laser propagates - from the left to the right, it is progressively attenuated while traveling - the medium. The intensity of radiation subject to scattering therefore - decreases. In addition to these trapping effect these images provide some - insight about the scattering cross-section of the medium as a function of - height. Scattering properties of soot gradually increase from the injection - position to a height of approximately 35&nbsp;mm. A steep decrease follows: - the image for a height of 40&nbsp;mm is very similar to the image obtained at - 10&nbsp;mm. - </div> -</div> - -<div class="img" style="width: 20em"> - <a href="gulder_sideview.jpg"> - <img src="gulder_sideview.jpg" alt="CLEMENT"> - </a> - <div class="caption"> - Images in the visible range rendered with <a - href="man/man1/htrdr-combustion.1.html">htrdr-combustion</a> of a sooting - flame illuminated by an horizontal laser sheet that runs through the central - axis of the flame; the camera is looking at the centre of the flame, but its - normal is oriented respectively at an angle of 30, 60 and 90 degrees relative - to the main direction of the laser sheet. One can see the trapping of - radiation by the medium and the decrease of scattering intensity decreases - with the angle of observation, otherwise known as the scattering angle and - the decrease of the scattered intensity with the angle of observation. - </div> -</div> - -<p>No pre-compiled version of <code>htrdr</code> is provided; it must be -compiled directly from its source tree. A simple way is to rely on -<a href="https://gitlab.com/meso-star/star-build/">star-build</a>, -which automates the build and installation of <code>htrdr</code> and its -dependencies from source code. - -<h3>Prerequisites</h3> - -<p>To build <code>htrdr</code> with <code>star-build</code>, first make -sure your system has the following prerequisites:</p> - -<ul> - <li>POSIX shell</li> - <li>POSIX make</li> - <li>curl</li> - <li>git</li> - <li>mandoc</li> - <li>pkg-config</li> - <li>sha512sum</li> - <li>GNU Compiler Collection in version 8.3 or higher</li> - <li>netCDF4 library and headers</li> - <li>OpenMPI library and headers in version 2 or higher</li> -</ul> - -<h3>Build</h3> - -<p>Assuming that the aforementioned prerequisites are available, the -build procedure is summed up to:</p> - -<pre class="code"> -~ $ git clone \ - https://gitlab.com/meso-star/star-build.git -~ $ cd star-build -~/star-build $ make \ - PREFIX=~/htrdr_${VERSION} \ - BUILD=src/rad-apps/htrdr_${VERSION}.sh -</pre> - -<p>With <code>PREFIX</code> defining the path where <code>htrdr</code> -will be installed and <code>BUILD</code> defining the installation -script to be run.</p> - -<p>By default, the whole <code>htrdr</code> project is built but you may -prefer to deploy <code>htrdr</code> only for a specific application, -i.e. only for atmospheric radiative transfer, combustion processes or -planetary science. For example, to install only the atmospheric part of -<code>htrdr</code>:</p> - -<pre class="code"> -~/star-build $ make \ - PREFIX=~/htrdr_${VERSION} \ - BUILD=src/rad-apps/htrdr_${VERSION}.sh \ - ATMOSPHERE=ENABLE \ - COMBUSTION=DISABLE \ - PLANETS=DISABLE -</pre> - -<div class="img" style="width: 20em"> - <div style="width: 49.5%; float: left; padding-right: 1%" > - <a href="downward_flux_500x500x2048_sw_380_4000_879.349.jpg"> - <img src="downward_flux_500x500x2048_sw_380_4000_879.349.jpg" alt="downward_flux_sw"> - </a> - </div> - <div style="width: 49.5%; float: left; padding-right: 0%"> - <a href="downward_flux_500x500x2048_lw_4000_100000_425.156.jpg"> - <img src="downward_flux_500x500x2048_lw_4000_100000_425.156.jpg" alt="downward_flux_lw"> - </a> - </div> - <div class="caption"> - Shortwave (left) and longwave (right) downward flux density maps in - W/m<sup>2</sup> computed by <a - href="man/man1/htrdr-atmosphere.1.html">htrdr-atmosphere</a> at 1&nbsp;meter - height with the <a href=htrdr-atmosphere-spk.html>DZVAR</a> cloud field. The - shortwave and longwave spectral integration ranges are [0.38, 4]&nbsp;µm and - [4, 100]&nbsp;µm, respectively. Their spatially-avaraged flux is - 879.349&nbsp;W/m<sup>2</sup> in shortwave and 425.159&nbsp;W/m<sup>2</sup> - in longwave. In both cases, the sun is located at the zenith. In the - shortwave map we observe the contrast between the shadows of the clouds and - fully illuminated areas. In longwave, we can see the effect of clouds - (higher values, due to the emission by the base of the cloud at higher - temperatures than for a clear-sky zone) and also a "ripple" effect that is - due to the spatial variations of water vapor concentration, as provided by - the LES simulation. - </div> -</div> - -<h3>Run</h3> - -<p>Evaluate the installed <code>htrdr.profile</code> file in the current -shell to register <code>htrdr</code> against it. You can then run -<code>htrdr</code> and consult its manual pages:</p> - -<pre class="code"> -~ $ . ~/htrdr_${VERSION}/etc/htrdr.profile -~ $ htrdr -h -~ $ man htrdr -</pre> - -<p>Refer to the Starter Packs -(<a href=htrdr-atmosphere-spk.html>atmosphere</a> or -<a href=htrdr-combustion-spk.html>combustion</a>), -to quickly run a <code>htrdr</code> rendering; these archives provide -input data and scripts that are good starting points to use -<code>htrdr</code>. - -${RELEASE_NOTES} - -<h2>History</h2> - -<p><code>htrdr</code> has been funded by the <a -href="https://anr.fr/Projet-ANR-21-CE49-0020">ANR Rad-Net</a> since -2021. |Méso|Star&gt; is subcontractor of the project.</p> - -<p><code>htrdr</code> was funded by the <a -href="https://anr.fr/Project-ANR-18-CE05-0015">ANR Astoria</a> from 2018 -to 2022. |Méso|Star&gt; was sub-contractor of the project.</p> - -<p><code>htrdr</code> was funded by the <a -href="https://www.ademe.fr/">ADEME</a> (MODEVAL-URBA-2019) from 2019 to -2022. |Méso|Star&gt; was partner of the project with <a -href="https://www.umr-cnrm.fr/">CNRM</a>.</p> - -<p><code>htrdr</code> was funded by the <a -href="https://anr.fr/Project-ANR-16-CE01-0010">ANR High-Tune</a> from -2016 to 2019. |Méso|Star&gt; was sub-contractor of the project. Visit -the <a href="http://www.umr-cnrm.fr/high-tune/?lang=en"> High-Tune -project web site</a>.</p> - -${COPYING} diff --git a/htrdr/htrdr.md.in b/htrdr/htrdr.md.in @@ -0,0 +1,358 @@ +# `htrdr` + +`htrdr` evaluates the intensity at any position (probe) of the scene, in +any direction, in the presence of *surfaces* and an *absorbing and +diffusing semi-transparent medium*, for both *internal* (longwave) or +*external* (shortwave) *radiation sources*. +The intensity is +calculated using the *Monte-Carlo* method: a number of optical paths are +simulated backward, from the probe position and into the medium. +Various algorithms are used, depending on the specificities of the +nature and shape of the radiation source. + +<video style="width:100%; text-align:center" controls poster="images/R8tr3.1.ARMCu.OUT.218.jpg"> + <source src="downloads/teapot_city_clouds.mp4" type="video/mp4"> +</video> + +> This film demonstrates the capacity of Monte-Carlo path-tracing +> methods to handle large scale ratios from large cloud fields to cities +> to buildings to trees and down to a teapot. +> The 4D cloud field has been produced by the +> Meso-NH +> ([Lafore et al. 1998](https://www.ann-geophys.net/16/90/1998/angeo-16-90-1998.html), +> [Lac et al. 2018](https://www.geosci-model-dev.net/11/1929/2018/)) +> Large Eddy model. +> Spectral materials are defined in particular from data from the +> Spectral Library of impervious Urban Materials +> ([Kotthaus et al. 2013](https://zenodo.org/record/4263842)). +> Each frame was rendered with +> [htrdr-atmosphere](man/man1/htrdr-atmosphere.1.html) +> using 8192 samples per pixel component. +> The resulting images are then +> post-processed with the [htpp](man/man1/htpp.1.html) program. +> Refer to the video for a complete description of how it was produced. + +Applications are theoretically possible to any configuration. +However, it all eventually comes down to the possibility of using the +physical data of interest, in their most common formats, in each +scientific community. +`htrdr` is currently suitable for three main application fields: + +1. [Atmospheric radiative transfer](man/man1/htrdr-atmosphere.1.html): a + clear-sky atmosphere is vertically stratified, neglecting Earth + sphericity, and described in terms of absorption coefficients as a + function of height and spectral quadrature point as per a + correlated-k model. + Cloud physical properties are provided on a 3D rectangular grid. + Surface geometrical and optical properties can be provided for an + arbitrary number of geometries. + Internal radiation and solar radiation are taken into account. + +2. [Combustion processes](man/man1/htrdr-combustion.1.html): + thermodynamic data is provided at the nodes of an unstructured + tetrahedral mesh, while surface properties can still be provided for + various materials. + The radiation source is only external: a monochromatic laser sheet + illuminates the inside of the combustion chamber for diagnostic + purposes. + +3. [Planetary science](man/man1/htrdr-planets.1.html): takes into + account the geometry of a "ground" of arbitrary shape, described by a + triangular mesh, with the possibility of using an arbitrary number of + materials. + The radiative properties of a gas mixture must be provided on a + tetrahedral mesh, using the k-distribution spectral model. + The radiative properties of an arbitrary number of aerosol and + hydrometeores can also be provided on their individual tetrahedral + mesh. + Calculations can be made for both internal and external radiation + sources. + In the case of an external source, a sphere of arbitrary size and + position is used. + This sphere can radiate as a Planck source at a specified brightness + temperature, or be associated with a high-resolution radiance + spectrum. + +[![Titan](thumbs/titan_1280x960x4096.jpg)](images/titan_1280x960x4096.jpg) + +> Images of Titan rendered with +> [htrdr-planets](man/man1/htrdr-planets.1.html). +> Its 3D atmosphere is composed of a gas mixture and two aerosol modes +> for haze and clouds. + +[![Titan transit](thumbs/titan_transit.jpg)](images/titan_transit.jpg) + +> Rendering of Titan in transit situation, i.e. the source is +> positioned behind Titan to simulate a solar eclipse by Titan. + +Since any radiative transfer observable is expressed as an integral of +the radiance, and since there is a strict equivalence between the +integral to be solved and the underlying Monte-Carlo algorithm (each +integral is associated with the sampling of a random variable), the +algorithms that calculate the radiance are used for computing various +quantities: + +- *Images* on a camera sensor, in a given field of view. + For combustion applications, only monochromatic images are supported. + In atmospheres and in planetary science, spectral integration is also + possible, both for solar and thermal images: CIE colorimetry is used + for solar images, while thermal images are in fact brightness + temperature maps, obtained from the incoming radiative flux over a + specified spectral interval. + +- *Flux density maps*, on a grid of sensors, integrated over an entire + hemisphere. + In the case of combustion chambers, flux density maps can be + calculated, while spectrally integrated flux density maps are also + possible for atmospheric application, both for solar and thermal + radiation. + +[![Clouds](thumbs/CLEMENT.jpg)](images/CLEMENT.jpg) + +[![Clouds infrared](thumbs/CLEMENT_lw_9000_10000.jpg)](images/CLEMENT_lw_9000_10000.jpg) + +> Images rendered with +> [htrdr-atmosphere](man/man1/htrdr-atmosphere.1.html) +> of a 1000³ cloud field produced by the Meso-NH +> ([Lafore et al. 1998](https://www.ann-geophys.net/16/90/1998/angeo-16-90-1998.html), +> [Lac et al. 2018](https://www.geosci-model-dev.net/11/1929/2018/)) +> Large Eddy Model. +> The initial conditions and model set-up for the simulation are +> described in +> [Strauss et al. 2019](https://rmets.onlinelibrary.wiley.com/doi/full/10.1002/qj.3614). +> The infrared rendering is calculated in [9, 10]&nbsp;µm spectral range; +> the color map displays the brightness temperature in Kelvin. + +## Related articles + +- [Caliot et al. 2022](https://doi.org/10.1007/s10546-022-00750-5), + "Model of Spectral and Directional Radiative Transfer in Complex Urban + Canopies with Participating Atmospheres", Boundary-Layer Meteorology + ([open access](https://hal.science/hal-03813906/)) + +- [Villefranque et al. 2022](https://doi.org/10.1126/sciadv.abp8934), + "The “teapot in a city”: A paradigm shift in urban climate modeling", + Science Advances + ([open access](https://arxiv.org/abs/2204.14227)) + +- [Sans et al. 2021](https://doi.org/10.1016/j.jqsrt.2021.107725) + "Null-collision meshless Monte Carlo - A new reverse Monte Carlo + algorithm designed for laser-source emission in absorbing/scattering + inhomogeneous media", Journal of Quantitative Spectroscopy and + Radiative Transfer + ([open access](https://imt-mines-albi.hal.science/hal-03224186v1)) + +- [Villefranque et al. 2019](https://doi.org/10.1029/2018MS001602) + "A Path-Tracing Monte Carlo Library for 3-D Radiative Transfer in + Highly Resolved Cloudy Atmospheres", Journal of Advances in Modeling + Earth Systems + ([open access](https://arxiv.org/abs/1902.01137)) + + +<span id="rel_projects"/> + +## Related projects + +`htrdr` has been used, developped and extended in the following +research projects: + +- The development of `htrdr` began with the + [High-Tune](https://anr.fr/Projet-ANR-16-CE01-0010) project. + Originally, it simulated the radiative transfer of an *external source* + (solar) in a scene composed of a triangulated ground and an + *atmosphere*, neglecting Earth sphericity, in the presence of a *cloud + field* provided over a structured grid. + It was later extended in order to take into account a *non-gray + surface*, and the possibility to perform radiative transfer + computations for a *internal source* (ground and atmosphere). + +- In project + [ModRadUrb](https://www.umr-cnrm.fr/spip.php?article1204) the + emphasis was put on taking into account the representation of *complex + geometries* (detailled city scenes) using *spectral properties of an + arbitrary number of materials*. + The solver was extended to solve upward and downward *hemispherical + atmospheric fluxes* on a plane positioned anywhere in the scene, both + in the visible and the infrared spectral ranges. + + Note that the + [`htrdr` Urban](https://gitlab.com/edstar/htrdr/-/tree/main_urban) fork adds + the calculation of the radiative flux density incident on or absorbed + by a group of triangles to the geometry of the ground and humans. + +- In project + [MCG-RaD](https://anr.fr/Projet-ANR-18-CE46-0012) + the `htrdr` codebase was used to explore a whole new class of + radiative transfer algorithms: instead of relying on the full + atmospheric radiative properties data set (prerequisite for current + algorithms), the so-called *line sampling* algorithms will *not* + require *nor* compute the absorption coefficient of the atmosphere. + Instead, it will sample energetic transitions and use a Line-by-Line + parameters database (such as [HITRAN](https://hitran.org/)) in order + to perform a *rigorous spectral integration*, both in the visible and + the infrared spectral ranges. + +- In project + [Astoria](https://anr.fr/Project-ANR-18-CE05-0015). + `htrdr` was used to produce images in the visible, in the presence + of *combustion chambers* where radiation scattering is performed by soot + aggregates. + One of the main difficulty resides in the fact that the chamber is + *illuminated by a laser*: the classical solar radiative transfer + algorithm then fails to converge because of the collimated radiation + source, and a + [new algorithm](https://doi.org/10.1016/j.jqsrt.2021.107725) + was thus designed in order to ensure numerical convergence. + +- In project + [Rad-Net](https://anr.fr/Projet-ANR-21-CE49-0020) + `htrdr` was adapted for applications in *planetary science* and + *astrophysics*. + The application is now a scene composed of an *arbitrary number of + solid surfaces* (a planet, satellites) represented by triangular + meshes and materials which describe their *spectral + reflectivity/emissivity* properties. + The *3D atmopshere* is defined by a number of participating + semi-transparent media (a gas mixture and an arbitrary number of + aerosol modes) whose radiative properties are provided at the nodes of + a *unstructured tetrahedral volumetric grid*, independant for ach + medium. + +[![Gulder horizontal slides](thumbs/gulder_horizontal_slides.jpg)](images/gulder_horizontal_slides.jpg) + +> Renderings in the visible range calculated by +> [htrdr-combustion](man/man1/htrdr-combustion.1.html) of a laminar +> sooting flame seen from above and illuminated by a laser sheet. +> The images display radiation that is emitted by the laser, scattered +> and transmitted by the combustion medium. +> The laser sheet is horizontal, and intersects the medium at various +> heights. +> One can see the difference in the scattered signal between the left +> and right parts of the image; since the laser propagates from the left +> to the right, it is progressively attenuated while traveling the +> medium. +> The intensity of radiation subject to scattering therefore decreases. +> In addition to these trapping effect these images provide some insight +> about the scattering cross-section of the medium as a function of +> height. +> Scattering properties of soot gradually increase from the injection +> position to a height of approximately 35 mm. +> A steep decrease follows: +> the image for a height of 40 mm is very similar to the image obtained +> at 10 mm. + +## Installation + +No pre-compiled version of `htrdr` is provided; +it must be compiled directly from its source tree. A simple way is to +rely on [star-build](https://gitlab.com/meso-star/star-build/), which +automates the build and installation of `htrdr` and its dependencies +from source code. + +### Prerequisites + +To build `htrdr` with `star-build`, first make sure your system has the +following prerequisites: + +- POSIX shell +- POSIX make +- curl +- git +- mandoc +- pkg-config +- sha512sum +- GNU Compiler Collection in version 8.3 or higher +- netCDF4 library and headers +- OpenMPI library and headers in version 2 or higher + +### Build + +Assuming that the aforementioned prerequisites are available, the build +procedure is summed up to: + + git clone https://gitlab.com/meso-star/star-build.git + cd star-build + make \ + PREFIX=~/htrdr_@VERSION@ \ + BUILD=src/rad-apps/htrdr_@VERSION@.sh + +With `PREFIX` defining the path where `htrdr` will be installed and +`BUILD` defining the installation script to be run. + +By default, the whole `htrdr` project is built but you may prefer to +deploy `htrdr` only for a specific application, i.e. only for +atmospheric radiative transfer, combustion processes or planetary +science. +For example, to install only the atmospheric part of `htrdr`: + + make \ + PREFIX=~/htrdr_@VERSION@ \ + BUILD=src/rad-apps/htrdr_@VERSION@.sh \ + ATMOSPHERE=ENABLE \ + COMBUSTION=DISABLE \ + PLANETS=DISABLE + +### Run + +Evaluate the installed `htrdr.profile` file in the current +shell to register `htrdr` against it. You can then run +`htrdr` and consult its manual pages: + + . ~/htrdr_${VERSION}/etc/htrdr.profile + htrdr -h + man htrdr + +Refer to the Starter Packs +([atmosphere](htrdr-atmosphere-spk.html), +[combustion](htrdr-combustion-spk.html) or +[planets](htrdr-planets-spk.html)) +to quickly run a `htrdr` calculation; these archives provide input data +and scripts that are good starting points to use `htrdr`. + +[![Downward ShortWave flux](thumbs/downward_flux_500x500x2048_sw_380_4000_879.349.jpg)]( +images/downward_flux_500x500x2048_sw_380_4000_879.349.jpg) + +> Shortwave downward flux density maps in W/m² computed by +> [htrdr-atmosphere](man/man1/htrdr-atmosphere.1.html) +> at 1 meter height with the [DZVAR](htrdr-atmosphere-spk.html) cloud +> field. +> The sun is located at the zenith. +> The spectral integration range is [0.38, 4] µm . +> Its spatially-avaraged flux is 879.349 W/m² . +> One can observe the contrast between the shadows of the clouds and +> fully illuminated areas. + +[![Downward LongWave flux](thumbs/downward_flux_500x500x2048_lw_4000_100000_425.156.jpg)]( +images/downward_flux_500x500x2048_lw_4000_100000_425.156.jpg) + +> Longwave downward flux density maps in W/m² computed on the same scene +> of the previous image. +> The spectral integration ranges is [4, 100] µm. +> Its spatially-avaraged is 425.159 W/m². +> Note the effect of clouds (higher values, due to the emission by the +> base of the cloud at higher temperatures than for a clear-sky zone) +> and also a "ripple" effect that is due to the spatial variations of +> water vapor concentration, as provided by the LES simulation. + +## History + +`htrdr` has been funded by the +[ANR Rad-Net](https://anr.fr/Projet-ANR-21-CE49-0020) since 2021. +|Méso|Star> is subcontractor of the project. + +`htrdr` was funded by the +[ANR Astoria](https://anr.fr/Project-ANR-18-CE05-0015) +from 2018 to 2022. +|Méso|Star> was sub-contractor of the project. + +`htrdr` was funded by the +[ADEME](https://www.ademe.fr/) (MODEVAL-URBA-2019) from 2019 to 2022. +|Méso|Star> was partner of the project with +[CNRM](https://www.umr-cnrm.fr/). + +`htrdr` was funded by the +[ANR High-Tune](https://anr.fr/Project-ANR-16-CE01-0010) from +2016 to 2019. +|Méso|Star> was sub-contractor of the project. +Visit the +[High-Tune project web site](http://www.umr-cnrm.fr/high-tune/?lang=en) diff --git a/htrdr/htrdr.sh b/htrdr/htrdr.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" + +set -e + +{ + sed -n '0,/^## History/p' htrdr.md.in | sed '$d' + sed -n '/^## Release notes/,/^## Copyright/p' "${htrdr_readme}" | sed '$d' + sed -n '/^## History/,$p' htrdr.md.in + sed -n '/^## Copyright/,$p' "${htrdr_readme}" +} \ +| sed "s/@VERSION@/$2/g" \ +| sed 's/https:\/\/gitlab.com\/meso-star\/htrdr\/-\/blob\/master\/doc\/htrdr-materials\.5\.txt/man\/man5\/htrdr-materials.5.html/g' \ +| sed 's/https:\/\/gitlab.com\/meso-star\/htrdr\/-\/blob\/master\/doc\/htrdr-obj\.5\.txt/man\/man5\/htrdr-obj.5.html/g' \ +| sed 's/https:\/\/gitlab.com\/meso-star\/mrumtl\/-\/blob\/master\/doc\/mrumtl\.5\.txt/man\/man5\/mrumtl.5.html/g' diff --git a/htrdr/htrdr_build.sh b/htrdr/htrdr_build.sh @@ -1,388 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -. ../meso-menu.sh - -overview() -{ - if [ $# -lt 2 ]; then - printf "Usage: %s overview <readme> <version>\n" "$0" >&2 - exit 1 - fi - - readme=$(${markdown} "$1") - release_notes=$(echo "${readme}" \ - | sed -n '/^<h2>Release notes<\/h2>/,/^<h2>Copyright notice<\/h2>/p' \ - | sed '$d' \ - | sed 's/https:\/\/gitlab.com\/meso-star\/htrdr\/-\/blob\/master\/doc\/htrdr-materials\.5\.txt/man\/man5\/htrdr-materials.5.html/g' \ - | sed 's/https:\/\/gitlab.com\/meso-star\/htrdr\/-\/blob\/master\/doc\/htrdr-obj\.5\.txt/man\/man5\/htrdr-obj.5.html/g' \ - | sed 's/https:\/\/gitlab.com\/meso-star\/mrumtl\/-\/blob\/master\/doc\/mrumtl\.5\.txt/man\/man5\/mrumtl.5.html/g' \ - | sed 's/^<h2>Release notes/<h2 id=release_notes>Release notes/') - - copying=$(echo "${readme}" \ - | sed -n '/^<h2>Copyright notice<\/h2>/,$p' \ - | sed 's/opyright (C)/opyright \&#169;/g') - - print_header -s htrdr -n Overview -r ../ - VERSION=$2 RELEASE_NOTES="${release_notes}" COPYING="${copying}" envsubst < htrdr.html.in - print_footer -} - -documentations() -{ - print_header -s htrdr -n Documentations -r ../ - cat htrdr-docs.html.in - print_footer -} - -mods() -{ - print_header -s htrdr -n Mods -r ../ - - echo "<header>" - echo " <h1>Modifications</h1>" - echo "</header>" - - echo "<code>htrdr</code> is free software. Far from a simple <i>credo</i>," - echo "the user is invited to study, modify and redistribute it" - echo "according to his own needs. This page lists some of these forks" - echo "developed by the <code>htrdr</code> community." - - cat mods/htrdr-urban.html.in - print_footer -} - -atmspk() -{ - if [ $# -lt 2 ]; then - printf "Usage: %s atmspk <readme> <version>\n" "$0" >&2 - exit 1 - fi - - readme=$(${markdown} "$1" \ - | sed 's/https:\/\/gitlab.com\/meso-star\/htgop.git/downloads\/gas_opt_prop_en.pdf/g' \ - | sed 's/https:\/\/www.meso-star.com\/projects\/htrdr\/man\//man\//g' \ - | sed 's/https:\/\/www.meso-star.com\/projects\/htrdr\/downloads\/gas_opt_prop_en.pdf/downloads\/gas_opt_prop_en.pdf/g' \ - | sed 's/https:\/\/gitlab.com\/meso-star\/htcp.git/man\/man5\/htcp.5.html/g' \ - | sed 's/https:\/\/gitlab.com\/meso-star\/htmie.git/man\/man5\/htmie.5.html/g' \ - | sed 's/https:\/\/gitlab.com\/meso-star\/htpp.git/man\/man1\/htpp.1.html/g' \ - | sed 's/https:\/\/gitlab.com\/meso-star\/htrdr.git/man\/man1\/htrdr.1.html/g' \ - | sed 's/<pre><code>/<pre class="code">/g' \ - | sed 's/<\/code><\/pre>/<\/pre>/g') - - intro=$(echo "${readme}" | sed -e '1d' -e '/^<h2>Content<\/h2>/,$d') - content1=$(echo "${readme}" \ - | sed -n '/^<h2>Content<\/h2>/,/^<h3>Geometries<\/h3>/p' \ - | sed -e '1d' -e '$d') - content2=$(echo "${readme}" \ - | sed -n '/^<h3>Geometries<\/h3>/,/^<h3>Ground materials<\/h3>/p' \ - | sed '$d') - content3=$(echo "${readme}" \ - | sed -n '/^<h3>Ground materials<\/h3>/,/^<h2>Quick start<\/h2>/p' \ - | sed '$d') - quick_start=$(echo "${readme}" \ - | sed -n '/^<h2>Quick start<\/h2>/,/^<h2>Release notes<\/h2>/p' \ - | sed -e '1d' -e '$d') - release_notes=$(echo "${readme}" \ - | sed -n '/^<h2>Release notes<\/h2>/,/^<h2>Copyright notice<\/h2>/p' \ - | sed -e '1d' -e '$d' -e 's/ gemetry / geometry /') - copying=$(echo "${readme}" \ - | sed -n '/^<h2>Copyright notice<\/h2>/,$p' \ - | sed -e 's/from/from the/' -e 's/opyright (C)/opyright \&#169;/') - - archs=$(find downloads -name "htrdr-Atmosphere-Starter-Pack*.tar.gz" | sort -r) - archs=$(echo "${archs}" && find downloads -name "High-Tune-Starter-Pack*.tar.gz" | sort -r ) - - print_header -s htrdr -n Atmosphere-Starter-Pack -r ../ - - echo "<header>" - echo " <h1>Atmosphere Starter Pack</h1>" - echo "</header>" - echo "<div class=\"news\">" - echo " <p><b>Atmosphere Starter Pack $2</b></p>" - echo " <ul>" - echo " <li><a href=\"downloads/htrdr-Atmosphere-Starter-Pack-$2.tar.gz\">tarball</a> /" - echo " <a href=\"downloads/htrdr-Atmosphere-Starter-Pack-$2.tar.gz.sig\">pgp</a></li>" - echo " </ul>" - echo "</div>" - - echo "${intro}" - - echo "<h2>Content</h2>" - echo "<div class=\"img\" style=\"padding-top:3em; width: 17em\">" - echo " <a href=\"DZVAR.jpg\"><img src=\"DZVAR.jpg\" alt=\"DZVAR\"></a>" - echo " <a href=\"DZVAR2.jpg\"><img src=\"DZVAR2.jpg\" alt=\"DZVAR2\"></a>" - echo " <a href=\"L12km_BOMEX.jpg\"><img src=\"L12km_BOMEX.jpg\" alt=\"L12_BOMEX\"></a>" - echo " <a href=\"L25_Fire.jpg\"><img src=\"L25_Fire.jpg\" alt=\"L25_Fire\"></a>" - echo " <div class=\"caption\">" - echo " Images of the DZVAR, DZVAR2, L12km_BOMEX and L25_Fire scenes" - echo " rendered with <code>htrdr-atmosphere</code>." - echo " </div>" - echo "</div>" - - echo "${content1}" - - echo "<div class=\"img\" style=\"margin-top:3em; width: 17em;\">" - echo " <a href=\"city_thin_lens.jpg\"><img src=\"city_thin_lens.jpg\" alt=\"city_thin_lens\"></a>" - echo " <div class=\"caption\">" - echo " The image of the city scene rendered with" - echo " <code>htrdr-atmosphere</code>. The thin lens camera used in this" - echo " rendering focuses on background elements; the foreground vegetation" - echo " is out of focus." - echo " </div>" - echo "</div>" - - echo "${content2}" - - echo "<div class=\"img\" style=\"margin-top:3em; width: 13em;\">" - echo " <a href=\"DZVAR_ortho.jpg\"><img src=\"DZVAR_ortho.jpg\" alt=\"DZVAR_ortho\"></a>" - echo " <div class=\"caption\">" - echo " Image of the DZVAR cloud field rendered from the top of the" - echo " atmosphere with an orthographic camera." - echo " </div>" - echo "</div>" - - echo "${content3}" - - echo "<h2>Install and run</h2>" - echo "" - echo "<p>Download the Atmosphere Starter-Pack archive and verify" - echo "its integrity against its <a href=\"../misc/pgp_signatures.html\">PGP" - echo "signature</a>. Then extract it." - echo "${quick_start}" - - echo "<h2>Donwloads</h2>" - - echo "<table class=\"list\">" - echo " <tr>" - echo " <th>Version</th>" - echo " <th>Archive</th>" - echo " </tr>" - - echo "${archs}" | - while read -r i ; do - version=$(echo "${i}" | sed "s/.*Starter-Pack-\(.*\)\.tar.gz/\1/g") - echo " <tr>" - echo " <td>${version}</td>" - echo " <td>" - echo " [<a href=\"${i}\">tarball</a>]" - if [ -f "${i}.sig" ]; then - echo " [<a href=\"${i}.sig\">pgp</a>]" - fi - echo " </td>" - echo " </tr>" - done - echo "</table>" - - echo "${release_notes}" - echo "${copying}" - - print_footer -} - -comspk() -{ - if [ $# -lt 2 ]; then - printf "Usage: %s comspk <readme> <version>\n" "$0" >&2 - exit 1 - fi - - readme=$(VERSION=$2 envsubst < "$1"\ - | "${markdown}"\ - | sed 's/<pre><code>/<pre class="code">/g'\ - | sed 's/<\/code><\/pre>/<\/pre>/g') - intro=$(echo "${readme}" | sed '/^<h2>Gulder<\/h2>/q' \ - | sed -e '1d' -e '$d' \ - | sed '0,/<code>htrdr<\/code>/s//<a href=man\/man1\/htrdr.1.html>htrdr<\/a>/') - gulder=$(echo "${readme}" \ - | sed -n '/^<h2>Gulder<\/h2>/,/^<h2>Dummy medium<\/h2>/p' \ - | sed -e '1d' -e '$d' \ - | sed '0,/<code>htrdr<\/code>/s//<a href=man\/man1\/htrdr.1.html>htrdr<\/a>/' \ - | sed '0,/<code>htrdr-combustion<\/code>/s//<a href=man\/man1\/htrdr-combustion.1.html>htrdr-combustion<\/a>/') - dummy=$(echo "${readme}" \ - | sed -n '/^<h2>Dummy medium<\/h2>/,/^<h2>Validation program<\/h2>/p' \ - | sed -e '1d' -e '$d' \ - | sed '0,/<code>htrdr<\/code>/s//<a href=man\/man1\/htrdr.1.html>htrdr<\/a>/' \ - | sed '0,/<code>htrdr-combustion<\/code>/s//<a href=man\/man1\/htrdr-combustion.1.html>htrdr-combustion<\/a>/') - validation=$(echo "${readme}" \ - | sed -n '/^<h2>Validation program<\/h2>/,/^<h2>Release notes<\/h2>/p' \ - | sed -e '$d' \ - | sed '0,/<code>htrdr<\/code>/s//<a href=man\/man1\/htrdr.1.html>htrdr<\/a>/' \ - | sed '0,/<code>htrdr-combustion<\/code>/s//<a href=man\/man1\/htrdr-combustion.1.html>htrdr-combustion<\/a>/') - release_notes=$(echo "${readme}" \ - | sed -n '/^<h2>Release notes<\/h2>/,/^<h2>Copyright notice<\/h2>/p' \ - | sed -e '1d' -e '$d') - copying=$(echo "${readme}" | sed -n '/^<h2>Copyright notice<\/h2>/,$p') - - print_header -s htrdr -n Combustion-Starter-Pack -r ../ - - echo "<header>" - echo " <h1>Combustion Starter Pack</h1>" - echo "</header>" - echo "<div class=\"news\">" - echo " <p><b>Combustion Starter Pack $2</b></p>" - echo " <ul>" - echo " <li><a href=\"downloads/htrdr-Combustion-Starter-Pack-$2.tar.gz\">tarball</a> /" - echo " <a href=\"downloads/htrdr-Combustion-Starter-Pack-$2.tar.gz.sig\">pgp</a></li>" - echo " </ul>" - echo "</div>" - - echo "${intro}" - - echo "<h2>Gülder</h2>" - echo "<div class=\"img\" style=\"width: 17em\">" - echo " <a href=\"gulder_lateral.jpg\">" - echo " <img src=\"gulder_lateral.jpg\" alt=\"gulder_lateral\">" - echo " </a>" - echo " <div class=\"caption\">" - echo " Rendering in the visible range of the Gülder flame calculated by <a" - echo " href=\"man/man1/htrdr-combustion.1.html\">htrdr-combustion</a>. The flame is" - echo " illuminated by a vertical laser sheet that crosses the central axis of the" - echo " flame, from left to right.The image displays the radiation emitted by the" - echo " laser, scattered and transmitted by the combustion medium for " - echo " wavelength (here 532&nbsp;nm)." - echo " </div>" - echo " </div>" - echo "${gulder}" - - echo "<h2>Dummy medium</h2>" - echo "<div class=\"img\" style=\"width: 20em\">" - echo " <div style=\"width: 49.5%; float: left; padding-right: 1%\">" - echo " <a href=\"dummy_medium.jpg\">" - echo " <img src=\"dummy_medium.jpg\" alt=\"dummy_medium\">" - echo " </a>" - echo " </div>" - echo " <div style=\"width: 49.5%; float: left; padding-right: 0%\">" - echo " <a href=\"dummy_medium_clipped.jpg\">" - echo " <img src=\"dummy_medium_clipped.jpg\" alt=\"dummy_medium_clipped\">" - echo " </a>" - echo " </div>" - echo "" - echo " <div class=\"caption\">Illustration of the dummy medium provided in the" - echo " Starter Pack. This medium is illuminated by a laser sheet whose surface of" - echo " emission is here represented in red. The image on the left shows the" - echo " entire medium. In the image on the right, the medium is clipped along the y axis" - echo " to emphasize the axisymmetric profile of its soot volume fraction.</div>" - echo "</div>" - - echo "${dummy}" - echo "${validation}" - - echo "<h2>Donwloads</h2>" - - echo "<table class=\"list\">" - echo " <tr>" - echo " <th>Version</th>" - echo " <th>Archive</th>" - echo " </tr>" - - archs=$(find downloads -name "htrdr-Combustion-Starter-Pack*.tar.gz" | sort -r) - echo "${archs}" | - while read -r i ; do - version=$(echo "${i}" | sed "s/.*Starter-Pack-\(.*\)\.tar.gz/\1/g") - echo " <tr>" - echo " <td>${version}</td>" - echo " <td>" - echo " [<a href=\"${i}\">tarball</a>]" - if [ -f "${i}.sig" ]; then - echo " [<a href=\"${i}.sig\">pgp</a>]" - fi - echo " </td>" - echo " </tr>" - done - echo "</table>" - - echo "${release_notes}" - echo "${copying}" - - print_footer -} - -planetsspk() -{ - if [ $# -lt 3 ]; then - printf "Usage: %s planetsspk <readme> <version> <private-archive>\n" "$0" >&2 - exit 1 - fi - - readme=$(VERSION=$2 envsubst < "$1"\ - | "${markdown}"\ - | sed 's/<pre><code>/<pre class="code">/g'\ - | sed 's/<\/code><\/pre>/<\/pre>/g') - intro=$(echo "${readme}" \ - | sed '/^<h2>Content<\/h2>/q' \ - | sed -e '1d' -e '$d' \ - | sed '0,/<code>htrdr-planets<\/code>/s//<a href=man\/man1\/htrdr-planets.1.html>htrdr-planets<\/a>/') - titan=$(echo "${readme}"\ - | sed -n '/^<h3>Titan<\/h3>/,/^<h3>Random01<\/h3>/p'\ - | sed -e '1d' -e '$d') - random01=$(echo "${readme}"\ - | sed -n '/^<h3>Random01<\/h3>/,/^<h3><code>sun_intensity_lite.bin<\/code><\/h3>/p'\ - | sed -e '1d' -e '$d') - sun_intensity_lite=$(echo "${readme}"\ - | sed -n '/^<h3><code>sun_intensity_lite.bin<\/code><\/h3>/,/<h2>Copyright notice<\/h2>/p'\ - | sed -e '1d' -e '$d') - copying=$(echo "${readme}" | sed -n '/^<h2>Copyright notice<\/h2>/,$p') - - print_header -s htrdr -n Planets-Starter-Pack -r ../ - - echo "<header>" - echo " <h1>Planets Starter Pack</h1>" - echo "</header>" - echo "<div class=\"news\">" - echo " <p><b>Planets Starter Pack $2</b></p>" - echo " <ul>" - echo " <li><a href=\"$3\">tarball</a> /" - echo " <a href=\"$3.sig\">pgp</a></li>" - echo " </ul>" - echo "</div>" - - echo "${intro}" - - echo "<h2>Content</h2>" - - echo "<h3>Titan</h3>" - echo "${titan}" - - echo "<h3>Random01</h3>" - echo "<div class=\"img\" style=\"width: 17em\">" - echo " <a href=\"random01_visible.jpg\">" - echo " <img src=\"random01_visible.jpg\" alt=\"random01_visible\">" - echo " </a>" - echo " <a href=\"random01_LW_10-12um.jpg\">" - echo " <img src=\"random01_LW_10-12um.jpg\" alt=\"random01_LW_10-12um\">" - echo " </a>" - echo " <div class=\"caption\">" - echo " Images rendered by <a" - echo " href=\"man/man1/htrdr-planets.1.html\">htrdr-planets</a> from the random01" - echo " dataset. The infrared image (bottom) is a map of brightness temperature, in" - echo " Kelvins. Cold zones (in altitude) or highly reflective (i.e. weakly emitting)" - echo " zones are made visible because of their lower specific intensity." - echo " </div>" - echo "</div>" - - echo "${random01}" - - echo "<h3><code style=\"color: black\">sun_intensity_lite.bin</code></h3>" - echo "${sun_intensity_lite}" - - echo "${copying}" - - print_footer -} - -"$@" diff --git a/htrdr/images/CLEMENT.jpg b/htrdr/images/CLEMENT.jpg @@ -0,0 +1 @@ +#$# git-wad 1c9c25bce6b563d939acd0e918e6734d860a2f951eac6b75b64ebbc67afa300a 280512 +\ No newline at end of file diff --git a/htrdr/CLEMENT_lw_9000_10000.jpg b/htrdr/images/CLEMENT_lw_9000_10000.jpg diff --git a/htrdr/DZVAR.jpg b/htrdr/images/DZVAR.jpg diff --git a/htrdr/DZVAR2.jpg b/htrdr/images/DZVAR2.jpg diff --git a/htrdr/L12km_BOMEX.jpg b/htrdr/images/L12km_BOMEX.jpg diff --git a/htrdr/L25_Fire.jpg b/htrdr/images/L25_Fire.jpg diff --git a/htrdr/R8tr3.1.ARMCu.OUT.218.jpg b/htrdr/images/R8tr3.1.ARMCu.OUT.218.jpg diff --git a/htrdr/city_thin_lens.jpg b/htrdr/images/city_thin_lens.jpg diff --git a/htrdr/downward_flux_500x500x2048_lw_4000_100000_425.156.jpg b/htrdr/images/downward_flux_500x500x2048_lw_4000_100000_425.156.jpg diff --git a/htrdr/downward_flux_500x500x2048_sw_380_4000_879.349.jpg b/htrdr/images/downward_flux_500x500x2048_sw_380_4000_879.349.jpg diff --git a/htrdr/dummy_medium.jpg b/htrdr/images/dummy_medium.jpg diff --git a/htrdr/dummy_medium_clipped.jpg b/htrdr/images/dummy_medium_clipped.jpg diff --git a/htrdr/gulder_horizontal_slides.jpg b/htrdr/images/gulder_horizontal_slides.jpg diff --git a/htrdr/gulder_lateral.jpg b/htrdr/images/gulder_lateral.jpg diff --git a/htrdr/random01_LW_10-12um.jpg b/htrdr/images/random01_LW_10-12um.jpg diff --git a/htrdr/random01_visible.jpg b/htrdr/images/random01_visible.jpg diff --git a/htrdr/titan_1280x960x4096.jpg b/htrdr/images/titan_1280x960x4096.jpg diff --git a/htrdr/titan_transit.jpg b/htrdr/images/titan_transit.jpg diff --git a/htrdr/index.tsv b/htrdr/index.tsv @@ -0,0 +1,6 @@ +Overview htrdr.html +Manual pages htrdr-docs.html +Atmosphere htrdr-atmosphere-spk.html +Combustion htrdr-combustion-spk.html +Planets htrdr-planets-spk.html +Git https://gitlab.com/meso-star/htrdr diff --git a/htrdr/mods/Ebudget_Streetcanyon_Broadband.svg b/htrdr/mods/Ebudget_Streetcanyon_Broadband.svg @@ -1 +0,0 @@ -#$# git-wad 4f01c41f195f3c486c58e5617b4d55e609ad8d9e7961e36dab7d74e1c8e3b8d7 112397 -\ No newline at end of file diff --git a/htrdr/mods/MRT_map_icif_district_day.svg b/htrdr/mods/MRT_map_icif_district_day.svg @@ -1 +0,0 @@ -#$# git-wad 0d784883573ec9f6807004c2eee253d09959c61cd61e5dc8d256717503de163c 210511 -\ No newline at end of file diff --git a/htrdr/mods/Rendering_icif_district_spp200.jpg b/htrdr/mods/Rendering_icif_district_spp200.jpg @@ -1 +0,0 @@ -#$# git-wad cdd28e25ccb72a10dad1f34eed834f254f80b615d546ab67d2d18745ebb58eb2 342698 -\ No newline at end of file diff --git a/htrdr/mods/htrdr-urban.html.in b/htrdr/mods/htrdr-urban.html.in @@ -1,68 +0,0 @@ -<h2 id="urban"><code style="color: #000000">htrdr</code> Urban</h2> - -<div class="img" style="width: 20em"> - <a href="mods/Rendering_icif_district_spp200.jpg"> - <img src="mods/Rendering_icif_district_spp200.jpg" alt="icif_district"> - </a> - <div class="caption"> - Fig.&nbsp;1&nbsp;- Rendering in the visible part of the solar spectrum of a - procedurally generated dense mid-rise city. The number of pixels is 1500x800, - the vertical field of view 70&#176;, and the number of samples per pixel 200. - </div> -</div> - -<p>The <code>htrdr</code> Urban program is a fork of <code>htrdr</code> 0.6.1 -that simulates radiative transfer in scenes composed of an atmospheric gas -mixture, clouds, and a ground with buildings and vegetation. In addition of -<b>visible or infrared rendering</b> of virtual scenes and calculation of -<b>solar or infrared irradiation</b>, <code>htrdr</code> Urban adds the -calculation of <b>radiative flux density</b> incident on or absorbed by a group -of triangles belonging to the ground geometry (e.g. building, walls, windows, -roofs, <i>etc.</i>) and humans. Visit the <a -href="https://gitlab.com/edstar/htrdr/-/tree/main_urban">project repository</a> -for more information about this modification (features, installation process, -use case, <i>etc</i>). - -<p>The following figures illustrate some of the results obtained with -<code>htrdr</code> Urban.</p> - -<div style="display: inline-block;"> - <div style="float: left; width: 22em; margin-right: 1em;"> - <a href="mods/Ebudget_Streetcanyon_Broadband.svg"> - <img src="mods/Ebudget_Streetcanyon_Broadband.svg" alt="ebudget"> - </a> - <div class="caption"> - Fig.&nbsp;2&nbsp;- Solar radiation budget of infinitely-long street canyon - geometries with different aspect ratios (building height divided by street - width) simulated with htrdr-urban (MC) and the Town Energy Balance (TEB), - which calculates radiative exchange with the radiosity method. The - radiation budget consists of the reflected radiation (UP) and the radiation - absorbed by the roof (ABS_ROOF), walls (ABS_WALL), and road (ABS_ROAD). All - terms have been normalized with the downwelling solar radiation. The plane - area building density is 0.5. All surfaces have a Lambertian broadband - albedo of 0.5. (left)&nbsp;The downwelling solar radiation consists of only - direct radiation. (right)&nbsp;The downwelling solar radiation consists of - isotropic diffusive radiation. - </div> - </div> - - <div style="float: left; width: 26em;"> - <a href="mods/MRT_map_icif_district_day.svg"> - <img src="mods/MRT_map_icif_district_day.svg" alt="MRT_day"> - </a> - <div class="caption"> - Fig.&nbsp;3&nbsp;- (left) Spatial distribution (1&nbsp;m resolution) of the - Mean Radiant Temperature (MRT) in a compact mid-rise urban district of - 800&nbsp;m&nbsp;x&nbsp;800&nbsp;m horizontal extent during the daytime. A - rendering of the district is shown in Fig.&nbsp;1. The solar elevation angle - is 50&#176; and the sky is clear. The sun is located in the west of the - district (it shines from left to right) leading to low MRT due to shading on - the right of the buildings and high MRT due to reflected solar radiation on - the left of the buildings. The temperature of all surfaces is 295&nbsp;K. The - white colour depicts the built areas for which the outdoor MRT is not - defined. (right) Standard deviation of the MRT displayed in (left) calculated - by the Monte-Carlo method. - </div> - </div> -</div> - diff --git a/htrdr/thumbs/CLEMENT.jpg b/htrdr/thumbs/CLEMENT.jpg @@ -0,0 +1 @@ +#$# git-wad 9515ba1dec3ec73f40574dff0f4314b6c1eb87d4d1f2697d63f4f9e96f7b1434 58829 +\ No newline at end of file diff --git a/htrdr/thumbs/CLEMENT_lw_9000_10000.jpg b/htrdr/thumbs/CLEMENT_lw_9000_10000.jpg @@ -0,0 +1 @@ +#$# git-wad 99b859d0767e7d0f47776415758d0e1ca46573740b576319220cfbd447873924 55760 +\ No newline at end of file diff --git a/htrdr/thumbs/DZVAR.jpg b/htrdr/thumbs/DZVAR.jpg @@ -0,0 +1 @@ +#$# git-wad 6fad6b45818270930dc325d57589e462c979986b050f0fbadcf031a1f54b4b4a 34469 +\ No newline at end of file diff --git a/htrdr/thumbs/DZVAR2.jpg b/htrdr/thumbs/DZVAR2.jpg @@ -0,0 +1 @@ +#$# git-wad b1e7e52d30c8e1af622aac2e330cee90c8e617f04a14150f9188f803cb97ab80 22192 +\ No newline at end of file diff --git a/htrdr/thumbs/L12km_BOMEX.jpg b/htrdr/thumbs/L12km_BOMEX.jpg @@ -0,0 +1 @@ +#$# git-wad 14f8048431a749403dfc16da0365999fa9bbc12467f76adaa853b91d67c196a1 35194 +\ No newline at end of file diff --git a/htrdr/thumbs/L25_Fire.jpg b/htrdr/thumbs/L25_Fire.jpg @@ -0,0 +1 @@ +#$# git-wad 5e600228f17ff0ba0e351848598aac0a098dc36615303103996890d67a2ed5de 13088 +\ No newline at end of file diff --git a/htrdr/thumbs/city_thin_lens.jpg b/htrdr/thumbs/city_thin_lens.jpg @@ -0,0 +1 @@ +#$# git-wad be30725b58315c2b2631e94efce9cf9d1a00ddc901326cc17029ebc7d1cf5bb7 91893 +\ No newline at end of file diff --git a/htrdr/thumbs/downward_flux_500x500x2048_lw_4000_100000_425.156.jpg b/htrdr/thumbs/downward_flux_500x500x2048_lw_4000_100000_425.156.jpg @@ -0,0 +1 @@ +#$# git-wad 351706fd619ce6bfc39396d09a9c5db48490cdf26647b2dfcd9d995662b1c241 60439 +\ No newline at end of file diff --git a/htrdr/thumbs/downward_flux_500x500x2048_sw_380_4000_879.349.jpg b/htrdr/thumbs/downward_flux_500x500x2048_sw_380_4000_879.349.jpg @@ -0,0 +1 @@ +#$# git-wad b64cccb62886b009c460cdda3354f38882f074c3f8f167bf5d038f6fd2a9d56d 70609 +\ No newline at end of file diff --git a/htrdr/thumbs/dummy_medium.jpg b/htrdr/thumbs/dummy_medium.jpg @@ -0,0 +1 @@ +#$# git-wad a97f790a17ba36283ef49c95fa8d22d8d274a808ee8af02ca04cd6bc35ad0c66 12965 +\ No newline at end of file diff --git a/htrdr/thumbs/dummy_medium_clipped.jpg b/htrdr/thumbs/dummy_medium_clipped.jpg @@ -0,0 +1 @@ +#$# git-wad 67c527566e86415568aacfbbbcf9cda0f95556a292ac57227585c36cb73f5fd3 12102 +\ No newline at end of file diff --git a/htrdr/thumbs/gulder_horizontal_slides.jpg b/htrdr/thumbs/gulder_horizontal_slides.jpg @@ -0,0 +1 @@ +#$# git-wad c49fe93c38dd00036f92cc2abf1d4c8fa97e60f5417ba1251ee2ccf55543e12b 30394 +\ No newline at end of file diff --git a/htrdr/thumbs/gulder_lateral.jpg b/htrdr/thumbs/gulder_lateral.jpg @@ -0,0 +1 @@ +#$# git-wad 4716a37631274e70af587df56793ab6331895092a67bc139365407ece91e5259 9924 +\ No newline at end of file diff --git a/htrdr/thumbs/random01_LW_10-12um.jpg b/htrdr/thumbs/random01_LW_10-12um.jpg @@ -0,0 +1 @@ +#$# git-wad a7d84c1a919c23e0dce7b5030eeee6519ece1108d9200f25483cd2500e4f1a8a 44004 +\ No newline at end of file diff --git a/htrdr/thumbs/random01_visible.jpg b/htrdr/thumbs/random01_visible.jpg @@ -0,0 +1 @@ +#$# git-wad 077669104328c9c56b6c3d55c89640f3f24f7c78369d9a3a47dd7ba6928cc10c 43524 +\ No newline at end of file diff --git a/htrdr/thumbs/titan_1280x960x4096.jpg b/htrdr/thumbs/titan_1280x960x4096.jpg @@ -0,0 +1 @@ +#$# git-wad fe6e8b6406434c72c45d536d3c184793b697d8cc607bc61dfcad889ac7dd37c8 15158 +\ No newline at end of file diff --git a/htrdr/thumbs/titan_transit.jpg b/htrdr/thumbs/titan_transit.jpg @@ -0,0 +1 @@ +#$# git-wad 4a339391b814a24d79a146b8b0bb53e4e58958761aed9fced1d4090e5c299200 13702 +\ No newline at end of file diff --git a/lint_html.sh b/lint_html.sh @@ -1,27 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if [ $# -lt 1 ]; then - echo "Usage: $0 <html>" >&2 - exit 1 -fi - -if ! tidy --show-info no -f "$1.err" -e "$1"; then - printf "%s:\e[1;31merror\e[0m: report in %s.err\n" "$1" "$1" >&2 - cat "$1.err" >& 2 -fi diff --git a/menu.tsv b/menu.tsv @@ -0,0 +1,6 @@ +Home misc +A.R.T art +htrdr htrdr +Schiff schiff +Solstice solstice +Stardis stardis diff --git a/meso-menu.sh b/meso-menu.sh @@ -1,542 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -export solstice_man_pages="\ - solstice 1 - solstice-input 5 - solstice-output 5 - solstice-receiver 5" - -export schiff_man_pages="\ - schiff 1 - schiff-geometry 5 - schiff-output 5" - -export stardis_man_pages="\ - stardis 1 - stardis-input 5 - stardis-output 5 - sgreen 1 - sgreen-input 5 - sgreen-output 5" - -print_home_sub_menu() -{ - root=$1 - name=$2 - lang=$3 - - echo "<div id=\"sub-menu\">" - if [ "${name}" = "About" ]; then - page="about" - echo " <span class=\"cur\">About</span>" - else - echo " <a href=\"${root}misc/about-fr.html\">About</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "PGP" ]; then - echo " <span class=\"cur\">PGP</span>" - else - echo " <a href=\"${root}misc/pgp_signatures.html\">PGP</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Legal" ]; then - page="legal" - echo " <span class=\"cur\">Legal notices</span>" - else - echo " <a href=\"${root}misc/legal-fr.html\">Legal notices</a>" - fi - - if [ "${name}" = "About" ] \ - || [ "${name}" = "Legal" ]; then - echo "<span style=\"float: right;\">" - if [ "${lang}" = "fr" ]; then - echo "<span class=\"cur\">fr</span>" - else - echo "<a href=\"${root}misc/${page}-fr.html\">fr</a>" - fi - echo "/" - if [ "${lang}" = "en" ]; then - echo "<span class=\"cur\">en</span>" - else - echo "<a href=\"${root}misc/${page}-en.html\">en</a>" - fi - echo "</span>" - fi - echo "</div>" -} - -print_art_sub_menu() -{ - root=$1 - name=$2 - - echo "<div id=\"sub-menu\">" - if [ "${name}" = "Overview" ]; then - echo " <span class=\"cur\">Overview</span>" - else - echo " <a href=\"${root}art/art.html\">Overview</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Kspectrum" ]; then - echo " <span class=\"cur\">Kspectrum</span>" - else - echo " <a href=\"${root}art/kspectrum.html\">Kspectrum</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Kdistribution" ]; then - echo " <span class=\"cur\">Kdistribution</span>" - else - echo " <a href=\"${root}art/kdistribution.html\">Kdistribution</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "HR_PPart" ]; then - echo " <span class=\"cur\">HR_PPart</span>" - else - echo " <a href=\"${root}art/hr_ppart.html\">HR_PPart</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "PPart_LW" ]; then - echo " <span class=\"cur\">PPart_LW</span>" - else - echo " <a href=\"${root}art/ppart_lw.html\">PPart_LW</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "PPart_SW" ]; then - echo " <span class=\"cur\">PPart_SW</span>" - else - echo " <a href=\"${root}art/ppart_sw.html\">PPart_SW</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Karine" ]; then - echo " <span class=\"cur\">Karine</span>" - else - echo " <a href=\"${root}art/karine.html\">Karine</a>" - fi - echo "</div>" -} - -print_htrdr_sub_menu() -{ - root=$1 - name=$2 - - echo "<div id=\"sub-menu\">" - if [ "${name}" = "Overview" ]; then - echo " <span class=\"cur\">Overview</span>" - else - echo " <a href=\"${root}htrdr/htrdr.html\">Overview</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Mods" ]; then - echo " <span class=\"cur\">Modifications</span>" - else - echo " <a href=\"${root}htrdr/htrdr-mods.html\">Modifications</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Documentations" ]; then - echo " <span class=\"cur\">Manual pages</span>" - else - echo " <a href=\"${root}htrdr/htrdr-docs.html\">Manual pages</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Atmosphere-Starter-Pack" ]; then - echo " <span class=\"cur\">Atmosphere</span>" - else - echo " <a href=\"${root}htrdr/htrdr-atmosphere-spk.html\">Atmosphere</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Combustion-Starter-Pack" ]; then - echo " <span class=\"cur\">Combustion</span>" - else - echo " <a href=\"${root}htrdr/htrdr-combustion-spk.html\">Combustion</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Planets-Starter-Pack" ]; then - echo " <span class=\"cur\">Planets</span>" - else - echo " <a href=\"${root}htrdr/htrdr-planets-spk.html\">Planets</a>" - fi - echo " &emsp13;.&emsp13;" - echo " <a href=\"https://gitlab.com/meso-star/htrdr\">Git</a>" - echo "</div>" -} - - -print_schiff_sub_menu() -{ - root=$1 - name=$2 - - echo "<div id=\"sub-menu\">" - if [ "${name}" = "Overview" ]; then - echo " <span class=\"cur\">Overview</span>" - else - echo " <a href=\"${root}schiff/schiff.html\">Overview</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Documentations" ]; then - echo " <span class=\"cur\">Manual pages</span>" - else - echo " <a href=\"${root}schiff/schiff-docs.html\">Manual pages</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Downloads" ]; then - echo " <span class=\"cur\">Downloads</span>" - else - echo " <a href=\"${root}schiff/schiff-downloads.html\">Downloads</a>" - fi - echo " &emsp13;.&emsp13;" - echo " <a href=\"https://gitlab.com/meso-star/schiff\">Git</a>" - echo "</div>" -} - -print_solstice_sub_menu() -{ - root=$1 - name=$2 - - echo "<div id=\"sub-menu\">" - if [ "${name}" = "Overview" ]; then - echo " <span class=\"cur\">Overview</span>" - else - echo " <a href=\"${root}solstice/solstice.html\">Overview</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Documentations" ]; then - echo " <span class=\"cur\">Manual pages</span>" - else - echo " <a href=\"${root}solstice/solstice-docs.html\">Manual pages</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Downloads" ]; then - echo " <span class=\"cur\">Downloads</span>" - else - echo " <a href=\"${root}solstice/solstice-downloads.html\">Downloads</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Resources" ]; then - echo " <span class=\"cur\">Additional resources</span>" - else - echo " <a href=\"${root}solstice/solstice-resources.html\">Additional resources</a>" - fi - echo " &emsp13;.&emsp13;" - echo " <a href=\"https://gitlab.com/meso-star/solstice\">Git</a>" - echo "</div>" -} - -print_stardis_sub_menu() -{ - root=$1 - name=$2 - lang=$3 - - echo "<div id=\"sub-menu\">" - if [ "${name}" = "Overview" ]; then - echo " <span class=\"cur\">Overview</span>" - else - echo " <a href=\"${root}stardis/stardis.html\">Overview</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Validation" ]; then - echo " <span class=\"cur\">Validation</span>" - else - echo " <a href=\"${root}stardis/validation.html\">Validation</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Consortium" ]; then - echo " <span class=\"cur\">Consortium</span>" - else - echo " <a href=\"${root}stardis/consortium-fr.html\">Consortium</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Documentations" ]; then - echo " <span class=\"cur\">Manual pages</span>" - else - echo " <a href=\"${root}stardis/stardis-docs.html\">Manual pages</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Starter-Pack" ]; then - echo " <span class=\"cur\">Starter Pack</span>" - else - echo " <a href=${root}stardis/starter-pack.html>Starter Pack</a>" - fi - echo " &emsp13;.&emsp13;" - if [ "${name}" = "Release notes" ]; then - echo " <span class=\"cur\">Release notes</span>" - else - echo " <a href=\"${root}stardis/release-notes.html\">Release notes</a>" - fi - - if [ "${name}" = "Consortium" ]; then - echo "<span style=\"float: right;\">" - if [ "${lang}" = "fr" ]; then - echo "<span class=\"cur\">fr</span>" - else - echo "<a href=\"${root}stardis/consortium-fr.html\">fr</a>" - fi - echo "/" - if [ "${lang}" = "en" ]; then - echo "<span class=\"cur\">en</span>" - else - echo "<a href=\"${root}stardis/consortium-en.html\">en</a>" - fi - echo "</span>" - fi - echo "</div>" -} - -print_star_engine_sub_menu() -{ - root=$1 - name=$2 - components="\ - Star-Geom Geometric&nbsp;data - Star-2D Star-2D - Star-3D Star-3D - Star-SP Star-SamPling - Star-SF Star-ScatteringFunctions - Star-UVM Star-UVM - Star-VX Star-VoXel" - - echo " <div id=\"sub-menu\">" - echo " <ul>" - if [ "${name}" = "Overview" ]; then - echo " <li class=\"cur\">Overview</li>" - else - echo " <li><a href=\"${root}star-engine/star-engine.html\">Overview</a></li>" - fi - echo " <li>Components" - echo " <ul class=\"lvl2\">" - - printf "%s\n" "${components}" | \ - while read -r i; do - page=$(printf "%s" "${i}" | awk '{print $1}') - section=$(printf "%s" "${i}" | awk '{print $2}') - if [ "${name}" = "${page}" ]; then - echo " <li class=\"cur\">${section}</li>" - else - page_low=$(echo "${page}" | tr '[:upper:]' '[:lower:]') - printf " <li><a href=\"%sstar-engine/%s.html\">%s</a></li>" \ - "${root}" "${page_low}" "${section}" - fi - done - - echo " </ul>" - echo " </li>" - if [ "${name}" = "Downloads" ]; then - echo " <li class=\"cur\">Downloads</li>" - else - echo " <li><a href=\"${root}star-engine/star-engine-downloads.html\">Downloads</a></li>" - fi - echo " <li><a href=\"https://gitlab.com/meso-star/star-engine\">Repository</a></li>" - echo " </ul>" - echo " <div id=\"info\">" - echo " <p>Star-Engine was funded by the <a href=\"https://www.laregion.fr\">Occitanie" - echo " region</a> (CLE-EDSTAR) from 2016 to 2018. |Méso|Star&gt; was partner of" - echo " the project with the <a href=\"http://www.laplace.univ-tlse.fr\">LAPLACE</a> and <a" - echo " href=\"https://www.imt-mines-albi.fr/en/rapsodee-research-centre\">RAPSODEE</a>." - echo " </p>" - echo " </div>" - echo " </div>" -} - -print_header() -{ - usage="print_header -s section -n name -r root [-l lang]" - section=; name=; lang=; root= - while getopts s:n:l:r: opt; do - case "${opt}" in - s) section=${OPTARG};; - n) name=${OPTARG};; - l) lang=${OPTARG};; - r) root=${OPTARG};; - ?) echo "${usage}" >& 2 - exit 1;; - *) echo "Unreachable code" >& 2;; - esac - done - - if [ -z "${section}" ] || [ -z "${name}" ] || [ -z "${root}" ]; then - echo "${usage}" >& 2 - exit 1 - fi - - [ -z "${lang}" ] && lang="en" - - echo "<!DOCTYPE html>" - echo "" - echo "<html lang=\"${lang}\">" - echo "<head>" - echo " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">" - echo " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">" - echo " <title>|M|S&gt; ${section}</title>" - echo " <link rel=\"stylesheet\" title=\"default\" href=\"${root}meso.css\">" - echo '</head>' - echo "" - echo "<body>" - - echo "<div id=\"menu\">" - if [ "${section}" = "Home" ]; then - echo " Home" - else - echo " <a href=\"${root}misc/about-fr.html\">Home</a>" - fi - echo " &emsp13;|&emsp13;" - if [ "${section}" = "ART" ]; then - echo " A.R.T." - else - echo " <a href=\"${root}art/art.html\">A.R.T.</a>" - fi - echo " &emsp13;|&emsp13;" - if [ "${section}" = "htrdr" ]; then - echo " <code style=\"color: black; font-variant: none;\">htrdr</code>" - else - echo " <code style=\"font-variant:none;\"><a href=\"${root}htrdr/htrdr.html\">htrdr</a></code>" - fi - echo " &emsp13;|&emsp13;" - if [ "${section}" = "Schiff" ]; then - echo " Schiff" - else - echo " <a href=\"${root}schiff/schiff.html\">Schiff</a>" - fi - echo " &emsp13;|&emsp13;" - if [ "${section}" = "Solstice" ]; then - echo " Solstice" - else - echo " <a href=\"${root}solstice/solstice.html\">Solstice</a>" - fi - echo " &emsp13;|&emsp13;" - if [ "${section}" = "Stardis" ]; then - echo " Stardis" - else - echo " <a href=\"${root}stardis/stardis.html\">Stardis</a>" - fi - echo "</div>" - echo "<hr>" - case "${section}" in - Home) print_home_sub_menu "${root}" "${name}" "${lang}";; - ART) print_art_sub_menu "${root}" "${name}" ;; - htrdr) print_htrdr_sub_menu "${root}" "${name}" ;; - Schiff) print_schiff_sub_menu "${root}" "${name}" ;; - Solstice) print_solstice_sub_menu "${root}" "${name}" ;; - Stardis) print_stardis_sub_menu "${root}" "${name}" "${lang}";; - *) ;; - esac - echo "<div id=\"content\">" -} - -print_footer() -{ - echo "</div>" # content - echo "<div id=\"footer\">" - echo " - <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nd/4.0/\"> - <img alt=\"Creative Commons License\" style=\"border-width:0; float: left; margin-right: 1em\" - src=\"https://i.creativecommons.org/l/by-nd/4.0/88x31.png\" /> - </a>" - echo "Copyright &#169; 2015-2025 <a href=\"mailto:contact@meso-star.com\">|Méso|Star&gt;</a>" - echo "<br>" - echo "This page is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nd/4.0/\">Creative Commons Attribution-NoDerivatives 4.0 International License</a>." - echo "</div>" - echo "</body>" -} - -print_downloads() -{ - prefix=$1 - if [ $# -lt 2 ]; then - windows=1 - linux=1 - else - windows=0 - linux=0 - case "$2" in - Windows) windows=1;; - Linux) linux=1;; - *) ;; - esac - fi - - echo "<table class=\"list\">" - echo " <tr>" - echo " <th>Version</th>" - [ ! "${linux}" -eq 0 ] && echo " <th>GNU/Linux 64-bits</th>" - [ ! "${windows}" -eq 0 ] && echo " <th>Windows 64-bits</th>" - echo " <th>Sources</th>" - echo " </tr>" - - find downloads/ -regex ".*/${prefix}-[0-9]+.[0-9]+.[0-9]+\(-r[0-9]+\)?-[^\(Sources\)].*tar.gz" | sort -Vr | \ - while read -r arch; do - version=$(echo "${arch}" | sed "s/.*${prefix}-\([0-9]\+\.[0-9]\+\.[0-9]\+\(-r[0-9]\+\)\{0,1\}\)-.*/\1/g") - dl_files="" - - case "${dl_files}" in - *Sources*) continue;; - *) ;; - esac - - if [ ! "${linux}" -eq 0 ]; then - dl_files="${dl_files} downloads/${prefix}-${version}-GNU-Linux64.tar.gz" - fi - if [ ! "${windows}" -eq 0 ]; then - dl_files="${dl_files} downloads/${prefix}-${version}-Win64.zip" - fi - if [ -f "downloads/${prefix}-${version}-Sources.zip" ]; then - dl_files="${dl_files} downloads/${prefix}-${version}-Sources.zip" - elif [ -f "downloads/${prefix}-${version}-Source.zip" ]; then - dl_files="${dl_files} downloads/${prefix}-${version}-Source.zip" - elif [ -f "downloads/${prefix}-${version}-Sources.tar.gz" ]; then - dl_files="${dl_files} downloads/${prefix}-${version}-Sources.tar.gz" - else - dl_files="${dl_files} downloads/${prefix}-${version}-Source.tar.gz" - fi - - echo " <tr>" - echo " <td>${version}</td>" - for i in $(printf "%s" "${dl_files}"); do - dl_file="${i}" - - echo " <td>" - if [ -f "${dl_file}" ]; then - printf " [<a href=\"%s\">" "${dl_file}" - [ "${dl_file#*tar.gz}" != "${dl_file}" ] && printf "tarball" || printf "zip" - echo "</a>]" - fi - if [ -f "${dl_file}.sig" ]; then - echo " [<a href=\"${dl_file}.sig\">pgp</a>]" - fi - echo " </td>" - done - echo " </tr>" - done - - echo "</table>" -} - -set +e -if hash markdown 2> /dev/null; then - export markdown=markdown -elif hash markdown2 2> /dev/null; then - export markdown=markdown2 -elif hash markdown_py 2> /dev/null; then - export markdown=markdown_py -else - >&2 echo "Cannot find the markdown[2|_py] command" - exit 1 -fi -set -e diff --git a/meso.css b/meso.css @@ -1,30 +1,25 @@ @font-face { font-family: "Courier Prime"; - src: url('fonts/Courier Prime.ttf') format("truetype"); + font-weight: bold; + src: url('fonts/courier-prime/Courier Prime Bold.ttf'); } body { background-color: #fff; color: #000; - font-family: "Liberation Sans",sans-serif; + font-family: "Liberation", serif; margin: 1em auto; padding: 0em 1em 0em 1em; text-align: left; font-size: 1em; - max-width: 50em; + max-width: 40em; + line-height: 1.5em; } h1 { padding-bottom: 0.3em; } -.subtitle { - display: block; - font-weight: normal; - font-size: 70%; - color: #777777; -} - h2 { padding-top: 0.3em; padding-bottom: 0.3em; @@ -34,37 +29,50 @@ h4 { padding-left: 1em; } +a { + font-weight: bold; + color: #225588; +} + +dd { + margin-left: 2em; +} + code { font-family: "Liberation Mono",monospace; } pre { display: block; + margin-left: 2em; + font-size: 0.832em; font-family: "Liberation Mono",monospace; } -pre.code { - padding-left: 2em; - display: block; - font-family: "Liberation Mono",monospace; +dd pre { + margin-left: 0em; } -img { - max-width: 100%; - max-height: 100%; +pre.code a { + font-weight: normal; } -a { - font-weight: bold; - color: #225588; +figure { + text-align: center; } -pre.code a { - font-weight: normal; +img { + max-width: 90%; + display: block; + margin-left: auto; + margin-right: auto; } -#sides { - margin: 0; +blockquote { + padding: 0 2em 0 2em; + margin: 0 1em 0 1em; + max-width: 36em; + color: #666666 } hr { @@ -72,40 +80,36 @@ hr { border-bottom: 1px solid #aaaaaa; } -/******************************************************************************* - * Two columns layout - ******************************************************************************/ -.column { - float: left; - width: 50%; +table.list { + border-spacing: 0; + text-align: center; + width: 100%; } -/* Clear floats after the columns */ -.row:after { - content: ""; - display: table; - clear: both; +th.list { + font-variant: small-caps; + padding: 0.5em 2em 0.5em 2em; + margin: 0em; + text-align: center; + background-color: #ffffff; } -/******************************************************************************* - * Select -******************************************************************************/ -#select { - float: right; +.list tr:nth-child(2n+1) { + background-color: #f5f5f5; } -#select a { - font-weight: normal; - color: #AAAAAA; - text-decoration: none; +td.list { + padding: 0em 2em 0em 2em; + margin: 0em; + text-align: center; } -#select a:hover { - color: #777777; +td { + vertical-align: top; } /******************************************************************************* - * Menu + * Page layout ******************************************************************************/ #menu { width: 100%; @@ -123,13 +127,6 @@ hr { color: #777777; } -/******************************************************************************* - * Sub-menu - ******************************************************************************/ -.cur { - color: #f44d27 -} - #sub-menu { padding-bottom: 1em; } @@ -145,105 +142,23 @@ hr { font-weight: normal; } -/******************************************************************************* - * Content & news - ******************************************************************************/ +.cur { /* Selected sub-menu entry */ + color: #f44d27 +} + #content { - text-align: left; max-width: 50em; overflow: hidden; + text-align: justify; + text-justify: inter-word; } -.select-langage { - font-variant: small-caps; - float: right; - color: #000000; -} - -.news { - float: right; - clear: right; - margin: 0 0 0.5em 1em; - padding: 0 0 0 0.5em; - background-color: #f5f5f5; - width: 15em; - text-align: left; -} - -.img { - float: right; - clear: right; - margin: 0em 0em 1em 1em; -} - -.video { - text-align: center; - margin: 1em 1em 1em 1em; -} - -.caption { - text-align: left; - font-style: italic; - font-size: 90%; - margin: 0 0.5em 0 0.5em; - color: #666666 -} - -#info { - margin-top: 3em; - font-size: 80%; - color: #777777; - line-height: 1.4; -} - -#info a { - color: #333333; - font-weight: normal; -} - -/******************************************************************************* - * Main title - ******************************************************************************/ -#title { - float: left; - font-family: "Courier Prime"; - padding: 0.0em 2.0em 0.5em 1.5em; - margin: 0; - text-align: center; - font-size: 1.5em; - font-weight: bold; -} - -#title h1 { - padding-top: 0.5em; - margin: 0; -} - -#title hr { - width: 30%; - padding-top: 1em; -} - -#title h2 { - color: #000000; - padding: 0; - margin-bottom: 0; - border-bottom: none; -} - -#title a { - color: #000000; - text-decoration: none; -} - -/******************************************************************************* - * Footer - ******************************************************************************/ #footer { text-align: left; color: #777; - padding: 2.0em 0em 0em 2em; font-size: 80%; + padding: 1em 0.5em 0 0.5em; + line-height: 1.5em; } #footer a { @@ -253,160 +168,23 @@ hr { } /******************************************************************************* - * Table - ******************************************************************************/ -table.list { - border-spacing: 0; - width: 100%; -} - -th.list { - font-variant: small-caps; - padding: 0.5em 2em 0.5em 2em; - margin: 0em; - text-align: center; - background-color: #ffffff; -} - -.list tr:nth-child(2n+1) { - background-color: #f5f5f5; -} - -td.list { - padding: 0em 2em 0em 2em; - margin: 0em; - text-align: center; -} - -td { - vertical-align: top; -} - -/******************************************************************************* - * Miscellaneous - ******************************************************************************/ -.app td { - text-align: left; - margin: 0; - padding: 0em 1em 0em 1em; -} - -.app td:nth-child(2n+1) { - text-align: right; -} - -.app tr { - background: #fff; -} - -.app table { - border-spacing: 0.5em; - margin-left: 5em; -} - -.app input[type=number] { - background: #FCFCFC; - border: 2px solid #DDD; - padding: 0em 0.5em 0em 0.5em; - color: #666; - width: 5em; -} - -.app -input[type=text] { - border: none; - background: #fff; - width: 5em -} - -.app -input[type=number] { - -moz-appearance: textfield; -} - -.app -input[type=number]::-webkit-inner-spin-button, -input[type=number]::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; -} - -.app input[type=number]:focus { - background: #FFF; - border-color: #f44d27; - color: #000; -} - -/*.app input:invalid { - box-shadow: none; - background: #FCFCFC; - color: #f00; -}*/ - -.app button { - background-color: #f0f0f0; /* Green */ - border: none; - padding: 0.2em 0.2em; - text-align: center; - font-variant: small-caps; - font-weight: bold; -} - -/******************************************************************************* - * Popup - ******************************************************************************/ -/* Popup container */ -.popup { - position: relative; - display: inline-block; - font-weight: bold; - color: #225588; - text-decoration: underline; - cursor: pointer; -} - -/* The actual popup (appears on top) */ -.popup .popuptext { - visibility: hidden; - width: 18em; - background-color: #e0e0e0; - text-decoration: none; - font-weight: normal; - color: #555555; - font-style: normal; - text-align: left; - padding: 1em 1em; - position: absolute; - z-index: 1; - top: 130%; - left: 50%; - margin-left: -9em; -} - -/* Toggle this class when clicking on the popup container (hide and show the popup) */ -.popup .show { - visibility: visible; -} - -/******************************************************************************* * Mandoc * CSS derivative written by Ingo Schwarze <schwarze@openbsd.org> for * OpenBSD man pages ******************************************************************************/ .manual-text { - margin-left: 6em; + margin-left: 3.75em; } h1.Sh { font-size: 1.5em; - margin-left: -4em; + margin-left: -2.5em; } h2.Ss { font-size: 1.5em; - margin-left: -2.0em; + margin-left: -1.25em; border-bottom: none; - padding: 0em; } code.In, code.Nm, .Cm, .Fd, .Fl, .Fn, .Ic { @@ -414,6 +192,10 @@ code.In, code.Nm, .Cm, .Fd, .Fl, .Fn, .Ic { font-weight: bold; } +.Nm { + text-align: left; +} + .permalink { border-bottom: thin dotted; color: inherit; @@ -432,8 +214,11 @@ td.head-rtitle, td.foot-os { text-align: right; } td.head-vol { text-align: center; } td.head-ltitle { margin: 0em; padding: 0em; text-align: left; } + /* Display and lists */ -.Bd-indent { margin-left: 3.8em; } +.Bd code { font-size: 0.832em; } +.Bd-indent { margin-left: 3.0em; } +.Bd-indent pre { margin-left: 0em; } .Bl-bullet { list-style-type: disc; padding-left: 1em; } .Bl-bullet > li { } .Bl-dash { list-style-type: none; padding-left: 0em; } @@ -457,11 +242,11 @@ td.head-ltitle { margin: 0em; padding: 0em; text-align: left; } .Bl-ohang { } .Bl-ohang > dt { } .Bl-ohang > dd { margin-left: 0em; } -.Bl-tag { margin-top: 0.6em; margin-left: 5.5em; } +.Bl-tag { margin-top: 0.6em; margin-left: 3.25em; } .Bl-tag > dt { float: left; margin-top: 0em; - margin-left: -5.5em; + margin-left: -3.25em; padding-right: 0.5em; vertical-align: top; } diff --git a/misc/Makefile b/misc/Makefile @@ -1,82 +0,0 @@ -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -.POSIX: - -include ../config.mk - -HTML=\ - about-en.html\ - about-fr.html\ - legal-en.html\ - legal-fr.html\ - pgp_signatures.html - -build: $(HTML) - -clean: - @echo "Cleaning generated files" - @rm -f .lint\ - about-en.html\ - about-fr.html\ - legal-en.html\ - legal-fr.html\ - pgp_signatures.html\ - $(HTML:=.err) - -distclean: clean - -install: build - @rsync -avzrR --delete-after --progress $(HTML) $(PREFIX)/misc/ - -misc_build.sh: ../meso-menu.sh - @touch $@ - -################################################################################ -# html -################################################################################ -about-en.html: about-en.html.in misc_build.sh - @echo "Building $@" - @$(SHELL) misc_build.sh about en > $@ - -about-fr.html: about-fr.html.in misc_build.sh - @echo "Building $@" - @$(SHELL) misc_build.sh about fr > $@ - -legal-en.html: legal-en.html.in misc_build.sh - @echo "Building $@" - @$(SHELL) misc_build.sh legal en > $@ - -legal-fr.html: legal-fr.html.in misc_build.sh - @echo "Building $@" - @$(SHELL) misc_build.sh legal fr > $@ - -pgp_signatures.html: misc_build.sh - @echo "Building $@" - @$(SHELL) misc_build.sh pgp > $@ - -################################################################################ -# Check files -################################################################################ -lint: build .lint - @$(MAKE) -fMakefile -f .lint lint_all - -lint_all: lint_shells $(HTML:=.lint) - -lint_shells: - @echo "Linting misc_build.sh" && shellcheck -o all -x misc_build.sh - -.lint: Makefile ../configure_targets.sh - @echo "Setup .lint" - @$(SHELL) ../configure_targets.sh lint $(HTML) > .lint diff --git a/misc/about-en.html.in b/misc/about-en.html.in @@ -1,41 +0,0 @@ -<div id=title> - <h1>|Méso|Star&gt;</h1> - <div style="font-size: 60%">Understanding complex systems</div> - <hr> -</div> - -<p>&nbsp;</p> - -<p>At |M&eacute;so|Star&gt; we develop <b>scientific stochastic numeric -methods</b> in order to analyze and design energetic systems, taking into -account geometrical, temporal or phenomenological complexities. Our main -activity fields are <b>radiative transfer</b>, and <b>coupled thermal -transfers</b>.</p> - -<p>The theoretical framework and the resulting software are <a -href=http://www.demonstrator.edstar.cnrs.fr/prod/fr/>co&#x2011;developed</a> in -association with <a -href=http://www.demonstrator.edstar.cnrs.fr/prod/fr/#platform_researchers>public -research laboratories</a> we are working with. Our <b>research group</b>, whose -concerns are physics and computer science, is not only the first group of users -of the tools that we develop, but is also at the origin of the <a -href=http://www.demonstrator.edstar.cnrs.fr/prod/fr/platform/usecase/> -scientific advances</a> these tools are based upon. In addition to the -realization of our programs, we are also the ones doing the technical and -scientific support and writing documentation. If you need help, you are in -touch with to the right people.</p> - -<p>This site provides all necessary resources and information required for -using our <a href=https://www.gnu.org/licenses/copyleft.html#top>copyleft</a> -licensed software. You may not only use these programs immediately, but also -freely study, modify and redistribute them.</p> - -<p>We are proposing two types of commercial offers: actions of <b>support</b>, -<b>maintenance</b> and <b>integration</b> over the software that we develop; -and also <b>study</b> and <b>research</b> actions, that are conducted in the -long-term dynamic of both academic and industrial partners. The <a -href=https://www.meso-star.com/projects/stardis/consortium-en.html>Stardis -consortium</a> commercial offer is an example of such long-term actions for -solving coupled transfers by means of statistical algorithms. Please -<a href=mailto:contact@meso-star.com>contact us</a> for any additional -information.</p> diff --git a/misc/about-en.md b/misc/about-en.md @@ -0,0 +1,44 @@ +<div style=' + text-align: center; + font-family: "Courier Prime"; + font-size: 3em; + font-weight: bold; + margin: 1em 0 1em 0;'> +|Méso|Star> +</div> + +At |Méso|Star> we develop *scientific stochastic numeric +methods* in order to analyze and design energetic systems, taking into +account geometrical, temporal or phenomenological complexities. +Our main activity fields are *radiative transfer*, and *coupled +thermal transfers*. + +The theoretical framework and the resulting software are +[co-developed](http://www.demonstrator.edstar.cnrs.fr/prod/fr/) in +association with +[public research laboratories](http://www.demonstrator.edstar.cnrs.fr/prod/fr/#platform_researchers) +we are working with. +Our *research group*, whose concerns are physics and computer science, +is not only the first group of users +of the tools that we develop, but is also at the origin of the +[scientific advances](http://www.demonstrator.edstar.cnrs.fr/prod/fr/platform/usecase/) +these tools are based upon. +In addition to the realization of our programs, we are also the ones +doing the technical and scientific support and writing documentation. + +This site provides all necessary resources and information required for +using our [copyleft](https://www.gnu.org/licenses/copyleft.html#top) +licensed software +You may not only use these programs immediately, but also freely study, +modify and redistribute them. + +We are proposing two types of commercial offers: actions of *support*, +*maintenance* and *integration* over the software that we develop; +and also *study* and *research* actions, that are conducted in the +long-term dynamic of both academic and industrial partners. +The +[Stardis consortium](ttps://www.meso-star.com/projects/stardis/consortium-en.html) +commercial offer is an example of such long-term actions for solving +coupled transfers by means of statistical algorithms. +Please [contact us](mailto:contact@meso-star.com) for any additional +information. diff --git a/misc/about-fr.html.in b/misc/about-fr.html.in @@ -1,44 +0,0 @@ -<div id=title> - <h1>|Méso|Star&gt;</h1> - <div style="font-size: 60%">Understanding complex systems</div> - <hr> -</div> - -<p>&nbsp;</p> - -<p>Chez |Méso|Star&gt; nous développons des <b>méthodes de calcul scientifiques -par Monte-Carlo</b> pour l'analyse et le dimensionnement de systèmes -énergétiques dans toutes leurs complexités, qu'elles soient géométriques, -temporelles ou phénoménologiques. Notre activité s'inscrit pour l'essentiel -dans deux thématiques&nbsp;: le <b>transfert radiatif</b> et les <b>transferts -thermiques couplés</b>.</p> - -<p>Le cadre théorique et les programmes que nous proposons sont <a -href=http://www.demonstrator.edstar.cnrs.fr/prod/fr/>co&#x2011;développés</a> -en partenariat étroit avec les <a -href=http://www.demonstrator.edstar.cnrs.fr/prod/fr/#platform_researchers>laboratoires -de recherche</a> avec qui nous travaillons. Notre <b>collectif de -recherche</b>, en physique et en informatique, est non seulement le premier -utilisateur des outils que nous développons mais est aussi l'auteur des <a -href=http://www.demonstrator.edstar.cnrs.fr/prod/fr/platform/usecase/>avancées -scientifiques</a> sur lesquelles ils reposent. Nous sommes également ceux qui, -en plus de leur réalisation, assurons le support et la documentation de nos -programmes. Si vous avez besoin d'aide, vous parlez aux bonnes personnes.</p> - -<p>Vous trouverez sur ce site toutes les informations et ressources nécessaires -pour exécuter nos programmes. Distribués sous <a -href=https://www.gnu.org/philosophy/free-sw.fr.html>licences libres</a>, vous -pouvez non seulement les utiliser dès maintenant, mais aussi les étudier, les -modifier et les redistribuer librement.</p> - -<p>Nous proposons une offre de service qui repose sur deux types de -prestations. Des prestations de <b>support</b>, de <b>maintenance</b> et -d'<b>intégration</b> des programmes que nous développons. Et des prestations -d'<b>études</b> et de <b>recherche</b>, s'inscrivant dans la dynamique de temps -long des directions scientifiques et techniques, à la fois des industriels et -des universitaires. L'offre de <a -href=https://www.meso-star.com/projects/stardis/consortium-fr.html>consortium -Stardis</a> illustre ce type de prestations pour les questions de transferts -thermiques couplés. Nous vous invitons à <a -href=mailto:contact@meso-star.com>nous contacter</a> pour toute information -complémentaire.</p> diff --git a/misc/about-fr.md b/misc/about-fr.md @@ -0,0 +1,49 @@ +<div style=' + text-align: center; + font-family: "Courier Prime"; + font-size: 3em; + font-weight: bold; + margin: 1em 0 1em 0;'> +|Méso|Star> +</div> + +Chez |Méso|Star> nous développons des *méthodes de calcul scientifiques* +par *Monte-Carlo* pour l'analyse et le dimensionnement de systèmes +énergétiques dans toutes leurs complexités, qu'elles soient +géométriques, temporelles ou phénoménologiques. +Notre activité s'inscrit pour l'essentiel dans deux thématiques : le +*transfert radiatif* et les *transferts thermiques couplés*. + +Le cadre théorique et les programmes que nous proposons sont +[co-développés](http://www.demonstrator.edstar.cnrs.fr/prod/fr/) en +partenariat étroit avec les +[laboratoires de recherche](http://www.demonstrator.edstar.cnrs.fr/prod/fr/#platform_researchers) +avec qui nous travaillons. +Notre *collectif de recherche*, en physique et en informatique, est non +seulement le premier utilisateur des outils que nous développons mais +est aussi l'auteur des +[avancées scientifiques](http://www.demonstrator.edstar.cnrs.fr/prod/fr/platform/usecase/) +sur lesquelles ils reposent. +Nous sommes également ceux qui, en plus de leur réalisation, assurons le +support et la documentation de nos programmes. + +Vous trouverez sur ce site toutes les informations et ressources +nécessaires pour exécuter nos programmes. +Distribués sous +[licenses libres](https://www.gnu.org/philosophy/free-sw.fr.html), vous +pouvez non seulement les utiliser dès maintenant, mais aussi les +étudier, les modifier et les redistribuer librement. + +Nous proposons une offre de service qui repose sur deux types de +prestations. +Des prestations de *support*, de *maintenance* et d'*intégration* des +programmes que nous développons. +Et des prestations d'*études* et de *recherche*, s'inscrivant dans la +dynamique de temps long des directions scientifiques et techniques, à la +fois des industriels et des universitaires. +L'offre de +[consortium Stardis](../stardis/consortium-fr.html) +illustre ce type de prestations pour les questions de transferts +thermiques couplés. +Nous vous invitons à [nous contacter](mailto:contact@meso-star.com) +pour toute information complémentaire. diff --git a/misc/about.html b/misc/about.html @@ -1,17 +0,0 @@ -<!DOCTYPE html> - -<html lang=en> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> - <meta http-equiv="Refresh" content="5; url=./about-en.html"> - <title>About</title> -</head> - -<body> -<p>This web page moved to a new place.</p> - -<p>Your browser should automatically take you <a -href="about-en.html">there</a> in 5 seconds.</p> - -</html> - diff --git a/misc/index.tsv b/misc/index.tsv @@ -0,0 +1,2 @@ +Home about-@LANG@.html fr:en +Legal notices legal-@LANG@.html fr:en diff --git a/misc/legal-en.html.in b/misc/legal-en.html.in @@ -1,22 +0,0 @@ -<header> - <h1>Legal notices</h1> -</header> - -<pre class="code"> -Copyright owner: |Méso|star&gt; -Registered address: 4 rue du général Giraud 31200 Toulouse - France -E-mail: <a href=mailto:contact@meso-star.com>contact@meso-star.com</a> - -Legal form: SCOP SAS (Cooperative and participatory company by simplified shares) -Share capital: 15,000&nbsp;€ -Variable capital (minimum): 15,000&nbsp;€ -VAT Number: FR86803488014 -Commercial and companies register number: Toulouse B&nbsp;803&nbsp;488&nbsp;014 - -Publication manager: Christophe Coustet -Host: ovh - 2 rue Kellermann 59100 Roubaix 1007, France -</pre> - -<p><a href=https://www.meso-star.com>https://www.meso-star.com</a> does not use -any cookie and does not collect private data.</p> - diff --git a/misc/legal-en.md b/misc/legal-en.md @@ -0,0 +1,17 @@ +# Legal notices + +Copyright owner: |Méso|star> +Registered address: 4 rue du général Giraud 31200 Toulouse - France +E-mail: [contact@meso-star.com](mailto:contact@meso-star.com) + +Legal form: SCOP SAS (Cooperative and participatory company by simplified shares) +Share capital: 15,000 € +Variable capital (minimum): 15,000 € +VAT Number: FR86803488014 +Commercial and companies register number: Toulouse B 803 488 014 + +Publication manager: Christophe Coustet +Host: ovh - 2 rue Kellermann 59100 Roubaix 1007, France + +[https://www.meso-star.com](https://www.meso-star.com) does not use any +cookie and does not collect private data. diff --git a/misc/legal-fr.html.in b/misc/legal-fr.html.in @@ -1,22 +0,0 @@ -<header> - <h1>Mentions légales</h1> -</header> - -<pre class="code"> -Propriétaire du site&nbsp;: |Méso|star&gt; -Adresse du siège social&nbsp;: 4 rue du général Giraud 31200 Toulouse, France -Courriel de contact&nbsp;: <a href=mailto:contact@meso-star.com>contact@meso-star.com</a> - -Forme juridique&nbsp;: SCOP SAS -Capital social&nbsp;: 15&#8239;000&nbsp;€ -Capital variable (minimum)&nbsp;: 15&#8239;000&nbsp;€ -Numéro de TVA&nbsp;: FR86803488014 -Numéro RCS&nbsp;: Toulouse B&nbsp;803&nbsp;488&nbsp;014 - -Responsable de publication&nbsp;: Christophe Coustet -Hébergeur&nbsp;: ovh - 2 rue Kellermann 59100 Roubaix 1007, France -</pre> - -<p><a href=https://www.meso-star.com>https://www.meso-star.com</a> n'utilise -pas de cookie et ne collecte aucune donnée personnelle.</p> - diff --git a/misc/legal-fr.md b/misc/legal-fr.md @@ -0,0 +1,17 @@ +# Mentions légales + +Propriétaire du site : |Méso|star +Adresse du siège social : 4 rue du général Giraud 31200 Toulouse, France +Courriel de contact : [contact@meso-star.com](mailto:contact@meso-star.com) + +Forme juridique : SCOP SAS +Capital social : 15 000 € +Capital variable (minimum) : 15 000 € +Numéro de TVA : FR86803488014 +Numéro RCS : Toulouse B 803 488 014 + +Responsable de publication : Christophe Coustet +Hébergeur : ovh - 2 rue Kellermann 59100 Roubaix 1007, France + +[https://www.meso-star.com](https://www.meso-star.com) +n'utilise pas de cookie et ne collecte aucune donnée personnelle. diff --git a/misc/misc_build.sh b/misc/misc_build.sh @@ -1,51 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -. ../meso-menu.sh - -about() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s about <fr|en>\n" "$0" >&2 - exit 1 - fi - - print_header -s Home -n About -l "$1" -r ../ - cat "about-$1.html.in" - print_footer -} - -legal() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s lang <fr|en>\n" "$0" >&2 - exit 1 - fi - - print_header -s Home -n Legal -l "$1" -r ../ - cat "legal-$1.html.in" - print_footer -} - -pgp() -{ - print_header -s Home -n PGP -r ../ - cat pgp_signatures.html.in - print_footer -} - -"$@" diff --git a/misc/pgp_signatures.html.in b/misc/pgp_signatures.html.in @@ -1,72 +0,0 @@ -<header> - <h1 id=PGP>PGP signatures</h1> -</header> - -<p>Several archives distributed onto this site are cryptographically signed -using <a -href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy#How_PGP_encryption_works"> -OpenPGP</a>-compliant signatures. Everyone is encouraged to check the integrity -of the downloaded content by verifying its corresponding signature. The signing -and verification process ensures that the downloaded files were not modified or -tampered since their creation and thus prevents anyone to use corrupted -files.</p> - -<p>On GNU/Linux, the most common way for verifying the PGP signature is to use -<a href=https://www.gnupg.org/>GnuPG</a>. First ensure that GnuPG is installed -on your system. Then download the archive and its PGP signature and use the -<code>gpg2</code> command to check the integrity of the archive against its -signature. - -<pre class="code"> -$ wget www.meso-star.com/solstice/downloads/Archive-Name-GNU-Linux64.tar.gz -$ wget www.meso-star.com/solstice/downloads/Archive-Name-GNU-Linux64.tar.gz.sig -$ gpg2 --verify Archive-Name-GNU-Linux64.tar.gz.sig -</pre> - -<p>The first time you may obtain the likely output:</p> - -<pre class="code"> -gpg: Signature made Wed 20 Sep 2017 08:28:35 AM CEST using RSA key 7322B68F7896C455 -gpg: Can't check signature: No public key -</pre> - -<p>This means that you do not have the public part of the PGP key used to sign -this archive. In the previous example the key identifier is -<code>7322B68F7896C455</code>. Use <code>gpg2</code> to download this key from -the PGP keyserver.</p> - -<pre class="code"> -$ gpg2 --keyserver hkps://hkps.pool.sks-keyservers.net --recv-keys 7322B68F7896C455 -</pre> - -<p>Now you can check the integrity of the archive with respect to the -previously downloaded public-key.</p> - -<pre class="code"> -$ gpg2 --verify Archive-Name-GNU-Linux64.tar.gz.sig -gpg: assuming signed data in 'Archive-Name-GNU-Linux64.tar.gz' -gpg: Signature made Tue 26 Sep 2017 09:28:40 AM CEST -gpg: using RSA key 1F494948BAA4F5F4A0AF82FF7322B68F7896C455 -gpg: Good signature from "Vincent Forest (http://www.meso-star.com) -gpg: &lt;vincent.forest@meso-star.com&gt;" [ultimate] -gpg: WARNING: This key is not certified with a trusted signature! -gpg: There is no indication that the signature belongs to the owner. -Primary key fingerprint: 20EB E4CF 3D9F 4B9A E55D 5F59 679F 2975 93B2 C8A2 - Subkey fingerprint: 1F49 4948 BAA4 F5F4 A0AF 82FF 7322 B68F 7896 C455 -</pre> - -<p>Note that GnuPG warns that the key is not certified. In other words you -cannot be sure that the key used to sign the archive really belongs to the -owner. The best option is to physically meet the actual owner and ask for him -about the key validity. More simply, but also less secure, you can review the -list of signatures of the key with <code>gpg2 --list-sigs</code> and then make a -decision whether you <a -href="https://www.gnupg.org/gph/en/manual/x334.html">trust</a> that key or -not.</p> - -<p>On Windows, you can use the <a href="https://www.gpg4win.org/">GPG4Win</a> -tool to verify the archive signature. The process is roughly the same that on -GNU/Linux: you first have to import the public key used to sign the archive -before verifying its integrity and checking that the imported key really -belongs to the owner.</p> - diff --git a/schiff/.gitignore b/schiff/.gitignore @@ -1,4 +1,6 @@ -schiff.html +schiff.md schiff-docs.html schiff-downloads.html -Schiff-*-GNU-Linux64/ +schiff.html +schiff-downloads.md +Schiff-0.4.2-GNU-Linux64 diff --git a/schiff/Makefile b/schiff/Makefile @@ -1,118 +0,0 @@ -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -.POSIX: - -include ../config.mk - -SCHIFF_VERSION=0.4.2 -SCHIFF_DIR=Schiff-$(SCHIFF_VERSION)-GNU-Linux64 -SCHIFF_ARCH=downloads/$(SCHIFF_DIR).tar.gz -SCHIFF_README=$(SCHIFF_DIR)/share/doc/schiff/README.md -SCHIFF_PKG=\ - downloads/Schiff-0.4.2-Sources.tar.gz\ - downloads/Schiff-0.4.2-GNU-Linux64.tar.gz\ - downloads/Schiff-0.4.1-Source.tar.gz\ - downloads/Schiff-0.4.1-GNU-Linux64.tar.gz\ - downloads/Schiff-0.4.0-Source.tar.gz\ - downloads/Schiff-0.4.0-GNU-Linux64.tar.gz\ - downloads/Schiff-0.3.1-Sources.tar.gz\ - downloads/Schiff-0.3.1-GNU-Linux64.tar.gz -SCHIFF_SIG=$(SCHIFF_PKG:=.sig) - -MAN=\ - $(SCHIFF_DIR)/share/man/man1/schiff.1\ - $(SCHIFF_DIR)/share/man/man5/schiff-geometry.5\ - $(SCHIFF_DIR)/share/man/man5/schiff-output.5 - -IMG = particles.png -HTML = schiff.html schiff-docs.html schiff-downloads.html - -build: .sig .man - @$(MAKE) -fMakefile -f .sig -f .man build_all - -build_all: $(HTML) man - -clean: - @echo "Cleaning generated files" - @rm -rf man - @rm -f .sig .lint .man $(HTML) $(HTML:=.err) - -distclean: clean - @echo "Cleaning PGP signatures and extracted files" - @rm -f $(MAN) $(SCHIFF_README) $(SCHIFF_SIG) - -install: build - @rsync -avzrR --delete-after --progress \ - downloads/schiff_pretty_results.sh\ - $(HTML)\ - $(IMG)\ - $$(find man -name "*.html")\ - $(SCHIFF_PKG)\ - $(SCHIFF_SIG)\ - $(PREFIX)/schiff/ - -schiff_build.sh: ../meso-menu.sh - @touch $@ - -################################################################################ -# Overview -################################################################################ -schiff.html: schiff.html.in $(IMG) schiff_build.sh - @echo "Building $@" - @$(SHELL) schiff_build.sh overview $(SCHIFF_VERSION) > $@ - -################################################################################ -# Manual pages -################################################################################ -schiff-docs.html: schiff-docs.html.in schiff_build.sh - @echo "Building $@" - @$(SHELL) schiff_build.sh documentations > $@ - -################################################################################ -# Downloads -################################################################################ -schiff-downloads.html: $(SCHIFF_SIG) $(SCHIFF_README) schiff_build.sh - @echo "Building $@" - @$(SHELL) schiff_build.sh downloads $(SCHIFF_README) > $@ - -$(SCHIFF_README) $(MAN): - @echo "Extracting data from $(SCHIFF_ARCH)" - @tar -xz -f $(SCHIFF_ARCH) $(SCHIFF_README) $(MAN) - -################################################################################ -# Check files -################################################################################ -lint: build .lint .sig - @$(MAKE) -fMakefile -f .lint -f .sig lint_all - -lint_all: lint_shells $(HTML:=.lint) - -lint_shells: - @echo "Checking schiff_build.sh" && shellcheck -o all -x schiff_build.sh - -################################################################################ -# Miscellaneous -################################################################################ -.sig: Makefile ../configure_targets.sh - @echo "Setup .sig" - @$(SHELL) ../configure_targets.sh sig $(SCHIFF_PKG)> .sig - -.lint: Makefile ../configure_targets.sh - @echo "Setup .lint" - @$(SHELL) ../configure_targets.sh lint $(HTML) > .lint - -.man: Makefile ../configure_targets.sh - @echo "Setup .man" - @$(SHELL) ../configure_targets.sh man Schiff $(SCHIFF_VERSION) $(MAN) > .man diff --git a/schiff/config.sh.in b/schiff/config.sh.in @@ -0,0 +1,6 @@ +#!/bin/sh + +version="0.4.2" +arch="downloads/Schiff-${version}-GNU-Linux64.tar.gz" +directory="Schiff-${version}-GNU-Linux64" +readme="${directory}/share/doc/schiff/README.md" diff --git a/schiff/downloads/Schiff-0.3.1-GNU-Linux64.tar.gz b/schiff/downloads/Schiff-0.3.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 0fbcc92b9b4b6885e6a268cfde78ee0a173e116305330ca6eeb54cf1bd0b7ed5 14204264 -\ No newline at end of file diff --git a/schiff/downloads/Schiff-0.3.1-Sources.tar.gz b/schiff/downloads/Schiff-0.3.1-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad 5c7c5e804ade930ae31d12328aa218fd6d61e9ca1f8de98865a801f2878d8dca 341977 -\ No newline at end of file diff --git a/schiff/downloads/Schiff-0.4.0-GNU-Linux64.tar.gz b/schiff/downloads/Schiff-0.4.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 80a29e72c13d5c62051ccd8b1ef45a32379432aeae8c1b56fdf5184be1875059 25594017 -\ No newline at end of file diff --git a/schiff/downloads/Schiff-0.4.0-Source.tar.gz b/schiff/downloads/Schiff-0.4.0-Source.tar.gz @@ -1 +0,0 @@ -#$# git-wad 998ec137adba4367690553b8b56cd9c9e4bcbc6de425317c329868f8a41da059 411138 -\ No newline at end of file diff --git a/schiff/downloads/Schiff-0.4.1-GNU-Linux64.tar.gz b/schiff/downloads/Schiff-0.4.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 1686c3c06df60ca5d1179705106cb6e21c5bfbd4d67718fe26926ff62535c0cd 25606131 -\ No newline at end of file diff --git a/schiff/downloads/Schiff-0.4.1-Source.tar.gz b/schiff/downloads/Schiff-0.4.1-Source.tar.gz @@ -1 +0,0 @@ -#$# git-wad 1919141863648a286609792a0ed1181ba7fe7a7cc77dadafebd549aaa25f4e34 434961 -\ No newline at end of file diff --git a/schiff/hooks/00-extract-archive.sh b/schiff/hooks/00-extract-archive.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +. "./config.sh.in" + +>&2 printf 'Extracting %s\n' "${arch}" +tar -xz -f "${arch}" "${directory}/share/man" "${readme}" diff --git a/schiff/hooks/00-sign-archives.sh b/schiff/hooks/00-sign-archives.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +find downloads \ + -name "*.tar" \ + -o -name "*.tar.gz" \ + -o -name "*.tgz" \ + -o -name "*.zip" \ +| while read -r i; do + + sign="${i}.sig" + + >&2 printf 'Signing %s\n' "${i}" + gpg --yes -a -o "${sign}" --detach-sign "${i}" + + # Write the generated files to standard output to inform the build + # system which files it needs to handle during installation. + printf '%s/%s\n' "${PWD##*/}" "${i}.sig" + +done diff --git a/schiff/hooks/01-generate-man.sh b/schiff/hooks/01-generate-man.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +. "./config.sh.in" + +######################################################################## +# Helper function +######################################################################## +man_pages() +{ + find "${directory}/share/man" -name "schiff*.[15]" +} + +# Man to convert is submitted on stdin +man2html() # output_filename +{ + { + cd .. + sh ./scripts/generate_header.sh "${OLDPWD##*/}/$1" + sh ./scripts/convert_man.sh + cat ./templates/footer.html + cd "${OLDPWD}" + } > "$1" +} + +######################################################################## +# The script +######################################################################## +man_pages | while read -r i; do + filename="$(basename "${i}")" + section="${filename##*.}" + + if ! [ -d "./man/man${section}" ]; then + mkdir -p "./man/man${section}"; + fi + + dst="man/man${section}/${filename}.html" + man2html "${dst}" < "${i}" + + # Check the result of the HTML conversion + if ! tidy --show-info no --show-filename yes -qe "${dst}"; then + >&2 printf '%s: error converting %s\n' "${0##*/}" "${i}" + exit 1 + fi + + # Write the generated files to standard output to inform the build + # system which files it needs to handle during installation. + printf '%s/%s\n' "${PWD##*/}" "${dst}" +done diff --git a/schiff/particles.png b/schiff/images/particles.png diff --git a/schiff/index.tsv b/schiff/index.tsv @@ -0,0 +1,4 @@ +Overview schiff.html +Manual pages schiff-docs.html +Downloads schiff-downloads.html +Git https://gitlab.com/meso-star/schiff diff --git a/schiff/schiff-docs.html.in b/schiff/schiff-docs.html.in @@ -1,13 +0,0 @@ -<header> - <h1>Schiff - <span class=subtitle> - Reference documentation - </span> - </h1> -</header> - -<ul> - <li><a href=man/man1/schiff.1.html>schiff(1)</a></li> - <li><a href=man/man5/schiff-geometry.5.html>schiff-geometry(5)</a></li> - <li><a href=man/man5/schiff-output.5.html>schiff-output(5)</a></li> -</ul> diff --git a/schiff/schiff-docs.md b/schiff/schiff-docs.md @@ -0,0 +1,5 @@ +# Reference documentation + +- [schiff(1)](man/man1/schiff.1.html) +- [schiff-geometry(5)](man/man5/schiff-geometry.5.html) +- [schiff-output(5)](man/man5/schiff-output.5.html) diff --git a/schiff/schiff-downloads.sh b/schiff/schiff-downloads.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" +. "../scripts/meso-web.sh" + +set -e + +# Title +echo '# Downloads' + +# List of archives to download +print_downloads "${PWD%%*/}" Schiff Linux + +# Release notes +sed -n '/^## Release notes/,/^## License/p' "${readme}" | sed '$d' diff --git a/schiff/schiff.html.in b/schiff/schiff.html.in @@ -1,202 +0,0 @@ -<header> - <h1>Schiff - <span class=subtitle> - Radiative properties of soft particles - </span> - </h1> -</header> - -<div class="news"> - <p><b>Download Schiff ${VERSION}</b></p> - <ul> - <li>GNU/Linux: - <a href="downloads/Schiff-${VERSION}-GNU-Linux64.tar.gz">tarball</a> / - <a href="downloads/Schiff-${VERSION}-GNU-Linux64.tar.gz.sig">pgp</a></li> - <li>Sources: - <a href="downloads/Schiff-${VERSION}-Sources.tar.gz">tarball</a> / - <a href="downloads/Schiff-${VERSION}-Sources.tar.gz.sig">pgp</a></li> - </ul> -</div> - -<div class="news"> - <p><b>Related articles</b></p> - <ul> - <li> - <a href="https://doi.org/10.1364/OL.500487">Dauchet et al.</a> - <br>(Optics Letters 2023) - </li> - </ul> -</div> - -<p>The Schiff program computes the <b>radiative properties</b> of soft -particles. It uses the <b>Monte-Carlo</b> method to solve Maxwell's equations -within the <a -href="https://journals.aps.org/pr/abstract/10.1103/PhysRev.104.1481">L. Schiff's -approximation</a> as presented in <a -href="http://www.sciencedirect.com/science/article/pii/S0022407315003283">Charon -et al. 2015</a>.The main advantages of using Monte-Carlo are: the possibility -to address <b>any shape</b> of particle, and the results are provided with a -<b>numerical accuracy</b>.</p> - -<p>For a mixture of soft particles, Schiff estimates the total -<b>cross-sections</b> (absorption, scattering and extinction cross-sections) in -addition of the <b>phase function</b>, its cumulative and its inverse -cumulative.</p> - -<p>The set of particles to simulate is defined by its <b>refractive index</b> - -provided at various wavelengths - and a <b>geometry distribution</b> that -controls how the particles look like into the mixture. More precisely, this -distribution describes the main shapes of the particles (sphere, cylinder, -helical pipe, <i>etc.</i>) and their statistical variation according to the -distribution of their parameters (gaussian, lognormal, <i>etc.</i>).</p> - -<h2>A straight interface</h2> - -<div class="img" style="width: 16em"> - <a href="particles.png"> - <img src="particles.png" alt="Particles"> - </a> - <div class="caption"> - Examples of particle shapes handled by Schiff. - </div> -</div> - -<p>The Schiff program is a <b>command-line tool</b> that processes input data, -performs computations, write results and that's all. It makes no assumptions on -how the input data are created excepted that it has to follow the expected file -formats. The simulation results are also provided as is, in a raw ASCII -format.</p> - -<p>This thin interface is particularly -well suited to be <b>extended</b> and <b>integrated into any toolchain</b>. -According to the user needs, the optical properties of the particles can be -entered manually or generated by an external program. In the same way, the -output data can either be directly interpreted or post-processed by any script -with respect to the targeted toolchain.</p> - -<h2>Quick start</h2> - -<p>Download the desired archive of Schiff and verify its integrity against its -<a href=../misc/pgp_signatures.html>PGP signature</a>. Then extract it. Finally -source the provided <code>schiff.profile</code> file to register the Schiff -installation for the current shell priorly to the invocation of the -<code>schiff</code> program.</p> - -<pre class="code"> -$ source ~/Schiff-${VERSION}-GNU-Linux64/etc/schiff.profile -$ schiff -h -</pre> - -<p>The Schiff <b>reference documentation</b> is provided trough man pages. -Use the <code>man</code> command-line to consult it.</p> - -<pre class="code"> -$ man schiff -$ man schiff-geometry -$ man schiff-output -</pre> - -<h2 id=build>Build from sources</h2> - -<p>Schiff can be built directly from its source tree. The simplest way to do -this is to rely on the <code>schiff</code> branch of the <a -href="https://gitlab.com/meso-star/star-engine/tree/schiff">Star-Engine</a> -project: it provides CMake scripts that automate the download, the compilation -and the installation of Schiff and its dependencies. This build procedure -assumes the following prerequisites:</p> - -<ul> - <li><a href=https://git-scm.com>git</a> source control.</li> - <li><a href=https://gcc.gnu.org>GNU Compiler Collection</a> in version 4.9.2 - or higher.</li> - <li><a href="https://cmake.org">CMake</a> in version 3.1 or higher.</li> -</ul> - -<h3>Build</h3> - -<p>Assuming that the aforementioned prerequisites are available, the build -procedure is summed up to:</p> - -<pre class="code"> -~ $ git clone -b Schiff-${VERSION} \ - https://gitlab.com/meso-star/star-engine.git Schiff-${VERSION} -~ $ mkdir Schiff-${VERSION}/build; cd Schiff-${VERSION}/build -~/Schiff-${VERSION}/build $ cmake ../cmake -~/Schiff-${VERSION}/build $ make -</pre> - -<h3>Run</h3> - -<p>By default Schiff is installed in the <code>local</code> subdirectory of -<code>Schiff-${VERSION}</code>. Source the provided <code>schiff.profile</code> -file to register Schiff against the current shell.</p> - -<pre class="code"> -$ source ~/Schiff-${VERSION}/local/etc/schiff.profile -$ schiff -h -</pre> - -<h3>Package</h3> - -<p>Once built, the Schiff installation can be packaged in an archive that can -then be deployed on compatible systems, <i>i.e.</i> systems whose C library is -compatible with the one available on the system used to build Schiff.</p> - -<pre class="code"> -~/Schiff-${VERSION}/build $ make pkg -~/Schiff-${VERSION}/build $ ls package/Schiff-${VERSION}* # list packages -</pre> - - -<h2>Post-Process</h2> - -<p>The following Bash script illustrates how to post-process the Schiff -results. It is an example, provided as is, without additional support. -According to your needs, you can study, modify, extend or redistribute it -freely.</p> - -<table> - <tr><th>Pretty results</th></tr> - <tr><td>[<a href='downloads/schiff_pretty_results.sh'>Bash script</a>]</td></tr> -</table> - -<p>This script reads an output file generated by the <code>schiff</code> -command line and split its raw ASCII results in several human readable text -files in order to simplify their analysis.</p> - -<pre class="code"> -$ schiff -i geom-distrib.yaml -l 2.3 -w0.5:0.6 -o output properties -$ bash ./schiff_pretty_results.sh output -Write xsections.txt -Write descs.txt -Write func_0.5.txt -Write func_0.6.txt -Write cumul_0.5.txt -Write cumul_0.6.txt -Write invcumul_0.5.txt -Write invcumul_0.6.txt -</pre> - -<p>The first generated file, named <code>xsections.txt</code>, lists for each -wavelength submitted with the <code>-w</code> option, its associated -absorption, extinction and scattering cross sections. The second file, -<code>descs.txt</code>, gives overall informations for each simulated -wavelengths, like the limit scattering angles from which its phase function was -analytically computed. Then for each wavelength, the script generates 3 files -named <code>func_&lt;WLEN&gt;.txt</code>, <code>cumul_&lt;WLEN&gt;.txt</code>, -and <code>invcumul_&lt;WLEN&gt;.txt</code> that store for the wavelength -<code>&lt;WLEN&gt;</code>, the value of its associated phase function as well -as its cumulative and its inverse cumulative, respectively.</p> - -<h2>License</h2> - -<p>Copyright &#169; 2020, 2021 <a href="mailto:contact@meso-star.com"> -|M&eacute;so|Star&gt;</a>.<br> -Copyright &#169; 2015, 2016 Centre National de la Recherche Scientifique -(CNRS).</p> - -<p>Schiff is free software released under the GPLv3+ -license: GNU GPL version 3 or later. You are welcome to redistribute it under -certain conditions; refer to the <a -href="https://www.gnu.org/licenses/gpl.html">license</a> for details.</p> - diff --git a/schiff/schiff.md.in b/schiff/schiff.md.in @@ -0,0 +1,177 @@ +# Schiff + +The Schiff program computes the *radiative properties* of soft +particles. +It uses the *Monte-Carlo* method to solve Maxwell's equations +within the +[L. Schiff's approximation](https://journals.aps.org/pr/abstract/10.1103/PhysRev.104.1481) +as presented in +[Charon et al. 2025](http://www.sciencedirect.com/science/article/pii/S0022407315003283). +The main advantages of using Monte-Carlo are: the possibility to address +*any shape* of particle, and the results are provided with a *numerical +accuracy*. + +For a mixture of soft particles, Schiff estimates the total +*cross-sections* (absorption, scattering and extinction cross-sections) +in addition of the *phase function*, its cumulative and its inverse +cumulative. + +The set of particles to simulate is defined by its *refractive index* - +provided at various wavelengths - and a *geometry distribution* that +controls how the particles look like into the mixture. +More precisely, this +distribution describes the main shapes of the particles (sphere, cylinder, +helical pipe, etc.) and their statistical variation according to the +distribution of their parameters (gaussian, lognormal, etc.). + +[![Particles](thumbs/particles.jpg)](images/particles.png) + +> Examples of particle shapes handled by Schiff. + +## Related articles + +- [Dauchet et al. 2023](https://doi.org/10.1364/OL.50048), + "Wave-scattering processes: path-integrals designed for the numerical + handling of complex geometries", Optics Letters + ([open access](https://arxiv.org/abs/2210.16146)) + +- [Charon et al. 2016](http://www.sciencedirect.com/science/article/pii/S0022407315003283), + "Monte Carlo implementation of Schiff׳s approximation for estimating + radiative properties of homogeneous, simple-shaped and optically soft + particles: Application to photosynthetic micro-organisms", Journal of + Quantitative Spectroscopy and Radiative Transfer + ([open access](https://hal.science/hal-01599991v1/)) + +- [Weitz et al. 2016](https://www.sciencedirect.com/science/article/abs/pii/S002199911630393X), + "Monte Carlo efficiency improvement by multiple sampling of + conditioned integration variables", Journal of Computational Physics + ([open access](https://hal.science/hal-01599986/)) + +## A straight interface + +The Schiff program is a *command-line tool* that processes input data, +performs computations, write results and that's all. +It makes no assumptions on how the input data are created excepted that +it has to follow the expected file formats. +The simulation results are also provided as is, in a raw ASCII format. + +This thin interface is particularly well suited to be *extended* and +*integrated into any toolchain*. +According to the user needs, the optical properties of the particles can be +entered manually or generated by an external program. +In the same way, the output data can either be directly interpreted or +post-processed by any script with respect to the targeted toolchain. + +## Quick start + +Download the desired [archive](schiff-downloads.html) of Schiff and +verify its integrity against its PGP signature. +Then extract it. +Finally +source the provided `schiff.profile` file to register the Schiff +installation for the current shell priorly to the invocation of the +`schiff` program. + + source ~/Schiff-@VERSION@-GNU-Linux64/etc/schiff.profile + schiff -h + +The Schiff *reference documentation* is provided trough man pages. +Use the `man` command-line to consult it. + + man schiff + man schiff-geometry + man schiff-output + +## Build from sources + +Schiff can be built directly from its source tree. +The simplest way to do this is to rely on the `schiff` branch of the +[Star-Engine](https://gitlab.com/meso-star/star-engine/tree/schiff) +project: it provides CMake scripts that automate the download, the compilation +and the installation of Schiff and its dependencies. +This build procedure assumes the following prerequisites: + +- git source control +- GNU Compiler Collection in version 4.9.2 or higher +- CMake in version 3.1 or higher + +### Build + +Assuming that the aforementioned prerequisites are available, the build +procedure is summed up to: + + git clone -b Schiff-@VERSION@ \ + https://gitlab.com/meso-star/star-engine.git Schiff-@VERSION@ + mkdir Schiff-@VERSION@/build + cd Schiff-@VERSION@/build + cmake ../cmake + make + +### Run + +By default Schiff is installed in the `local` subdirectory of +`Schiff-@VERSION@`. Source the provided `schiff.profile` file to +register Schiff against the current shell. + + source ~/Schiff-@VERSION@/local/etc/schiff.profile + schiff -h + +### Package + +Once built, the Schiff installation can be packaged in an archive that +can then be deployed on compatible systems, i.e. systems whose C +library is compatible with the one available on the system used to build +Schiff. + + cd Schiff-@VERSION@/build + make pkg + ls package/Schiff-@VERSION@* # list packages + +## Post-Process + +The following Bash script illustrates how to post-process the Schiff +results. +It is an example, provided as is, without additional support. +According to your needs, you can study, modify, extend or redistribute +it freely : + + + - [Download](downloads/schiff_pretty_results.sh) the pretty result + script + +This script reads an output file generated by the `schiff` command line +and split its raw ASCII results in several human readable text files in +order to simplify their analysis. + + schiff -i geom.yaml -l 2.3 -w0.5:0.6 -o output properties + bash ./schiff_pretty_results.sh output + Write xsections.txt + Write descs.txt + Write func_0.5.txt + Write func_0.6.txt + Write cumul_0.5.txt + Write cumul_0.6.txt + Write invcumul_0.5.txt + Write invcumul_0.6.txt + +The first generated file, named `xsections.txt`, lists for each +wavelength submitted with the `-w` option, its associated +absorption, extinction and scattering cross sections. The second file, +`descs.txt`, gives overall informations for each simulated +wavelengths, like the limit scattering angles from which its phase function was +analytically computed. +Then for each wavelength, the script generates 3 files named +`func_<WLEN>.txt`, `cumul_<WLEN>.txt`, and `invcumul_<WLEN>.txt` that +store for the wavelength `<WLEN>`, the value of its associated phase +function as well as its cumulative and its inverse cumulative, +respectively. + +## License + +Copyright © 2020, 2021 [|Méso|Star>](mailto:contact@meso-star.com) +Copyright © 2015, 2016 Centre National de la Recherche Scientifique (CNRS) + +Schiff is free software released under the GPLv3+ license: GNU GPL +version 3 or later. +You are welcome to redistribute it under certain conditions; refer to +the [license](https://www.gnu.org/licenses/gpl.html) for details. diff --git a/schiff/schiff.sh b/schiff/schiff.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" + +sed "s/@VERSION@/${version}/g" schiff.md.in diff --git a/schiff/schiff_build.sh b/schiff/schiff_build.sh @@ -1,57 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -. ../meso-menu.sh - -overview() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s overview <version>\n" "$0" >&2 - exit 1 - fi - - print_header -s Schiff -n Overview -r ../ - VERSION=$1 envsubst < schiff.html.in - print_footer -} - -documentations() -{ - print_header -s Schiff -n Documentations -r ../ - cat schiff-docs.html.in - print_footer -} - -downloads() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s downloads <readme>\n" "$0" >&2 - exit 1 - fi - - release_notes=$(${markdown} "$1" \ - | sed -n '/^<h2>Release notes<\/h2>/,/^<h2>License<\/h2>/p' | sed '$d') - - print_header -s Schiff -n Downloads -r ../ - echo "<header><h1>Download Schiff</h1></header>" - - print_downloads Schiff "Linux" - echo "${release_notes}" - print_footer -} - -"$@" diff --git a/schiff/thumbs/particles.jpg b/schiff/thumbs/particles.jpg @@ -0,0 +1 @@ +#$# git-wad 2aafb7d9413d4ca38cbc1d3f26fcb4734407189e944dac1bee2c343758f74196 66201 +\ No newline at end of file diff --git a/scripts/convert_man.sh b/scripts/convert_man.sh @@ -0,0 +1,52 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +# The following line can be translated as follows: +# - Convert the nroff file submitted on stdin to HTML +# - Remove the page header +# - Remove the footer +# - Remove invalid links (they are used as section tags) +# - Replace multiple non-breaking spaces with a single one +# - Remove the opening HTML tag tt, which is no longer supported +# - Remove the closing HTML tag tt, which is no longer supported +# - Remove the compact attribute from the HTML tag dl, which is no +# longer supported +# - Remove links on csplit, feh, gnuplot, sed, mmap, and mpirun +# - Correct the link to the GPLv3+ license +# - Remove the unexpected link on sqrt(2) +# - Fix man2html issues that translate the ' character to cq +# - Use tidy to further clean up the HTML code + man2html -r \ +| tail -n +10 \ +| sed '/^<HR>$/,$d' \ +| sed 's/\(\&nbsp;\)\{1,\}/\&nbsp;/g' \ +| sed 's/^<A NAME="[[:alpha:]]\{0,\}">\&nbsp;<\/A>//g' \ +| sed 's/<TT>//g' \ +| sed 's/<\/TT>//g' \ +| sed 's/<DL COMPACT>/<DL>/g' \ +| sed -e 's/<B><A HREF="\.\.\/man1\/csplit\.1\.html">csplit<\/A><\/B>/csplit/g' \ + -e 's/<B><A HREF="\.\.\/man1\/feh\.1\.html">feh<\/A><\/B>/feh/g' \ + -e 's/<B><A HREF="\.\.\/man1\/gnuplot\.1\.html">gnuplot<\/A><\/B>/gnuplot/g' \ + -e 's/<B><A HREF="\.\.\/man1\/sed\.1\.html">sed<\/A><\/B>/sed/g' \ + -e 's/<B><A HREF="\.\.\/man1\/mpirun\.1\.html">mpirun<\/A><\/B>/mpirun/g' \ + -e 's/<B><A HREF="\.\.\/man2\/mmap\.2\.html">mmap<\/A><\/B>/mmap/g' \ + -e 's/gpl\.html\.">\(.*\).<\/A>/gpl.html">\1<\/A>./g' \ + -e 's/<A HREF="\.\.\/man2\/sqrt\.2\.html">sqrt<\/A>/sqrt/g' \ + -e "s/cq\([a-z]\)\>/'\1/g" \ +| tidy --show-info no -m --show-body-only yes 2>/dev/null || true diff --git a/scripts/generate_header.sh b/scripts/generate_header.sh @@ -0,0 +1,243 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +. "./scripts/meso-web.sh" + +######################################################################## +# Helper functions +######################################################################## +# List the indexed content in TSV format. Each line contains the index +# label, followed by the indexed content, and possibly an indicator of +# the language used. +# +# The input data is the content of an index.tsv file, submitted on +# standard input. +indexed_content() +( + strip_dummy | while read -r _line; do + _langs="$(echo "${_line}" | cut -d' ' -f3)" + + if [ -z "${_langs}" ]; then + # There is no lang field defined: print the line as it + printf '%s\n' "${_line}" + + else + # The lang field is defined. Duplicate the line as many times as + # there are languages listed. Define the content URI by replacing + # the @LANG@ string with the language value. + echo "${_langs}" \ + | sed 's/:/\n/g' \ + | while read -r _translation; do + echo "${_line}" \ + | sed -e "s/\t[^\t]\{1,\}$/\t${_translation}/g" \ + -e "s/@LANG@/${_translation}/g" + done + fi + done +) + +print_head() +{ + printf '<!DOCTYPE html>\n' + printf '<html lang="%s">\n' "${lang}" + printf '<head>\n' + printf ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n' + printf ' <meta name="viewport" content="width=device-width, initial-scale=1">\n' + printf ' <title>|M|S> %s</title>\n' "${label}" + printf ' <link rel="stylesheet" title="default" href="%smeso.css">\n' "${root}" + printf '</head>\n' + printf '<body>\n' +} + +# Print top-level menu +print_menu1() +( + printf '<div id="menu">\n' + + _separator="" + strip_dummy < "${worktree}/menu.tsv" | while read -r _i; do + + # Retrieve the menu label and its associated target + _label="$(echo "${_i}" | cut -d' ' -f1)" + _target="$(echo "${_i}" | cut -d' ' -f2)" + + echo "${_separator}" && _separator=' &emsp13;|&emsp13;' + + if [ "${_target}" = "${section}" ]; then + printf ' %s\n' "${_label}" + + elif [ -f "${worktree}/${_target}/index.tsv" ]; then + # Get the default page of the section, i.e., the first entry in + # its index. The menu is a link to it. + _uri="$(indexed_content < "${worktree}/${_target}/index.tsv" \ + | head -1 | cut -d' ' -f2)" + + printf ' <a href="%s%s/%s">%s</a>\n' \ + "${root}" "${_target}" "${_uri}" "${_label}" + + # The target is an URL + elif echo "${_target}" | grep -qe "^[^:]\{1,\}://"; then + printf ' <a href="%s">%s</a>\n' "${_target}" "${_label}" + + # The target is neither a local directory nor a URL. Let's assume + # it is a remote directory, still relative to the current root once + # the local content is installed, but managed elsewhere. + else + printf ' <a href="%s%s">%s</a>\n' \ + "${root}" "${_target}" "${_label}" + fi + done + + printf '</div>\n<hr>\n' +) + +# Print the list of translation choices +# Available langs are submitted on standard input +print_translations() # uri_template (i.e. URI generic to the lang) +( + _uri_template="$1" + + printf ' <span style="float: right;">\n' + + _separator="" + while read -r _lang; do + + _translation="$(echo "${_uri_template}" | sed "s/@LANG@/${_lang}/g")" + + echo "${_separator}" && _separator=' &emsp13;/&emsp13;' + + if [ "${content}" = "${_translation}" ]; then + printf ' <span class="cur">%s</span>\n' "${_lang}" + else + printf ' <a href="%s%s/%s">%s</a>\n' \ + "${root}" "${section}" "${_translation}" "${_lang}" + fi + done + + printf ' </span>\n' +) + +# Print second-level menu +print_menu2() +( + + printf '<div id="sub-menu">\n' + + _separator="" + strip_dummy < "${worktree}/${section}/index.tsv" | while read -r _i; do + + _label="$(echo "${_i}" | cut -d' ' -f1)" + _uri_template="$(echo "${_i}" | cut -d' ' -f2)" + _langs="$(echo "${_i}" | cut -d' ' -f3)" + _lang_default="$(echo "${_langs}" | cut -d ':' -f1)" + + _uri="$(echo "${_uri_template}" | sed "s/@LANG@/${lang}/g")" + + echo "${_separator}" && _separator=' &emsp13;.&emsp13;' + + if [ "${_uri}" = "${content}" ]; then + # This is the current web page + printf ' <span class="cur">%s</span>\n' "${_label}" + + # Print links to translations if available + if [ -n "${_langs}" ]; then + echo "${_langs}" \ + | sed 's/:/\n/g' \ + | print_translations "${_uri_template}" + fi + + elif echo "${_uri}" | grep -qe "^http[s]\{0,1\}://"; then + # The entry links to an http[s] URL + printf ' <a href="%s">%s</a>\n' "${_uri}" "${_label}" + + else + # The entry links to a local web page for the section + _uri="$(echo "${_uri_template}" | sed "s/@LANG@/${_lang_default}/g")" + printf ' <a href="%s%s/%s">%s</a>\n' \ + "${root}" "${section}" "${_uri}" "${_label}" + fi + done + + printf '</div>\n' +) + +######################################################################## +# The script +######################################################################## +if [ "$#" -lt 1 ]; then + >&2 printf 'usage: %s file\n' "${0##*/}" + exit 1 +fi + +# Define the absolute path of the working directory, i.e. the root +# directory of the site, and enter it. +worktree="$(absdir "$(dirname "$0")/../")" +cd "${worktree}" + +# Define the section directory where the input file is located, i.e., the +# subdirectory in the working directory. +section="$(absdir "$1")" +section="$(printf '%s\n' "${section}" | sed "s;^${worktree}[/]\{0,\};;g")" +section="${section%%/*}" + +if [ -z "${section}" ]; then + >&2 printf \ + '%s: unable to extract the section directory from file %s\n' \ + "${0##*/}" "$1" + exit 1 +fi + +# Find the menu entry corresponding to the section directory +entry="$(strip_dummy < "${worktree}/menu.tsv" \ + | sed -n "/\t${section}/p")" + +if [ -z "${entry}" ]; then + >&2 printf \ +'%s: the %s directory of the %s file is not a valid menu entry '\ +'(see menu.tsv)\n' "${0##*/}" "${section}" "$1" + exit 1 +fi + +label="$(echo "${entry}" | cut -d' ' -f1)" + +if ! [ -e "${section}/index.tsv" ]; then + >&2 printf \ + '%s: unable to find the index.tsv file in the directory %s\n' \ + "${0##*/}" "${section}" + exit 1 +fi + +# Define whether the entry corresponds to a subsection index, i.e., +# whether it is the file to be displayed when entering the subsection. +content="$(basename "$1")" +subentry="$(indexed_content < "${worktree}/${section}/index.tsv" \ + | sed -n "/\t${content}/p")" + +if [ -n "${subentry}" ]; then + lang="$(echo "${subentry}" | cut -d' ' -f3 | cut -d':' -f1)" +fi + +lang="${lang:-en}" +root="$(relpath_to_dir "$1" "${worktree}")" + +print_head +print_menu1 +print_menu2 + +printf '<div id="content">\n' diff --git a/scripts/hooks.sh b/scripts/hooks.sh @@ -0,0 +1,131 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./scripts/meso-web.sh" + +set -e + + +# Print on standard output the Makefile targets used to automate hook +# management + +shtml="$(sh ./scripts/list.sh shtml)" +hook="$(sh ./scripts/list.sh hook)" + +sections | while read -r i; do + shtml_section="$(printf '%s\n' "${shtml}" \ + | sed -n "/^${i}\//{s/\.sh/\.md/g;p;}" | tr '\n' ' ')" + hook_section="$(printf '%s\n' "${hook}" \ + | sed -n "/^${i}\//p" | tr '\n' ' ' \ + | sed -e 's/\.sh[[:space:]]/.hook /g')" + + # Define Makefile target that makes section hooks prerequisites for + # the HTML content of the section. + # + # It is the files generated by each of the hooks that are + # prerequisites for the HTML files, not the scripts of the hooks + # themselves, because even if the scripts have not changed, their + # output may have been updated, which can impact the HTML content + # generated at build time. + # + # Furthermore, it is not the HTML file itself that depends on the + # hook's output, but rather the intermediate Markdown dynamically + # generated by the script, whose output may depend on the execution of + # hooks. + printf '%s: %s\n' "${shtml_section}" "${hook_section}" +done + +printf '%s\n' "${hook}" | while read -r i; do + # Divide the path into two parts: + # - the top-level directory, i.e. the section + # - the shell script to be executed from the section directory + section="${i%%/*}" + hook="${i##"${section}"/}" + + # The hook is the first one in the current section: it has the highest + # priority and therefore has no prerequisites. + if [ "${section}" != "${prev_section}" ]; then + dep="" + tgt_list="" + prev_priority="" + fi + + # Retrieve the hook priority + priority="$(basename "${i}")" + priority="${priority%%-*}" + + # Define a name for the hook used as a prefix for Makefile targets in + # order to automate its execution and the management of the file it + # generates. To ensure that this name is unique, and thus avoid + # conflicts between different hooks, it is constructed from the names + # of the section and file corresponding to the hook. + file="$(basename "${hook}")" + prefix="${section}-${file%%.*}" + + # Set the file in which the names of the files generated by the hook + # are stored as resources for the website, i.e., the files that must + # be deployed with the website. + tgt="${i%%.*}.hook" + + if [ "${priority}" = "${prev_priority}" ]; then + # The hook's priority is the same as the previous one. Add its + # target to the list of prerequisites for hooks with lower priority + tgt_list="${tgt_list} ${tgt}" + else + # The priority of the current hook is lower than those processed + # previously. Define as a prerequisite the execution of hooks whose + # priority precedes the priority of the current hook. + dep="${tgt_list}" + + # The execution of the current hook becomes a prerequisite for hooks + # with lower priority. + tgt_list="${tgt}" + fi + + # Define the Makefile target that automate the hook executation. Its + # pre-requisites are the hook script and the output of the # previous + # hook in the section, i.e. with an higher priority. So that + # execution priority is ensured. + # + # Finally, make this target a prerequisite for building the website + # in order to enforce its execution during the build call. + printf '%s: %s %s\n' "${tgt}" "${i}" "${dep}" + printf ' @cd -- %s; ' "${section}" + printf "\$(SHELL) %s > \$\${OLDPWD}/\$@ || rm -f \$\${OLDPWD}/\$@\n" \ + "${hook}" + + # Set the target for cleaning files generated by executing the hook. + # Run it on "distclean" and not on "clean", as their generation can be + # costly while effectively being files generated to "distribute" the + # website. + printf '%s-clean:\n' "${prefix}" + printf ' if [ -f %s ]; then cat %s | xargs rm -f; fi\n' \ + "${tgt}" "${tgt}" + printf ' rm -f %s\n' "${tgt}" + printf 'distclean__: %s-clean\n' "${prefix}" + + # Set the target that installs website resources generated by the hook + printf '%s-install: %s\n' "${prefix}" "${tgt}" + printf " @rsync --mkpath -avzrR --files-from=%s ./ \$(PREFIX)\n" \ + "${tgt}" + printf 'install__: %s-install\n' "${prefix}" + + # Save the current section and priority of the hook that has just been + # processed + prev_section="${section}" + prev_priority="${priority}" +done diff --git a/scripts/index.sh b/scripts/index.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./scripts/meso-web.sh" + +set -e + +# Print to standard output the Makefile targets that make the section +# index file a prerequisite for the section's HTML content. + +html="$(sh ./scripts/list.sh html)" + +sections | while read -r i; do + html_section="$(printf '%s\n' "${html}" \ + | sed -n "/^${i}\//p" \ + | tr '\n' ' ')" + + printf '%s: %s/index.tsv\n' "${html_section}" "${i}" +done diff --git a/scripts/list.sh b/scripts/list.sh @@ -0,0 +1,114 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./scripts/meso-web.sh" + +set -e + +if [ "$#" -lt 1 ]; then + >&2 printf 'usage: %s <html|hook|shell|sig>\n' "${0##*/}" + exit 1 +fi + +######################################################################## +# Helper functions +######################################################################## +# List of HTML files to generate from Markdown files or shell scripts +# stored in each section +html() +{ + _find_args="$(\ + printf '%s\n' "${sections}" \ + | sed -e 's/^/! -path /' \ + | tr '\n' ' ')" + + eval "exec find ${search_dirs} ${_find_args} -type d -prune -o \ + \( \ + -name \"*.md\" \ + -o -name \"*.sh\" \ + \) -exec sh -c 'printf \"%s.html\n\" \"\${1%.*}\"' -- {} \; \ + | sort" +} + +# List of shell scripts that dynamically generate HTML content +shtml() +{ + _find_args="$(\ + printf '%s\n' "${sections}" \ + | sed -e 's/^/! -path /' \ + | tr '\n' ' ')" + + eval "exec find ${search_dirs} ${_find_args} -type d -prune -o \ + -name \"*.sh\" -print \ + | sort" +} + +# List of hooks, i.e. shell scripts to be run by section +hook() +{ + _find_args="$(\ + printf '%s\n' "${sections}" \ + | sed -e 's/^/-path "/;s/$/\/hooks\/*" -o/' \ + | tr '\n' ' ' \ + | sed 's/ -o $//')" + + eval "find ${search_dirs} \ + \( \( ${_find_args} \) -type f -name \"[0-9][0-9]-*.sh\" \) \ + | sort" +} + +# List the shell scripts relevant to the compilation system, i.e. the +# shell script at the root of the working tree and those in each section +# used to generate HTML pages. +shell() +{ + _find_args="$(\ + printf '%s\n' "${sections}" \ + | sed -e 's/^\(.\{0,\}\)$/! -path \1 ! -path \1\/hooks/' \ + | tr '\n' ' ')" + + eval "exec find scripts ${search_dirs} \ + ! -path scripts ${_find_args} -type d -prune -o -name \"*.sh\" -print \ + | sort" +} + +# List the relevent section subdirectories which are: +# - downloads +# - images +# - thumbs +subdir() +{ + downloads="-path \1/downloads" + images="-path \1/images -o -path \1/thumbs" + + _find_args="$(\ + printf '%s\n' "${sections}" \ + | sed "s;^\(.\{0,\}\)$;${downloads} -o ${images} -o;" \ + | tr '\n' ' ' \ + | sed 's/ -o $//')" + + eval "exec find ${search_dirs} ${_find_args} -type d | sort" +} + +######################################################################## +# Script +######################################################################## +# List of sections to be dealt with +sections="$(sections)" +search_dirs="$(printf '%s\n' "${sections}" | tr '\n' ' ')" + +"$@" diff --git a/scripts/meso-web.sh b/scripts/meso-web.sh @@ -0,0 +1,186 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Delete irrelevant data +strip_dummy() # stdin +{ + # - Remove comments + # - Remove empty lines + # - Remove heading an trailing spaces + sed 's/#.\{0,\}$//g' \ + | sed '/^[[:space:]]\{0,\}$/d' \ + | sed -e 's/^[[:space:]]\{1,\}//g' -e 's/[[:space:]]\{1,\}$//g' +} + +# List the sections of the menu +sections() +{ + # - Remove irrelevant data from the menu file + # - Get the section field + # - Protect spaces in the section name + strip_dummy < menu.tsv \ + | cut -d' ' -f2 \ + | sed -e 's/[[:space:]]/\\ /g' \ + | xargs -I{} sh -c \ + "if [ -f \"\$1/index.tsv\" ]; then \ + printf '%s\n' \"\$1\"; \ + fi" -- {} +} + +# Print the absolute dir of the input file +absdir() # file +{ + if [ -d "$1" ]; then + cd -- "$1" || exit 1 + else + cd -- "$(dirname "$1")" || exit 1 + fi + echo "${PWD}" + cd "${OLDPWD}" || exit 1 +} + +# Print relative path from input file to a dir +relpath_to_dir() # file, dir +( + # Build directory from worktree to path + _dir0="$(absdir "$1")" + _dir1="$(absdir "$2")" + + _dir0="$(printf '%s\n' "${_dir0}" | sed "s;^${_dir1}[/]\{0,\};;g")" + + # Ensure that the directory is a subpath of the worktree + if ! [ -d "${_dir1}/${_dir0}" ]; then + >&2 printf '%s: %s is not a subdirectory of %s\n' \ + "$0" "${_dir0}" "${_dir1}" + return 1 + fi + + echo "${_dir0}" | sed 's/\//\n/g' | while read -r _i; do + printf "../" + done +) + +# Inline the HTML formatting of a table listing archive to download +print_downloads() # section, archive_prefix, OS ... +( + _section="$1" + _prefix="$2" + + shift 2 + + for _i in "$@"; do + case "${_i}" in + [Ll]inux) _os_linux="1" ;; + [Ww]indows) _os_windows="1" ;; + *) ;; # Unsuported OS + esac + done + + cd -- "${_section}" || exit 1 + + # Table header + echo '<table class="list">' + echo ' <tr>' + echo ' <th>Version</th>' + if [ -n "${_os_linux}" ]; then + echo ' <th>GNU/Linux 64-bits</th>' + fi + if [ -n "${_os_windows}" ]; then + echo ' <th>Windows 64-bits</th>' + fi + echo ' <th>Sources</th>' + echo ' </tr>' + + # Define the basic regular expression of a version number + _version_re="[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}" + _version_re="${_version_re}\(-r[0-9]\{1,\}\)\{0,1\}" + + # Browse all tarball files in the "downloads" subdirectory. Sort them + # in descending order according to lexicographical order. This may + # result in an incorrect order with regard to the version number. For + # example, version 9 will be considered higher than version 10. Some + # implementations offer an option to process version strings + # naturally, but this is not POSIX-compliant. So let's leave it as is, + # as there are currently no sorting issues. + find downloads -name "${_prefix}-*.tar.gz" \ + | grep -e "${_prefix}-${_version_re}-[^\(Sources\)].\{0,\}\.tar\.gz" \ + | sort -r \ + | while read -r _arch; do + + # Extract the version from + _version=$(echo "${_arch}" \ + | sed "s/downloads\/${_prefix}-\(${_version_re}\).\{0,\}$/\1/g") + + # Setup archive names + _linux="${_arch}" + _windows="downloads/${_prefix}-${_version}-Win64.zip" + _source1="downloads/${_prefix}-${_version}-Sources.zip" + _source2="downloads/${_prefix}-${_version}-Source.zip" + _source3="downloads/${_prefix}-${_version}-Sources.tar.gz" + _source4="downloads/${_prefix}-${_version}-Source.tar.gz" + + # Define the list to be referenced in each cell of the current + # version: first the GNU/Linux archive, then the Windows archive, + # and finally the corresponding sources. Since sources can have + # multiple names, find the one that matches the archive version, + # otherwise use a default name. The existence of the various + # archives available for download is verified below. The purpose + # here is simply a matter of providing three file names that could + # fill the cells in the row. + _dl="" + if [ -n "${_os_linux}" ]; then _dl="${_dl} ${_linux}"; fi + if [ -n "${_os_windows}" ]; then _dl="${_dl} ${_windows}"; fi + if [ -f "${_source1}" ]; then _dl="${_dl} ${_source1}"; + elif [ -f "${_source2}" ]; then _dl="${_dl} ${_source2}"; + elif [ -f "${_source3}" ]; then _dl="${_dl} ${_source3}"; + else _dl="${_dl} ${_source4}"; fi + + printf ' <tr>\n' # Let's get started on filling the line + + # Print the version in the first cell of the row + printf ' <td>%s</td>\n' "${_version}" + + # Iterate over the 3 filenames previously define and provide a link + # to it if their exist onto disk. For instance, a GNU/Linux archive + # can be provided while a Windows version is missing. + for _i in ${_dl}; do + + printf ' <td>\n' + + if [ -f "${_i}" ]; then + # The archive exists. Display a link to it whose label depends + # on the archive type (tarball or zip) + printf ' [<a href="%s">' "${_i}" + [ "${_i#*tar.gz}" != "${_i}" ] && printf 'tarball' || printf 'zip' + printf '</a>]\n' + fi + + # Display a link to the archive signature, if it exists + if [ -f "${_i}.sig" ]; then + printf ' [<a href="%s.sig">pgp</a>]\n' "${_i}" + fi + printf ' </td>\n' + done + + printf ' </tr>\n' # That's all for this row + done + + # The table is complete. Don't forget to add a line break after it to + # signal to Markdown that the embedded HTML code has ended. + printf '</table>\n' + printf '\n' +) diff --git a/solstice.html b/solstice.html @@ -1,17 +0,0 @@ -<!DOCTYPE html> - -<html lang=en> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> - <meta http-equiv="Refresh" content="5; url=./solstice/solstice.html"> - <title>Solstice</title> -</head> - -<body> -<p>This web page moved to a new place.</p> - -<p>Your browser should automatically take you <a -href="solstice/solstice.html">there</a> in 5 seconds.</p> - -</html> - diff --git a/solstice/.gitignore b/solstice/.gitignore @@ -1,8 +1,5 @@ -solstice.html -solstice-docs.html -solstice-downloads.html -solstice-resources.html -solstice-release-notes.html.in -solstice-pp-release-notes.html.in +*.html +solstice-downloads.md +solstice.md Solstice-*-GNU-Linux64/ Solstice-PP-Sources-*/ diff --git a/solstice/Makefile b/solstice/Makefile @@ -1,175 +0,0 @@ -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -.POSIX: - -include ../config.mk - -# Main versions to publish -SOLSTICE_VERSION=0.9.1 -SOLPP_VERSION=0.3.1 - -SOLSTICE_ARCH=downloads/Solstice-$(SOLSTICE_VERSION)-GNU-Linux64.tar.gz -SOLSTICE_DIR=Solstice-$(SOLSTICE_VERSION)-GNU-Linux64 -SOLSTICE_README=$(SOLSTICE_DIR)/share/doc/solstice/README.md -SOLPP_ARCH=downloads/Solstice-PP-Sources-$(SOLPP_VERSION).tar.gz -SOLPP_README=Solstice-PP-Sources-$(SOLPP_VERSION)/README.md - -SOLPP_PKG=\ - downloads/Solstice-PP-Sources-0.3.1.tar.gz\ - downloads/Solstice-PP-Sources-0.3.0.tar.gz\ - downloads/Solstice-PP-Sources-0.2.0.tar.gz\ - downloads/Solstice-PP-Sources-0.1.0.tar.gz -SOLPP_SIG=$(SOLPP_PKG:=.sig) - -SOLSTICE_PKG=\ - downloads/Solstice-0.9.1-Sources.zip\ - downloads/Solstice-0.9.1-GNU-Linux64.tar.gz\ - downloads/Solstice-0.9.0-Win64.zip\ - downloads/Solstice-0.9.0-Sources.zip\ - downloads/Solstice-0.9.0-GNU-Linux64.tar.gz\ - downloads/Solstice-0.8.2-Win64.zip\ - downloads/Solstice-0.8.2-Sources.zip\ - downloads/Solstice-0.8.2-GNU-Linux64.tar.gz\ - downloads/Solstice-0.8.1-Win64.zip\ - downloads/Solstice-0.8.1-Sources.zip\ - downloads/Solstice-0.8.1-GNU-Linux64.tar.gz\ - downloads/Solstice-0.7.1-Win64.zip\ - downloads/Solstice-0.7.1-Sources.zip\ - downloads/Solstice-0.7.1-GNU-Linux64.tar.gz\ - downloads/Solstice-0.6.1-Win64.zip\ - downloads/Solstice-0.6.1-Sources.zip\ - downloads/Solstice-0.6.1-GNU-Linux64.tar.gz\ - downloads/Solstice-0.5.0-Sources.zip\ - downloads/Solstice-0.5.0-GNU-Linux64.tar.gz\ - downloads/Solstice-0.4.1-Win64.zip\ - downloads/Solstice-0.4.1-Sources.zip\ - downloads/Solstice-0.4.1-GNU-Linux64.tar.gz\ - downloads/Solstice-0.4.0-Win64.zip\ - downloads/Solstice-0.4.0-Sources.zip\ - downloads/Solstice-0.4.0-GNU-Linux64.tar.gz -SOLSTICE_SIG=$(SOLSTICE_PKG:=.sig) - -MAN=\ - $(SOLSTICE_DIR)/share/man/man1/solstice.1\ - $(SOLSTICE_DIR)/share/man/man5/solstice-input.5\ - $(SOLSTICE_DIR)/share/man/man5/solstice-output.5\ - $(SOLSTICE_DIR)/share/man/man5/solstice-receiver.5 - -IMG=solaris.jpg themis.png -HTML=\ - solstice.html\ - solstice-docs.html\ - solstice-downloads.html\ - solstice-resources.html - -build: .sig .man - @$(MAKE) -fMakefile -f .sig -f .man build_all - -build_all: $(HTML) man - -clean: - @echo "Cleaning generated files" - @rm -rf man - @rm -f .sig .lint .man $(HTML) $(HTML:=.err) - -distclean: clean - @echo "Cleaning PGP signatures and extracted files" - @rm -f \ - $(SOLSTICE_SIG)\ - $(SOLPP_SIG) \ - $(MAN) \ - $(SOLPP_README) \ - $(SOLSTICE_README) - -install: build - @rsync -avzrR --delete-after --progress\ - $(HTML)\ - $(IMG)\ - $(SOLSTICE_PKG)\ - $(SOLSTICE_SIG)\ - $(SOLPP_PKG)\ - $(SOLPP_SIG)\ - downloads/Solstice-ABG.pdf\ - downloads/Solstice-ABG-rsrc.zip\ - $$(find man -name "*.html")\ - $(PREFIX)/solstice/ - -solstice_build.sh: ../meso-menu.sh - @touch $@ - -################################################################################ -# Overview web page -################################################################################ -solstice.html: solstice.html.in themis.png solstice_build.sh Makefile - @echo "Building $@" - @$(SHELL) solstice_build.sh overview $(SOLSTICE_VERSION) > $@ - -################################################################################ -# Reference documentation -################################################################################ -solstice-docs.html: solstice-docs.html.in solstice_build.sh - @echo "Building $@" - @$(SHELL) solstice_build.sh documentations > $@ - -################################################################################ -# Downloads web page -################################################################################ -solstice-downloads.html: $(SOLSTICE_SIG) $(SOLSTICE_README) solstice_build.sh - @echo "Building $@" - @$(SHELL) solstice_build.sh downloads $(SOLSTICE_README) > $@ - -$(SOLSTICE_README) $(MAN): - @echo "Extracting data from $(SOLSTICE_ARCH)" - @tar -xz -f $(SOLSTICE_ARCH) $(SOLSTICE_README) $(MAN) - -################################################################################ -# Additional resources -################################################################################ -solstice-resources.html: $(SOLPP_SIG) $(SOLPP_README) \ - solstice-abg.html.in \ - solstice-pp.html.in \ - solstice_build.sh - @echo "Building $@" - @$(SHELL) solstice_build.sh resources $(SOLPP_README) $(SOLPP_VERSION) > $@ - -$(SOLPP_README): - @echo "Extracting $@ from $(SOLPP_ARCH)" - @tar -xz -f $(SOLPP_ARCH) $(SOLPP_README) - -################################################################################ -# Check files -################################################################################ -lint: build .lint - @$(MAKE) -fMakefile -f .lint lint_all - -lint_all: lint_shells $(HTML:=.lint) - -lint_shells: - @echo "Checking solstice_build.sh" && shellcheck -o all -x solstice_build.sh - -################################################################################ -# Miscellaneous targets -################################################################################ -.sig: Makefile ../configure_targets.sh - @echo "Setup .sig" - @$(SHELL) ../configure_targets.sh sig $(SOLSTICE_PKG) $(SOLPP_PKG) > .sig - -.lint: Makefile ../configure_targets.sh - @echo "Setup .lint" - @$(SHELL) ../configure_targets.sh lint $(HTML) > .lint - -.man: Makefile ../configure_targets.sh - @echo "Setup .man" - @$(SHELL) ../configure_targets.sh man Solstice $(SOLSTICE_VERSION) $(MAN) > .man diff --git a/solstice/config.sh.in b/solstice/config.sh.in @@ -0,0 +1,5 @@ +version="0.9.1" + +arch="downloads/Solstice-${version}-GNU-Linux64.tar.gz" +directory="Solstice-${version}-GNU-Linux64" +readme="${directory}/share/doc/solstice/README.md" diff --git a/solstice/downloads/Solstice-0.4.0-GNU-Linux64.tar.gz b/solstice/downloads/Solstice-0.4.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 95e0e3b19f4f4dba247f132d8764f0f7de79fefea978437b054a1445e345dfd7 17053771 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.4.0-Sources.zip b/solstice/downloads/Solstice-0.4.0-Sources.zip @@ -1 +0,0 @@ -#$# git-wad d4461a110657cfac846d6611c26fd8e26cc46a48a088779a35c6a4d0c945a478 981561 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.4.0-Win64.zip b/solstice/downloads/Solstice-0.4.0-Win64.zip @@ -1 +0,0 @@ -#$# git-wad eb69427801e8acdab2eea0e57d367b0c510ca5afce6060d9d64e4e50e59f29f0 13491028 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.4.1-GNU-Linux64.tar.gz b/solstice/downloads/Solstice-0.4.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 94f105c0dba70805eb1846f75fcfbd6137f82cd2012e1c64725ff4e6b0f8f372 17054620 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.4.1-Sources.zip b/solstice/downloads/Solstice-0.4.1-Sources.zip @@ -1 +0,0 @@ -#$# git-wad 91f0430b0dcb5af1171175d903bde53689ef6199c9776e1cc6cc69615073d1a3 982625 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.4.1-Win64.zip b/solstice/downloads/Solstice-0.4.1-Win64.zip @@ -1 +0,0 @@ -#$# git-wad 7e2ef87d3efef6a78df763fce96555e3befe2d6892106b40f919daca2a57f68a 9392964 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.5.0-GNU-Linux64.tar.gz b/solstice/downloads/Solstice-0.5.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 333c132debf6fd27389e35f964492efa6746a3f1f8654c257a8206c54ebde09b 17052029 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.5.0-Sources.zip b/solstice/downloads/Solstice-0.5.0-Sources.zip @@ -1 +0,0 @@ -#$# git-wad 964b5079ec16da4335c8dab594f7ab1f0eea7318b02886001eb26e5845072f6e 987889 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.6.1-GNU-Linux64.tar.gz b/solstice/downloads/Solstice-0.6.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad a1c10cf7678c9afec180c8eb4af90a8425866d7cbfc9df4923745c2690f12ae9 17751154 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.6.1-Sources.zip b/solstice/downloads/Solstice-0.6.1-Sources.zip @@ -1 +0,0 @@ -#$# git-wad 254095d8121ee001614882c7cb8eae1ded46b95fe0754abcfcf5ce59556d6add 992182 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.6.1-Win64.zip b/solstice/downloads/Solstice-0.6.1-Win64.zip @@ -1 +0,0 @@ -#$# git-wad 1af9b21edb110ca60caae619b47f375954a9dc3f9541fb481a5e0a1bf1cf6921 16043365 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.7.1-GNU-Linux64.tar.gz b/solstice/downloads/Solstice-0.7.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 18380178eec9ea683c1560a5205cd6daac63475136f922c6f9d108a23665d6ca 18639013 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.7.1-Sources.zip b/solstice/downloads/Solstice-0.7.1-Sources.zip @@ -1 +0,0 @@ -#$# git-wad 5e4c1f45bc9eeab5d7d43656615e1020edcb7f57ceecee6f0f9d2362ebaf5072 1051922 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.7.1-Win64.zip b/solstice/downloads/Solstice-0.7.1-Win64.zip @@ -1 +0,0 @@ -#$# git-wad f74ac3420fbab82cc222a8118dd08ae97803016390db6a588125deadbf3ee7bc 15393025 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.8.1-GNU-Linux64.tar.gz b/solstice/downloads/Solstice-0.8.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 962c51afb414b2b3a7d56cf80023b805eb4a614f860d81cd9476c732bea4a1b3 18639920 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.8.1-Sources.zip b/solstice/downloads/Solstice-0.8.1-Sources.zip @@ -1 +0,0 @@ -#$# git-wad 4a75b4c6ceeec54d79c2383f6abb098555b2f7b310f7d7febdeb830cd0bfc2c6 1052931 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.8.1-Win64.zip b/solstice/downloads/Solstice-0.8.1-Win64.zip @@ -1 +0,0 @@ -#$# git-wad efca6397f9546a9aa9cf4f3b151b324668396390bd071d1c729dd130d371aaf2 15394205 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.9.0-GNU-Linux64.tar.gz b/solstice/downloads/Solstice-0.9.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 7c5f004ce1b109108a1443eaba3185f41d31f0c1a077bdae5dd269f81f0168c0 19420555 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.9.0-Sources.zip b/solstice/downloads/Solstice-0.9.0-Sources.zip @@ -1 +0,0 @@ -#$# git-wad 86d96dd6b2170690afcbcf59291727a5faf00bc49edff1e59207c7a3bbb65d45 1043696 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-0.9.0-Win64.zip b/solstice/downloads/Solstice-0.9.0-Win64.zip @@ -1 +0,0 @@ -#$# git-wad eb645e4791c8279a8f85fa5e80082461b8d017c43d6fe7decd0633c5145045cc 15465958 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-PP-Sources-0.1.0.tar.gz b/solstice/downloads/Solstice-PP-Sources-0.1.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad 4f53c1deef78ab55968296bdf81473fb5a5f10f433f794d471912b448a0b3eb7 18429 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-PP-Sources-0.2.0.tar.gz b/solstice/downloads/Solstice-PP-Sources-0.2.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad ff9451825a7778732e85555ae87c70dbd514c0c01765c9c25b2fd3821177b661 18761 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-PP-Sources-0.3.0.tar.gz b/solstice/downloads/Solstice-PP-Sources-0.3.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad 3ac7287c3899f17560f70f554d9aaa10ca6a8f04740405c3d853ccd8aed4e7ea 18949 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-PP-Sources-0.3.1.tar.gz b/solstice/downloads/Solstice-PP-Sources-0.3.1.tar.gz @@ -1 +0,0 @@ -#$# git-wad 3e298d4cb1a1c6aa82fa13c7ee55c791c36210ebcda3ea36e74853526be92c3b 19387 -\ No newline at end of file diff --git a/solstice/downloads/Solstice-PP-Sources.tar.gz b/solstice/downloads/Solstice-PP-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad 50ded75f269b531248f26f7adb7be8d759f1521f65b6d82c3b5cbe59c547a5d2 6893 -\ No newline at end of file diff --git a/solstice/hooks/00-extract-archive.sh b/solstice/hooks/00-extract-archive.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +. "./config.sh.in" + +>&2 printf 'Extracting %s\n' "${arch}" +tar -xz -f "${arch}" "${directory}/share/man" "${readme}" diff --git a/solstice/hooks/00-setup-redirections.sh b/solstice/hooks/00-setup-redirections.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + + +sed -e 's;@REDIRECTION@;solstice/solstice.html;g' -e 's;@TIME@;5;g' \ + ../templates/redirect.html > ../solstice.html + +echo 'solstice.html' diff --git a/solstice/hooks/00-sign-archives.sh b/solstice/hooks/00-sign-archives.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +find downloads \ + -name "*.tar" \ + -o -name "*.tar.gz" \ + -o -name "*.tgz" \ + -o -name "*.zip" \ +| while read -r i; do + + sign="${i}.sig" + + >&2 printf 'Signing %s\n' "${i}" + gpg --yes -a -o "${sign}" --detach-sign "${i}" + + # Write the generated files to standard output to inform the build + # system which files it needs to handle during installation. + printf '%s/%s\n' "${PWD##*/}" "${i}.sig" + +done diff --git a/solstice/hooks/01-generate-man.sh b/solstice/hooks/01-generate-man.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +. "./config.sh.in" + +######################################################################## +# Helper function +######################################################################## +man_pages() +{ + find "${directory}/share/man" -name "*.[1-9]" +} + +# Man to convert is submitted on stdin +man2html() # output_filename +{ + { + cd .. + sh ./scripts/generate_header.sh "${OLDPWD##*/}/$1" + sh ./scripts/convert_man.sh + cat ./templates/footer.html + cd "${OLDPWD}" + } > "$1" +} + +######################################################################## +# The script +######################################################################## +man_pages | while read -r i; do + filename="$(basename "${i}")" + section="${filename##*.}" + + if ! [ -d "./man/man${section}" ]; then + mkdir -p "./man/man${section}"; + fi + + dst="man/man${section}/${filename}.html" + man2html "${dst}" < "${i}" + + # Check the result of the HTML conversion + if ! tidy --show-info no --show-filename yes -qe "${dst}"; then + >&2 printf '%s: error converting %s\n' "${0##*/}" "${i}" + exit 1 + fi + + # Write the generated files to standard output to inform the build + # system which files it needs to handle during installation. + printf '%s/%s\n' "${PWD##*/}" "${dst}" +done diff --git a/solstice/solaris.jpg b/solstice/images/solaris.jpg diff --git a/solstice/themis.png b/solstice/images/themis.png diff --git a/solstice/index.tsv b/solstice/index.tsv @@ -0,0 +1,5 @@ +Overview solstice.html +Manual pages solstice-docs.html +Downloads solstice-downloads.html +Additional resources solstice-resources.html +Git https://gitlab.com/meso-star/solstice diff --git a/solstice/solstice-abg.html.in b/solstice/solstice-abg.html.in @@ -1,21 +0,0 @@ -<h2 id="ABG">Beginner's guide</h2> - -<p> -The <b>Solstice Absolute Beginner's Guide</b> is designed to introduce enough -concepts and functionalities that you will be able to autonomously use the -Solstice program. The tutorial itself is provided in a pdf file while the -Solstice resources on which it relies - i.e. input files - are available in a -separate archive. -</p> - -<table class="list"> - <tr> - <th>Beginner's guide</th> - <th>Resources</th> - </tr> - <tr> - <td>[<a href="downloads/Solstice-ABG.pdf">pdf</a>]</td> - <td>[<a href="downloads/Solstice-ABG-rsrc.zip">zip</a>]</td> - </tr> -</table> - diff --git a/solstice/solstice-docs.html.in b/solstice/solstice-docs.html.in @@ -1,14 +0,0 @@ -<header> - <h1>Solstice - <span class=subtitle> - Reference documentation - </span> - </h1> -</header> - -<ul> - <li><a href=man/man1/solstice.1.html>solstice(1)</a></li> - <li><a href=man/man5/solstice-input.5.html>solstice-input(5)</a></li> - <li><a href=man/man5/solstice-output.5.html>solstice-output(5)</a></li> - <li><a href=man/man5/solstice-receiver.5.html>solstice-receiver(5)</a></li> -</ul> diff --git a/solstice/solstice-docs.md b/solstice/solstice-docs.md @@ -0,0 +1,6 @@ +# Reference documentation + +- [solstice(1)](man/man1/solstice.1.html) +- [solstice-input(5)](man/man5/solstice-input.5.html) +- [solstice-output(5)](man/man5/solstice-output.5.html) +- [solstice-receiver(5)](man/man5/solstice-receiver.5.html) diff --git a/solstice/solstice-downloads.sh b/solstice/solstice-downloads.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" +. "../scripts/meso-web.sh" + +set -e + +# Title +echo '# Downloads' + +# List of archives to download +print_downloads "${PWD%%/*}" Solstice Linux Windows + +# Release notes +sed -n '/^## Release notes/,/^## License/p' "${readme}" | sed '$d' diff --git a/solstice/solstice-pp.html.in b/solstice/solstice-pp.html.in @@ -1,153 +0,0 @@ -<h2>Post-Processes</h2> - -<div class="news"> - <p><b>Solstice PP ${VERSION} is available</b></p> - <ul> - <li>Sources: - <a href="downloads/Solstice-PP-Sources-${VERSION}.tar.gz">tarball</a> / - <a href="downloads/Solstice-PP-Sources-${VERSION}.tar.gz.sig">pgp</a> - </li> - </ul> -</div> - -<p>Solstice Post-Process is a collection of command-line tools that -post-process the outputs of Solstice. These programs illustrate how the -raw-results of Solstice can be processed with respect to the user needs.</p> - -<p>The provided tools are provided as it, without additional support. They are -free software written in standard C, without external dependency, and released -under the GPLv3+ license. You can thus easily study, modify or extend them -according to your needs. You are also welcome to redistribute them under -certain conditions; refer to the <a -href="https://www.gnu.org/licenses/gpl.html">license</a> for details.</p> - -<p>To use these tools, download the provided archive and verify its integrity -against its <a href="../misc/pgp_signatures.html">PGP signature</a>. This -archive contains the sources of the program and a GNU/Makefile to simplify the -build process on GNU/Linux and on Windows through <a -href="http://www.mingw.org/">MinGW</a>. Extract it and run <code>make</code> to -build the programs. Note that even though this archive targets GNU-compliant -systems, the provided sources can be compiled by any C compiler that supports -the C99 standard.</p> - -<pre class="code"> -$ tar xzvf Solstice-PP-Sources-${VERSION}.tar.gz -$ cd Solstice-PP-Sources -$ make -</pre> - -<p>A description of each generated tools is given in the following -sections.</p> - -<h3>solppraw</h3> - -<p>The <code>solppraw</code> program reads the Solstice outputs from a file or -the standard input whether a filename is provided as an argument or not, -respectively. For each simulated sun direction, it formats the raw results in a -human readable text file, simplifying the analysis of the results. -</p> - -<p>The following example invokes Solstice to simulate two sun directions and -write the results in the <code>output</code> file that is then post-processed -by the <code>solppraw</code> tool.</p> - -<pre class="code"> -$ solstice -D45,70:50,75 -R rcvs.yaml -o output input.yaml -$ solppraw output -Writing `45-70-raw-results.txt' -Writing `50-75-raw-results.txt' -</pre> - -<p>Note that one can directly pipe the results of <code>solstice</code> to -<code>solppraw</code> without any intermediary <code>output</code> file.</p> - -<pre class="code"> -$ solstice -D45,70:50,75 -R rcvs.yaml input.yaml | solppraw -Writing `45-70-raw-results.txt' -Writing `50-75-raw-results.txt' -</pre> - -<h3>solmaps</h3> - -<p>The <code>solmaps</code> command line takes as input the results of a -regular Solstice simulation. These data are read from a file or from standard -input whether a filename is provided as an argument or not, respectively. -<code>solmaps</code> extracts the maps of incoming flux computed by Solstice -for the receivers whose <code>per_primitive</code> flag is enabled (see <a -href="man/man5/solstice-receiver.5.html">solstice-receiver</a>(5) for more -informations). Each map is then saved in a specific <a -href="http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf">VTK</a> -file.</p> - -<p>The following example pipes <code>solstice</code> with <code>solmaps</code> -to save the maps of the receivers <code>target_a</code> and -<code>target_b</code> computed by solstice for each provided sun -direction.</p> - -<pre class="code"> -$ solstice -n10000 -D45,70:50,75 -R rcvs.yaml input.yaml | solmaps -Writing `45-70-target_a.vtk' -Writing `45-70-target_b.vtk' -Writing `50-75-target_a.vtk' -Writing `50-75-target_b.vtk' -</pre> - -<h3>solpaths</h3> - -<p>The <code>solpaths</code> tool reads the radiative paths dumped by Solstice -when it is invoked with the <code>-p</code> option. The radiative paths are read -from a file or from the standard input, whether a filename is provided as an -argument or not, respectively. For each simulated sun direction, it generates a -<a -href="http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf">VTK</a> -file of the radiative paths that can be then visualized in <a -href="https://www.paraview.org">Paraview</a>.</p> - -<p>The following example illustrates how <code>solpaths</code> is piped with -<code>solstice</code> to generate two VTK files, one per simulated sun -direction.</p> - -<pre class="code"> -$ solstice -n100 -D45,70:50,75 -R rcvs.yaml -p default input.yaml | solpaths -Writing `45-70-paths.vtk' -Writing `50-75-paths.vtk' -</pre> - -<h3>solpp</h3> - -<p>The <code>solpp</code> program takes two input files: the geometry of a -solar plant output by Solstice when it is invoked with the <code>-g</code> -option, and the results of a legacy Solstice simulation. For each simulated sun -direction, it writes three files. The first one, is a -<a -href="http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf">VTK</a> -file that maps to the -meshes of the primary geometries (i.e. the reflectors) their associated -simulation results; for instance their respective cosine factor or the amount -of flux that reaches a receiver and comes from them. The second output file, -is another VTK file that stores the geometry of the receivers and their -simulation results as their incoming flux or their efficiency. Finally, the third -file is an <a href="http://www.martinreddy.net/gfx/3d/OBJ.spec">OBJ</a> file -that stores the meshes of the miscellaneous geometries, i.e. the geometries -that are neither receivers nor primary geometries. These files can then be -visualised and analysed in <a href="https://www.paraview.org">Paraview</a>.</p> - -<p>In the following example, <code>solstice</code> is invoked to simulate two -sun directions on the solar plant described in the <code>input.yaml</code> -file. We then rerun <code>solstice</code> with the <code>-g</code> option to -export the geometry of this solar plant with respect to the aforementioned sun -directions. We finally invoke <code>solpp</code> to post-process the previous -outputs saved in the <code>simul</code> and <code>geom</code> files.</p> - -<pre class="code"> -$ solstice -D45,70:50,75 -R rcvs.yaml -o simul input.yaml -$ solstice -D45,70:50,75 -g format=obj -o geom input.yaml -$ solpp geom simul -Writing `45-70-primaries.vtk' -Writing `45-70-receivers.vtk' -Writing `45-70-miscellaneous.obj' -Writing `50-75-primaries.vtk' -Writing `50-75-receivers.vtk' -Writing `50-75-miscellaneous.obj' -</pre> - diff --git a/solstice/solstice-resources.md b/solstice/solstice-resources.md @@ -0,0 +1,132 @@ +# Additional resources + +<span id="ABG"/> + +## Beginner's guide + +The *Solstice Absolute Beginner's Guide* is designed to introduce enough +concepts and functionalities that you will be able to autonomously use +the Solstice program. +The tutorial itself is provided in a pdf file while the Solstice +resources on which it relies - i.e. input files \- are available in a +separate archive. + +### Downloads + +- [Beginner's Guide](downloads/Solstice-ABG.pdf) +- [Resources](downloads/Solstice-ABG-rsrc.zip) + +## Post-Processes + +Solstice Post-Process is a collection of command-line tools that +post-process the outputs of Solstice. +These programs illustrate how the raw-results of Solstice can be +processed with respect to the user needs. + +They are free software written in standard C, without external +dependency, and released under the GPLv3+ license. +You can thus easily study, modify or extend them according to your +needs. +You are also welcome to redistribute them under certain conditions; +refer to the [license](https://www.gnu.org/licenses/gpl.html) +for details. + +### Installation + +To use these tools, they must be built and installed from their source +tree: + + git clone https://gitlab.com/meso-star/solstice-pp.git + cd solstice-pp + make install + +A description of each tools is given in the following sections. + +### solppraw + +The `solppraw` program reads the Solstice outputs from a file or +the standard input whether a filename is provided as an argument or not, +respectively. +For each simulated sun direction, it formats the raw results in a human +readable text file, simplifying the analysis of the results. + +The following example invokes Solstice to simulate two sun directions +and write the results in the `output` file that is then post-processed +by the `solppraw` tool. + + solstice -D45,70:50,75 -R rcvs.yaml -o output input.yaml + solppraw output + +Note that one can directly pipe the results of `solstice` to `solppraw` +without any intermediary `output` file. + + solstice -D45,70:50,75 -R rcvs.yaml input.yaml | solppraw + +### solmaps + +The `solmaps` command line takes as input the results of a +regular Solstice simulation. +These data are read from a file or from standard input whether a +filename is provided as an argument or not, respectively. +`solmaps` extracts the maps of incoming flux computed by Solstice +for the receivers whose `per_primitive` flag is enabled +(see [solstice-receiver(5)](man/man5/solstice-receiver.5.html) for more +informations). +Each map is then saved in a specific +[VTK](http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf) +file. + +The following example pipes `solstice` with `solmaps` to save the maps +of the receivers `target_a` and `target_b` computed by solstice for each +provided sun direction. + + solstice -n10000 -D45,70:50,75 -R rcvs.yaml input.yaml | solmaps + +### solpaths + +The `solpaths` tool reads the radiative paths dumped by Solstice when it +is invoked with the `-p` option. +The radiative paths are read from a file or from the standard input, +whether a filename is provided as an argument or not, respectively. +For each simulated sun direction, it generates a +[VTK](http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf) +file of the radiative paths. + +The following example illustrates how `solpaths` is piped with +`solstice` to generate two VTK files, one per simulated sun direction. + + solstice -n100 -D45,70:50,75 -R rcvs.yaml -p default input.yaml | solpaths + +### solpp + +The `solpp` program takes two input files: the geometry of a +solar plant output by Solstice when it is invoked with the `-g` +option, and the results of a legacy Solstice simulation. +For each simulated sun direction, it writes three files. +The first one, is a +[VTK](http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf) +file that maps to the meshes of the primary geometries (i.e. the +reflectors) their associated simulation results; for instance their +respective cosine factor or the amount of flux that reaches a receiver +and comes from them. +The second output file, is another VTK file that stores the geometry of +the receivers and their simulation results as their incoming flux or +their efficiency. +Finally, the third file is an +[OBJ](http://www.martinreddy.net/gfx/3d/OBJ.spec) file that stores the +meshes of the miscellaneous geometries, i.e. the geometries that are +neither receivers nor primary geometries. +These files can then be visualised and analysed in a data visualization +tool such as [Paraview](https://www.paraview.org). + +In the following example, `solstice` is invoked to simulate two +sun directions on the solar plant described in the `input.yaml` +file. +Then `solstice` run with the `-g` option to export the geometry of +this solar plant with respect to the aforementioned sun directions. +Finally `solpp` is invoked to post-process the previous outputs saved in +the `simul` and `geom` files. + + solstice -D45,70:50,75 -R rcvs.yaml -o simul input.yaml + solstice -D45,70:50,75 -g format=obj -o geom input.yaml + solpp geom simul diff --git a/solstice/solstice.html.in b/solstice/solstice.html.in @@ -1,168 +0,0 @@ -<header> - <h1>Solstice - <span class="subtitle"> - The solar plant simulation tool - </span> - </h1> -</header> - -<div class="news"> - <p><b>Solstice ${VERSION} is available</b></p> - <ul> - <li>GNU/Linux: - <a href="downloads/Solstice-${VERSION}-GNU-Linux64.tar.gz">tarball</a> / - <a href="downloads/Solstice-${VERSION}-GNU-Linux64.tar.gz.sig">pgp</a></li> - </ul> - <ul> - <li>Sources: - <a href="downloads/Solstice-${VERSION}-Sources.zip">zip</a> / - <a href="downloads/Solstice-${VERSION}-Sources.zip.sig">pgp</a></li> - </ul> -</div> - -<p>Solstice computes the <b>total power</b> collected by a concentrated solar -plant, and evaluates various <b>efficiencies</b> for each primary reflector: it -computes losses due to cosine effect, to shadowing and masking, to orientation -and surface irregularities, to reflectivity and to atmospheric transmission. -These data provide insightful information when looking for the optimal design -of a concentrated solar plant. Solstice is powered by a <b>Monte-Carlo -solver</b>, which means that each result is provided with its -<b>numerical accuracy</b>. - -<p>Solstice is specifically designed to handle <b>complex solar facilities</b>. -A solar plant can be composed of any number of geometries of different types -like hyperbolas, parabolas, parabolic trough, planar polygons, cylinders, -spheres, hemispheres and cuboids. Behind analytic shapes, one can also use any -<b>external mesh</b> stored in a <b>ST</b>ereo <b>L</b>ithography file. - -<div class="img" style="width: 18em"> - <a href="solaris.jpg"> - <img src="solaris.jpg" alt="Solaris on mars"> - </a> - <div class="caption"> - A solar parabolic trough concentrator whose optical efficiency as well as the - losses have been evaluated with solstice. The solar concentrator is developed - by EMS focus - (<a href="https://www.emsfocus.fr/concentrateur-solaris.html">Solaris</a>). - The image has been rendered with <a href="../htrdr/htrdr.html">htrdr</a> for - illustration purposes. - </div> -</div> - -<p>The orientation of the reflectors can be either defined manually or -<b>automatically computed</b> by Solstice according to the sun direction and -the animation constraints of the reflectors. - -<p>Mirror, matte and dielectric materials are supported. <b>Spectral effects</b> -are also taken into account as long as the relevant physical properties are -provided; it is possible to define the spectral distribution of any physical -property, including the input solar spectrum and the absorption of the -atmosphere, at any spectral resolution.</p> - -<p>Solstice makes intensive use of ray-tracing. While this feature is part of -the StarEngine <a href="https://gitlab.com/meso-star/star-3d">Star3D</a> -library, it is internally powered by <a -href="https://software.intel.com/sdvis">Intel® Rendering Framework</a>: <a -href="http://embree.github.io/">Embree</a>.</p> - -<h2>A straight interface</h2> - -<p>The Solstice program is a <b>command-line tool</b> that processes input data, -performs computations, write results and that's all. It makes no assumption on how -the input data are created excepted that it has to follow the expected file -formats. The simulation results are also provided as is, in a raw ASCII file.</p> - -<p>This thin interface is not only simple and powerful but is also particularly -well suited to be <b>extended</b> and <b>integrated into any toolchain</b>. -According to the user needs, the solar plant description can be manually -written, generated by a script, exported from a content creation tool, -<i>etc.</i> In the same way, the output data can be post-processed by any -script to be transformed, compressed, sent over a network, displayed in a data -analysis tool, <i>etc.</i>.</p> - -<h2>A framework for data analysis</h2> - -<div class="img" style="width: 18em"> - <a href="themis.png"> - <img src="themis.png" alt="Themis in paraview"> - </a> - <div class="caption"> - Post-processed Solstice outputs displayed in - <a href="https://www.paraview.org">Paraview</a>. - </div> -</div> - -<p>Beside the simulation process, Solstice can output data to help in the -<b>analysis</b> of the simulation results: it can output the <b>radiative -paths</b> sampled during a simulation, as well as the solar plant -<b>geometry</b> described in the OBJ file format. Thanks to -these data, the user can quickly assert that too many radiative paths are -occluded or miss the target, or that the primary reflectors are not correctly -oriented. One can also map the simulation results to the solar plant geometry -in order to efficiently visualise and analyse them using one's favorite data -analysis toolkit.</p> - -<p>Solstice also provides <b>offline rendering</b> capabilities. It implements -an unbiased physically-based rendering kernel that relies on the data and -algorithmic tools used by the solver. This ensures that the rendered images give -visual clues on how the light actually interacts with the geometry and the -materials of the simulated solar plant.</p> - -<h2>Quick start</h2> - -<p>Get the desired archive of Solstice and verify its integrity against its <a -href="../misc/pgp_signatures.html">PGP signature</a>. Then extract it. On -Windows, open a command prompt into the Solstice bin directory and invoke the -<code>solstice.exe</code> executable. You can alternatively register its -directory into the <code>path</code> environment variable to expose the -Solstice application to the system, allowing its invocation from -any directory.</p> - -<pre class="code"> -C:\Users\Meso-Star\Solstice-${VERSION}-Win64\bin>solstice -h -</pre> - -<p>On GNU/Linux, source the provided <code>solstice.profile</code> file to -register the Solstice installation for the current shell priorly to the -invocation of the <code>solstice</code> program.</p> - -<pre class="code"> -$ source ~/Solstice-${VERSION}-GNU-Linux64/etc/solstice.profile -$ solstice -h -</pre> - -<p>The Solstice <b>reference documentation</b> is located in the -<code>share/man</code> sub-directory of Solstice. To consult it, just browse the -HTML files in the <code>share/man/man1</code> and -<code>share/man/man5</code> directories. On GNU/Linux, you can alternatively -use the <code>man</code> command-line.</p> - -<pre class="code"> -$ man solstice -$ man solstice-input -$ man solstice-output -$ man solstice-receiver -</pre> - -<p>Refer to the <a href="solstice-resources.html#ABG">Absolute Beginner's -Guide</a> to learn fundamentals of Solstice; it relies on practical examples to -introduce the functionalities of the program.</p> - -<h2>History</h2> - -<p>Solstice was funded by the LABEX Solstice from 2016 to 2017. Visit -the <a href="https://www.labex-solstice.fr/solstice-software">LABEX -Solstice web page</a> for complementary informations and examples.</p> - -<h2>License</h2> - -<p>Copyright &#169; 2018, 2019, 2021 <a -href="mailto:contact@meso-star.com">|Méso|Star&gt;</a>.<br> -Copyright &#169; 2016, 2017, 2018 Centre National de la Recherche Scientifique -(CNRS).</p> - -<p>Solstice is free software released under the GPLv3+ license: GNU GPL -version 3 or later. You can freely study, modify or extend it. You are also -welcome to redistribute it under certain conditions; refer to the <a -href="https://www.gnu.org/licenses/gpl.html">license</a> for details.</p> - diff --git a/solstice/solstice.md.in b/solstice/solstice.md.in @@ -0,0 +1,191 @@ +# Solstice + +Solstice computes the *total power* collected by a concentrated solar +plant, and evaluates various *efficiencies* for each primary reflector: +it computes losses due to cosine effect, to shadowing and masking, to +orientation and surface irregularities, to reflectivity and to +atmospheric transmission. +These data provide insightful information when looking for the optimal +design of a concentrated solar plant. +Solstice is powered by a *Monte-Carlo solver*, which means that each +result is provided with its *numerical accuracy*. + +Solstice is specifically designed to handle *complex solar facilities*. +A solar plant can be composed of any number of geometries of different types +like hyperbolas, parabolas, parabolic trough, planar polygons, cylinders, +spheres, hemispheres and cuboids. +Behind analytic shapes, one can also use any *external mesh* stored in a +*ST*ereo *L*ithography file. + +The orientation of the reflectors can be either defined manually or +*automatically computed* by Solstice according to the sun direction and +the animation constraints of the reflectors. + +Mirror, matte and dielectric materials are supported. +*Spectral effects* are also taken into account as long as the relevant +physical properties are provided; +it is possible to define the spectral distribution of any physical +property, including the input solar spectrum and the absorption of the +atmosphere, at any spectral resolution. + +[![Solaris on mars](thumbs/solaris.jpg)](images/solaris.jpg) + +> A solar parabolic trough concentrator whose optical efficiency as well +> as the losses have been evaluated with solstice. The solar concentrator +> is developed by EMS focus +> ([Solars](https://www.emsfocus.fr/concentrateur-solaris.html)). +> The image has been rendered with [htrdr](../htrdr/htrdr.html) for +> illustration purposes. + +## Related articles + +- [Moulana et al 2024](https://doi.org/10.1016/j.solener.2024.112675), + "Concentrated solar flux modeling in solar power towers with a 3D + objects-atmosphere hybrid system to consider atmospheric and + environmental gains", Solar Energy + ([open access](https://hal.science/hal-04751072v1)) + +- [Wang et al. 2023](https://doi.org/10.1016/j.apenergy.2023.121513), + "Co-optimisation of the heliostat field and receiver for concentrated + solar power plants", Applied Energy + +- [Zhu et al. 2023](https://doi.org/10.3390/en16072997), + "A Model Predictive Control Approach for Heliostat Field Power + Regulatory Aiming Strategy under Varying Cloud Shadowing Conditions", + Energies + ([open access](https://psecommunity.org/wp-content/plugins/wpor/includes/file/2304/LAPSE-2023.30743-1v1.pdf)) + +- [Panagopoulos et al. 2022](https://doi.org/10.1016/j.egyr.2022.05.007), + "Optical and thermal performance simulation of a micro-mirror solar + collector", Energy Reports + +- [Grange et al. 2021](https://doi.org/10.3390/su13073920), + "Aiming Strategy on a Prototype-Scale Solar Receiver: Coupling of Tabu + Search, Ray-Tracing and Thermal Models ", Sustainability + ([open access](https://hal.science/hal-03523266v1)) + +- [Wang et al. 2020](https://doi.org/10.1016/j.solener.2020.08.008), + "Performance enhancement of cavity receivers with spillage skirts and + secondary reflectors in concentrated solar dish and tower systems", + Solar Energy + +- [Wang et al. 2020](https://doi.org/10.1016/j.solener.2019.11.035), + "Verification of optical modelling of sunshape and surface slope error + for concentrating solar power systems", Solar Energy + ([open access](https://hal.science/hal-02358801/)) + +- [Suntaxi et al. 2019](https://bibdigital.epn.edu.ec/handle/15000/20457), + "Sensibilidad de la energía perdida en el receptor debido al control + del campo de espejos de un colector lineal Fresnel", Bachelor thesis + +- [Caliot et al. 2015](https://doi.org/10.1115/1.4029692), + "Validation of a Monte Carlo Integral Formulation Applied to Solar + Facility Simulations and Use of Sensitivities", Journal of Solar + Energy Engineering + ([open access](https://hal.science/hal-03368146)) + +- [Piaud et al. 2012](https://www.academia.edu/18317802/Application_of_Monte_Carlo_sensitivities_estimation_in_Solfast_4D), + "Application of Monte-Carlo sensitivities estimation in Solfast-4D", + SolarPaces + +- [Roccia et al. 2012](https://dx.doi.org/10.1088/1742-6596/369/1/012029), + "SOLFAST, a Ray-Tracing Monte-Carlo software for solar concentrating + facilities", Journal of Physics + +## A straight interface + +The Solstice program is a *command-line tool* that processes input data, +performs computations, write results and that's all. +It makes no assumption on how +the input data are created excepted that it has to follow the expected +file formats. +The simulation results are also provided as is, in a raw ASCII file. + +This thin interface is not only simple and powerful but is also +particularly well suited to be *extended* and *integrated into any +toolchain*. +According to the user needs, the solar plant description can be manually +written, generated by a script, exported from a content creation tool, +etc. +In the same way, the output data can be post-processed by any script to +be transformed, compressed, sent over a network, displayed in a data +analysis tool, etc. + +[![Themis in paraview](thumbs/themis.jpg)](images/themis.png) + +> Post-processed Solstice outputs displayed in +> [Paraview](https://www.paraview.orf). + +## A framework for data analysis + +Beside the simulation process, Solstice can output data to help in the +*analysis* of the simulation results: it can output the *radiative +paths* sampled during a simulation, as well as the solar plant +*geometry* described in the OBJ file format. +Thanks to these data, the user can quickly assert that too many +radiative paths are occluded or miss the target, or that the primary +reflectors are not correctly oriented. +One can also map the simulation results to the solar plant geometry in +order to efficiently visualise and analyse them using one's favorite +data analysis toolkit. + +Solstice also provides *offline rendering* capabilities. +It implements an unbiased physically-based rendering kernel that relies +on the data and algorithmic tools used by the solver. +This ensures that the rendered images give visual clues on how the light +actually interacts with the geometry and the materials of the simulated +solar plant. + +## Quick start + +Get the desired [archive](solstice-downloads.html) of Solstice and +verify its integrity against its PGP signature. +Then extract it. + +On Windows, open a command prompt into the Solstice bin directory and invoke the +`solstice.exe` executable. +You can alternatively register its directory into the `path` environment +variable to expose the Solstice application to the system, allowing its +invocation from any directory. + + C:\Path\To\Solstice-@VERSION@-Win64\bin>solstice -h + +On GNU/Linux, source the provided `solstice.profile` file to +register the Solstice installation for the current shell priorly to the +invocation of the `solstice` program. + + source ~/Solstice-@VERSION@-GNU-Linux64/etc/solstice.profile + solstice -h + +The Solstice *reference documentation* is located in the `share/man` +sub-directory of Solstice. +To consult it, just browse the HTML files in the `share/man/man1` and +`share/man/man5` directories. +On GNU/Linux, you can alternatively use the `man` tool. + + man solstice + man solstice-input + man solstice-output + man solstice-receiver + +Refer to the +[Absolute Beginner's Guide](solstice-resources.html#ABG) +to learn fundamentals of Solstice; it relies on practical examples to +introduce the functionalities of the program. + +## History + +Solstice was funded by the LABEX Solstice from 2016 to 2017. +Visit the [LABEX](https://www.labex-solstice.fr/solstice-software) +Solstice web page for complementary informations and examples. + +## License + +Copyright © 2018, 2019, 2021 [|Méso|Star>](mailto:contact@meso-star.com) +Copyright © 2016, 2017, 2018 Centre National de la Recherche Scientifique (CNRS) + +Solstice is free software released under the GPLv3+ license: GNU GPL +version 3 or later. You can freely study, modify or extend it. +You are also welcome to redistribute it under certain conditions; +refer to the [license](https://www.gnu.org/licenses/gpl.html) for +details. diff --git a/solstice/solstice.sh b/solstice/solstice.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +. "./config.sh.in" + +sed "s/@VERSION@/${version}/g" solstice.md.in diff --git a/solstice/solstice_build.sh b/solstice/solstice_build.sh @@ -1,106 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -. ../meso-menu.sh - -# Build the overview page -overview() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s overview <version>\n" "$0" >&2 - exit 1 - fi - - print_header -s Solstice -n Overview -r ../ - VERSION=$1 envsubst < solstice.html.in - print_footer -} - -documentations() -{ - print_header -s Solstice -n Documentations -r ../ - cat solstice-docs.html.in - print_footer -} - -# Build the downloads page -downloads() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s downloads <readme>\n" "$0" >&2 - exit 1 - fi - - release_notes=$(${markdown} "$1" \ - | sed -n '/^<h2>Release notes<\/h2>/,/^<h2>License<\/h2>/p' | sed '$d') - - print_header -s Solstice -n Downloads -r ../ - echo "<header><h1>Download Solstice</h1></header>" - print_downloads Solstice - echo "${release_notes}" - print_footer -} - -print_pp_downloads() -{ - echo "<table class=\"list\">" - echo " <tr>" - echo " <th>Version</th>" - echo " <th>Sources</th>" - echo " </tr>" - - - find downloads -regex ".*/Solstice-PP-Sources-.*\.tar.gz" | sort -r | \ - while read -r i; do - version=$(echo "${i}" | sed "s/.*Solstice-PP-Sources-\(.*\)\.tar.gz/\1/g") - - echo " <tr>" - echo " <td>${version}</td>" - echo " <td>" - echo " [<a href=\"${i}\">tarball</a>]" - if [ -f "${i}.sig" ]; then - echo " [<a href=\"${i}.sig\">pgp</a>]" - fi - echo " </td>" - echo " </tr>" - done - echo '</table>' -} - -# Build the resources page -resources() -{ - if [ $# -lt 2 ]; then - printf "Usage: %s resources <solpp-readme> <solpp-version>\n" "$0" >&2 - exit 1 - fi - - solpp_release_notes=$(${markdown} "$1" \ - | sed -n '/^<h2>Release notes<\/h2>/,/^<h2>License<\/h2>/p' \ - | sed -e '$d' -e 's/\<h3\>/h4/g') - - print_header -s Solstice -n Resources -r ../ - echo "<header><h1>Additional resources</h1></header>" - cat solstice-abg.html.in - VERSION=$2 envsubst < solstice-pp.html.in - echo "<h3>Download Post-Processes</h3>" - print_pp_downloads - echo "${solpp_release_notes}" - print_footer -} - -"$@" diff --git a/solstice/thumbs/solaris.jpg b/solstice/thumbs/solaris.jpg @@ -0,0 +1 @@ +#$# git-wad 0efdbeeac40f5fac90a951f1f98b83059706c44531cc328b3d9697fbeab0f531 53349 +\ No newline at end of file diff --git a/solstice/thumbs/themis.jpg b/solstice/thumbs/themis.jpg @@ -0,0 +1 @@ +#$# git-wad 2a66202e8a0f7599671a93eccaf8c21154f67bc7fd109d8f86172ecf3736d4a0 116850 +\ No newline at end of file diff --git a/stardis/.gitignore b/stardis/.gitignore @@ -1,12 +1,17 @@ +Stardis-*-GNU-Linux64/ +Stardis-Starter-Pack-*/ consortium*.html release-notes.html -stardis.html +sgreen-release-notes.html +sgreen-release-notes.md stardis-docs.html -starter-pack.html stardis-release-notes.html +stardis-release-notes.md stardis-solver-release-notes.html -sgreen-release-notes.html +stardis-solver-release-notes.md +stardis.html starter-pack.html -Stardis-*-GNU-Linux64/ -Stardis-Starter-Pack-*/ +starter-pack.html +starter-pack.md validation.html +stardis.md diff --git a/stardis/Makefile b/stardis/Makefile @@ -1,240 +0,0 @@ -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -.POSIX: - -include ../config.mk - -SOLVER_VERSION=0.16.1 -STARDIS_VERSION=0.11.1 -SGREEN_VERSION=0.5.1 -STARTER_PACK_VERSION=0.2.0 - -STARDIS_DIR=Stardis-$(SOLVER_VERSION)-GNU-Linux64 -STARDIS_ARCH=downloads/$(STARDIS_DIR).tar.gz -STARDIS_README=$(STARDIS_DIR)/share/doc/stardis/README.md -STARDIS_GREEN_README=$(STARDIS_DIR)/share/doc/stardis-green/README.md -STARDIS_SOLVER_README=$(STARDIS_DIR)/share/doc/stardis-solver/README.md - -STARTER_PACK_DIR=Stardis-Starter-Pack-$(STARTER_PACK_VERSION) -STARTER_PACK_ARCH=downloads/$(STARTER_PACK_DIR).tar.gz -STARTER_PACK_README=$(STARTER_PACK_DIR)/README.md -STARTER_PACK_PKG=\ - ./downloads/Stardis-Starter-Pack-0.2.0.tar.gz\ - ./downloads/Stardis-Starter-Pack-0.1.0.tar.gz\ - ./downloads/Stardis-Starter-Pack-0.0.0.tar.gz -STARTER_PACK_SIG=$(STARTER_PACK_PKG:=.sig) - -MAN=\ - $(STARDIS_DIR)/share/man/man1/stardis.1\ - $(STARDIS_DIR)/share/man/man5/stardis-input.5\ - $(STARDIS_DIR)/share/man/man5/stardis-output.5\ - $(STARDIS_DIR)/share/man/man1/sgreen.1\ - $(STARDIS_DIR)/share/man/man5/sgreen-input.5\ - $(STARDIS_DIR)/share/man/man5/sgreen-output.5 -STARDIS_ARCH_FILES=\ - $(STARDIS_README)\ - $(STARDIS_GREEN_README)\ - $(STARDIS_SOLVER_README)\ - $(MAN) - -# images/pulse.svg -# images/sin.svg -# images/step.svg -OVERVIEW_IMG=\ - images/foam_path.jpg\ - images/heatsink_anim.gif\ - images/plot_insensib_MC.jpg\ - images/ramier_island.png\ - images/ramier_island_sun.png\ - thumbs/foam_path.jpg\ - thumbs/heatsink_anim.gif\ - thumbs/plot_insensib_MC.jpg\ - thumbs/ramier_island.jpg\ - thumbs/ramier_island_sun.jpg - -STARTER_PACK_IMG=\ - images/city.jpg\ - images/foam.jpg\ - images/heatsink.jpg\ - images/heatsinkx50.jpg\ - images/IR_rendering_1080x720x128.jpg\ - images/IR_animation_1080x720x32x128.gif\ - images/IR_city_640x480x1024_273-275.png\ - thumbs/city.jpg\ - thumbs/foam.jpg\ - thumbs/heatsink.jpg\ - thumbs/heatsinkx50.jpg\ - thumbs/IR_rendering_1080x720x128.jpg\ - thumbs/IR_animation_1080x720x32x128.gif\ - -VALIDATION_IMG=\ - images/geometry.svg\ - images/temperature.png\ - images/TprofX.png\ - images/TprofY.png - -CONSORTIUM_IMG=\ - images/airbus_logo.svg\ - images/edf_logo.svg - -HTML=\ - consortium-fr.html\ - consortium-en.html\ - release-notes.html\ - sgreen-release-notes.html\ - stardis.html\ - stardis-docs.html\ - stardis-solver-release-notes.html\ - stardis-release-notes.html\ - starter-pack.html\ - validation.html - -build: .sig .man - @$(MAKE) -fMakefile -f .sig -f .man build_all - -build_all: $(HTML) man - -clean: - @echo "Cleaning generated files" - @rm -rf man - @rm -f .sig .man .lint\ - stardis-release-notes.html.in\ - stardis-green-release-notes.html.in\ - stardis-solver-release-notes.html.in\ - $(HTML)\ - $(HTML:=.err) - -distclean: clean - @echo "Cleaning PGP signatures and extracted files" - @rm -f \ - $(STARTER_PACK_SIG)\ - $(STARDIS_ARCH_FILES)\ - $(STARTER_PACK_README) - -install: build - @rsync -avzrR --delete-after --progress\ - $(HTML)\ - $(OVERVIEW_IMG)\ - $(CONSORTIUM_IMG)\ - $(STARTER_PACK_IMG)\ - $(STARTER_PACK_PKG)\ - $(STARTER_PACK_SIG)\ - $(VALIDATION_IMG)\ - $$(find man -name "*.html")\ - $(PREFIX)/stardis/ - -stardis_build.sh: ../meso-menu.sh - @touch $@ - -################################################################################ -# Stardis web page -################################################################################ -stardis.html: stardis.html.in $(OVERVIEW_IMG) stardis_build.sh Makefile - @echo "Building $@" - @$(SHELL) stardis_build.sh overview \ - $(SOLVER_VERSION) $(STARDIS_VERSION) $(SGREEN_VERSION) > $@ - -################################################################################ -# Validation web page -################################################################################ -validation.html: validation.html.in $(VALIDATION_IMG) stardis_build.sh Makefile - @echo "Building $@" - @$(SHELL) stardis_build.sh validation > $@ - -################################################################################ -# Consortium web pages -################################################################################ -consortium-fr.html: consortium-fr.html.in $(CONSORTIUM_IMG) stardis_build.sh Makefile - @echo "Building $@" - @$(SHELL) stardis_build.sh consortium fr > $@ - -consortium-en.html: consortium-en.html.in $(CONSORTIUM_IMG) stardis_build.sh Makefile - @echo "Building $@" - @$(SHELL) stardis_build.sh consortium en > $@ - -################################################################################ -# Reference documentation -################################################################################ -stardis-docs.html: stardis-docs.html.in stardis_build.sh - @echo "Building $@" - @$(SHELL) stardis_build.sh documentations > $@ - -################################################################################ -# Release notes -################################################################################ -release-notes.html: release-notes.html.in stardis_build.sh - @echo "Building $@" - @$(SHELL) stardis_build.sh release_notes_list > $@ - -stardis-release-notes.html: $(STARDIS_README) stardis_build.sh - @echo "Building $@" - @$(SHELL) stardis_build.sh release_notes stardis\ - "$(STARDIS_README)" > $@ - -sgreen-release-notes.html: $(STARDIS_GREEN_README) stardis_build.sh - @echo "Building $@" - @$(SHELL) stardis_build.sh release_notes stardis-green\ - "$(STARDIS_GREEN_README)" > $@ - -stardis-solver-release-notes.html: $(STARDIS_SOLVER_README) stardis_build.sh - @echo "Building $@" - @$(SHELL) stardis_build.sh release_notes stardis-solver\ - "$(STARDIS_SOLVER_README)" > $@ - -$(STARDIS_ARCH_FILES): - @echo "Extracting data from $(STARDIS_ARCH)" - @tar -xz -f $(STARDIS_ARCH) $(STARDIS_ARCH_FILES) - -################################################################################ -# Starter pack web pages -################################################################################ -starter-pack.html:\ - $(STARTER_PACK_IMG) \ - $(STARTER_PACK_SIG) \ - $(STARTER_PACK_README) \ - stardis_build.sh \ - Makefile - @echo "Building $@" - @$(SHELL) stardis_build.sh starter_pack $(STARTER_PACK_README) $(STARTER_PACK_VERSION) > $@ - -$(STARTER_PACK_README): - @echo "Extracting data from $(STARTER_PACK_ARCH)" - @tar -xz -f $(STARTER_PACK_ARCH) $(STARTER_PACK_README) - -################################################################################ -# Check files -################################################################################ -lint: build .lint - @$(MAKE) -fMakefile -f .lint lint_all - -lint_all: lint_shells $(HTML:=.lint) - -lint_shells: - @echo "Checking stardis_build.sh" && shellcheck -o all -x stardis_build.sh - -################################################################################ -# Miscellaneous targets -################################################################################ -.sig: Makefile ../configure_targets.sh - @echo "Setup .sig" - @$(SHELL) ../configure_targets.sh sig $(STARTER_PACK_PKG) > .sig - -.lint: Makefile ../configure_targets.sh - @echo "Setup .lint" - @$(SHELL) ../configure_targets.sh lint $(HTML) > .lint - -.man: Makefile ../configure_targets.sh - @echo "Setup .man" - @$(SHELL) ../configure_targets.sh mdoc Stardis $(MAN) > $@ diff --git a/stardis/config.sh.in b/stardis/config.sh.in @@ -0,0 +1,33 @@ +#!/bin/sh + +stardis_version="0.11.1" +solver_version="0.16.1" +sgreen_version="0.5.1" +spk_version="0.2.0" + +stardis_dir="Stardis-${solver_version}-GNU-Linux64" +stardis_arch="downloads/${stardis_dir}.tar.gz" +stardis_readme="${stardis_dir}/share/doc/stardis/README.md" +solver_readme="${stardis_dir}/share/doc/stardis-solver/README.md" +sgreen_readme="${stardis_dir}/share/doc/stardis-green/README.md" + +spk_dir="Stardis-Starter-Pack-${spk_version}" +spk_arch="downloads/${spk_dir}.tar.gz" +spk_readme="${spk_dir}/README.md" + +######################################################################## +# Helper function +######################################################################## +release_notes() # readme_file +{ + cd .. + + # Project name + sed -n '/^# /{p;q;}' "${OLDPWD}/$1" + + # Extract and post-process the release notes + sed -n '/^## Release notes/,/^## License/p' "${OLDPWD}/$1" \ + | sed -e '1d' -e '$d' -e 's/^#//' + + cd "${OLDPWD}" +} diff --git a/stardis/consortium-en.html.in b/stardis/consortium-en.html.in @@ -1,97 +0,0 @@ -<header> - <h1>The Stardis consortium</h1> -</header> - -<p>The Stardis consortium is intended for engineers and researchers -who are willing to be fully autonomous when using Stardis; this includes:</p> - -<ul> - <li>the possibility to integrate Stardis in their current heat transfer - simulation toolchain;</li> - <li>the capacity to modify the code for specific purposes;</li> - <li>a detailled understanding of underlying algorithms;</li> - <li>a participation to development choices.</li> -</ul> - -<p>The <a href=https://www.gnu.org/licenses/gpl-3.0.html>free license</a> of -the Stardis environment already grants its users the right to freely run the -software, study its behavior, modify its source code or redistribute it. In -addition, the consortium provides its members with <b>long-term training</b>, -in direct contact with the Stardis <a -href="http://www.demonstrator.edstar.cnrs.fr/prod/fr/#platform_researchers">development -team</a>. Consortium members are also invited to take an active role in the -scientific and technical management of the project.</p> - -<p>All consortium members sit at the <b>consortium committee</b>. This -committee is gathered once a year, reviews achievements and the allocation of -resources for the past year. Its function is also to debate orientation and -development choices for the future.</p> - -<p>From an administrative point of view, the Stardis consortium is not a legal -structure; it is a <b>service offer</b> proposed by <a -href=mailto:contact@meso-star.com>|Méso|Star&gt;</a>. Joining the consortium -simply comes down to subscribing to this service offer.</p> - -<h2>Annual rates</h2> - -<p>The cost of joining the consortium depends on the <a -href=https://www.economie.gouv.fr/cedef/definition-petites-et-moyennes-entreprises>size</a> -and type of member organization, and the length of -subscription.</p> - -<table class="list" style="width: 80%;"> - <tr> - <th></th> - <th>1 year</th> - <th>2 years</th> - <th>3 years</th> - </tr> - <tr> - <td style="text-align: left; font-variant: small-caps; font-weight: bold;"> - Large or medium-sized entreprises - </td> - <td>20&nbsp;k&euro;</td> - <td>36&nbsp;k&euro;</td> - <td>48&nbsp;k&euro;</td> - </tr> - <tr> - <td style="text-align: left; font-variant: small-caps; font-weight: bold;"> - Small enterprises - </td> - <td>5&nbsp;k&euro;</td> - <td>9&nbsp;k&euro;</td> - <td>12&nbsp;k&euro;</td> - </tr> - <tr> - <td style="text-align: left; font-variant: small-caps; font-weight: bold;"> - Non-profit research institutes - </td> - <td>5&nbsp;k&euro;</td> - <td>9&nbsp;k&euro;</td> - <td>12&nbsp;k&euro;</td> - </tr> - <tr> - <td style="text-align: left; font-variant: small-caps; font-weight: bold;"> - Micro Entreprises - </td> - <td>2&nbsp;k&euro;</td> - <td>3.6&nbsp;k&euro;</td> - <td>4.8&nbsp;k&euro;</td> - </tr> -</table> - -<p>We invite you to <a href="mailto:contact@meso-star.com">contact us</a> to -receive a copy of the contract that formalizes the service and details the -functioning of the consortium.</p> - -<h2>List of consortium members</h2> - -<ul style="list-style-type: none;"> - <li style="padding-bottom: 1.0em;"><img alt="Airbus logo" - src="images/airbus_logo.svg" style="vertical-align: middle; padding-right: - 1em; width: 4em;"/>Airbus SAS</li> - <li style="padding-bottom: 1.0em;"><img alt="EDF logo" - src="images/edf_logo.svg" style="vertical-align: middle; padding-right: 1em; - width: 4em;" />&Eacute;lectricité de France Research &amp; - Dévelopment</li> -</ul> diff --git a/stardis/consortium-en.md b/stardis/consortium-en.md @@ -0,0 +1,94 @@ +# The Stardis consortium + +The Stardis consortium is intended for engineers and researchers +who are willing to be fully autonomous when using Stardis; this includes: + +- the possibility to integrate Stardis in their current heat transfer + simulation toolchain. +- the capacity to modify the code for specific purposes. +- a detailled understanding of underlying algorithms. +- a participation to development choices. + +The [free license](https://www.gnu.org/licenses/gpl-3.0.html) of the +Stardis environment already grants its users the right to freely run the +software, study its behavior, modify its source code or redistribute it. +In addition, the consortium provides its members with *long-term training*, +in direct contact with the Stardis +[development team](http://www.demonstrator.edstar.cnrs.fr/prod/fr/#platform_researchers). +Consortium members are also invited to take an active role in the +scientific and technical management of the project. + +All consortium members sit at the *consortium committee*. +This committee is gathered once a year, reviews achievements and the +allocation of resources for the past year. +Its function is also to debate orientation and development choices for +the future. + +From an administrative point of view, the Stardis consortium is not a legal +structure; it is a *service offer* proposed by +[|Méso|Star>](mailto:contact@meso-star.com). +Joining the consortium simply comes down to subscribing to this service +offer. + +## Annual rates + +The cost of joining the consortium depends on the +[size](https://www.economie.gouv.fr/cedef/definition-petites-et-moyennes-entreprises) +and type of member organization, and the length of subscription. + +<table style="margin-left: auto; margin-right: auto;"> + <tr> + <th style="width: 20em"></th> + <th style="width: 4em">1 year</th> + <th style="width: 4em">2 years</th> + <th style="width: 4em">3 years</th> + </tr> + <tr> + <td>Large or medium-sized entreprises</td> + <td>20&nbsp;k&euro;</td> + <td>36&nbsp;k&euro;</td> + <td>48&nbsp;k&euro;</td> + </tr> + <tr> + <td>Small enterprises</td> + <td>5&nbsp;k&euro;</td> + <td>9&nbsp;k&euro;</td> + <td>12&nbsp;k&euro;</td> + </tr> + <tr> + <td>Non-profit research institutes</td> + <td>5&nbsp;k&euro;</td> + <td>9&nbsp;k&euro;</td> + <td>12&nbsp;k&euro;</td> + </tr> + <tr> + <td>Micro Entreprises</td> + <td>2&nbsp;k&euro;</td> + <td>3.6&nbsp;k&euro;</td> + <td>4.8&nbsp;k&euro;</td> + </tr> +</table> + +We invite you to [contact us](mailto:contact@meso-star.com) to receive a +copy of the contract that formalizes the service and details the +functioning of the consortium. + +## List of consortium members + +<img alt="Airbus logo" src="images/airbus_logo.svg" + style=" + display: inline; + width: 4em; + padding: 0 1em 0 1em; + vertical-align: middle; +"> +Airbus SAS + +<img alt="EDF logo" src="images/edf_logo.svg" + style=" + display: inline; + width: 4em; + padding: 0 1em 0 1em; + vertical-align: middle; +"> +Électricité de France Research & Development diff --git a/stardis/consortium-fr.html.in b/stardis/consortium-fr.html.in @@ -1,96 +0,0 @@ -<header> - <h1>Le consortium Stardis</h1> -</header> - -<p>Le consortium Stardis s'adresse aux ingénieurs et chercheurs désireux -d'acquérir la pleine maîtrise de Stardis. Par pleine maîtrise on -entend&nbsp;:</p> - -<ul> - <li>la capacité d'intégrer Stardis dans sa pratique de thermicien&nbsp;;</li> - <li>la capacité de modifier le code pour ses besoins spécifiques&nbsp;;</li> - <li>une compréhension fine des algorithmes&nbsp;;</li> - <li>la participation aux choix de développement.</li> -</ul> - -<p>La licence libre de l'environnement Stardis garantit déjà à ses utilisateurs -la capacité d'exécuter librement ces logiciels, d'en étudier le comportement, -d'en modifier le code source ou de les redistribuer. Le consortium apporte en -plus à ses adhérents un <b>accompagnement de temps long</b> au plus près de <a -href=http://www.demonstrator.edstar.cnrs.fr/prod/fr/#platform_researchers>l'ensemble -de l'équipe</a> qui co-développe Stardis. Il leur permet également de -participer aux directions scientifiques et techniques qui pilotent le -projet.</p> - -<p>Tous les membres du consortium siègent au <b>Comité de Consortium</b>. -Celui-ci se réunit une fois par an pour faire le bilan des réalisations et de -l'allocation des ressources de l'année écoulée. C'est au cours de ce Comité de -Consortium que sont aussi débattus les choix d'orientation et de développement -de Stardis.</p> - -<p>D'un point de vue administratif, le consortium Stardis n'est pas une -structure juridique&nbsp;; c'est une <b>offre de service</b> proposée par <a -href=mailto:contact@meso-star.com>|Méso|Star&gt;</a>. Rejoindre le consortium -se résume simplement à souscrire cette offre de service.</p> - -<h2>Tarifs annuels</h2> - -<p>Le montant de l'adhésion au consortium dépend de la <a -href="https://www.economie.gouv.fr/cedef/definition-petites-et-moyennes-entreprises">taille</a> -et du type de l'organisation membre, et de la durée d'engagement.</p> - -<table class="list" style="width: 80%;"> - <tr> - <th></th> - <th>1 an</th> - <th>2 ans</th> - <th>3 ans</th> - </tr> - <tr> - <td style="text-align: left; font-variant: small-caps; font-weight: bold;"> - Entreprises grandes et moyennes - </td> - <td>20&nbsp;k&euro;</td> - <td>36&nbsp;k&euro;</td> - <td>48&nbsp;k&euro;</td> - </tr> - <tr> - <td style="text-align: left; font-variant: small-caps; font-weight: bold;"> - Petites entreprises - </td> - <td>5&nbsp;k&euro;</td> - <td>9&nbsp;k&euro;</td> - <td>12&nbsp;k&euro;</td> - </tr> - <tr> - <td style="text-align: left; font-variant: small-caps; font-weight: bold;"> - &Eacute;tablissements publics de recherche - </td> - <td>5&nbsp;k&euro;</td> - <td>9&nbsp;k&euro;</td> - <td>12&nbsp;k&euro;</td> - </tr> - <tr> - <td style="text-align: left; font-variant: small-caps; font-weight: bold;"> - Micro entreprises - </td> - <td>2&nbsp;k&euro;</td> - <td>3.6&nbsp;k&euro;</td> - <td>4.8&nbsp;k&euro;</td> - </tr> -</table> - -<p>Nous vous invitons à nous <a href=mailto:contact@meso-star.com>contacter</a> -pour recevoir un exemplaire du contrat qui formalise le service et détaille le -fonctionnement du consortium.</p> - -<h2>Liste des membres du consortium</h2> - -<ul style="list-style-type: none;"> - <li style="padding-bottom: 1.0em;"><img alt="Airbus logo" - src="images/airbus_logo.svg" style="vertical-align: middle; padding-right: - 1em; width: 4em;"/>Airbus SAS</li> - <li style="padding-bottom: 1.0em"><img alt="EDF logo" - src="images/edf_logo.svg" style="vertical-align: middle; padding-right: 1em; width: 4em;" - />&Eacute;lectricité de France Recherche &amp; Développement</li> -</ul> diff --git a/stardis/consortium-fr.md b/stardis/consortium-fr.md @@ -0,0 +1,96 @@ +# Le consortium Stardis + +Le consortium Stardis s'adresse aux ingénieurs et chercheurs désireux +d'acquérir la pleine maîtrise de Stardis. Par pleine maîtrise on +entend : + +- la capacité d'intégrer Stardis dans sa pratique de thermicien ; +- la capacité de modifier le code pour ses besoins spécifiques ; +- une compréhension fine des algorithmes ; +- la participation aux choix de développement. + +La licence libre de l'environnement Stardis garantit déjà à ses +utilisateurs la capacité d'exécuter librement ces logiciels, d'en +étudier le comportement, d'en modifier le code source ou de les +redistribuer. +Le consortium apporte en plus à ses adhérents un *accompagnement de +temps long* au plus près de +[l'ensemble de l'équipe](http://www.demonstrator.edstar.cnrs.fr/prod/fr/#platform_researchers) +qui co-développe Stardis. +Il leur permet également de participer aux directions scientifiques et +techniques qui pilotent le projet. + +Tous les membres du consortium siègent au *Comité de Consortium*. +Celui-ci se réunit une fois par an pour faire le bilan des réalisations +et de l'allocation des ressources de l'année écoulée. +C'est au cours de ce Comité de Consortium que sont aussi débattus les +choix d'orientation et de développement de Stardis. + +D'un point de vue administratif, le consortium Stardis n'est pas une +structure juridique ; c'est une *offre de service* proposée par +[|Méso|Star>](mailto:contact@meso-star.com). +Rejoindre le consortium se résume simplement à souscrire cette offre de +service. + +## Tarifs annuels + +Le montant de l'adhésion au consortium dépend de la +[taille](https://www.economie.gouv.fr/cedef/definition-petites-et-moyennes-entreprises) +et du type de l'organisation membre, et de la durée d'engagement. + +<table style="margin-left: auto; margin-right: auto;"> + <tr> + <th style="width: 20em"></th> + <th style="width: 4em">1 an</th> + <th style="width: 4em">2 ans</th> + <th style="width: 4em">3 ans</th> + </tr> + <tr> + <td>Entreprises grandes et moyennes</td> + <td>20&nbsp;k&euro;</td> + <td>36&nbsp;k&euro;</td> + <td>48&nbsp;k&euro;</td> + </tr> + <tr> + <td>Petites entreprises</td> + <td>5&nbsp;k&euro;</td> + <td>9&nbsp;k&euro;</td> + <td>12&nbsp;k&euro;</td> + </tr> + <tr> + <td>&Eacute;tablissements publics de recherche</td> + <td>5&nbsp;k&euro;</td> + <td>9&nbsp;k&euro;</td> + <td>12&nbsp;k&euro;</td> + </tr> + <tr> + <td>Micro entreprises</td> + <td>2&nbsp;k&euro;</td> + <td>3.6&nbsp;k&euro;</td> + <td>4.8&nbsp;k&euro;</td> + </tr> +</table> + +Nous vous invitons à nous [contacter](mailto:contact@meso-star.com) +pour recevoir un exemplaire du contrat qui formalise le service et +détaille le fonctionnement du consortium. + +## Liste des membres du consortium + +<img alt="Airbus logo" src="images/airbus_logo.svg" + style=" + display: inline; + width: 4em; + padding: 0 1em 0 1em; + vertical-align: middle; +"> +Airbus SAS + +<img alt="EDF logo" src="images/edf_logo.svg" + style=" + display: inline; + width: 4em; + padding: 0 1em 0 1em; + vertical-align: middle; +"> +Électricité de France Recherche & Développement diff --git a/stardis/downloads/Stardis-0.11.0-r1-GNU-Linux64.tar.gz b/stardis/downloads/Stardis-0.11.0-r1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 086eca7f28cb887665f38ef5685fc90fa43f28995142e11b00821720b239e52d 22262363 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-0.11.0-r1-Sources.tar.gz b/stardis/downloads/Stardis-0.11.0-r1-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad a97ff32dd4bf88bf157b7fee7b694ddc083794bc68a6d2caa35f6c464e449463 870540 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-0.12.3-GNU-Linux64.tar.gz b/stardis/downloads/Stardis-0.12.3-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 16dc5b47975caac2217cd37d56809a629f8381fcfd25ab13dc261e6b72e7c83a 20533374 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-0.12.3-Sources.tar.gz b/stardis/downloads/Stardis-0.12.3-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad 140172f7a4823dccd507ce1923703d943766ad7c351806a9a996586d9c7d530e 908843 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-0.13.1-GNU-Linux64.tar.gz b/stardis/downloads/Stardis-0.13.1-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 21ffba858e4f25d6fdfcd3120b11203a08ff1febd9c4dca1c93eac08987f0663 20552299 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-0.13.1-Sources.tar.gz b/stardis/downloads/Stardis-0.13.1-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad c74381b5119aab189eefc41668affecf8656c1ddb72f3764d0e89d480b43077a 952331 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-0.14.0-GNU-Linux64.tar.gz b/stardis/downloads/Stardis-0.14.0-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 6935c5f284785aa49d235bbc61526868480f3f8a596e3f6d67412005a417a4fb 16087778 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-0.14.0-Sources.tar.gz b/stardis/downloads/Stardis-0.14.0-Sources.tar.gz @@ -1 +0,0 @@ -#$# git-wad e702f86798586bacbd78bd889a5401d1a946506cfa01bdceb4370bb53d16959a 987497 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-0.15.2-GNU-Linux64.tar.gz b/stardis/downloads/Stardis-0.15.2-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad fba3b20154209550554f974cb2737eca3d96cc66eafe807a406ba920a14155f6 33915 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-0.16-GNU-Linux64.tar.gz b/stardis/downloads/Stardis-0.16-GNU-Linux64.tar.gz @@ -1 +0,0 @@ -#$# git-wad 389af5479e35d5e1cda0ecec217028942fc1e669eaf13de0d5ff65ea63c2d469 36003 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-Starter-Pack-0.0.0.tar.gz b/stardis/downloads/Stardis-Starter-Pack-0.0.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad 6e81d9383b66b07fe42e9045507d974d4bc8f0e909ae71974a6ae7a4a2993f86 943401 -\ No newline at end of file diff --git a/stardis/downloads/Stardis-Starter-Pack-0.1.0.tar.gz b/stardis/downloads/Stardis-Starter-Pack-0.1.0.tar.gz @@ -1 +0,0 @@ -#$# git-wad b21f03125f3f39a786f26a499136d04cee8ca13fae29f73003a76c7b65e959e4 1403083 -\ No newline at end of file diff --git a/stardis/hooks/00-extract-archive.sh b/stardis/hooks/00-extract-archive.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +. "./config.sh.in" + +>&2 printf 'Extracting %s\n' "${stardis_arch}" +tar -xz -f "${stardis_arch}" \ + "${stardis_dir}/share/man" \ + "${stardis_readme}" \ + "${solver_readme}" \ + "${sgreen_readme}" + +>&2 printf 'Extracting %s\n' "${spk_arch}" +tar -xz -f "${spk_arch}" "${spk_readme}" diff --git a/stardis/hooks/00-sign-archives.sh b/stardis/hooks/00-sign-archives.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +find downloads -name "Stardis*.tar.gz" \ +| sort \ +| while read -r i; do + + sign="${i}.sig" + + if ! [ -f "${sign}" ]; then + >&2 printf 'Signing %s\n' "${i}" + gpg --yes -a -o "${sign}" --detach-sign "${i}" + fi + + # Write the generated files to standard output to inform the build + # system which files it needs to handle during installation. + printf '%s/%s\n' "${PWD##*/}" "${i}.sig" + +done diff --git a/stardis/hooks/01-generate-man.sh b/stardis/hooks/01-generate-man.sh @@ -0,0 +1,83 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" +. "../scripts/meso-web.sh" + +set -e + + +######################################################################## +# Helper function +######################################################################## +man_pages() +{ + find "${stardis_dir}/share/man" -type f -name "*.[1-9]" +} + +# Man to convert is submitted on stdin +man2html() # output_filename +{ + # Define the relative path to the root of the website + worktree="$(absdir "../")" + output="$(absdir "$1")" + root="$(relpath_to_dir "${output}" "${worktree}")" + + { + cd .. + sh ./scripts/generate_header.sh "${OLDPWD##*/}/$1" + mandoc -O man=../man%S/%N.%S.html,fragment -I os=UNIX -T html + cat ./templates/footer.html + cd "${OLDPWD}" + } \ + | sed \ + -e "s#href=\"../man1/htpp.1.html\"#href=\"${root}htrdr/man/man1/htpp.1.html\"#g" \ + -e "s#href=\"../man5/htrdr-image.5.html\"#href=\"${root}htrdr/man/man5/htrdr-image.5.html\"#g" \ + -e 's/<a class="Xr"[^>]\{0,\}>csplit(1)<\/a>/<a class "Xr">csplit(1)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>gnuplot(1)<\/a>/<a class "Xr">gnuplot(1)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>mmap(2)<\/a>/<a class "Xr">mmap(2)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>mpirun(1)<\/a>/<a class "Xr">mpirun(1)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>ppm(5)<\/a>/<a class "Xr">ppm(5)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>sysconf(3)<\/a>/<a class "Xr">sysconf(3)<\/a>/g' \ + -e 's/<a class="Xr"[^>]\{0,\}>wordexp(3)<\/a>/<a class "Xr">wordexp(3)<\/a>/g' \ + > "$1" +} + +######################################################################## +# The script +######################################################################## +man_pages | while read -r i; do + filename="$(basename "${i}")" + section="${filename##*.}" + + if ! [ -d "./man/man${section}" ]; then + mkdir -p "./man/man${section}"; + fi + + dst="man/man${section}/${filename}.html" + man2html "${dst}" < "${i}" + + # Check the result of the HTML conversion + if ! tidy --show-info no --show-filename yes -qe "${dst}"; then + >&2 printf '%s: error converting %s\n' "${0##*/}" "${i}" + exit 1 + fi + + # Write the generated files to standard output to inform the build + # system which files it needs to handle during installation. + printf '%s/%s\n' "${PWD##*/}" "${dst}" +done diff --git a/stardis/index.tsv b/stardis/index.tsv @@ -0,0 +1,6 @@ +Overview stardis.html +Validation validation.html +Consortium consortium-@LANG@.html fr:en +Manual pages stardis-docs.html +Starter Pack starter-pack.html +Release notes release-notes.html diff --git a/stardis/release-notes.html.in b/stardis/release-notes.html.in @@ -1,13 +0,0 @@ -<header> - <h1>Stardis - <span class=subtitle> - Release notes - </span> - </h1> -</header> - -<ul> - <li><a href=stardis-solver-release-notes.html>Stardis Solver</a></li> - <li><a href=stardis-release-notes.html>Stardis</a></li> - <li><a href=sgreen-release-notes.html>Stardis Green</a></li> -</ul> diff --git a/stardis/release-notes.md b/stardis/release-notes.md @@ -0,0 +1,5 @@ +# Release notes + +- [Stardis Solver](stardis-solver-release-notes.html) +- [Stardis](stardis-release-notes.html) +- [Stardis Green](sgreen-release-notes.html) diff --git a/stardis/sgreen-release-notes.sh b/stardis/sgreen-release-notes.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" + +set -e + +release_notes "${sgreen_readme}" diff --git a/stardis/stardis-docs.html.in b/stardis/stardis-docs.html.in @@ -1,21 +0,0 @@ -<header> - <h1>Stardis - <span class=subtitle> - Reference documentation - </span> - </h1> -</header> - -<h3>Stardis</h3> -<ul> - <li><a href=man/man1/stardis.1.html>stardis(1)</a></li> - <li><a href=man/man5/stardis-input.5.html>stardis-input(5)</a></li> - <li><a href=man/man5/stardis-output.5.html>stardis-output(5)</a></li> -</ul> - -<h3>Stardis Green</h3> -<ul> - <li><a href=man/man1/sgreen.1.html>sgreen(1)</a></li> - <li><a href=man/man5/sgreen-input.5.html>sgreen-input(5)</a></li> - <li><a href=man/man5/sgreen-output.5.html>sgreen-output(5)</a></li> -</ul> diff --git a/stardis/stardis-docs.md b/stardis/stardis-docs.md @@ -0,0 +1,13 @@ +# Reference documentation + +## Stardis + +- [stardis(1)](man/man1/stardis.1.html) +- [stardis-input(5)](man/man5/stardis-input.5.html) +- [stardis-output(5)](man/man5/stardis-output.5.html) + +## Stardis Green + +- [sgreen(1)](man/man1/sgreen.1.html) +- [sgreen-input(5)](man/man5/sgreen-input.5.html) +- [sgreen-output(5)](man/man5/sgreen-output.5.html) diff --git a/stardis/stardis-release-notes.sh b/stardis/stardis-release-notes.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" + +set -e + +release_notes "${stardis_readme}" diff --git a/stardis/stardis-solver-release-notes.sh b/stardis/stardis-solver-release-notes.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" + +set -e + +release_notes "${solver_readme}" diff --git a/stardis/stardis.html.in b/stardis/stardis.html.in @@ -1,479 +0,0 @@ -<header> - <h1>Stardis - <span class=subtitle> - The Monte Carlo framework for coupled thermal problems - </span> - </h1> -</header> - -<div class="news"> - <p><b>Lastest versions</b></p> - <ul> - <li> - Stardis Solver - <a href="https://gitlab.com/meso-star/stardis-solver/-/tree/@SOLVER_VERSION@"> - @SOLVER_VERSION@ - </a> - </li><li> - Stardis - <a href="https://gitlab.com/meso-star/stardis/-/tree/@STARDIS_VERSION@"> - @STARDIS_VERSION@ - </a> - </li><li> - Stardis Green - <a href="https://gitlab.com/meso-star/stardis-green/-/tree/@SGREEN_VERSION@"> - @SGREEN_VERSION@ - </a> - </li> - </ul> - <a href="#build">Install</a> from source -</div> - -<p>Stardis is a <b>thermal simulation</b> framework for <b>complex 2D and 3D -environments</b>, based on new <b>Monte Carlo</b> algorithms built from -reformulations of the main heat transfer phenomena: conduction, convection and -radiation. A set of cross-recursive algorithms have then been derived, and -result in the simulation of "<b>thermal paths</b>" that explore space and time -until a boundary condition or an initial condition is found. The key concept -here is that heat transfer phenomena are not considered separately but are -<b>naturally coupled</b> via the cross-recursion of the various Monte Carlo -algorithms.</p> - -<div class="news"> - <p>Refer to the <a href=consortium-fr.html>Stardis consortium's</a> - service offer for long-term <b>advices</b> on its use, - <b>contribute</b> to orientation choices and <b>interact</b> with its - developers and other users.</p> -</div> - -<p>Beyond its use as a regular thermal simulation tool, the Stardis framework -explicitly targets engineers, researcher, teachers or students wishing to -fully appropriate the <b>statistical formulation of heat transfer</b>, from -theoretical concepts to practical implementation. The complete Stardis -framework is thus released under <b><a href="#license">free licenses</a></b> -that guarantee the users the ability to freely use, study, modify or extend -the complete source code according to their needs.</p> - -<p>Despite its specific advantages, Stardis is not meant to fully replace -already well established and highly validated thermal simulation tools. -Instead, it can be seen as an additional tool that can be useful for various -purposes:</p> - -<div class="news"> - <p><b>Related articles</b></p> - <ul> - <li><p> - <a href="https://doi.org/10.1016/j.ijheatmasstransfer.2023.125139"> - Caliot et al.</a> - <br>(IJHMT 2024) - <br><a href="https://hal.science/hal-04251373">open access</a> - </p></li> - <li><p> - <a href="https://doi.org/10.1016/j.cpc.2023.108911">Penazzi et al.</a> - <br>(Computer Physics Communications 2024) - <br><a href="https://hal.science/hal-04204702v2">open access</a> - <br> - </p></li> - <li><p> - <a href="https://dx.doi.org/10.1145/3592121">Bati et al.</a> - <br>(SIGGRAPH 2023) - <br><a href="https://hal.science/hal-04090428">open access</a> - </p></li> - <li><p> - <a href="https://doi.org/10.1371/journal.pone.0283681">Tregan et al.</a> - <br>(PLOS ONE 2023) - <br><a href="https://hal.science/hal-03819157">open access</a> - </p></li> - <li><p> - <a href="https://doi.org/10.1126/sciadv.abp8934">Villefranque et al.</a> - <br>(Science Advances 2022) - <br><a href="https://arxiv.org/abs/2204.14227">open access</a> - </p></li> - </ul> -</div> - -<ul> - <li><p> - <b>Probe computation</b>: - Stardis will <u>not</u> compute the full temperature field of a system; - instead, it can be used to focus on a specific spatial/temporal zone of the - system. - </p></li> - <li><p> - <b>Reference method</b>: - the numerical uncertainty is a unique feature of stochastic methods. It can - be reduced using a reformulation of the underlying integral for specific - problems, and possibly using better suited sampling techniques. - Ultimately, the numerical uncertainty can also be reduced by increasing the - number of statistical samples. - Any value of temperature (or flux) computed by Stardis must agree with the - values computed by other tools, within the uncertainty range (and also - within the limits of validity of the various - <a href="#hypothesis">assumptions</a> used to derive the Monte Carlo algorithms - used in Stardis). - This can prove very useful in order to validate any result obtained by any - thermal solver in a case when no analytic solution is available or when a - physical intuition is impossible to achieve due to the complexity of the - problem. - </p></li> - <li> - <div class="img" style="width: 18em"> - <a href="images/foam_path.jpg"> - <img src="thumbs/foam_path.jpg" alt="foam_path"> - </a> - <div class="caption"> - Example of conductive path sampled by Stardis in a foam geometry: it starts - from the probe position (green point) and after several diffusive steps - reaches a boundary condition (red point). - </div> - </div> - <p> - <b>Educational purposes</b>: - since the various probability sets used by the underlying Monte Carlo - algorithms solely rely on the physics, thermal paths naturally explore the - spatial and temporal zones of interest in the system. - This can be a drawback in some situations (the paths will have a hard time - exiting a highly conductive solid surrounded by non-conductive media) but is - a major asset for the <a href="#visu">direct visualization</a> of what - contributes to a given result: the main sources of heat, what transfer modes - are dominant, what are the main paths of heat transfer, <i>etc.</i> - </p></li> - <li><p> - <b>Sensitivity analysis</b>: - the <a href="#green">Green functions</a> of the system (estimated and stored - during an initial Monte Carlo computation) can be reused for subsequent - (very fast) post-processing computations. - This makes possible to explore the sensitivity of any given result to the - variations of a boundary or initial condition, or internal power source. - This technique is only a small part of a family of so-called "symbolic" - Monte Carlo algorithms that extend the scope of sensitivity analysis to any - thermal parameter (for instance: the conductivity of a given solid, a - convective exchange coefficient or the emissivity of a solid). - </p></li> -</ul> - -<p>The Stardis framework is structured around <b>two main components</b>. The -first one, <a href="#solver">Stardis-Solver</a>, is the core library that -implements the Monte Carlo algorithms. The second one is the <a -href="#cli">Stardis application</a>, a command line tool that can be seen as a -reference implementation of a complete workflow relying on Stardis-Solver, from -input data describing the system to simulate (geometry, thermal properties, -limit conditions, <i>etc.</i>) to heat transfer simulation and results -post-processing. See below for more information on each of these components.</p> - -<h2 id="solver">Stardis-Solver</h2> - -<div class="img" style="width: 18em;"> - <a href="images/heatsink_anim.gif"> - <img src="thumbs/heatsink_anim.gif" alt="heatsink"> - </a> - <div class="caption"> - Infrared timelapse animation of a chip and its heatsink covering a 14-second - period of time. Computed using the stardis infrared rendering feature, one - image per simulated second. Acknowledgment to - Léa Penazzi and - <a href=https://www.icam.fr/enseignant-chercheur/anne-castelan/>Anne - Castelan</a> for the scene geometry (also available in <a - href=starter-pack.html>Stardis: Starter Pack</a>) actually used in an - upcoming research article, and to <a - href=https://www.imt-mines-albi.fr/fr/eibner-simon>Simon Eibner</a> who - computed the animation. - </div> -</div> - -<p><a href=https://gitlab.com/meso-star/stardis-solver.git>Stardis-Solver</a> -is the core library of Stardis: it simulates coupled convecto - conducto - -radiative heat transfers by sampling thermal paths that explore space and time -until a boundary condition or an initial condition is met. Note that this -path formulation does not require <b>any volumetric mesh</b>: in addition of -the thermal properties and the limit/boundary conditions, only the geometry -defining the contours of the objects is necessary.</p> - -<p>The Stardis-Solver library is currently used in the two following -projects:</p> - -<ul> - <li><a href="#cli">Stardis application</a> is the reference implementation of a - complete workflow using Stardis-Solver.</li> - <li><a - href="https://www.edf.fr/en/the-edf-group/world-s-largest-power-company/activities/research-and-development/scientific-communities/simulation-softwares?logiciel=10818"> - SYRTHES</a> is the general thermal software developed by &Eacute;lectricité de - France R&amp;D. -</ul> - -<p id="hypothesis"> -The coupled Monte Carlo algorithms implemented into Stardis-Solver are based on -the following hypothesis: -</p> - -<ul> - <li><p> - <b>Conduction</b>: - Stardis-Solver offers two ways of sampling unsteady Brownian motion to solve - for conductivity in a solid. - The <a href="https://doi.org/10.1371/journal.pone.0283681"> delta sphere - algorithm</a> is based on the discrimination of thermal heat transfer in - solids, which introduces the notion of conductive path length. - Solutions obtained using this algorithm are formally exact to the limit of - zero path length. - In practice, this path length must be adapted to a given geometrical - configuration so that its value is small compared to the smallest typical - space-time length of a solid. - </p><p> - As an alternative, the <a href="https://www.jstor.org/stable/2237369">Walk on - Sphere</a> algorithm samples an unbiased diffuse trajectory in a solid with - Dirichlet boundary conditions, unbiased with respect to what numerical - accuracy can account for. - Its coupling with other boundary or connection conditions behaves as with the - delta sphere algorithm, i.e. the solution is exact when the length of the - trajectory used as a first-order approximation tends towards 0. - </p></li> - - <li><p> - <b>Convection</b>: - fluid media are supposed to be <b>isothermal</b>, even if their temperature - may vary with time. - This hypothesis relies on the assumption of perfectly agitated fluids. - </li> - - <li><p> - <b>Radiation</b>: - local radiative transfer is solved by an <a - href="https://hal.archives-ouvertes.fr/tel-03266863/">iterative numerical - method</a> (Picard algorithm) that requires the knowledge of a reference - temperature field. - At the basic level (one level of recursion), and using a uniform reference - temperature field, this algorithm translates into the hypothesis of a - linearized radiative transfer. - Using a higher order or recursion makes possible to converge the result closer - to the solution of a rigorous spectrally-integrated radiative transfer (a - difference of temperatures to the power 4 when integrated over the whole - spectrum). - The higher the recursion order, the better will be the convergence of the - algorithm. - </p></li> - -</ul> - -<div class="img" style="width: 18em"> - <a href="images/plot_insensib_MC.jpg"> - <img src="thumbs/plot_insensib_MC.jpg" alt="plot_insensib_MC"> - </a> - <div class="caption"> - Stardis computation time as function of geometrical refinement. Both the - standard Monte Carlo computation and the Green function construction and - usage are insensitive. In this example, once constructed, <b>using the Green - function with any new set of sources is 10<sup>3</sup> times faster than - Monte Carlo</b>. - </div> -</div> - -<p>The main functionalities provided by Stardis-Solver upon the aforementioned -hypothesis are as follows:</p> - -<div class="img" style="width: 18em"> - <a href="images/ramier_island.png"> - <img src="thumbs/ramier_island.jpg" alt="Ramier island"> - </a> - <a href="images/ramier_island_sun.png"> - <img src="thumbs/ramier_island_sun.jpg" alt="Ramier island with sun"> - </a> - <div class="caption"> - Infrared rendering by Stardis of a city district generated by - <a href="https://gitlab.com/meso-star/city_generator2"> - City_Generator2 - </a> - from the cadastral map of Ile du Ramier in Toulouse, France. - Temperature are given in Kelvin. - In both images, the coupled exchanges of convection, conduction and - radiation are evaluated within and between all buildings, i.e. in each - room, through every pane of glass and wall with insulation, via the - floor, etc. - The lower image also includes solar flux as a new boundary condition. - </div> -</div> - -<ul> - <li><p> - <b>Probe computation</b>: - Stardis-Solver computes the temperature at any given position (spatial and - temporal). - The main idea is that thermal paths start from this probe position, and - scatter in space while going back in time, until a (spatial) boundary - condition or a (temporal) initial condition is met. - In addition to the value of temperature, using a Monte Carlo method makes it - possible to compute a <b>numerical uncertainty</b> (standard deviation of - the weight distribution) over each result. - </p></li> - <li><p> - <b>Integrated calculation</b>: - thanks to Monte Carlo, Stardis-Solver can calculate the temperature of an - entire volume or surface, over a given time range, without increasing - calculation time or uncertainty compared with a probe-based calculation at a - specific point in time. - </p></li> - <li><p> - <b>Flux computation</b>: - Stardis-Solver can compute the flux over any surface (or group of surfaces) - at any time. - Alternatively, it can also compute the total energy output from a solid - element where an internal source of power must be taken into account. - </p></li> - <li><p id="green"> - <b>Green function</b>: - the value of temperature computed at a probe position is no more than the mean - of the Monte Carlo weights of a set of thermal paths. - In practice: when no internal power source has to be considered, the weight of - any given thermal path is the temperature of the boundary or initial condition - that has been reached; when internal power sources or imposed fluxes are taken - into account, additional contributions to the weight must be continuously - evaluated by the thermal conduction algorithm, but these contributions are - proportional to the local dissipated power and imposed flux. - </p><p> - In any case, the position and date at the end of each thermal path (and also - accumulation coefficients) can be stored during a first complete Monte Carlo - simulation. - This information, known as the Green function, can then be used in a (very - fast) post-processing step to compute all required results for different - boundary and initial conditions (and also different internal power sources - and imposed flux). - </p></li> - <li><p> - <b>Infrared rendering</b>: - Stardis can render a scene in infrared without prior knowledge of the - temperature field. - Thermal paths that start at the camera in radiative mode propagate through the - model, possibly in conductive, convective or radiative mode until reaching a - boundary condition (or an initial condition in a non-stationary case). - </p></li> - <li><p id="temporal"> - <b>Temporal dynamics analysis</b> - Stardis-Solver can output the end of each path sampled during a Monte Carlo - computation, including position, elapsed time, and boundary/medium ID. - This not only allows to weight the contribution of each boundary or initial - condition to the result, but also gives the temporal dynamics of these - contributions. - </p></li> - <li><p id="visue"> - <b>Thermal path visualization</b> - Stardis-Solver can output the complete history of a set of thermal paths for - later visualization. - In addition to positions and dates, physics data is stored along thermal - paths, such as the type of heat transfer phenomenon involved at each step, - the accumulated power and flux, <i>etc.</i> - </p></li> -</ul> - -<h2 id="cli">Stardis CLI tools</h2> - -<p>The stardis framework includes Command Line Interface (CLI) software, namely -<a href="man/man1/stardis.1.html"> -stardis</a> and <a -href="man/man1/sgreen.1.html">sgreen</a>, -to use along with Stardis-Solver. They make it easy to exploit the features of -the solver.</p> - -<ul> - <li><p id="stardis-cli"> - <b>stardis</b>: - it is the main CLI tool of the Stardis framework. - It is a barebone front-end to the stardis solver. - Depending on the provided command line arguments, it simulates a - thermal system described through a simple text file and geometry - files and produces various types of output, from simple Monte Carlo - results to infrared images or Green functions. - Refer to its <a href="man/man1/stardis.1.html">manual page</a> page - for more informations. - </p></li> - <li><p id="sgreen-cli"> - <b>sgreen</b>: - the purpose of <code>sgreen</code> is to post-process binary - green-function files produced by <code>stardis</code>. - It allows to apply a set of values to the initial and boundary - conditions as well as the power and flux sources of the model to - produce the same result a new simulation would produce. - The obvious benefit of using the <code>sgreen</code> post-process - instead of a new Monte Carlo simulation is the tremendous - improvement on computation time. - Refer to its <a href="man/man1/sgreen.1.html">manual page</a> page - for more informations. - </p></li> -</ul> - -<h2 id=build>Installation</h2> - -<p>The installation of Stardis consists of compiling the solver and the command -line tools directly on the target machine. -A simple way is to rely on -<a href="https://gitlab.com/meso-star/star-build/">star-build</a>, -which automates the build and installation of <code>stardis</code> and -its dependencies from source code.</p> - -<h3>Prerequisites</h3> - -<p>To build <code>stardis</code> with <code>star-build</code>, first -make sure your system has the following prerequisites:</p> - -<ul> - <li>POSIX shell</li> - <li>POSIX make</li> - <li>curl</li> - <li>git</li> - <li>mandoc</li> - <li>pkg-config</li> - <li>sha512sum</li> - <li>GNU Compiler Collection in version 8.3 or higher</li> - <li>OpenMPI library and headers in version 2 or higher (optional)</li> -</ul> - -<h3>Build</h3> - -<p>Assuming that the aforementioned prerequisites are available, the -build procedure is summed up to:</p> - -<pre class="code"> -~ $ git clone https://gitlab.com/meso-star/star-build.git -~ $ cd star-build -~/star-build $ make \ - PREFIX=~/stardis \ - BUILD=src/therm-apps/stardis_@STARDIS_VERSION@.sh -</pre> - -<p>With <code>PREFIX</code> defining the path where Stardis will be installed -and <code>BUILD</code> defining the installation script to be run.</p> - -<p>By default, Stardis is built with MPI enabled, so OpenMPI is one of its -requirements. -To disable MPI support, simply set the <code>DISTRIB_PARALLELISM</code> -parameter to NONE as follows:</p> - -<pre class="code"> -~/star-build $ make \ - PREFIX=~/stardis \ - BUILD=src/therm-apps/stardis_@STARDIS_VERSION@.sh \ - DISTRIB_PARALLELISM=NONE \ -</pre> - -<h3>Run</h3> - -<p>Evaluate the installed <code>stardis.profile</code> file in the current -shell to register <code>stardis</code> against it. You can then run -<code>stardis</code> and consult its manual pages:</p> - -<pre class="code"> -~ $ . ~/stardis/etc/stardis.profile -~ $ stardis -h -~ $ man stardis -</pre> - -<p>Refer to the <a href=starter-pack.html>Stardis: Starter Pack</a> to quickly -run a thermal simulation through the <code>stardis</code> CLI; this archive -provides input data and scripts and is a good starting point to begin with the -Stardis framework.</p> - -<h2 id="license">License</h2> - -<p>Stardis is free software released under the GPLv3+ license: GNU GPL version -3 or later. You can freely study, modify or extend it. You are also welcome to -redistribute it under certain conditions; refer to the <a -href="https://www.gnu.org/licenses/gpl.html">license</a> for details.</p> diff --git a/stardis/stardis.md.in b/stardis/stardis.md.in @@ -0,0 +1,384 @@ +# Stardis + +Stardis is a *thermal simulation* framework for *complex 2D and 3D +environments*, based on new *Monte Carlo* algorithms built from +reformulations of the main heat transfer phenomena: conduction, +convection and radiation. +A set of cross-recursive algorithms have then been derived, and result +in the simulation of "*thermal paths*" that explore space and time until +a boundary condition or an initial condition is found. +The key concept here is that heat transfer phenomena are not considered +separately but are *naturally coupled* via the cross-recursion of the +various Monte Carlo algorithms. + +[![Foam](thumbs/foam_path.jpg)](images/foam_path.jpg) + +> Example of conductive path sampled by Stardis in a foam geometry: it +> starts from the probe position (green point) and after several +> diffusive steps reaches a boundary condition (red point). + +Beyond its use as a regular thermal simulation tool, the Stardis +framework explicitly targets engineers, researcher, teachers or students +wishing to fully appropriate the *statistical formulation of heat +transfer*, from theoretical concepts to practical implementation. +The complete Stardis +framework is thus released under [free license](#license) +that guarantee the users the ability to freely use, study, modify or +extend the complete source code according to their needs. + +Despite its specific advantages, Stardis is not meant to fully replace +already well established and highly validated thermal simulation tools. +Instead, it can be seen as an additional tool that can be useful for +various purposes: + +- *Probe computation*: Stardis will _not_ compute the full temperature + field of a system; + instead, it can be used to focus on a specific + spatial/temporal zone of the system. + +- *Reference method*: the numerical uncertainty is a unique feature of + stochastic methods. + It can be reduced using a reformulation of the underlying integral for + specific problems, and possibly using better suited sampling + techniques. + Ultimately, the numerical uncertainty can also be reduced by + increasing the number of statistical samples. + Any value of temperature (or flux) computed by Stardis must agree with + the values computed by other tools, within the uncertainty range (and + also within the limits of validity of the various + [assumptions](#hypothesis) used to derive the Monte Carlo algorithms + used in Stardis). + This can prove very useful in order to validate any result obtained by + any thermal solver in a case when no analytic solution is available or + when a physical intuition is impossible to achieve due to the + complexity of the problem. + +- *Educational purposes*: since the various probability sets used by the + underlying Monte Carlo algorithms solely rely on the physics, thermal + paths naturally explore the spatial and temporal zones of interest in + the system. + This can be a drawback in some situations (the paths will have a hard + time exiting a highly conductive solid surrounded by non-conductive + media) but is a major asset for the [direct visualization](#visu) of + what contributes to a given result: the main sources of heat, what + transfer modes are dominant, what are the main paths of heat transfer, + etc. + +- *Sensitivity analysis*: the [Green functions](#green) of the system + (estimated and stored during an initial Monte Carlo computation) can + be reused for subsequent (very fast) post-processing computations. + This makes possible to explore the sensitivity of any given result to + the variations of a boundary or initial condition, or internal power + source. + This technique is only a small part of a family of so-called + "symbolic" Monte Carlo algorithms that extend the scope of sensitivity + analysis to any thermal parameter (for instance: the conductivity of a + given solid, a convective exchange coefficient or the emissivity of a + solid). + +<span id="insensib"/> + +[![Plot computation time](thumbs/plot_insensib_MC.jpg)](images/plot_insensib_MC.jpg) + +> Stardis computation time as function of geometrical refinement. +> Both the standard Monte Carlo computation and the Green function +> construction and usage are insensitive. +> In this example, once constructed, *using the Green function with any +> new set of sources is 10³ times faster than Monte Carlo*. + +The Stardis framework is structured around *two main components*. +The first one, [Stardis-Solver](#solver), is the core library that +implements the Monte Carlo algorithms. +The second one is the [Stardis application](#cli), a command line tool +that can be seen as a reference implementation of a complete workflow +relying on Stardis-Solver, from input data describing the system to +simulate (geometry, thermal properties, limit conditions, etc.) +to heat transfer simulation and results post-processing. +See below for more information on each of these components. + +## Related articles + +- [Caliot et al. 2024](https://doi.org/10.1016/j.ijheatmasstransfer.2023.125139), + "Coupled heat transfers resolution by Monte Carlo in urban geometry + including direct and diffuse solar irradiations", International + Journal of Heat and Mass Transfert + ([open access](https://hal.science/hal-04251373)) + +- [Penazzi et al. 2024](https://doi.org/10.1016/j.cpc.2023.108911), + "Path integrals formulations leading to propagator evaluation for + coupled linear physics in large geometric models", Computer Physic + Communications + ([open access](https://hal.science/hal-04204702v2)) + +- [Bati et al. 2023](https://dx.doi.org/10.1145/3592121), + "Coupling Conduction, Convection and Radiative Transfer in a Single + Path-Space: Application to Infrared Rendering", SIGGRAPH + ([open access](https://hal.science/hal-04090428)) + +- [Tregan et al. 2023](https://doi.org/10.1371/journal.pone.0283681), + "Coupling radiative, conductive and convective heat-transfers in a + single Monte Carlo algorithm: A general theoretical framework for + linear situations", PLOS ONE + ([open access](https://hal.science/hal-03819157)) + +- [Villefranque et al. 2022](https://doi.org/10.1126/sciadv.abp8934), + "The “teapot in a city”: A paradigm shift in urban climate modeling", + Science Advances + ([open access](https://arxiv.org/abs/2204.14227)) + +<span id="solver"/> + +## Stardis-Solver + +[Stardis-Solver](https://gitlab.com/meso-star/stardis-solver.git) is the +core library of Stardis: +it simulates coupled convecto - conducto - radiative heat transfers by +sampling thermal paths that explore space and time until a boundary +condition or an initial condition is met. +Note that this path formulation does not require *any volumetric mesh*: +in addition of the thermal properties and the limit/boundary conditions, +only the geometry defining the contours of the objects is necessary. + +<span id="hypothesis"/> + +The coupled Monte Carlo algorithms implemented into Stardis-Solver are +based on the following hypothesis: + +- *Conduction*: + Stardis-Solver offers two ways of sampling unsteady Brownian motion to + solve for conductivity in a solid. + The [delta sphere](https://doi.org/10.1371/journal.pone.0283681) + algorithm is based on the discrimination of thermal heat transfer in + solids, which introduces the notion of conductive path length. + Solutions obtained using this algorithm are formally exact to the + limit of zero path length. + In practice, this path length must be adapted to a given geometrical + configuration so that its value is small compared to the smallest + typical space-time length of a solid. + + As an alternative, the + [Walk on Sphere](https://www.jstor.org/stable/2237369) + algorithm samples an unbiased diffuse trajectory in a solid with + Dirichlet boundary conditions, unbiased with respect to what numerical + accuracy can account for. + Its coupling with other boundary or connection conditions behaves as + with the delta sphere algorithm, i.e. the solution is exact when the + length of the trajectory used as a first-order approximation tends + towards 0. + +- *Convection*: fluid media are supposed to be *isothermal*, even if + their temperature may vary with time. + This hypothesis relies on the assumption of perfectly agitated fluids. + +- *Radiation*: + local radiative transfer is solved by an + [iterative numerical method ](https://hal.archives-ouvertes.fr/tel-03266863/) + (Picard algorithm) that requires the knowledge of a reference + temperature field. + At the basic level (one level of recursion), and using a uniform + reference temperature field, this algorithm translates into the + hypothesis of a linearized radiative transfer. + Using a higher order or recursion makes possible to converge the + result closer to the solution of a rigorous spectrally-integrated + radiative transfer (a difference of temperatures to the power 4 when + integrated over the whole spectrum). + The higher the recursion order, the better will be the convergence of + the algorithm. + +The main functionalities provided by Stardis-Solver upon the aforementioned +hypothesis are as follows: + +- *Probe computation*: + Stardis-Solver computes the temperature at any given position + (spatial and temporal). + The main idea is that thermal paths start from this probe position, + and scatter in space while going back in time, until a (spatial) + boundary condition or a (temporal) initial condition is met. + In addition to the value of temperature, using a Monte Carlo method + makes it possible to compute a *numerical uncertainty* (standard + deviation of the weight distribution) over each result. + +- *Integrated calculation*: + thanks to Monte Carlo, Stardis-Solver can calculate the temperature of + an entire volume or surface, over a given time range, without + increasing calculation time or uncertainty compared with a probe-based + calculation at a specific point in time. + +- *Flux computation*: + Stardis-Solver can compute the flux over any surface (or group of + surfaces) at any time. + Alternatively, it can also compute the total energy output from a + solid element where an internal source of power must be taken into + account. + +<span id="green"/> + +- *Green function*: + the value of temperature computed at a probe position is no more than + the mean of the Monte Carlo weights of a set of thermal paths. + In practice: when no internal power source has to be considered, the + weight of any given thermal path is the temperature of the boundary or + initial condition that has been reached; + when internal power sources or imposed fluxes are taken into account, + additional contributions to the weight must be continuously evaluated + by the thermal conduction algorithm, but these contributions are + proportional to the local dissipated power and imposed flux. + + In any case, the position and date at the end of each thermal path (and also + accumulation coefficients) can be stored during a first complete Monte Carlo + simulation. + This information, known as the Green function, can then be used in a + ([very fast](#insensib)) post-processing step to compute all + required results for different boundary and initial conditions (and + also different internal power sources and imposed flux). + +- *Infrared rendering*: + Stardis can render a scene in infrared without prior knowledge of the + temperature field. + Thermal paths that start at the camera in radiative mode propagate + through the model, possibly in conductive, convective or radiative + mode until reaching a boundary condition (or an initial condition in a + non-stationary case). + +- *Temporal dynamics analysis*: + Stardis-Solver can output the end of each path sampled during a Monte + Carlo computation, including position, elapsed time, and + boundary/medium ID. + This not only allows to weight the contribution of each boundary or initial + condition to the result, but also gives the temporal dynamics of these + contributions. + +<span id="visu"/> + +- *Thermal path visualization*: + Stardis-Solver can output the complete history of a set of thermal + paths for later visualization. + In addition to positions and dates, physics data is stored along + thermal paths, such as the type of heat transfer phenomenon involved + at each step, the accumulated power and flux, etc. + +[![Ramier island with sun](thumbs/ramier_island_sun.jpg)](images/ramier_island_sun.png) + +> Infrared rendering by Stardis of a city district generated by +> [City\_Generator2](https://gitlab.com/meso-star/city_generator2) +> from the cadastral map of Ile du Ramier in Toulouse, France. +> Temperature are given in Kelvin. +> The coupled exchanges of convection, conduction and +> radiation are evaluated within and between all buildings, i.e. in each +> room, through every pane of glass and wall with insulation, via the +> floor, etc. +> Note that shadows are "heat" shadows produced by the sun defined as an +> external source boundary condition. + +<span id="cli"/> + +## Stardis CLI tools + +The stardis framework includes Command Line Interface (CLI) software, namely +[stardis](man/man1/stardis.1.html) +and +[sgreen](man/man1/sgreen.1.html), +to use along with Stardis-Solver. +They make it easy to exploit the features of the solver. + +- *stardis*: + it is the main CLI tool of the Stardis framework. + It is a barebone front-end to the stardis solver. + Depending on the provided command line arguments, it simulates a + thermal system described through a simple text file and geometry files + and produces various types of output, from simple Monte Carlo results + to infrared images or Green functions. + Refer to its [manual page](man/man1/stardis.1.html) for more + informations. + +- *sgreen* + the purpose of `sgreen` is to post-process binary + green-function files produced by `stardis`. + It allows to apply a set of values to the initial and boundary + conditions as well as the power and flux sources of the model to + produce the same result a new simulation would produce. + The obvious benefit of using the `sgreen` post-process + instead of a new Monte Carlo simulation is the tremendous + improvement on computation time. + Refer to its [manual page](man/man1/sgreen.1.html) page for more + informations. + +[![Heatsink](thumbs/heatsink_anim.gif)](images/heatsink_anim.gif) + +> Infrared timelapse animation of a chip and its heatsink covering a +> 14-second period of time. +> Computed using the stardis infrared rendering feature, one image per +> simulated second. + +## Installation + +The installation of Stardis consists of compiling the solver and the +command line tools directly on the target machine. +A simple way is to rely on +[star-build](https://gitlab.com/meso-star/star-build/), +which automates the build and installation of `stardis` and +its dependencies from source code. + +### Prerequisites + +To build `stardis` with `star-build`, first make sure your system has +the following prerequisites: + +- POSIX shell +- POSIX make +- curl +- git +- mandoc +- pkg-config +- sha512sum +- GNU Compiler Collection in version 8.3 or higher +- OpenMPI library and headers in version 2 or higher (optional) + +### Build + +Assuming that the aforementioned prerequisites are available, the +build procedure is summed up to: + + ~ $ git clone https://gitlab.com/meso-star/star-build.git + ~ $ cd star-build + ~/star-build $ make \ + PREFIX=/path/to/stardis/ \ + BUILD=src/therm-apps/stardis_@STARDIS_VERSION@.sh + +With `PREFIX` defining the path where Stardis will be installed +and `BUILD` defining the installation script to be run. + +By default, Stardis is built with MPI enabled, so OpenMPI is one of its +requirements. +To disable MPI support, simply set the `DISTRIB_PARALLELISM` parameter +to NONE as follows: + + ~/star-build $ make \ + PREFIX=/path/to/stardis/ \ + BUILD=src/therm-apps/stardis_@STARDIS_VERSION@.sh \ + DISTRIB_PARALLELISM=NONE + +### Run + +Evaluate the installed `stardis.profile` file in the current +shell to register `stardis` against it. +You can then run `stardis` and consult its manual pages: + + . /path/to/stardis/etc/stardis.profile + stardis -h + man stardis + +Refer to the [Stardis: Starter Pack](starter-pack.html) to quickly run a +thermal simulation through the `stardis` CLI; this archive provides +input data and scripts and is a good starting point to begin with the +Stardis framework. + +## License +<span id="license"/> + +Stardis is free software released under the GPLv3+ license: GNU GPL +version 3 or later. +You can freely study, modify or extend it. +You are also welcome to redistribute it under certain conditions; refer +to the +[license](https://www.gnu.org/licenses/gpl.html) for details. diff --git a/stardis/stardis.sh b/stardis/stardis.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" + +sed -e "s/@STARDIS_VERSION@/${stardis_version}/g" \ + -e "s/@SOLVER_VERSION@/${solver_version}/g" \ + -e "s/@SGREEN_VERSION@/${sgreen_version}/g" \ + stardis.md.in diff --git a/stardis/stardis_build.sh b/stardis/stardis_build.sh @@ -1,210 +0,0 @@ -#!/bin/sh -e - -# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -. ../meso-menu.sh - -overview() -{ - if [ $# -lt 3 ]; then - printf - "Usage: %s overview <solver-version> <stardis-version> <sgreen-version>\n"\ - "$0" "$1" "$2" >&2 - exit 1 - fi - - print_header -s Stardis -n Overview -r ../ - sed -e "s/@SOLVER_VERSION@/$1/g" \ - -e "s/@STARDIS_VERSION@/$2/g" \ - -e "s/@SGREEN_VERSION@/$3/g" \ - stardis.html.in - print_footer -} - -validation() -{ - print_header -s Stardis -n Validation -r ../ - cat validation.html.in - print_footer -} - -consortium() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s consortium <fr|en>\n" "$0" >&2 - exit 1 - fi - - print_header -s Stardis -n Consortium -l "$1" -r ../ - cat "consortium-$1.html.in" - print_footer -} - -documentations() -{ - print_header -s Stardis -n Documentations -r ../ - cat stardis-docs.html.in - print_footer -} - -release_notes_list() -{ - print_header -s Stardis -n "Release notes" -r ../ - cat release-notes.html.in - print_footer -} - -release_notes() -{ - if [ $# -lt 2 ]; then - printf "Usage: %s downloads <repository> <release-notes>\n" "$0" >&2 - exit 1 - fi - - name=$(echo "$1" | sed -e 's/^\([a-z]\)/\u\1/' -e 's/-\([a-z]\)/ \u\1/') - name="${name} Release Notes" - print_header -s Stardis -n "${name}" -r ../ - - echo "<header><h1>${name}" - echo " <span class=\"subtitle\">" - echo " <a href=\"https://gitlab.com/meso-star/$1\">git</a> repository" - echo " </span>" - echo "</h1></header>" - - ${markdown} "$2"\ - | sed -n '/^<h2>Release notes<\/h2>/,/^<h2>License<\/h2>/p'\ - | sed -e '1d' -e '$d' \ - | sed 's/<h3>\(.*\)<\/h3>/<h2>\1<\/h2>/g'\ - | sed 's/<h4>\(.*\)<\/h4>/<h3>\1<\/h3>/g' - print_footer -} - -starter_pack() -{ - if [ $# -lt 1 ]; then - printf "Usage: %s starter_pack <readme> <version>\n" "$0" >&2 - exit 1 - fi - - readme=$(${markdown} "$1" \ - | sed 's/<pre><code>/<pre class="code">/g' \ - | sed 's/<\/code><\/pre>/<\/pre>/g') - intro=$(echo "${readme}" \ - | sed '/^<h2>Content<\/h2>/,$d' \ - | sed '1d') - content1=$(echo "${readme}" \ - | sed -n '/^<h2>Content<\/h2>/,/^<h3>The porous medium<\/h3>/p' \ - | sed -e '1d' -e '$d') - content2=$(echo "${readme}" \ - | sed -n '/^<h3>The porous medium<\/h3>/,/^<h2>Release notes<\/h2>/p' \ - | sed '$d') - release_notes=$(echo "${readme}" \ - | sed -n '/^<h2>Release notes<\/h2>/,/^<h2>Copyright notice<\/h2>/p' \ - | sed -e '1d' -e '$d') - license=$(echo "${readme}" \ - | sed -n '/^<h2>Copyright notice<\/h2>/,$p' \ - | sed 's/opyright (C)/opyright \&#169;/g') - - print_header -s Stardis -n Starter-Pack -r ../ - - echo "<header>" - echo " <h1>Stardis: Starter Pack</h1>" - echo "</header>" - echo "<div class=\"news\">" - echo " <p><b>Stardis: Starter Pack $2</b></p>" - echo " <ul>" - echo " <li><a href=\"downloads/Stardis-Starter-Pack-$2.tar.gz\">tarball</a> /" - echo " <a href=\"downloads/Stardis-Starter-Pack-$2.tar.gz.sig\">pgp</a></li>" - echo " </ul>" - echo "</div>" - - echo "${intro}" - - echo "<h2>Content</h2>" - echo "<div class=\"img\" style=\"padding-top:3em; width: 17em\">" - echo " <a href=\"images/heatsink.jpg\"><img src=\"thumbs/heatsink.jpg\" alt=\"heatsink\"></a>" - echo " <a href=\"images/heatsinkx50.jpg\"><img src=\"thumbs/heatsinkx50.jpg\" alt=\"heatsinkx50\"></a>" - echo " <a href=\"images/foam.jpg\"><img src=\"thumbs/foam.jpg\" alt=\"foam\"></a>" - echo " <a href=\"images/city.jpg\"><img src=\"thumbs/city.jpg\" alt=\"city\"></a>" - echo " <div class=\"caption\">" - echo " Geometries of the heatsink, the multiple heatsinks, the foam, and the city" - echo " provided by the Starter Pack and used in its examples." - echo " </div>" - echo "</div>" - - echo "${content1}" - - echo "<div class=\"img\" style=\"padding-top:3em; width: 16em\">" - echo " <a href=\"images/IR_rendering_1080x720x128.jpg\">" - echo " <img src=\"thumbs/IR_rendering_1080x720x128.jpg\" alt=\"foam_ir\">" - echo " </a>" - echo " <a href=\"images/IR_animation_1080x720x32x128.gif\">" - echo " <img src=\"thumbs/IR_animation_1080x720x32x128.gif\" alt=\"foam_anim\">" - echo " </a>" - echo " <div class=\"caption\">" - echo " Illustration of the infrared rendering of the porous example. The" - echo " color map displays the temperature in Kelvin." - echo " The bottom animation was produced by a simple" - echo " rotation of the camera around the center of the foam." - echo " Each one of the 32 frames is a full image produced by" - echo " a Stardis run." - echo " </div>" - echo "</div>" - - echo "<div class=\"img\" style=\"padding-top:3em; width: 16em\">" - echo " <a href=\"images/IR_city_640x480x1024_273-275.png\">" - echo " <img src=\"images/IR_city_640x480x1024_273-275.png\" alt=\"city_ir\">" - echo " </a>" - echo " <div class=\"caption\">" - echo " The infrared rendering of the city example. The color map displays the" - echo " temperature in Kelvin. The image consists of 640x480 independent" - echo " Monte-Carlo estimates (one per pixel, 1024 paths each)." - echo " </div>" - echo "</div>" - - echo "${content2}" - - echo "<h2>Downloads</h2>" - - echo "<table class=\"list\">" - echo " <tr>" - echo " <th>Version</th>" - echo " <th>Archive</th>" - echo " </tr>" - - archs=$(find downloads -name "Stardis-Starter-Pack*.tar.gz" | sort -r) - echo "${archs}" | - while read -r i ; do - version=$(echo "${i}" | sed "s/.*Starter-Pack-\(.*\)\.tar.gz/\1/g") - echo " <tr>" - echo " <td>${version}</td>" - echo " <td>" - echo " [<a href=\"${i}\">tarball</a>]" - if [ -f "${i}.sig" ]; then - echo " [<a href=\"${i}.sig\">pgp</a>]" - fi - echo " </td>" - echo " </tr>" - done - echo "</table>" - - echo "${release_notes}" - echo "${license}" - - print_footer -} - -"$@" diff --git a/stardis/starter-pack.sh b/stardis/starter-pack.sh @@ -0,0 +1,94 @@ +#!/bin/sh + +# Copyright (C) 2017-2025 |Méso|Star> (contact@meso-star.com) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "./config.sh.in" + +set -e + +readme="$(sed -e 's;https://www.meso-star.com/projects/stardis/;;g' \ + "${spk_readme}")" + + printf '%s\n' "${readme}" \ +| sed -n '1,/^## Quick start/p' \ +| sed '$d' + +printf '\n[![Foam Anim](thumbs/IR_animation_1080x720x32x128.gif)]' +printf '(images/IR_animation_1080x720x32x128.gif)\n' +printf '> Illustration of the infrared rendering of the porous\n' +printf '> example supplied in the Starter Pack.\n' +printf '> The color map displays the temperature in Kelvin.\n' +printf '> The animation was produced by a simple\n' +printf '> rotation of the camera around the center of the foam.\n' +printf '> Each one of the 32 frames is a full image produced by\n' +printf '> a Stardis run.\n' + +printf '## Downloads\n' + +printf '<table class="list">\n' +printf ' <tr><th>Version</th><th>Archive</th></tr>\n' + +archs=$(find downloads -name "Stardis-Starter-Pack*.tar.gz" | sort -r) +printf '%s\n' "${archs}" | \ +while read -r i ; do + version=$(echo "${i}" | sed "s/.*Starter-Pack-\(.*\)\.tar.gz/\1/g") + printf ' <tr>\n' + printf ' <td>%s</td>\n' "${version}" + printf ' <td>[<a href="%s">tarball</a>]\n' "${i}" + printf ' [<a href="%s.sig">pgp</a>]\n' "${i}" + printf ' </td>\n' + printf ' </tr>\n' +done +printf '</table>\n\n' + + printf '%s\n' "${readme}" \ +| sed -n '/^## Quick start/,/^### The heatsink/p' \ +| sed '$d' + + printf '%s\n' "${readme}" \ +| sed -n '/^### The heatsink/,/### The porous medium/p' \ +| sed '$d' + +printf '\n[![Heatsink](thumbs/heatsink.jpg)](images/heatsink.jpg)\n' +printf '\n[![Heatsink](thumbs/heatsinkx50.jpg)](images/heatsinkx50.jpg)\n' +printf '\n> Geometry of the heat sink test cases\n\n' + + printf '%s\n' "${readme}" \ +| sed -n '/^### The porous medium/,/^### The city/p' \ +| sed '$d' + +printf '\n[![Foam](thumbs/foam.jpg)](images/foam.jpg)\n' +printf '> Geometry of the porous example.\n' +printf '> It is in fact a foam composed of a set of kelvin cells.\n' + + printf '%s\n' "${readme}" \ +| sed -n '/^### The city/,/^## /p' \ +| sed '$d' + +printf '\n[![City](thumbs/city.jpg)](images/city.jpg)\n' +printf '> Geometry of the "city" test case.\n' +printf '> Each building is fully described, from balconies and rooms\n' +printf '> to walls, foundations, floors and insulation.\n' +printf '\n' +printf '\n[![City](thumbs/IR_city_640x480x1024_273-275.jpg)]' +printf '(images/IR_city_640x480x1024_273-275.png)\n' +printf '> Infrared rendering of the “city” test case illustrating\n' +printf '> thermal bridges,\n' +printf '> particularly those coming from the uninsulated roofs.\n' +printf '> The color map displays the temperature in Kelvin.\n' + + printf '%s\n' "${readme}" \ +| sed -n '/^## Release notes/,$p' diff --git a/stardis/thumbs/IR_city_640x480x1024_273-275.jpg b/stardis/thumbs/IR_city_640x480x1024_273-275.jpg @@ -0,0 +1 @@ +#$# git-wad 2600154759430605c353f268de56c1fcd6299d22fb550843392691044095ec42 56088 +\ No newline at end of file diff --git a/stardis/thumbs/ramier_island.jpg b/stardis/thumbs/ramier_island.jpg @@ -1 +0,0 @@ -#$# git-wad 898eca0fe89cda0f5a34c61116a21a703b97fe5e89afe9d25c7d05e97e1a87b5 41655 -\ No newline at end of file diff --git a/stardis/thumbs/ramier_island_sun.jpg b/stardis/thumbs/ramier_island_sun.jpg @@ -1 +1 @@ -#$# git-wad 98cc023dbf7a291075fbdf0959291d21c57153ee3ea9371d0647ded22facb049 54194 -\ No newline at end of file +#$# git-wad 5c7303071d6d20114bf615369f2913eb71704f89dec777ad3a3da6295b3df0aa 72392 +\ No newline at end of file diff --git a/stardis/validation.html.in b/stardis/validation.html.in @@ -1,157 +0,0 @@ -<h1>Validation</h1> - -<p>In this webpage, we provide the references to validations of the Stardis -code and the theoretical framework it is based on.</p> -<ol> - <li>We first present <a href="#analytical">validations against analytical - models</a>, which are directly provided in Stardis as non-regression - tests.</li> - <li>We then <a href="#papers">refer to scientific papers</a> in which Monte - Carlo algorithms are compared to deterministic solvers on non trivial - configurations.</li> - <li>Finally, we present <a href="#SYRTHES">a validation test case of - SYRTHES</a>, the thermal code developed by <i>Électricité de France</i>, - which provides both a finite element solver and a Monte Carlo solver powered - by Stardis.</li> -</ol> - -<h2 id="analytical">Comparison against analytical results</h2> - -<p>Stardis provides comparisons against analytical solutions. These -non-regression tests are available in the <code>src/</code> directory of <a -href="https://gitlab.com/meso-star/stardis-solver/-/tree/master/src">Stardis -Solver</a> (denoted by <code>test_*</code>). Note that the tests are performed -on the direct Monte Carlo simulation and the propagator (path-replay with -different conditions) when possible. For each test, the scene geometry and -physical parameters are described in the header. Among these, we note the -following tests:</p> - -<ul> - <li><a - href="https://gitlab.com/meso-star/stardis-solver/-/blob/master/src/test_sdis_conducto_radiative.c">test_sdis_conducto_radiative.c</a> - validates the steady resolution of the coupled conduction and radiative - transfer in a solid surrounded by two different fluids (left/right - faces).</li> - <li><a - href="https://gitlab.com/meso-star/stardis-solver/-/blob/master/src/test_sdis_convection_non_uniform.c">test_sdis_convection_non_uniform.c</a> - validates the transient resolution of the convection for a fluid inside a cube - with faces of different known temperatures.</li> - <li><a - href="https://gitlab.com/meso-star/stardis-solver/-/blob/master/src/test_sdis_transcient.c">test_sdis_transient.c</a> - validates the transient resolution of conduction in nested cubes.</li> - <li><a - href="https://gitlab.com/meso-star/stardis-solver/-/blob/master/src/test_sdis_solve_boundary.c">test_sdis_solve_boundary.c</a> - validates the steady computation of the boundary temperature on a solid cube - interfaced with a fluid with known temperature.</li> - <li><a - href="https://gitlab.com/meso-star/stardis-solver/-/blob/master/src/test_sdis_solid_random_walk_robustness.c">test_random_walk_robustness.c</a> - validates the random walk in a solid with / without a source term in complex - geometry.</li> -</ul> - -<h2 id="papers">Cross-comparison against deterministic solvers</h2> - -<p>Stardis is also validated against usual deterministic codes, on more complex -geometries where no analytical solution exists. We list here the academic -papers which include such validations and provide a description of the -configuration and mention the code used for comparison.</p> - -<ol> - <li><a href="https://doi.org/10.1016/j.cpc.2023.108911">Penazzi et - al.</a>&nbsp;- Path integral formulations leading to propagator - evaluation for coupled linear physics in large geometric models. - Computer Physics Communications 2024. Appendix C. - <ul> - <li>Validation against - COMSOL<sup><a href="https://www.comsol.fr/">1</a></sup> - </li> - <li>Solid with fluid cavities</li> - <li>Coupled conduction, convection (perfectly mixed cavity) and radiation; - homogeneous coefficients</li> - <li>Stationary state</li> - <li>Validation of the propagator</li> - </ul></li> - - <li><a href="https://hal.science/hal-03818899v2">Ibarrart et al.</a>&nbsp;- - Advection, diffusion and linear transport in a single path-sampling - Monte-Carlo algorithm: getting insensitive to geometrical refinement. - Preprint 2022. Figures F.9 and F.10. - <ul> - <li>Validation against - COMSOL<sup><a href="https://www.comsol.fr/">1</a></sup> - or - ANSYS&nbsp;Fluent<sup><a href="https://www.ansys.com/products/fluids/ansys-fluent">2</a></sup> - </li> - <li>Poiseille duct or Kelvin cells</li> - <li>Coupled conduction, convection (with advection) and radiative transfer; - homogeneous coefficients</li> - <li>Stationary state</li> - </ul></li> - - <li><a href="https://hal.science/hal-02096305v1">Caliot et al.</a>&nbsp;- - Combined conductive-radiative heat transfer analysis in complex geometry - using the Monte Carlo method. Eurotherm 2018. Figures 6 to 9. - <ul> - <li>Validation against - ANSYS&nbsp;Fluent<sup><a href="https://www.ansys.com/products/fluids/ansys-fluent">2</a></sup> - </li> - <li>Kelvin cells</li> - <li>Coupled conduction and radiative transfer</li> - <li>Stationary state</li> - </ul></li> - - <li><a href="https://hal.science/hal-04059892">Retailleau et al.</a>&nbsp;- - Résolution d’un problème de transferts thermiques couplés en géométrie - urbaine par la méthode Monte Carlo. In SFT 2023. Figure 4. - <ul> - <li>Validation against finite differences</li> - <li>Slab with Robin conditions</li> - <li>Coupled conduction, convection (perfectly mixed cell) and radiative transfer</li> - <li>Un-stationary state</li> - </ul></li> -</ol> - -<h2 id="SYRTHES">Stardis in SYRTHES</h2> - -<p>Stardis is used in the <a -href="https://www.edf.fr/en/the-edf-group/inventing-the-future-of-energy/r-d-global-expertise/our-offers/simulation-softwares/syrthes">SYRTHES</a> -code of the French electric company <i>Électricité de France</i>. Both -deterministic and stochastic resolutions can therefore be compared on the exact -same CAD input. Here we provide the validation on one stationary test case of -conduction inside a cube (figure 1). Both the finite elements and the Monte -Carlo (using Stardis) resolutions are compared to the theoretical temperature -(figure 2).</p> - -<div class="img" style="text-align: center"> - <img src="images/geometry.svg" alt="geometry" style="width: 45%"> - <a href="images/temperature.png"> - <img src="images/temperature.png" alt="temperature" style="width: 40%"> - </a> - <div class="caption"> - <b>Figure 1:</b> The left figure describes the configuration of the test - case. The system to be simulated is a solid square with one edge having a - known temperature. Another edge has a convective exchange with a fluid whose - temperature is also known. The two other edges are adiabatic. The right image - illustrates the temperature field corresponding to this configuration at - steady state. - </div> -</div> - -<div class="img" style="text-align: center"> - <a href="images/TprofY.png"> - <img src="images/TprofY.png" alt="ProfY" style="width: 45%"> - </a> - <a href="images/TprofX.png"> - <img src="images/TprofX.png" alt="ProfY" style="width: 45%"> - </a> - <div class="caption"> - <b>Figure 2:</b> Validation of the Finite element solver and the Monte Carlo - solver (<i>i.e.</i> Stardis) of SYRTHES against the analytical solution of - the test case presented in figure 1. Both curves are computed at steady state - at probe positions varying along the X axis (left) or the Y axis (right). - </div> -</div> - -<p>The version of SYRTHES used for this validation is still on development and -available on-demand. Please <a href="mailto:contact@meso-star.com">contact -us</a> to obtain this version.</p> diff --git a/stardis/validation.md b/stardis/validation.md @@ -0,0 +1,151 @@ +# Validation + +This webpage provides the references to validations of the Stardis code +and the theoretical framework it is based on. + +1. We first present [validations against analytical model](#analytical), + which are directly provided in Stardis as non-regression tests. + +2. We then [refer to scientific papers](#papers) in which Monte Carlo + algorithms are compared to deterministic solvers on non trivial + configurations. + +3. Finally, we present [a validation test case of SYRTHES](#SYRTHES), + the thermal code developed by *Électricité de France*, which + provides both a finite element solver and a Monte Carlo solver + powered by Stardis. + +<span id="analytical"/> + +## Comparison against analytical results + +Stardis provides comparisons against analytical solutions. +These non-regression tests are available in the `src/` directory of +[Stardis Solver](https://gitlab.com/meso-star/stardis-solver/-/tree/master/src) +(denoted by `test_*`). +Note that the tests are performed on the direct Monte Carlo simulation +and the propagator (path-replay with different conditions) when +possible. +For each test, the scene geometry and +physical parameters are described in the header. +Among these, we note the following tests: + +- [test\_sdis\_conducto\_radiative.c](https://gitlab.com/meso-star/stardis-solver/-/blob/master/src/test_sdis_conducto_radiative.c) + validates the steady resolution of the coupled conduction and + radiative transfer in a solid surrounded by two different fluids + (left/right faces). + +- [test\_sdis\_convection\_non\_uniform.c](https://gitlab.com/meso-star/stardis-solver/-/blob/master/src/test_sdis_convection_non_uniform.c) + validates the transient resolution of the convection for a fluid + inside a cube with faces of different known temperatures. + +- [test\_sdis\_transient.c](https://gitlab.com/meso-star/stardis-solver/-/blob/master/src/test_sdis_transcient.c) + validates the transient resolution of conduction in nested cubes. + +- [test\_sdis\_solve\_boundary.c](https://gitlab.com/meso-star/stardis-solver/-/blob/master/src/test_sdis_solve_boundary.c) + validates the steady computation of the boundary temperature on a + solid cube interfaced with a fluid with known temperature. + +- [test\_random\_walk\_robustness.c](https://gitlab.com/meso-star/stardis-solver/-/blob/master/src/test_sdis_solid_random_walk_robustness.c) + validates the random walk in a solid with / without a source term in + complex geometry. + +<span id="papers"/> + +## Cross-comparison against deterministic solvers + +Stardis is also validated against usual deterministic codes, on more +complex geometries where no analytical solution exists. +We list here the academic papers which include such validations and +provide a description of the configuration and mention the code used for +comparison. + +1. [Penazzi et al.](https://doi.org/10.1016/j.cpc.2023.108911), + "Path integral formulations leading to propagator evaluation for + coupled linear physics in large geometric models", Computer Physics + Communications 2024, appendix C. + - Validation against [COMSOL](https://www.comsol.fr/) + - Solid with fluid cavities + - Coupled conduction, convection (perfectly mixed cavity) and + radiation; homogeneous coefficients + - Stationary state + - Validation of the propagator + +2. [Ibarrart et al.](https://hal.science/hal-03818899v2), + "Advection, diffusion and linear transport in a single path-sampling + Monte-Carlo algorithm: getting insensitive to geometrical + refinement", Preprint 2022, figures F.9 and F.10. + - Validation against [COMSOL](https://www.comsol.fr/) or + [ANSYS Fluent](https://www.ansys.com/products/fluids/ansys-fluent) + - Poiseille duct or Kelvin cells + - Coupled conduction, convection (with advection) and radiative + transfer; homogeneous coefficients + - Stationary state + +3. [Caliot et al.](https://hal.science/hal-02096305v1), + "Combined conductive-radiative heat transfer analysis in complex geometry + using the Monte Carlo method", Eurotherm 2018, figures 6 to 9. + - Validation againsta + [ANSYS Fluent](https://www.ansys.com/products/fluids/ansys-fluent) + - Kelvin cells + - Coupled conduction and radiative transfer + - Stationary state + +4. [Retailleau et al](https://hal.science/hal-04059892), + "Résolution d’un problème de transferts thermiques couplés en géométrie + urbaine par la méthode Monte Carlo", in SFT 2023, figure 4. + - Validation against finite differences + - Slab with Robin conditions + - Coupled conduction, convection (perfectly mixed cell) and + radiative transfer + - Un-stationary state + +<span id="SYRTHES"/> + +## Stardis in SYRTHES + +Stardis is used in the +[SYRTHES](https://www.edf.fr/en/the-edf-group/inventing-the-future-of-energy/r-d-global-expertise/our-offers/simulation-softwares/syrthes) +code of the French electric company *Électricité de France*. +Both deterministic and stochastic resolutions can therefore be compared +on the exact same CAD input. +Here we provide the validation on one stationary test case of +conduction inside a [square](#figure1). +Both the finite elements and the Monte Carlo (using Stardis) resolutions +are [compared](#figure2). + +<span id="figure1"/> + +<figure style="text-align: center"> + <img src="images/geometry.svg" alt="geometry" + style="width: 50%; display: inline;"> + <a href="images/temperature.png"> + <img src="images/temperature.png" alt="temperature" + style="width: 45%; display: inline;"> + </a> +</figure> + +> The left figure describes the configuration of the test case. +> The system to be simulated is a solid square with one edge having a +> known temperature. +> Another edge has a convective exchange with a fluid whose temperature +> is also known. +> The two other edges are adiabatic. +> The right image illustrates the temperature field corresponding to +> this configuration at steady state. + +<span id="figure2"/> + +[![Y Profile](images/TprofY.png)](images/TprofY.png) +[![X Profile](images/TprofX.png)](images/TprofX.png) + +> Validation of the Finite element solver and the Monte Carlo solver +> (i.e. Stardis) of SYRTHES against the analytical solution of the test +> case [presented above](#figure1). +> Both curves are computed at steady state at probe positions varying +> along the X axis (Top) or the Y axis (Bottom). + +The version of SYRTHES used for this validation is still on development +and available on-demand. +Please [contact us](mailto:contact@meso-star.com) to obtain this +version. diff --git a/templates/footer.html b/templates/footer.html @@ -0,0 +1,26 @@ +</div> +<div id="footer"> + <table> + <tr> + <td style="vertical-align: middle;"> + <a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/"> + <img + alt="CC BY-ND 4.0" + style="max-width: 100%; padding-right: 0.5em;" + src="https://i.creativecommons.org/l/by-nd/4.0/88x31.png" /> + </a> + </td> + <td style="vertical-align: middle;"> + Copyright &#169; 2015-2025 + <a href="mailto:contact@meso-star.com">|Méso|Star&gt;</a> + <br> + This page is licensed under a + <a rel="license" + href="http://creativecommons.org/licenses/by-nd/4.0/"> + Creative Commons Attribution-NoDerivatives 4.0 International License + </a> + </td> + </tr> + </table> +</div> +</body> diff --git a/templates/redirect.html b/templates/redirect.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html lang=en> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <meta http-equiv="Refresh" content="@TIME@; url=@REDIRECTION@"> + <title>Redirection</title> +</head> + +<body> +<p>This web page moved to a new place.</p> + +<p>Your browser should automatically take you <a +href="@REDIRECTION@">there</a> in @TIME@ seconds.</p> + +</html>