commit 6c0d2815606738aded434ba06c7787a8899862e0
parent a5937e350809fcc96c2fdea055209da9b88e5ae7
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Sun, 14 Apr 2024 17:27:58 +0200
Removal of CMake support and asciidoc man pages
POSIX make becomes the only supported build system.
The asciidoc manual pages have been translated into mdoc macros and
extensively reworked to respect mdoc conventions and make them clearer.
The asciidoc sources were an obsolete variant and have been retained
temporarily for comparison with the mdoc translation and to ensure
completeness. This transition is now supposed to be complete.
Diffstat:
12 files changed, 0 insertions(+), 2313 deletions(-)
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
@@ -1,254 +0,0 @@
-# Copyright (C) 2018-2023 |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/>.
-
-cmake_minimum_required(VERSION 3.5)
-project(stardis C)
-
-set(SDIS_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../src)
-set(SDIS_SGT_DIR ${PROJECT_SOURCE_DIR}/../stardis-green-types)
-set(SDIS_PRG_DIR ${PROJECT_SOURCE_DIR}/../stardis-prog-properties)
-
-
-option(ENABLE_MPI
- "Enable the support of distributed parallelism \
-using the Message Passing Interface specification." OFF)
-
-if(CMAKE_HOST_UNIX)
- set(STARDIS_DOC "TROFF" CACHE STRING
- "Type of documentation to generate and install.")
-else()
- set(STARDIS_DOC "HTML" CACHE STRING
- "Type of documentation to generate and install.")
-endif()
-
-set_property(CACHE STARDIS_DOC PROPERTY STRINGS
- "HTML"
- "TROFF"
- "TROFF & HTML"
- "NONE")
-
-###############################################################################
-# Generate files
-###############################################################################
-set(STARDIS_ARGS_DEFAULT_TRAD "300")
-set(STARDIS_ARGS_DEFAULT_TRAD_REFERENCE "300")
-set(STARDIS_ARGS_DEFAULT_COMPUTE_TIME "INF")
-set(STARDIS_ARGS_DEFAULT_PICARD_ORDER "1")
-set(STARDIS_ARGS_DEFAULT_RENDERING_FOV "70") # degrees
-set(STARDIS_ARGS_DEFAULT_RENDERING_IMG_HEIGHT "480")
-set(STARDIS_ARGS_DEFAULT_RENDERING_IMG_WIDTH "640")
-set(STARDIS_ARGS_DEFAULT_RENDERING_OUTPUT_FILE_FMT "HT") # VTK or HT
-set(STARDIS_ARGS_DEFAULT_RENDERING_POS "1, 1, 1")
-set(STARDIS_ARGS_DEFAULT_RENDERING_SPP "4")
-set(STARDIS_ARGS_DEFAULT_RENDERING_TGT "0, 0, 0")
-set(STARDIS_ARGS_DEFAULT_RENDERING_TIME "INF, INF")
-set(STARDIS_ARGS_DEFAULT_RENDERING_UP "0, 0, 1")
-set(STARDIS_ARGS_DEFAULT_SAMPLES_COUNT "10000")
-set(STARDIS_ARGS_DEFAULT_SCALE_FACTOR "1")
-set(STARDIS_ARGS_DEFAULT_VERBOSE_LEVEL "1")
-
-configure_file(${SDIS_SOURCE_DIR}/../doc/stardis.1.txt.in
- ${CMAKE_CURRENT_BINARY_DIR}/doc/stardis.1.txt @ONLY)
-
-set(SDIS_VERSION_MAJOR 0)
-set(SDIS_VERSION_MINOR 9)
-set(SDIS_VERSION_PATCH 0)
-set(SDIS_VERSION ${SDIS_VERSION_MAJOR}.${SDIS_VERSION_MINOR}.${SDIS_VERSION_PATCH})
-
-configure_file(${SDIS_SOURCE_DIR}/stardis-default.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/stardis-default.h @ONLY)
-
-configure_file(${SDIS_SOURCE_DIR}/stardis-version.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/stardis-version.h @ONLY)
-
-set(STARDIS_GREEN_TYPES_VERSION "4")
-set(STARDIS_PROG_PROPERTIES_VERSION "1")
-
-configure_file(${SDIS_SOURCE_DIR}/stardis-green-types.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/stardis-green-types/stardis-green-types.h @ONLY)
-configure_file(${SDIS_SOURCE_DIR}/stardis-prog-properties.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/stardis-prog-properties/stardis-prog-properties.h @ONLY)
-
-configure_file(${SDIS_SGT_DIR}/stardis-green-types-config-version.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/stardis-green-types/stardis-green-types-config-version.cmake @ONLY)
-configure_file(${SDIS_PRG_DIR}/stardis-prog-properties-config-version.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/stardis-prog-properties/stardis-prog-properties-config-version.cmake @ONLY)
-
-###############################################################################
-# Check dependencies
-###############################################################################
-include(FindPkgConfig)
-
-find_package(RCMake 0.4 REQUIRED)
-
-pkg_check_modules(RSys REQUIRED rsys>=0.14)
-pkg_check_modules(Star3D REQUIRED s3d>=0.10)
-pkg_check_modules(StarEnc3D REQUIRED senc3d>=0.6)
-pkg_check_modules(StarGeom3D REQUIRED sg3d>=0.1)
-pkg_check_modules(Stardis REQUIRED sdis>=0.15)
-pkg_check_modules(StarSTL REQUIRED sstl>=0.5)
-pkg_check_modules(StarSP REQUIRED star-sp>=0.14)
-
-if(MSVC)
- find_package(MuslGetopt REQUIRED)
-endif()
-if(ENABLE_MPI)
- find_package(MPI 2 REQUIRED)
- set(CMAKE_C_COMPILER ${MPI_C_COMPILER})
- include_directories(${MPI_INCLUDE_PATH})
-endif()
-
-
-include_directories(
- ${StarGeom3D_INCLUDE_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}/stardis-green-types
- ${CMAKE_CURRENT_BINARY_DIR}/stardis-prog-properties)
-if(MSVC)
- include_directories(${MuslGetopt_INCLUDE_DIR})
-endif()
-
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${RCMAKE_SOURCE_DIR})
-include(rcmake)
-include(rcmake_runtime)
-
-###############################################################################
-# Build subprojects
-###############################################################################
-if(NOT STARDIS_DOC STREQUAL "NONE")
- add_subdirectory(doc)
-endif()
-
-add_subdirectory(stardis-green-types)
-add_subdirectory(stardis-prog-properties)
-
-###############################################################################
-# Configure and define targets
-###############################################################################
-set(SDIS_FILES_SRC
- stardis-app.c
- stardis-args.c
- stardis-compute.c
- stardis-description.c
- stardis-fluid.c
- stardis-fluid-prog.c
- stardis-fbound.c
- stardis-fbound-prog.c
- stardis-hbound.c
- stardis-hbound-prog.c
- stardis-hfbound.c
- stardis-hfbound-prog.c
- stardis-intface.c
- stardis-main.c
- stardis-output.c
- stardis-parsing.c
- stardis-program.c
- stardis-sfconnect.c
- stardis-sfconnect-prog.c
- stardis-ssconnect.c
- stardis-ssconnect-prog.c
- stardis-solid.c
- stardis-solid-prog.c
- stardis-tbound.c
- stardis-tbound-prog.c)
-
-set(SDIS_FILES_INC
- stardis-app.h
- stardis-args.h
- stardis-compute.h
- stardis-description.h
- stardis-default.h.in
- stardis-fluid.h
- stardis-fluid-prog.h
- stardis-fbound.h
- stardis-fbound-prog.h
- stardis-green-types.h.in
- stardis-hbound.h
- stardis-hbound-prog.h
- stardis-hfbound.h
- stardis-hfbound-prog.h
- stardis-intface.h
- stardis-output.h
- stardis-parsing.h
- stardis-program.h
- stardis-prog-properties.h.in
- stardis-sfconnect.h
- stardis-sfconnect-prog.h
- stardis-ssconnect.h
- stardis-ssconnect-prog.h
- stardis-solid.h
- stardis-solid-prog.h
- stardis-tbound.h
- stardis-tbound-prog.h
- stardis-version.h.in)
-
-set(SDIS_FILES_DOC COPYING README.md)
-
-# Prepend each file by `SDIS_SOURCE_DIR'
-rcmake_prepend_path(SDIS_FILES_SRC ${SDIS_SOURCE_DIR})
-rcmake_prepend_path(SDIS_FILES_INC ${SDIS_SOURCE_DIR})
-rcmake_prepend_path(SDIS_FILES_DOC ${PROJECT_SOURCE_DIR}/../)
-
-add_executable(stardis
- ${SDIS_FILES_SRC}
- ${SDIS_FILES_INC})
-
-if(CMAKE_COMPILER_IS_GNUCC)
- set(MATH_LIB m)
-elseif(MSVC)
- set(GETOPT_LIB MuslGetopt)
-endif()
-
-set_target_properties(stardis
- PROPERTIES VERSION ${SDIS_VERSION})
-
-target_compile_options(stardis PUBLIC
- ${RSys_CFLAGS}
- ${Star3D_CFLAGS}
- ${StarEnc3D_CFLAGS}
- ${StarGeom3D_CFLAGS}
- ${Stardis_CFLAGS}
- ${StarSTL_CFLAGS}
- ${StarSP_CFLAGS})
-
-target_link_libraries(stardis
- ${StarGeom3D_LDFLAGS}
- ${RSys_LDFLAGS}
- ${Star3D_LDFLAGS}
- ${StarEnc3D_LDFLAGS}
- ${StarGeom3D_LDFLAGS}
- ${Stardis_LDFLAGS}
- ${StarSTL_LDFLAGS}
- ${StarSP_LDFLAGS}
- ${GETOPT_LIB}
- ${MATH_LIB})
-
-if(ENABLE_MPI)
- set_target_properties(stardis PROPERTIES COMPILE_DEFINITIONS "STARDIS_ENABLE_MPI")
-endif()
-
-###############################################################################
-# Define output & install directories
-###############################################################################
-install(TARGETS stardis
- ARCHIVE DESTINATION bin
- LIBRARY DESTINATION lib
- RUNTIME DESTINATION bin)
-
-install(FILES ${SDIS_FILES_DOC} DESTINATION share/doc/stardis)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/stardis-version.h
- DESTINATION include/stardis)
-
-rcmake_copy_runtime_libraries(stardis)
diff --git a/cmake/doc/CMakeLists.txt b/cmake/doc/CMakeLists.txt
@@ -1,149 +0,0 @@
-# Copyright (C) 2018-2023 |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/>.
-
-cmake_minimum_required(VERSION 3.0)
-
-string(REGEX MATCH ".*HTML.*" _html ${STARDIS_DOC})
-string(REGEX MATCH ".*ROFF.*" _roff ${STARDIS_DOC})
-
-set(STARDIS_DOC_DIR ${PROJECT_SOURCE_DIR}/../doc)
-
-################################################################################
-# Look for asciidoc and a2x programs
-################################################################################
-if(_html)
- find_program(ASCIIDOC NAMES asciidoc asciidoc.py)
- if(NOT ASCIIDOC)
- unset(_html)
- message(WARNING
- "The `asciidoc' program is missing. "
- "The stardis HTML documentation cannot be generated.")
- endif()
-endif()
-
-if(_roff)
- find_program(A2X NAMES a2x a2x.py)
- if(NOT A2X)
- unset(_roff)
- message(WARNING
- "The `a2x' program is missing. "
- "The stardis man pages cannot be generated.")
- endif()
-endif()
-
-################################################################################
-# Copy doc files
-################################################################################
-set(MAN_NAMES
- stardis-input.5
- stardis-output.5)
-
-if(_roff OR _html)
- set(MAN_FILES)
- foreach(_name IN LISTS MAN_NAMES)
- set(_src ${STARDIS_DOC_DIR}/${_name}.txt)
- set(_dst ${CMAKE_CURRENT_BINARY_DIR}/${_name}.txt)
- add_custom_command(
- OUTPUT ${_dst}
- COMMAND ${CMAKE_COMMAND} -E copy ${_src} ${_dst}
- DEPENDS ${_src}
- COMMENT "Copy the asciidoc ${_src}"
- VERBATIM)
- list(APPEND MAN_FILES ${_dst})
- endforeach()
- add_custom_target(man-copy ALL DEPENDS ${MAN_FILES})
-endif()
-
-list(APPEND MAN_NAMES stardis.1)
-
-################################################################################
-# ROFF man pages
-################################################################################
-if(_roff)
- set(A2X_OPTS -dmanpage -fmanpage)
- set(MAN_FILES)
- set(MAN5_FILES)
- set(MAN1_FILES)
- foreach(_name IN LISTS MAN_NAMES)
- set(_man ${CMAKE_CURRENT_BINARY_DIR}/${_name})
- set(_txt ${CMAKE_CURRENT_BINARY_DIR}/${_name}.txt)
-
- add_custom_command(
- OUTPUT ${_man}
- COMMAND ${A2X} ${A2X_OPTS} ${_txt}
- DEPENDS man-copy ${_txt}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Build ROFF man page ${_man}"
- VERBATIM)
- list(APPEND MAN_FILES ${_man})
-
- string(REGEX MATCH "^.*.5$" _man5 ${_man})
- string(REGEX MATCH "^.*.1$" _man1 ${_man})
- if(_man1)
- list(APPEND MAN1_FILES ${_man1})
- elseif(_man5)
- list(APPEND MAN5_FILES ${_man5})
- else()
- message(FATAL_ERROR "Unexpected man type")
- endif()
- endforeach()
- add_custom_target(man-roff ALL DEPENDS ${MAN_FILES})
-
- install(FILES ${MAN1_FILES} DESTINATION share/man/man1)
- install(FILES ${MAN5_FILES} DESTINATION share/man/man5)
-endif()
-
-################################################################################
-# HTML documentation
-################################################################################
-if(_html)
- set(ASCIIDOC_OPTS
- -bxhtml11
- -dmanpage
- --attribute themedir=${STARDIS_DOC_DIR}
- --theme=stardis-man)
-
- set(MAN_FILES)
- set(MAN5_FILES)
- set(MAN1_FILES)
- foreach(_name IN LISTS MAN_NAMES)
- set(_man ${CMAKE_CURRENT_BINARY_DIR}/${_name}.html)
- set(_txt ${CMAKE_CURRENT_BINARY_DIR}/${_name}.txt)
-
- add_custom_command(
- OUTPUT ${_man}
- COMMAND ${ASCIIDOC} ${ASCIIDOC_OPTS} ${_txt}
- DEPENDS man-copy ${_txt} ${STARDIS_DOC_DIR}/stardis-man.css
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Build HTML man page ${_man}"
- VERBATIM)
- list(APPEND MAN_FILES ${_man})
-
- string(REGEX MATCH "^.*.5.html$" _man5 ${_man})
- string(REGEX MATCH "^.*.1.html$" _man1 ${_man})
- if(_man1)
- list(APPEND MAN1_FILES ${_man1})
- elseif(_man5)
- list(APPEND MAN5_FILES ${_man5})
- else()
- message(FATAL_ERROR "Unexpected man type")
- endif()
- endforeach()
- add_custom_target(man-html ALL DEPENDS ${MAN_FILES})
-
- install(FILES ${MAN1_FILES} DESTINATION share/doc/stardis/html)
- install(FILES ${MAN5_FILES} DESTINATION share/doc/stardis/html)
-endif()
-
diff --git a/cmake/stardis-green-types/CMakeLists.txt b/cmake/stardis-green-types/CMakeLists.txt
@@ -1,53 +0,0 @@
-# Copyright (C) 2018-2023 |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/>.
-
-cmake_minimum_required(VERSION 3.5)
-
-set(STARDIS_SGT_DIR ${PROJECT_SOURCE_DIR}/../stardis-green-types)
-
-################################################################################
-# Copy stardis-green-types CMake files
-################################################################################
-set(SGT_NAMES
- stardis-green-types-config)
-
-set(SGT_FILES)
-foreach(_name IN LISTS SGT_NAMES)
- set(_src ${STARDIS_SGT_DIR}/${_name}.cmake)
- set(_dst ${CMAKE_CURRENT_BINARY_DIR}/${_name}.cmake)
- add_custom_command(
- OUTPUT ${_dst}
- COMMAND ${CMAKE_COMMAND} -E copy ${_src} ${_dst}
- DEPENDS ${_src}
- COMMENT "Copy the CMake file ${_src}"
- VERBATIM)
- list(APPEND SGT_FILES ${_dst})
-endforeach()
-add_custom_target(sgt-cmake ALL DEPENDS ${SGT_FILES})
-
-################################################################################
-# Install stardis-green-types CMake Files
-################################################################################
-list(APPEND SGT_FILES ${CMAKE_CURRENT_BINARY_DIR}/stardis-green-types-config-version.cmake)
-
-install(FILES ${SGT_FILES}
- DESTINATION lib/cmake/stardis-green-types)
-
-################################################################################
-# Install stardis-green-types header Files
-################################################################################
-install(FILES
- ${CMAKE_CURRENT_BINARY_DIR}/stardis-green-types.h
- DESTINATION include/stardis/)
diff --git a/cmake/stardis-prog-properties/CMakeLists.txt b/cmake/stardis-prog-properties/CMakeLists.txt
@@ -1,53 +0,0 @@
-# Copyright (C) 2018-2023 |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/>.
-
-cmake_minimum_required(VERSION 3.5)
-
-set(STARDIS_SPROG_DIR ${PROJECT_SOURCE_DIR}/../stardis-prog-properties)
-
-################################################################################
-# Copy stardis-prog-properties CMake files
-################################################################################
-set(SPROG_NAMES
- stardis-prog-properties-config)
-
-set(SPROG_FILES)
-foreach(_name IN LISTS SPROG_NAMES)
- set(_src ${STARDIS_SPROG_DIR}/${_name}.cmake)
- set(_dst ${CMAKE_CURRENT_BINARY_DIR}/${_name}.cmake)
- add_custom_command(
- OUTPUT ${_dst}
- COMMAND ${CMAKE_COMMAND} -E copy ${_src} ${_dst}
- DEPENDS ${_src}
- COMMENT "Copy the CMake file ${_src}"
- VERBATIM)
- list(APPEND SPROG_FILES ${_dst})
-endforeach()
-add_custom_target(stardis-prog-cmake ALL DEPENDS ${SPROG_FILES})
-
-################################################################################
-# Install stardis-prog-properties CMake Files
-################################################################################
-list(APPEND SPROG_FILES ${CMAKE_CURRENT_BINARY_DIR}/stardis-prog-properties-config-version.cmake)
-
-install(FILES ${SPROG_FILES}
- DESTINATION lib/cmake/stardis-prog-properties)
-
-################################################################################
-# Install stardis-prog-properties header Files
-################################################################################
-install(FILES
- ${CMAKE_CURRENT_BINARY_DIR}/stardis-prog-properties.h
- DESTINATION include/stardis/)
diff --git a/doc/stardis-input.5.txt b/doc/stardis-input.5.txt
@@ -1,337 +0,0 @@
-// Copyright (C) 2018-2023 |Méso|Star>
-//
-// 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/>.
-
-:sharp: #
-
-:toc:
-
-stardis-input(5)
-=================
-
-NAME
-----
-stardis-input - thermal system description for stardis(1)
-
-DESCRIPTION
------------
-*stardis-input* is the format used by the *stardis*(1) program to describe a
-thermal system. It relies on a line-based ad-hoc syntax.
-
-A thermal system is composed of lines of text, each one describing either a
-program (an user-provided shared object), a
-medium (solid or fluid) frontier, a boundary (limit condition or connection
-between two media), the scale of the whole geometry, or the radiative
-temperature around the system. In the medium or boundary
-cases, description lines include a list of file names that constitute the
-limit or boundary. The current version of *stardis(1)* only accepts triangle
-mesh geometry files in *STL* format. If a scale is specified, it defines the
-scaling factor to apply to the geometry to have it expressed in meters (e.g.
-1e-3 if the geometry is in mm).
-
-A medium limit or a boundary description can be split across files and a
-single file or description line can describe more than one frontier (more than
-one connex region). The main semantic constraint on descriptions is that
-enclosures must be defined by a single description line, to ensure that every
-constitutive part of the system is made from a single medium.
-
-Finally, description lines can be submitted to the *stardis*(1) program in
-any order, with the exception of programs that must be defined before use,
-and can be split across more than one file, through multiple use
-of option *-M*.
-
-LINE SPLITTING
---------------
-When a description line is parsed, the first step is to split it in different
-parts. *stardis(1)* relies on the wordexp POSIX library for this step. As a
-consequence the very rules that apply at this stage all come from the wordexp
-rules: environment variables can be used and are substituted, including inside
-arithmetic expressions, text inside quote pairs is considered a single item,
-whitespace characters can be escaped so that the current item continues past it
-(see *wordexp(3)* for details).
-
-Note however that both the use of undefined environment variables and the use
-of command substitution will be reported as an error as these features are not
-enabled in *stardis(1)*.
-
-GRAMMAR
--------
-In what follows, some lines end in *\*. This is used as a convenience to
-continue a description next line. However, this trick cannot be used in
-actual description files and actual description lines must be kept single-line.
-Also, text appearing between quote marks has to be used verbatim in the input,
-except the quote characters. Finally, text introduced by the *{sharp}* character
-in descriptions, when not verbatim, is a comment and is not part of the
-description.
-
-[verse]
-_______
-<thermal-system> ::= <description-lines>
-
-<description-lines> ::= <description-line>
- [ <description-lines> ]
-
-<description-line> ::= [ <program> ] [ <comment> ]
- | [ <medium-frontier> ] [ <comment> ]
- | [ <medium-boundary> ] [ <comment> ]
- | [ <media-connection> ] [ <comment> ]
- | [ <scaling-factor> ] [ <comment> ] {sharp} at most once
- | [ <radiative-temps> ] [ <comment > ] {sharp} at most once
-
--------------------------------------
-
-<program> ::= "PROGRAM" <prog-name> <library-path> [ <lib-arguments> ]
-
-<medium-frontier> ::= <solid-frontier>
- | <fluid-frontier>
- | <prog-solid-frontier>
- | <prog-fluid-frontier>
-
-<medium-boundary> ::= <t-bound-for-solid>
- | <h-bound-for-solid>
- | <h-bound-for-fluid>
- | <f-bound-for-solid>
- | <hf-bound-for-solid>
- | <prog-t-bound-for-solid>
- | <prog-h-bound-for-solid>
- | <prog-h-bound-for-fluid>
- | <prog-hf-bound-for-fluid>
- | <prog-f-bound-for-solid>
-
-<media-connection> ::= <solid-fluid-connect>
- | <solid-solid-connect>
- | <prog-solid-fluid-connect>
- | <prog-solid-solid-connect>
-
-<comment> ::= "{sharp}" Any text introduced by the {sharp} character
-
-<solid-frontier> ::= "SOLID" <medium-name> <lambda> <rho> <cp> <delta> \
- <initial-temperature> <imposed-temperature> \
- <volumic-power> <triangle-sides>
-
-<fluid-frontier> ::= "FLUID" <medium-name> <rho> <cp> \
- <initial-temperature> <imposed-temperature> \
- <triangle-sides>
-
-<t-bound-for-solid> ::= "T_BOUNDARY_FOR_SOLID" <bound-name> <temperature> \
- <triangles>
-
-<h-bound-for-solid> ::= "H_BOUNDARY_FOR_SOLID" <bound-name> <Tref> <emissivity> \
- <specular-fraction> <hc> <outside-temperature> \
- <triangles>
-
-<hf-bound-for-solid> ::= "HF_BOUNDARY_FOR_SOLID" <bound-name> <Tref> <emissivity> \
- <specular-fraction> <hc> <outside-temperature> <flux> \
- <triangles>
-
-<h-bound-for-fluid> ::= "H_BOUNDARY_FOR_FLUID" <bound-name> <Tref> <emissivity> \
- <specular-fraction> <hc> <outside-temperature> \
- <triangles>
-
-<f-bound-for-solid> ::= "F_BOUNDARY_FOR_SOLID" <bound-name> <flux> <triangles>
-
-<solid-fluid-connect> ::= "SOLID_FLUID_CONNECTION" <connect-name> <Tref>\
- <emissivity> <specular-fraction> <hc> <triangles>
-
-<solid-solid-connect> ::= "SOLID_SOLID_CONNECTION" <connect-name> \
- <contact-resistance> <triangles>
-
-<prog-solid-frontier> ::= "SOLID_PROG" <medium-name> <prog-name> <triangle-sides> \
- [ "PROG_PARAMS" [ <desc-arguments> ] ]
-
-<prog-fluid-frontier> ::= "FLUID_PROG" <medium-name> <prog-name> <triangle-sides> \
- [ "PROG_PARAMS" [ <desc-arguments> ] ]
-
-<prog-t-bound-for-solid> ::= "T_BOUNDARY_FOR_SOLID_PROG" <bound-name> <prog-name> \
- <triangle-sides> [ "PROG_PARAMS" [ <desc-arguments> ] ]
-
-<prog-h-bound-for-solid> ::= "H_BOUNDARY_FOR_SOLID_PROG" <bound-name> <prog-name> \
- <triangle-sides> [ "PROG_PARAMS" [ <desc-arguments> ] ]
-
-<prog-hf-bound-for-solid> ::= "HF_BOUNDARY_FOR_SOLID_PROG" <bound-name> <prog-name> \
- <triangle-sides> [ "PROG_PARAMS" [ <desc-arguments> ] ]
-
-<prog-h-bound-for-fluid> ::= "H_BOUNDARY_FOR_FLUID_PROG" <bound-name> <prog-name> \
- <triangle-sides> [ "PROG_PARAMS" [ <desc-arguments> ] ]
-
-<prog-f-bound-for-solid> ::= "F_BOUNDARY_FOR_SOLID_PROG" <bound-name> <prog-name> \
- <triangle-sides> [ "PROG_PARAMS" [ <desc-arguments> ] ]
-
-<prog-solid-fluid-connect> ::= "SOLID_FLUID_CONNECTION_PROG" <connect-name> \
- <prog-name> <triangle-sides> [ "PROG_PARAMS" [ <desc-arguments> ] ]
-
-<prog-solid-solid-connect> ::= "SOLID_SOLID_CONNECTION_PROG" <connect-name> \
- <prog-name> <triangle-sides> [ "PROG_PARAMS" [ <desc-arguments> ] ]
-
-<scaling-factor> ::= "SCALE" <scale> [ <comment> ]
-
-<radiative-temps> ::= "TRAD" <radiative-temp> <radiative-temp-ref>
-
--------------------------------------
-
-<prog-name> ::= STRING {sharp} must not be a keyword nor a number,
- {sharp} including INF and others
-
-<library-path> ::= FILEPATH {sharp} the path can be absolute
- {sharp} or relative to the running directory and must be valid
-
-<lib-arguments> ::= STRING {sharp} if not empty, the whole string is send to the
- {sharp} stardis_create_library_data() optional function
- {sharp} it is an error to provide arguments to a program if
- {sharp} the associated library doesn't define this function
- {sharp} note that the {sharp} character consistently ends
- {sharp} arguments by starting a comment
-
-<medium-name> ::= STRING {sharp} must not be a keyword nor a number,
- {sharp} including INF and others
-
-<lambda> ::= REAL {sharp} conductivity in W/(m.K), in ]0, INF)
-
-<rho> ::= REAL {sharp} volumic mass,in kg/m3, in ]0, INF)
-
-<cp> ::= REAL {sharp} capacity, in J/(kg.K) or kg.m2/(s2.K)
- {sharp} in ]0, INF)
-
-<delta> ::= "AUTO" {sharp} delta is automatically set to V/6A (V and A
- {sharp} being respectively the solid volume and its
- {sharp} boundary area)
- | REAL {sharp} delta*scaling_factor in m, in [0, INF)
-
-<initial-temperature> ::= REAL {sharp} in K, in [0, INF)
-
-<imposed-temperature> ::= "UNKNOWN" {sharp} temperature has to be solved
- | REAL {sharp} in K, in [0, INF)
-
-<outside-temperature> ::= REAL {sharp} in K, in [0, INF)
-
-<volumic-power> ::= REAL {sharp} in W/m3, in (-INF , INF)
-
-<triangle-sides> ::= <side-specifier> <file-name> [ <triangle-sides> ]
-
-<bound-name> ::= STRING {sharp} must not be a keyword nor a number,
- {sharp} including INF and others
-
-<connect-name> ::= STRING {sharp} must not be a keyword nor a number,
- {sharp} including INF and others
-
-<Tref> ::= REAL {sharp} in K, in [0, inf)
-
-<emissivity> ::= REAL {sharp} in [0, 1]
-
-<specular-fraction> ::= REAL {sharp} in [0, 1]
-
-<hc> ::= REAL {sharp} in W/(m2.K), in [0, INF)
-
-<contact-resistance> ::= REAL {sharp} in m2.K/W, in [0, INF)
-
-<flux> ::= REAL {sharp} in W/m2, in (-INF , INF)
-
-<triangles> ::= <file-name> [ <triangles> ]
-
-<scale> ::= REAL {sharp} scaling factor to apply to the geometry
- {sharp} in ]0 INF)
-
-<desc-arguments> ::= STRING {sharp} the whole string is send to the stardis_create_data()
- {sharp} function when the description is created
- {sharp} note that the '{sharp}' character consistently ends
- {sharp} arguments by starting a comment
-
-<radiative-temp> ::= REAL {sharp} in K, in [0, inf)
-
-<radiative-temp-ref> ::= REAL {sharp} in K, in [0, inf)
-
--------------------------------------
-
-<side-specifier> ::= "FRONT" | "BACK" | "BOTH"
-
-<file-name> ::= STRING
-
-______________
-
-PROGRAMS
---------
-Programs are user-provided shared objects (compiled libraries). They allow to
-provide *stardis(1)* with user defined properties. Depending on the type of
-description they are used with, programs must export a given list of
-mandatory functions. They can also export some other optional functions.
-The exact list with names and types can be found in the stardis-prog.h public
-header file that is installed at the same time as the *stardis(1)* binary.
-
-UNITS
------
-Any physical quantity involved in descriptions is expected in the
-International System of Units (second, metre, kilogram, kelvin, watt, joule);
-the same applies to *stardis(1)* outputs as described in *stardis-output(5)*.
-
-However, the geometry provided to *stardis*(1) can be described in any unit,
-multiple of meters or not, as long as the scaling factor is provided.
-
-TINIT VS TIMPOSED
------------------
-Media's descriptions, either solids or fluids, include two possible
-temperatures: initial and imposed. If imposed temperature is set (that is not
-"UNKNOWN"), initial temperature must be defined at the same value. In other
-words, one cannot define a medium with an imposed temperature that changes at
-t=0.
-
-TRIANGLE SIDES
---------------
-Side descriptions in side specifiers rely on the following convention: we
-first consider the direct triangle's normal (right-hand rule), then we define
-the BACK side of a triangle to be the side this normal comes out from. That
-means that a closed set of triangles with normals pointing outside should be
-used with the FRONT side specifier to describe inside medium.
-
-NAMES
------
-Names, either file names or description names (program names, medium names or
-boundary names), are a sequence of one or ore ASCII characters, including
-numbers and special characters like *.* *_* *-* as one may consider using in
-standard file names. Description
-names are case-sensitive and two different description lines, either in the
-same description file or from different description files, cannot use the same
-name. Additionally, description names cannot be parsable as a number, nor be one
-of the keywords defined by the present grammar (AUTO, BACK, BOTH, FLUID,
-FLUID_PROG, FRONT, F_BOUNDARY_FOR_SOLID, F_BOUNDARY_FOR_SOLID_PROG,
-H_BOUNDARY_FOR_FLUID, H_BOUNDARY_FOR_FLUID_PROG, H_BOUNDARY_FOR_SOLID,
-H_BOUNDARY_FOR_SOLID_PROG, PROGRAM, PROG_PARAMS, SCALE, SOLID, SOLID_PROG,
-SOLID_FLUID_CONNECTION, SOLID_FLUID_CONNECTION_PROG, SOLID_SOLID_CONNECTION,
-SOLID_SOLID_CONNECTION_PROG, TRAD, T_BOUNDARY_FOR_SOLID,
-T_BOUNDARY_FOR_SOLID_PROG, UNKNOWN) or their lowercase counterparts.
-Finally, description names cannot be longer than 63 characters.
-
-EXAMPLES
---------
-Define a solid named *Cube 1*, a h boundary, and their radiative environment.
-The cube geometry is read from
-the file cube.stl and the solid medium properties are lambda=0.1, rho=25, cp=2.
-The numerical parameter delta, that is used for solid conductive walks, is
-0.05. The initial temperature of the cube is 0°K, its temperature is unknown
-(*stardis(1)* needs to solve it), and its volumic power is 2.5 W/m3.
-The boundary properties are emissivity=0, specular-fraction=0, h=10 and
-external-temperature = 100°K.
-The cube radiative environment is at 300°K.
-Finally, when the Picard method linearises radiative transfer involving the HdT
-boundary, the reference temperature is set to 310°K, while it is set to 330°K
-when linearisation involves the radiative environment.
-.......
-SOLID Cube\ 1 0.1 25 2 0.05 0 UNKNOWN 2.5 FRONT cube.stl
-H_BOUNDARY_FOR_SOLID HdT 310 0 0 10 100 cube.stl
-TRAD 300 330
-.......
-
-SEE ALSO
---------
-*stardis*(1)
-*wordexp*(3)
diff --git a/doc/stardis-man.css b/doc/stardis-man.css
@@ -1,96 +0,0 @@
-/* Copyright (C) 2016-2018 CNRS
- *
- * This is free style sheet: 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 CSS 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/. */
-
-body.manpage {
- font-family:"Liberation Sans",sans-serif;
- font-size:10pt;
- text-align: justify;
- max-width: 55em;
- margin: 1em;
- background: #ffffff
-}
-
-body.manpage .monospaced, .literalblock {
- margin: 2em;
- color: #636261
-}
-
-body.manpage em {
- color: #660000
-}
-
-body.manpage div.verseblock > pre.content {
- font-family: "Liberation Mono",monospace;
-}
-
-body.manpage h1 {
- padding-bottom: 0.5em;
-}
-body.manpage h2 {
- border-style: none;
-}
-body.manpage div.sectionbody {
- margin-left: 3em;
-}
-
-body.manpage code {
- font-family: "Liberation Mono",monospace;
-}
-
-body.manpage #footer { display: none; }
-
-body.manpage div#toctitle { display: none; }
-
-body.manpage div#toc {
- display: block;
- position:fixed;
- top:0;
- left:60em;
- height:100%;
- width: 100%;
- padding:3em 0 0 0;
- border-left:1px solid #dbdbdb;
- background: #eeeeee
-}
-
-body.manpage a {
- font-weight: bold;
- color: #225588;
-}
-
-body.manpage div#toc a, div#toc a:link, div#toc a:visited {
- margin:0;
- padding-left: 2em;
- color:#999999;
- text-decoration:none;
- font-weight: normal;
-}
-
-body.manpage div.toclevel1 {
- line-height: 1.5em;
-}
-
-body.manpage div.toclevel2 {
- margin-left: 2em;
-}
-
-body.manpage div#toc a:hover {
- color:#666666;
-}
-
-@media print {
- body.manpage div#toc { display: none; }
-}
-
diff --git a/doc/stardis-output.5.txt b/doc/stardis-output.5.txt
@@ -1,902 +0,0 @@
-// Copyright (C) 2018-2023 |Méso|Star>
-//
-// 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/>.
-
-:toc:
-
-= stardis-output(5)
-
-== NAME
-
-stardis-output - output format of stardis(1) results
-
-== DESCRIPTION
-
-*stardis-output* describes the output format of the *stardis*(1) program.
-Any *stardis*(1) result is written to _standard output_, even though some
-additional information can be written in files.
-
-The type of the data that are generated depends on the options used when
-*stardis*(1) is invoked. When invoked with one of the basic computation options
-(*-p*, *-P*, *-m*, *-s* or *-F*), *stardis*(1) outputs a single Monte-Carlo
-result. On the opposite, *stardis*(1) ouputs compound results when invoked with
-option *-S* or *-R*. Additionally, options *-g* and *-G* make *stardis*(1)
-compute and output a Green function and possibly information on heat paths'
-ends. Most of the complex data output is in VTK [1] format that can be
-displayed and manipulated by the open-source software Paraview [2].
-
-Finaly, some special options (*-v*, *-h* or *-d*) that does not involve any
-computation produce output including information on the *stardis*(1) software
-(their ouputs will not be described thereafter) or the provided thermal system.
-
-== UNITS
-
-As with the values in *stardis-input*(5), any physical quantity in output is in
-the International System of Units (second, metre, kilogram, kelvin) except the
-coordinates that are in same system as the geometry.
-
-== OPTIONS
-
-Every top-level item of the output listed below is produced by one or more
-specific options of the *stardis*(1) program. The following list gives the
-correspondance:
-
-*-p* or *-P*: produce <probe-temp>
-
-*-m*: produces <medium-temp>
-
-*-s*: produces <mean-temp>
-
-*-F*: produces <mean-flux>
-
-*-p*, *-P*, *-m* or *-s* with *-g* or *-G*: produce <ascii-green> or
-<binary-green> and possibly <heat-paths-ends> respectively.
-
-*-D*: produces <heat-path> files in addition to the simulation output
-
-*-R*: produces <infrared-image>
-
-*-d*: produces <geometry-dump>
-
-== GRAMMAR
-
-In what follows, some lines end in *\*. This is used as a convenience to
-continue a description next line. However, this trick is not part of the
-actual output, that continues on a single line. On the other hand, multiple
-lines not using the *\* convenience in multi-lines descriptions are truly
-different lines of output. Also, text appearing between quote marks is a
-verbatim part of the output, except the quote characters, *\#something*
-denotes a count (the number of something), and the math operators '*+*'
-and '***', when not verbatim, are used with the usual meaning (like in
-\#something+1). Finally, text introduced by the *#* character in a description,
-when neither verbatim nor count, is a comment and is not part of the output.
-
-== OUTPUT
-
-[verse]
-_______
-
-<output> ::= <single-MC-result>
- | <binary-green>
- | <heat-paths-ends>
- | <ascii-green>
- | <geometry-dump>
- | <infrared-image>
-_______
-
-== SINGLE MONTE CARLO
-
-When *stardis*(1) is used to produce a single Monte-Carlo result, either
-temperature or flux, this result is output first to _standard output_, possibly
-followed by some of the heat paths involved in the computation if option *-D*
-was used too.
-
-Two different formats are possible: a compact, numbers only format (the default)
-or an extended format that mixes numbers and their descriptions (if option *-e*
-is used).
-
-[verse]
-_______
-<single-MC-result> ::= <single-MC-result>
- | <ext-single-MC-result>
-
-<single-MC-result> ::= <probe-temp>
- | <medium-temp>
- | <mean-temp>
- | <mean-flux>
-
-<ext-single-MC-result> ::= <ext-probe-temp>
- | <ext-medium-temp>
- | <ext-mean-temp>
- | <ext-mean-flux>
-
--------------------------------------
-
-<probe-temp> ::= <MC-estimate> <failures-report>
-
-<mean-temp> ::= <MC-estimate> <failures-report>
-
-<mean-flux> ::= <MC-estimate> <MC-estimate> <MC-estimate> \
- <MC-estimate> <MC-estimate> <failures-report>
- # MC estimates order is: temperature, convective flux,
- # radiative flux, imposed flux, total flux
-
-<medium-temp> ::= <MC-estimate> <failures-report>
-
-<MC-estimate> ::= <expected-value> <standard-deviation>
-
-<failures-report> ::= <error-count> <success-count>
-
-<ext-probe-temp> ::= "Temperature at" <ext-probe-position> <ext-time> \
- <ext-temp-estimate>
- <ext-failures-report>
-
-<ext-mean-temp> ::= "Temperature at boundary" <file-name> <ext-time> \
- <ext-temp-estimate>
- <ext-failures-report>
-
-<ext-mean-flux> ::= "Temperature at boundary" <file-name> <ext-time> \
- <ext-temp-estimate>
- "Convective flux at boundary " <file-name> \
- <ext-time> <ext-flux-estimate>
- "Radiative flux at boundary" <file-name> <ext-time> \
- <ext-flux-estimate>
- "Imposed flux at boundary" <file-name> <ext-time> \
- <ext-flux-estimate>
- "Total flux at boundary" <file-name> <ext-time> \
- <ext-flux-estimate>
- <ext-failures-report>
-
-<ext-medium-temp> ::= "Temperature in medium" <medium-name> <ext-time> \
- <ext-temp-estimate>
- <ext-failures-report>
-
-<ext-probe-position> ::= "[" <x-value> "," <y-value> "," <z-value> "]"
-
-<ext-time> ::= "at t=" <time-value> "="
- | "with t in [" <time-value> <time-value> "] ="
-
-<ext-temp-estimate> ::= <expected-value> "K +/-" <standard-deviation>
-
-<ext-flux-estimate> ::= <expected-value> "W +/-" <standard-deviation>
-
-<ext-failures-report> ::= "#failures:" <error-count> "/" <success-count>
-
-<ext-file-name> ::= STRING # as provided in input data
-
-<ext-medium-name> ::= STRING # as provided in input data
-
--------------------------------------
-
-<x-value> ::= REAL
-
-<y-value> ::= REAL
-
-<z-value> ::= REAL
-
-<time-value> ::= REAL # in [0, INF)
-
-<error-count> ::= INTEGER # in [0, #samples]
-
-<success-count> ::= INTEGER # in [0, #samples]
-
-<expected-value> ::= REAL # depending on value semantics,
- # range can be restricted
-
-<standard-deviation> ::= REAL # in [0, INF)
-
-_______
-
-== GREEN
-
-The Green function is generated, either in binary or ascii format, when a
-green-compatible *stardis*(1) simulation option is used in conjuction with
-option *-G* for a binary output, or option *-g* for an ascii output. For
-every successful heat path sampled carrying out the simulation, the solver
-records all the elements of the path history relevant to link the various
-imposed temperature, fluxe and volumic power values to the simulation result.
-Note that to be able to explore different values of volumic power when
-applying the Green function, it must have been generated with these values
-being non-zero. On the other hand, any temperature or flux value in boundary
-descriptions can be modified when applying the Green function, as well as the
-ambient radiative temperature (Trad).
-
-The output in green mode is made of tables containing the different media and
-boundaries and their imposed temperature, flux and volumic power values,
-followed by the heat paths' history. Also, option *-G* make it possible to
-output heat paths' end information on an ascii, csv formated file.
-
-The Monte-Carlo estimate and standard deviation for a given set of settings can
-be computed as the mean and standard deviation of the samples of the *Green
-function* computed using these settings. Each sample can be computed as
-follows:
-
-* Get the temperature of the ending boundary, medium or Trad;
-* Add the temperature gain of each power term;
-* Add the temperature gain of each flux term.
-
-=== BINARY GREEN
-
-Binary Green outputs are formated according to the various C types from the
-*stardis-green.h* header file. The output begins with a header (of type struct
-green_file_header) that includes counts, followed by descriptions (of type
-struct green_description) and samples. Thereafter is the format of binary
-Green outputs. This output is produced by fwrite calls and does not take care
-of endianness. Comments include the C type of the written data.
-
-[verse]
-_______
-<binary-green> ::= "GREEN_BIN_FILE:" # char[16]
- <file_format_version> # unsigned
- #descriptions # unsigned
- #solids # unsigned
- #fluids # unsigned
- #h-boundaries # unsigned
- #t-boundaries # unsigned
- #f-boundaries # unsigned
- #solid-fluid-connections # unsigned
- #solid-solid-connections # unsigned
- #ok-samples # size_t
- #failed-samples # size_t
- Trad # double
- Trad-reference # double
- time-range # double[2]
- <descriptions>
- <samples>
-
-<descriptions> ::= description # struct green_description
- <descriptions> # #descriptions descriptions
-
-<samples> ::= <sample>
- <samples> # #ok-samples samples
-
----------------------
-
-<sample> ::= <sample-header> # struct green_sample_header
- <ids> # unsigned[header.pw_count then header.fx_count]
- <weights> # double[header.pw_count then header.fx_count]
-_______
-
-
-=== ASCII GREEN
-
-Thereafter is the format of ascii Green outputs.
-
-[verse]
-_______
-<ascii-green> ::= "---BEGIN GREEN---"
- "# time range"
- <time-range>
- "# #solids #fluids #t_boundaries #h_boundaries \
- #f_boundaries #ok #failures"
- #solids #fluids #t_boundaries #h_boundaries \
- #f_boundaries #ok #failures
- "# Solids"
- "# ID Name lambda rho cp power"
- <solids>
- "# Fluids"
- "# ID Name rho cp"
- <fluids>
- "# T Boundaries"
- "# ID Name temperature"
- <t-bounds>
- "# H Boundaries"
- "# ID Name ref_temperature emissivity specular_fraction hc T_env"
- <h-bounds>
- "# F Boundaries"
- "# ID Name flux"
- <f-bounds>
- "# Radiative Temperature"
- "# ID Rad_Temp"
- <rad-temps>
- "# Samples"
- "# end #power_terms #flux_terms power_term_1 ... \
- power_term_n flux_term_1 ... flux_term_n"
- "# end = end_type end_id; end_type = T | H | X | R | F \
- | S"
- "# power_term_i = power_id_i factor_i"
- "# flux_term_i = flux_id_i factor_i"
- <samples>
- "---END GREEN---"
-
-<time-range> ::= <REAL> <REAL> # in [0, INF) x [first REAL, INF)
-
-<solids> ::= <solid>
- <solids> # #solids solid descriptions
-
-<fluids> ::= <fluid>
- <fluids> # #fluids fluid descriptions
-
-<t-bounds> ::= <t-bound>
- <t-bounds> # #t-bounds t-bound descriptions
-
-<h-bounds> ::= <h-bound>
- <h-bounds> # #h-bounds h-bound descriptions
-
-<f-bounds> ::= <f-bound>
- <f-bounds> # #f-bounds f-bound descriptions
-
-<rad-temps> ::= <green-id> <Trad> <Trad-ref>
-
-<samples> ::= <sample>
- <samples> # #samples sample descriptions
-
--------------------------------------
-
-<sample> ::= <end-spec> <power-count> <flux-count> <power-terms> \
- <flux-terms>
-
-<solid> ::= <green-id> <name> <lambda> <rho> <cp> <power> \
- <initial-temp> <imposed-temp>
-
-<fluid> ::= <green-id> <name> <rho> <cp> <initial-temp> \
- <imposed-temp>
-
-<t-bound> ::= <green-id> <name> <temperature>
-
-<h-bound> ::= <green-id> <name> <ref_temperature> <emissivity> \
- <specular_fraction> <hc> <temperature>
-
-<f-bound> ::= <green-id> <name> <flux>
-
-
-<name> ::= STRING
-
-<lambda> ::= REAL # in ]0, INF)
-
-<rho> ::= REAL # in ]0, INF)
-
-<cp> ::= REAL # in ]0, INF)
-
-<power> ::= REAL # in (-INF , INF)
-
-<initial-temp> ::= REAL # in [0 , INF)
- | "NONE" if not imposed
-
-<imposed-temp> ::= REAL # in [0 , INF)
- | "NONE" if not imposed
-
-<temperature> ::= REAL # in [0, INF)
-
-<ref-temperature> ::= REAL # in [0, INF)
-
-<emissivity> ::= REAL # in [0, 1]
-
-<specular-fraction> ::= REAL # in [0, 1]
-
-<hc> ::= REAL # in [0, INF)
-
-<flux> ::= REAL # in (-INF, INF)
-
-<Trad> ::= REAL # in [0, INF)
-
-<Trad-ref> ::= REAL # in [0, INF)
-
-<green-id> ::= INTEGER # in [0 #green-sources[
-
--------------------------------------
-
-<end-spec> ::= <end-type> <green-id>
-<end-type> ::= "T" # sample ends at an t-bound
- | "H" # sample ends at an h-bound
- # a sample cannot end at an f-bound
- | "R" # sample ends with Trad
- | "F" # sample ends in a fluid with known temperature
- | "S" # sample ends in a solid with known temperature
-
-<power-count> ::= INTEGER # in [0 INF)
-
-<flux-count> ::= INTEGER # in [0 INF)
-
-<power-terms> ::= <power-term>
- <power-terms> # <power-count> power terms
-
-<flux-terms> ::= <flux-term>
- <flux-terms> # <flux-count> flux terms
-
--------------------------------------
-
-<power-term> ::= <green-id> <power-factor>
-
-<flux-term> ::= <green-id> <flux-factor>
-
-<power-factor> ::= REAL # in ]0, INF)
- # the temperature gain is:
- # <power-factor> * Power(green-id)
-
-<flux-factor> ::= REAL # in ]0, INF)
- # the temperature gain is:
- # <flux-factor> * Flux(green-id)
-_______
-
-== HEAT PATHS' ENDS
-
-When computing the Green function in binary mode, stardis can output partial
-information ot the sampled heat paths. Opposed to what the *-D* option outputs,
-that is the complete history of selected heat paths, here the information
-output is restricted to paths' ends to allow the inclusion of all the sampled
-heat paths, allowing statistical analysis.
-
-Note that in wath follows, the meaning of external quotes is as usual: what is
-inside is verbatim, including quotes.
-
-[verse]
-_______
-<heat-paths-ends> ::= ""End", "End ID", "X", "Y", "Z", "Elapsed time""
- <heat-path-end-list>
-
-<heat-path-end-list> ::= <end-name> ", " <endid> ", " <x> ", " <y> ", " \
- <z> ", " <elapsed-time>
- <heat-path-end-list> # #samples heat path ends
-
--------------------------------------
-
-<end-name> ::= STRING # the name of the boundary at the end of the
- # heat path, or TRAD for radiative ending
-
-<end-id> ::= INTEGER # in [0 #boundaries]
- # order is the order in the description file,
- # TRAD's id being #boundaries
-
-<x> ::= REAL
-
-<y> ::= REAL
-
-<z> ::= REAL
-
-<elapsed-time> ::= REAL # in [0, INF)
-_______
-
-== GEOMETRY DUMP
-
-A *geometry-file* is generated when *stardis*(1) is invoked with option *-d*.
-In this mode, *stardis*(1) outputs the system geometry, as submitted in
-*stardis-input*(5) description, to _standard output_ in VTK [1] format.
-The output geometry is not the concatenation of the various geometry files
-used in *stardis-input*(5) description. It is the result of a deduplication
-process that removes duplicate and degenerated triangles from the submited
-geometry.
-
-Additionaly, as permitted by the VTK [1] format, the output geometry is
-decorated with many different properties provided to help users understand
-the description processing, including possible errors.
-
-If errors are detected, some optional error-related data fields are included
-in the geometry file. Some errors report a by-triangle error status, other
-errors report a by-enclosure error status.
-
-Also, holes in the geometry, if any, are reported in geometry dumps. A hole is
-defined by its frontier that is a collection of triangles surrounding the hole.
-Such triangles are detected as having their 2 sides in the same enclosure, but
-with a different medium on each side.
-
-Media information is provided in two different flavours. First the medium on
-front and back sides of triangles can be found through the Front_medium and
-Back_medium fields. These fields use the special value 4294967295 (INT_MAX) for
-sides with no defined medium, as one can expect on boundary triangles. On the
-other hand, medium information provided by the Enclosures_internal_media
-field displays the id of the medium created to hold boundary information for
-boundary triangles. In either case, media numbering information can be found
-in log messages if option -V 3 is used in conjunction with the -d dump option.
-
-[verse]
-_______
-<geometry-file> ::= "# vtk DataFile Version 2.0"
- "Dump of star-geometry-3d geometry"
- "ASCII"
- "DATASET POLYDATA"
- <vertices>
- <triangles>
- "CELL_DATA" #triangles
- <front-media>
- <back-media>
- <interfaces>
- <unique-ids>
- <user-ids>
- [ <merge-conflicts> ] # if some merge conflict occured
- [ <property-conflicts> ] # if some property conflict
- # occured
- <file-ids>
- <boundaries>
- [ <compute-region> ] # if defined
- <encl-or-overlaps>
-
-<vertices> ::= "POINTS" #vertices "double"
- <vertex-list>
-
-<triangles> ::= "POLYGONS" #triangles #triangles*4
- <triangle-list>
-
-<front-media> ::= "SCALARS Front_medium unsigned_int 1"
- "LOOKUP_TABLE default"
- <front-medium-ids>
-
-<back-media> ::= "SCALARS Back_medium unsigned_int 1"
- "LOOKUP_TABLE default"
- <back-medium-ids>
-
-<interfaces> ::= "SCALARS Interface unsigned_int 1"
- "LOOKUP_TABLE default"
- <interface-ids>
-
-<unique-ids> ::= "SCALARS Unique_ID unsigned_int 1"
- "LOOKUP_TABLE default"
- <trg-unique-ids>
-
-<user-ids> ::= "SCALARS User_ID unsigned_int 1"
- "LOOKUP_TABLE default"
- <trg-user-ids>
-
-<merge-conflicts> ::= "SCALARS Merge_conflict int 1"
- "LOOKUP_TABLE default"
- <trg-merge-conflicts>
-
-<property-conflicts> ::= "SCALARS Property_conflict int 1"
- "LOOKUP_TABLE default"
- <trg-prop-conflicts>
-
-<file-ids> ::= "SCALARS Created_at_sg3d_geometry_add unsigned_int 1"
- "LOOKUP_TABLE default"
- <file-ranks>
-
-<boundaries> ::= "SCALARS Boundaries unsigned_int 1"
- "LOOKUP_TABLE default"
- <boundary-ids>
-
-<compute-region> ::= "SCALARS Compute_region unsigned_int 1"
- "LOOKUP_TABLE default"
- <region-membership>
-
-<encl-or-overlaps> ::= <encl-information> # if enclosure extraction was
- # possible
- | <overlaps> # if overlapping triangles where detected
-
------------------
-
-<vertex-list> ::= "3" <vertice_id> <vertice_id> <vertice_id>
- <vertex-list> # #vertices vertices
-
-<triangle-list> ::= <real3>
- <triangle-list> # #triangles triangles
-
-<front-medium-ids> ::= <medium-id> | <undef-medium>
- <front-medium-ids> # #triangles ids
-
-<back-medium-ids> ::= <medium-id> | <undef-medium>
- <back-medium-ids> # #triangles ids
-
-<interface-ids> ::= INTEGER # in [0 #interface[
- <interface-ids> # #triangles ids
-
-<trg-unique-ids> ::= INTEGER # in [0 #triangles[
- <trg-unique-ids> # #triangles ids
-
-<trg-user-ids> ::= INTEGER # in [0 #submitted triangles[
- <trg-user-ids> # #triangles ids
-
-<trg-merge-conflicts> ::= "0" # triangle without any merge conflict
- | "1" # triangle with a merge conflict
- <trg-merge-conflicts> # #triangles statuses
-
-<trg-prop-conflicts> ::= "0" # triangle with no property conflict
- | "1" # H_BOUNDARY_FOR_FLUID between 2 defined media
- | "2" # H_BOUNDARY_FOR_FLUID between 2 undefined media
- | "3" # H_BOUNDARY_FOR_FLUID enclosing a solid
- | "4" # H_BOUNDARY_FOR_SOLID between 2 defined media
- | "5" # H_BOUNDARY_FOR_SOLID between 2 undefined media
- | "6" # H_BOUNDARY_FOR_SOLID enclosing a fluid
- | "7" # HF_BOUNDARY_FOR_SOLID between 2 defined media
- | "8" # HF_BOUNDARY_FOR_SOLID between 2 undefined media
- | "9" # HF_BOUNDARY_FOR_SOLID enclosing a fluid
- | "10" # T_BOUNDARY_FOR_SOLID between 2 defined media
- | "11" # T_BOUNDARY_FOR_SOLID between 2 undefined media
- | "12" # T_BOUNDARY_FOR_SOLID enclosing a fluid
- | "13" # F_BOUNDARY_FOR_FLUID between 2 defined media
- | "14" # F_BOUNDARY_FOR_FLUID between 2 undefined media
- | "15" # F_BOUNDARY_FOR_SOLID enclosing a fluid
- | "16" # SOLID_FLUID_CONNECTION between 2 solids
- | "17" # SOLID_FLUID_CONNECTION between 2 fluids
- | "18" # SOLID_FLUID_CONNECTION used as boundary
- | "19" # SOLID_FLUID_CONNECTION between 2 undefined
- # media
- | "20" # no connexion between 2 fluids
- | "21" # no connexion between a solid and a fluid
- | "22" # no boundary around a fluid
- | "23" # no boundary around a solid
- | "24" # invalid part of a compute surface
- <trg-prop-conflicts> # #triangles statuses
-
-<real3> ::= REAL REAL REAL
-
-<vertice-id> ::= INTEGER # in [0 #vertices[
-
-<file-ranks> ::= INTEGER # in [0 #submitted files[
- <file-ranks> # #triangles ranks
-
-<boundary-ids> ::= INTEGER # in [0 #submitted descriptions[
- <boundary-ids> # #triangles ids
-
-<region-membership> ::= <reg-not-member> # triangle not part of the compute
- # region
- | <reg-member> # triangle is part of the compute region
- <region-membership> # #triangles membership status
-
-<encl-information> ::= [ <holes> ] # if there are holes
- <enclosures>
-
-<overlaps> ::= "SCALARS Overlapping_triangles unsigned_int 1"
- "LOOKUP_TABLE default"
- <overlapping-status>
-
-<holes> ::= "SCALARS Hole_frontiers unsigned_int 1"
- "LOOKUP_TABLE default"
- <hole-memberships>
-
-<enclosures> ::= "FIELD FieldData 2"
- "Enclosures" #enclosures #triangles "unsigned_char"
- <encl-memberships>
- "Enclosures_internal_media" #enclosures #triangles \
- "unsigned_int"
- <encl-media>
-
------------------
-
-<hole-memberships> ::= "0" # triangle not surrounding a hole
- | "1" # triangle surrounding a hole
- <hole-memberships> # #triangles hole memberships
-
-<encl-memberships> ::= <encl-status 0> ... <encl-status #enclosures-1>
- <encl-memberships> # #triangles enclosure memberships
-
-<encl-media> ::= <encl 0 medium> ... <encl #enclosures-1 medium>
- <encl-media> # #triangles enclosure media
-
-<medium-id> ::= INTEGER # in [0, #medium[
-
-<undef-medium> ::= "4294967295"
-
-<reg-not-member> ::= "0"
-
-<reg-member> ::= "1" # the FRONT side is member of the region
- | "2" # the BACK side is member of the region
- | "3" # both sides are member of the region
- | "4294967295" # the triangle is an invalid part of
- # the region
-
-<overlapping-status> ::= "0" # triangle not overlapping another triangle
- | "1" # triangle overlapping another triangle
- <overlapping-status> # #triangles overlapping status
-
-<encl-status i> ::= <encl-not-member> # the triangle is not part of the
- # ith enclosure
- | <encl-member> # the triangle is part of the ith
- # enclosure
-
-<enc i medium> ::= <medium-id> # the triangle is part of the ith
- # enclosure and has this medium in the
- # involved side(s)
- | "4294967293" # the triangle is part of the ith
- # enclosure and has no defined medium in
- # the involved side(s)
- | "4294967294" # the 2 sides of the triangle are part of
- # the ith enclosure, but have 2 different
- #media
- | "4294967295" # the triangle is not part of the ith
- # enclosure
-
------------------
-
-<encl-not-member> ::= "0"
-
-<encl-member> ::= "1" # valid enclosure
- | "3" # invalid enclosure: more than 1 medium
- | "5" # invalid enclosure: some triangles with no
- # defined medium
- | "7" # invalid enclosure: more than 1 "medium",
- # including undefined
-_______
-
-== INFRARED IMAGE
-
-When invoked with option *-R*, *stardis*(1) generates an infrared image of
-the system and write it to _standard output_. Depending on the *fmt*
-sub-option, this file can be either in VTK [1] format on in *htrdr-image*(5)
-format.
-
-=== HTRDR-IMAGE INFRARED IMAGE
-If the output image is in *htrdr-image*(5) format, it comply with the *lw*
-section of the format, with only the temperature fields being informed. The
-resulting format is as follows:
-
-[verse]
-_______
-<htrdr-image> ::= <definition>
- <pixel>
- [ <pixel> ... ]
-
-<definition> ::= <width> <height>
-<width> ::= INTEGER
-<height> ::= INTEGER
-
-<pixel> ::= <temperature> 0 0 0 0 <time>
-
-<temperature> ::= <estimate>
-<time> ::= <estimate>
-
-<estimate> ::= <expected-value> <standard-error>
-<expected-value> ::= REAL
-<standard-error> ::= REAL
-_______
-
-These files can be post-processed using the *htpp*(1) tool, that is part of
-the high-tune project.
-
-=== VTK INFRARED IMAGE
-If the output image is in VTK format, it is on an XY plane with coordinates in
-the [0 pixel_count[ range. By convention, the origine (0,0) pixel is at the
-top-left corner of the image.
-
-The result not only includes the computed temperature image, but also includes
-a per-pixel computation time image as well as a per-pixel path error count
-image and per-pixel standard deviation images for both temperature and
-computation time.
-
-[verse]
-_______
-<infrared-image> ::= "# vtk DataFile Version 2.0"
- "Infrared Image"
- "ASCII"
- "DATASET STRUCTURED_POINTS"
- "DIMENSIONS" <image-width> <image-height> "1"
- "ORIGIN 0 0 0"
- "SPACING 1 1 1"
- "POINT_DATA" <image-width>*<image-height>
- "SCALARS temperature_estimate float 1"
- "LOOKUP_TABLE default"
- <temperatures>
- "SCALARS temperature_std_dev float 1"
- "LOOKUP_TABLE default"
- <temp_std_devs>
- "SCALARS computation_time float 1"
- "LOOKUP_TABLE default"
- <computation_times>
- "SCALARS computation_time_std_dev float 1"
- "LOOKUP_TABLE default"
- <com_time_std_devs>
- "SCALARS failures_count unsigned_long_long 1"
- "LOOKUP_TABLE default"
- <failures_counts>
-
-<temperatures> ::= REAL # in [0, INF)
- <temperatures> # <image-width>*<image-height>
- # temperatures
-
-<temp_std_devs> ::= REAL # in [0, INF)
- <temperature_std_devs> # <image-width>*<image-height>
- # std_devs
-
-<computation_times> ::= REAL # in [0, INF)
- <computation_times> # <image-width>*<image-height>
- # times
-
-<comp_time_std_devs> ::= REAL # in [0, INF)
- <comp_time_std_devs> # <image-width>*<image-height>
- # std_devs
-
-<failures_counts> ::= INTEGER # in [0, SAMPLES_COUNT]
- <failures_counts> # <image-width>*<image-height>
- # failures_counts
-_______
-
-== DUMP HEAT PATHS
-
-When the *stardis*(1) option *-D* is used in conjunction with an option that
-computes a result, some of the heat paths (successful paths, erroneous paths,
-or both) sampled during the simulation are written to files. Each path is
-written in VTK [1] format, one VTK file per path. The path description can
-include vertices' time if it makes sense, that is if the computation time is
-not INF. Due to the branching nature of non-linear Monte-Carlo algorithms,
-paths are made of strips. Whith a Picard order of 1, there is only a single
-strip, with higher orders, the number of strips can be greater than 1. As a
-result, the whole path is a tree: past the first strip, each strip can start
-from any vertex of one of the previous strips. This tree, when displaying the
-*Branch_id* field, starts with id 0, then increments each time a non-linearity
-leads to the creation of a new strip (to fetch a temperature).
-
-[verse]
-_______
-
-<heat-path> ::= "# vtk DataFile Version 2.0"
- "Heat path"
- "ASCII"
- "DATASET POLYDATA"
- "POINTS" #vertices "double"
- <path-vertices>
- "LINES" #strips #vertices+#strips
- <heat-strips>
- "CELL_DATA" #strips
- "SCALAR Path_Failure unsigned_char 1"
- "LOOKUP_TABLE default"
- <path-failures>
- "POINT_DATA" #vertices
- "SCALARS Segment_Type unsigned_char 1"
- "LOOKUP_TABLE default"
- <segments-types>
- "SCALARS Weight double 1"
- "LOOKUP_TABLE default"
- <weights>
- "SCALARS Branch_id int 1"
- "LOOKUP_TABLE default"
- <branch_ids>
- [ <vertices-time> ] # if not steady
-
-<path-vertices> ::= <real3>
- <path-vertices> # #vertices vertices
-
-<path-failures> ::= <path-failure>
- <path-failures> # #strips failure statutes
-
-<heat-strips> ::= <heat-strip>
- <heat-strips> # #strips strips
-
-<segments-types> ::= <segment-type>
- <segments-types> # #segments types
-
-<weights> ::= <weight>
- <weights> # #vertices weights
-
-<branch_ids> ::= <branch_id>
- <branch_ids> # #vertices ids
-
-<vertices-time> ::= "SCALARS Time double 1"
- "LOOKUP_TABLE default"
- <durations>
-
------------------
-
-<real3> ::= REAL REAL REAL
-
-<path-failure> ::= "0" # SUCCESS
- | "1" # FAILURE
-
-<heat-strip> ::= #strip_vertices <vtx_idx 1> ... <vtx_idx #strip_vertices>
-
-<segment-type> ::= "0" # CONDUCTION
- | "1" # CONVECTION
- | "2" # RADIATIVE
-
-<weight> ::= REAL
-
-<branch-id> ::= INTEGER in [0 Picard_Order]
-
-<durations> ::= REAL # in [0, INF)
- <durations> # #vertices durations
-
-<vtx_idx> ::= INTEGER # in [0 #vertices[
-
-_______
-
-== NOTES
-
-1. VTK file format -
- <http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf>
-
-2. Paraview softawre -
- <https://www.paraview.org/>
-
-== SEE ALSO
-
-*stardis*(1),
-*stardis-input*(5),
-*htrdr-image*(5)
diff --git a/doc/stardis.1.txt.in b/doc/stardis.1.txt.in
@@ -1,369 +0,0 @@
-// Copyright (C) 2018-2024 |Méso|Star>
-//
-// 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/>.
-
-:toc:
-
-stardis(1)
-===========
-
-NAME
-----
-stardis - statistical solving of coupled thermal systems
-
-SYNOPSIS
---------
-[verse]
-*stardis* [_option_]
-*stardis* *-M* <__file__> [_option_]
-
-DESCRIPTION
-*stardis* solves coupled thermal systems: conductive, convective and
-radiative transfers are solved together. The physical model used for
-conduction is the local unstationary heat conduction equation.
-Convection fluxes are assumed to be linear with temperature, and radiation
-is assumed to be integrated over the whole thermal spectral range,
-therefore radiative heat fluxes are proportionnal to a difference of
-temperatures to the power 4. *stardis* can deal with complex geometries as
-well as high-frequency external solicitations over a very long period of time,
-relative to the characteristic time of the system. The provided system
-description should comply with the *stardis-input*(5) format.
-
-*stardis* can compute a thermal observable, like temperature or flux, at a
-probe point and date or the mean value of an observable over a given surface,
-volume, or time range. When a time range *t1, t2* is provided, the computed
-value is the mean value over the time range. To compute the value at a given
-time, simply provide a single value *t*. In addition, *stardis* gives access to
-the evaluation of the propagator (a.k.a the *Green function*).
-
-The propagator is of great value for thermicist engineers as it gives some
-crucial information to analyse heat transfers in the system. It helps engineers
-answer questions like _"Where from does the heat come at this location?"_.
-Propagators seamlessly aggregate all the provided geometrical and physical
-information on the system in an unbiased and very-fast statistical model.
-
-*stardis*(1) also provides two additional functionalities: converting the
-*stardis-input*(5) geometry into a VTK file and rendering an infrared image
-of the submitted system.
-
-Stardis' algorithms are based on state-of-the-art Monte-Carlo method applied
-to radiative transfer physics (Delatorre [1]) combined with conduction's
-statistical formulation (Kac [2] and Muller [3]). Thanks to recent advances in
-computer graphics technology which has already been a game changer in the
-cinema industry (FX and animated movies), this theoretical framework can now
-be practically used on the most geometrically complex systems.
-
-Monte-Carlo algorithms associated with convective and conductive processes
-consist in sampling heat paths: this can be seen as an extension of
-Monte-Carlo algorithms that solve monochromatic radiative transfer.
-The radiative transfer algorithm, based on the Picard method, is also based
-on sampling radiative paths. However, since stardis solves the spectrally
-integrated radiative transfer, the process can be recursive: secondary heat
-paths (convective, conductive and radiative) may be necessary along the
-sampling of an initial radiative path.
-
-The solution may not be sufficiently converged with a Picard order equal
-to 1 in the presence of high temperature gradients.
-Increasing the Picard order may be necessary in this case, until the
-required convergence is reached.
-
-A main property of this approach is that the resulting algorithms do
-not rely on a volumic mesh of the system: only the representation
-of interfaces is necessary.
-
-*stardis* supports shared memory parallelism and relies on the Message
-Passing Interface specification [4] to parallelise its computations in a
-distributed memory environment; it can thus be run either directly or through
-a MPI process launcher like *mpirun(1)*.
-
-[1] Delatorre et al., Monte Carlo advances and concentrated solar applications,
-Solar Energy, 2014
-
-[2] Kac, On Distributions of Certain Wiener Functionals. The Annals of
-Mathematical Statistics, 1949.
-
-[3] Muller, Some continuous Monte-Carlo Methods for the Dirichlet Problem,
-Transactions of the American Mathematical Society, 1956.
-
-[4] MPI specifications - https://www.mpi-forum.org/docs/
-
-MANDATORY OPTIONS
------------------
-*-M* _file_::
- Read a text file containing a possibly partial description of the system.
- Can include programs, media enclosures and boundary conditions. Media and
- boundaries can appear in any order, but programs must be defined before their
- first reference. Refer to *stardis-input(5)* for details.
- Can be used more than once if the description is split across different
- files.
-
-EXCLUSIVE OPTIONS
------------------
-*-p* _x,y,z[,time[,time]]_::
- Compute the temperature at the given probe at a given time. By default the
- compute time is @STARDIS_ARGS_DEFAULT_COMPUTE_TIME@. The probe must
- be in a medium. The probe coordinates must be in the same system as the
- geometry.
-
-*-P* _x,y,z[,time[,time]][:side_indicator]_::
- Compute the temperature at the given probe on an interface at a given time.
- If the probe is on an interface where a thermal contact resistance is
- defined, it is mandatory to provide a side indicator (either FRONT, BACK, or
- a medium name), as the temperature differs between the two sides.
- By default the compute time is @STARDIS_ARGS_DEFAULT_COMPUTE_TIME@. The
- probe is supposed to be on an interface and is moved to the closest point of
- the closest interface before the computation starts. The probe coordinates
- must be in the same system as the geometry.
-
-*-m* _medium_name[,time[,time]]_::
- Compute the mean temperature in a given medium at a given time. The medium
- name must be part of the system description. By default the compute time
- is @STARDIS_ARGS_DEFAULT_COMPUTE_TIME@. The medium region does not need
- to be connex.
-
-*-s* _file[,time[,time]]_::
- Compute the mean temperature on a given 2D region at a given time, the region
- being defined as the front sides of the triangles in the provided *STL* file.
- By default the compute time is @STARDIS_ARGS_DEFAULT_COMPUTE_TIME@.
- These triangles are not added to the geometry, but must be part of it. The
- region does not need to be connex.
-
-*-S* _file[,time[,time]]_::
- Compute the by-triangle mean temperature on a given 2D region at a given
- time, the region being defined as the front sides of the triangles in the
- provided *STL* file. These triangles are not added to the geometry, but must
- be part of it. By default the compute time is
- @STARDIS_ARGS_DEFAULT_COMPUTE_TIME@. The region does not need to be connex.
-
-*-F* _file[,time[,time]]_::
- Compute the mean flux on a given 2D region at a given time, the region
- being defined as the front sides of the triangles in the provided *STL* file.
- These triangles are not added to the geometry, but must be part of it. Flux
- is accounted positive when going from the front side to the back side, at a
- single-triangle level. By default the compute time is
- @STARDIS_ARGS_DEFAULT_COMPUTE_TIME@. The region does not need to be connex,
- but it can currently only include geometry appearing in description lines
- starting with H_BOUNDARY_FOR_SOLID, H_BOUNDARY_FOR_FLUID,
- F_BOUNDARY_FOR_SOLID or SOLID_FLUID_CONNECTION (see *stardis-input*(5)).
-
-*-R* [__sub-option__:...]::
- Render an infrared image of the system through a pinhole camera. One can use
- all-default sub-options by simply providing the colon character (*:*) alone
- as an argument. Please note that the camera position must be outside the
- geometry or in a fluid.
- Available sub-options are:
-
- **file=**_output_file_;;
- File name to use to write the infrared image to. If no file name is
- provided, the result is written to _standard output_.
-
- **fmt=**_image_file_format_;;
- Format of the image file in output. Can be *VTK*, or *HT* (see
- htrdr-image(5) and htpp(1)). Default _image_file_format_ is
- @STARDIS_ARGS_DEFAULT_RENDERING_OUTPUT_FILE_FMT@.
-
- **fov=**_angle_;;
- Horizontal field of view of the camera in [30, 120] degrees. By default
- _angle_ is @STARDIS_ARGS_DEFAULT_RENDERING_FOV@ degrees.
-
- **img=**_width_**x**_height_;;
- Definition of the rendered image in pixels. By default the image definition
- is @STARDIS_ARGS_DEFAULT_RENDERING_IMG_WIDTH@x@STARDIS_ARGS_DEFAULT_RENDERING_IMG_HEIGHT@.
-
- **pos=**_x_**,**_y_**,**_z_;;
- Position of the camera. By default it is set to
- { @STARDIS_ARGS_DEFAULT_RENDERING_POS@ } or it is automatically computed to
- ensure that the whole scene is visible, whether *tgt* is set or not,
- respectively.
-
- **spp=**_samples-count_;;
- Number of samples per pixel.
- By default, use @STARDIS_ARGS_DEFAULT_RENDERING_SPP@ samples per pixel.
-
- **t=**_time[,time]_;;
- Rendering time. By default the rendering time is
- @STARDIS_ARGS_DEFAULT_RENDERING_TIME@.
-
- **tgt=**_x_**,**_y_**,**_z_;;
- Position targeted by the camera. By default, it is set to
- { @STARDIS_ARGS_DEFAULT_RENDERING_TGT@ } or it is automatically computed to
- ensure that the whole scene is visible, whether *pos* is set or not,
- respectively.
-
- **up=**_x_**,**_y_**,**_z_;;
- Up vector of the camera. By default, it is set to
- { @STARDIS_ARGS_DEFAULT_RENDERING_UP@ }.
-
-OTHER OPTIONS
--------------
-*-d* _file_base_name_::
- Write the geometry to a file in VTK format along with various properties,
- including possible errors. Also possibly write some problematic parts of the
- geometry (if any) in OBJ format. Possible parts are overlapping triangles,
- triangles with property conflicts, and triangles with merge errors. The
- various file are all named after the provided base name. If this option is
- used, no computation occurs.
-+
-Using this option in conjunction with an option that
-specifies a compute region (-F, -S, -s) has the effect to include the
-region in the VTK output.
-
-*-D* _type,files_name_prefix_::
- Write sampled heat paths of the given *type* to files in VTK format, one
- file per path. Possible values for *type* are *error* (write paths ending
- in error), *success* (write successful paths), and *all* (write all paths).
- Actual file names are produced by appending *files_name_prefix* and the path
- rank starting at index 00000000, and possibly followed by *_err* for failure
- paths: prefix00000000.vtk, prefix00000001_err.vtk, ...
-+
-This option can only be used in conjunction with options that compute a
-result (-F, -m, -P, -p, -R, -S, -s) and cannot be used in conjunction with
-options -g or -G.
-
-*-e*::
- Use extended format to output Monte-Carlo results. Can only be used in
- conjunction with options that compute a single Monte-Carlo (-F, -m, -P, -p,
- or -s without options -g or -G).
-
-*-g*::
- Compute the Green function at the specified time and write it in ASCII to
- _standard output_.
-+
-This option can only be used in conjunction with one these options: -p, -P,
--m, -s and cannot be used in conjunction with option -D.
-
-*-G* _file_name_[,__file_name__]::
- Compute the Green function at the specified time and write it to a binary
- file. If a second file name is provided, information on heat paths' ends
- is also written in this second file in ascii csv format.
-+
-This option can only be used in conjunction with one these options: -p, -P,
--m, -s and cannot be used in conjunction with option -D.
-+
-The resulting file can be further used through the *sgreen*(1) command to apply
-different temperature, flux or volumic power values.
-
-*-h*::
- Output short help and exit.
-
-*-n* _samples-count_::
- Number of Monte-Carlo samples. By default *samples-count* is set to
- @STARDIS_ARGS_DEFAULT_SAMPLES_COUNT@.
-
-*-o* _Picard_order_::
- Determine the iteration level used with the Picard method to deal with
- non-linear radiative transfer accross the model.
- By default *Picard_order* is set to @STARDIS_ARGS_DEFAULT_PICARD_ORDER@.
- Note that a Picard order greater than 1 is incompatible both with Green
- computations and models including volumic power sources or non zero flux
- at a boundary.
-
-*-t* _threads-count_::
- Hint on the number of threads to use. By default use as many threads as CPU
- cores.
-
-*-v*::
- Output version information and exit.
-
-*-V* _level_::
- Set the verbosity level. Possible values are *0* (no message), *1* (error
- messages only), *2* (error and warning messages), and *3* (error, warning
- and informative messages). All the messages are written to _standard error_.
- Default verbosity *level* is @STARDIS_ARGS_DEFAULT_VERBOSE_LEVEL@.
-
-*-x* _file_name_::
- Read the provided file and use its content to initialize the random
- generator's internal state. Used in conjunction with the *-X* option, this
- can be used to ensure statistical independence between subsequent
- computations.
-
-*-X* _file_name_::
- Write the random generator's internal state, as it is at the end of the
- computation, to the provided file.
-
-EXAMPLES
---------
-Preprocess the system as described in *scene 5.txt* when intending to compute
-the mean flux on the triangles from the file *edge.stl*, and write its geometry
-in the file *scene.vtk*. Verbosity level is set to *3*:
-
- $ stardis -M "scene 5.txt" -F edge.stl -d -V 3 > scene.vtk
-
-Compute the temperature at the probe point *0, 0.5, 0* at steady state. The
-system is read from the file *model.txt* and the number of samples is set to
-*1000000*:
-
- $ stardis -M model.txt -p 0,0.5,0 -n 1000000
-
-Compute the mean temperature in the medium *med05* at *t=100* s. The system is
-read from the file *model.txt* and the result is output with extended format:
-
- $ stardis -M model.txt -m med05,100 -e
-
-Compute the temperature at the probe point *0, 0, 0* at *t=2500*. The system is
-read from the 2 files *media.txt* and *bounds.txt* and the number of samples is
-set to *1000000*:
-
- $ stardis -M media.txt -M bounds.txt -p 0,0,0,2500 -n 1000000
-
-Compute the mean temperature at the probe point *1, 2.5, 0* over the *50, 5000*
-time range. The system is read from the file *model.txt*:
-
- $ stardis -M model.txt -p 1,2.5,0,50,5000
-
-Compute 3 probe temperatures, ensuring statistical independence:
-
- $ stardis -M model.txt -p 1,1.5,0,50,5000 -Xstate1
- $ stardis -M model.txt -p 1,2.5,0,50,5000 -xstate1 -Xstate2
- $ stardis -M model.txt -p 1,3.5,0,50,5000 -xstate2
-
-
-Use mpirun(1) to launch stardis on several hosts defined in the my_hosts file.
-Render the system as described in *scene.txt* with default settings:
-
- $ mpirun --hostfile my_hosts stardis -M scene.txt -R :
-
-Render the system as described in *scn.txt* at *t=100*, *spp=2*,
-*img=800x600*, with output format *fmt=ht* and all other settings set to their
-default values. The output is redirected to the *img.ht* file. If the
-computation encounters erroneous heat paths, they will be dumped to VTK files
-named err_path_00000000.vtk, err_path_00000001.vtk, etc. The image file is then
-post-processed using *htpp*(1) with default settings to obtain a png file.
-
- $ stardis -M scn.txt -R t=100:spp=2:img=800x600:fmt=ht \
- -D error,err_path_ > img.ht
- $ htpp -o img.pgn -v -m default img.ht
-
-Compute the Green function that computes the temperature at the probe point
-*0, 0, 0* at steady state. The system is read from the file *model.txt* and
-the Green function is written to the *probe.green file* and the heat paths'
-ends are written to the *probe_ends.csv* file:
-
- $ stardis -M model.txt -p 0,0,0 -G probe.green,probe_ends.csv
-
-COPYRIGHT
----------
-Copyright © 2018-2024 |Méso|Star>. License GPLv3+: GNU GPL
-version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software.
-You are free to change and redistribute it. There is NO WARRANTY, to the extent
-permitted by law.
-
-SEE ALSO
---------
-*stardis-input*(5),
-*stardis-output*(5),
-*sgreen*(1),
-*htpp*(1)
-*htrdr-image*(5)
-*mpirun(1)*
diff --git a/stardis-green-types/stardis-green-types-config-version.cmake.in b/stardis-green-types/stardis-green-types-config-version.cmake.in
@@ -1,22 +0,0 @@
-# Copyright (C) 2018-2024 |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(PACKAGE_VERSION @STARDIS_GREEN_TYPES_VERSION@)
-
-IF (${PACKAGE_FIND_VERSION_MAJOR} EQUAL @STARDIS_GREEN_TYPES_VERSION@)
- SET(PACKAGE_VERSION_COMPATIBLE 1)
-ELSE()
- SET(PACKAGE_VERSION_UNSUITABLE 1)
-ENDIF()
diff --git a/stardis-green-types/stardis-green-types-config.cmake b/stardis-green-types/stardis-green-types-config.cmake
@@ -1,28 +0,0 @@
-# Copyright (C) 2018-2023 |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/>.
-
-cmake_minimum_required(VERSION 3.1)
-include(SelectLibraryConfigurations)
-
-# Try to find stardis-green-types
-
-# Look for stardis-green-types header
-find_path(SGT_INCLUDE_DIR stardis/stardis-green-types.h)
-
-# Check the package
-include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(stardis-green-types DEFAULT_MSG
- SGT_INCLUDE_DIR)
-
diff --git a/stardis-prog-properties/stardis-prog-properties-config-version.cmake.in b/stardis-prog-properties/stardis-prog-properties-config-version.cmake.in
@@ -1,22 +0,0 @@
-# Copyright (C) 2018-2024 |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(PACKAGE_VERSION @STARDIS_PROG_PROPERTIES_VERSION@)
-
-IF (${PACKAGE_FIND_VERSION_MAJOR} EQUAL @STARDIS_PROG_PROPERTIES_VERSION@)
- SET(PACKAGE_VERSION_COMPATIBLE 1)
-ELSE()
- SET(PACKAGE_VERSION_UNSUITABLE 1)
-ENDIF()
diff --git a/stardis-prog-properties/stardis-prog-properties-config.cmake b/stardis-prog-properties/stardis-prog-properties-config.cmake
@@ -1,28 +0,0 @@
-# Copyright (C) 2018-2023 |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/>.
-
-cmake_minimum_required(VERSION 3.1)
-include(SelectLibraryConfigurations)
-
-# Try to find stardis-prog-properties
-
-# Look for stardis-prog-properties header
-find_path(SPROG_INCLUDE_DIR stardis/stardis-prog-properties.h)
-
-# Check the package
-include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(stardis-prog-properties DEFAULT_MSG
- SPROG_INCLUDE_DIR)
-