Commit 4750c572 authored by steffen.schotthoefer's avatar steffen.schotthoefer
Browse files

added FileNotFound Error message. Added option to specify data directory....

added FileNotFound Error message. Added option to specify data directory. Added checks if datafiles exists in ICRU reader class


Former-commit-id: 95321051
parent 225abf3b
......@@ -7,17 +7,17 @@ unit_tests:
stage: unit_tests
script:
- git submodule update --init --recursive
- cd code/build/release
- cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ../../
- cd code/build/debug
- cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON ../../
- ninja
- OMP_NUM_THREADS=1 ./unit_tests -r junit > unit_tests_report.xml
- gcovr -e ../../ext/ -e ../../tests/ -r ../../
artifacts:
when: always
paths:
- code/build/release/unit_tests_report.xml
- code/build/debug/unit_tests_report.xml
reports:
junit: code/build/release/unit_tests_report.xml
junit: code/build/debug/unit_tests_report.xml
timeout: 4h
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH == "develop"
......
......@@ -10,3 +10,6 @@
[submodule "code/ext/parmetis"]
path = code/ext/parmetis
url = https://github.com/slydex/parmetis.git
[submodule "code/ext/neuralEntropy"]
path = code/ext/neuralEntropy
url = https://github.com/ScSteffen/neuralEntropy.git
FROM ubuntu:20.04
ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" \
PYTHONPATH=/usr/local/gmsh/lib:$PYTHONPATH \
PATH=/opt/conda/bin:/usr/local/gmsh/bin:$PATH
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq \
gcc \
g++ \
libopenmpi-dev \
openmpi-bin \
libblas-dev \
liblapack-dev \
git \
make \
ninja-build \
cmake \
wget \
ssh \
libssl-dev \
libxt-dev \
libgl1-mesa-dev \
libglu1 \
libxrender1 \
libxcursor-dev \
libxft-dev \
libxinerama-dev\
python3\
python3-pip\
vim
RUN pip3 install tensorflow==2.2.2\
pygmsh==6.1.1 Pillow pydicom gcovr \
matplotlib\
scipy
RUN cd /usr/local \
&& wget -nc --quiet http://gmsh.info/bin/Linux/gmsh-4.7.0-Linux64-sdk.tgz \
&& tar xzf gmsh-4.7.0-Linux64-sdk.tgz \
&& mv gmsh-4.7.0-Linux64-sdk gmsh \
&& rm gmsh-4.7.0-Linux64-sdk.tgz
RUN wget -nc --no-check-certificate --quiet https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz \
&& tar xzf VTK-8.2.0.tar.gz \
&& mkdir VTK-8.2.0/build \
&& cd VTK-8.2.0/build \
&& cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_DOCUMENTATION=OFF -DBUILD_TESTING=OFF ../ \
&& ninja \
&& ninja install > /dev/null \
&& cd - \
&& rm -rf VTK-*
RUN apt-get clean \
&& apt-get autoremove --purge \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /home
......@@ -20,6 +20,11 @@ TBD
- VTK
- git
- ninja or make
- gmsh
### Python dependencies
- pygmsh version 6.1.1 'pip install pygmsh==6.1.1' (note that newer versions are not yet supported)
### Obtain submodules
Note that an **active internet connection is required for the first build** in order to download the latest versions of the required submodules!
......@@ -98,7 +103,7 @@ Append `HINTS VTK_INSTALL_DIR` to the `find_package( VTK ... )` line in the CMak
find_package( VTK REQUIRED COMPONENTS vtkIOGeometry vtkFiltersCore HINTS ~/VTK-install )
```
Compile it
Compile it (make sure you use GCC as compiler: module load compiler/gnu/10.2)
```bash
module load devel/cmake/3.16
module load compiler/gnu/9.2
......@@ -164,6 +169,8 @@ Please stick to the following coding style for easier code readability:
- class variables start with an underscore and lowercase letters e.g. `_foo`
- functions start with a capital letter e.g. `GetSettings()`
- any variable/function names have capital letters at each individual word e.g. `GetAllCellsAdjacentTo(Cell i)`
- Abstract base classes for inheritance structures end with the suffix "Base" e.g. QuadratureBase, whith child classes
QGaussLegendre or QProduct
Please also use the provided `code/.clang-format` style format to format your code before pushing your latest commits.
Some editors offer to automatically apply the style format upon saving a file (e.g. `Qtcreator`).
cmake_minimum_required( VERSION 3.12.4 )
project( KiT-RT VERSION 0.1.0 LANGUAGES CXX )
### OPTIONS #####################################
option( BUILD_TESTS "builds all available unit tests" OFF )
option( BUILD_GUI "additionally builds a user interface" OFF )
#################################################
### COMPILER ####################################
set( CMAKE_CXX_STANDARD 17 )
......@@ -24,7 +28,7 @@ include_directories( ${LAPACK_INCLUDE_DIR} )
find_package( BLAS )
find_package( VTK REQUIRED COMPONENTS vtkIOGeometry vtkFiltersCore )
find_package( VTK COMPONENTS vtkIOGeometry vtkFiltersCore REQUIRED )
find_package( Python3 COMPONENTS Interpreter Development NumPy REQUIRED )
include_directories( ${Python3_INCLUDE_DIRS} ${Python3_NumPy_INCLUDE_DIRS} )
......@@ -70,6 +74,13 @@ add_compile_definitions( GIT_HASH="${GIT_HASH}" )
### BUILD KIT-RT ################################
file( GLOB_RECURSE SRCS RELATIVE ${CMAKE_SOURCE_DIR} "src/*.cpp" "include/*.h" )
set( EXCLUDE_DIR "/gui/" )
foreach( TMP_PATH ${SRCS} )
string( FIND ${TMP_PATH} ${EXCLUDE_DIR} EXCLUDE_DIR_FOUND )
if( NOT ${EXCLUDE_DIR_FOUND} EQUAL -1 )
list( REMOVE_ITEM SRCS ${TMP_PATH} )
endif()
endforeach( TMP_PATH )
include_directories( ${CMAKE_SOURCE_DIR}/include )
add_executable( ${CMAKE_PROJECT_NAME} ${SRCS} ${EXT_SRCS} )
target_link_libraries( ${CMAKE_PROJECT_NAME} ${CORE_LIBRARIES} )
......@@ -81,26 +92,49 @@ target_compile_options( ${CMAKE_PROJECT_NAME} PUBLIC "$<$<CONFIG:RELEASE>:${KITR
### BUILD UNIT TESTS ############################
include( CTest )
set( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/ext/Catch2/contrib ${CMAKE_MODULE_PATH} )
include( Catch )
set( CATCH_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/ext/Catch2/single_include/catch2 )
add_compile_definitions( BUILD_TESTING )
add_compile_definitions( TESTS_PATH="${CMAKE_SOURCE_DIR}/tests/" )
add_library( Catch INTERFACE )
target_include_directories( Catch INTERFACE ${CATCH_INCLUDE_DIR} )
file( GLOB_RECURSE TEST_SRCS RELATIVE ${CMAKE_SOURCE_DIR} "tests/*.cpp" )
list( REMOVE_ITEM SRCS "src/main.cpp" )
add_executable( unit_tests ${TEST_SRCS} ${SRCS} ${EXT_SRCS} )
target_link_libraries( unit_tests Catch ${CORE_LIBRARIES} )
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:DEBUG>:${KITRT_DEBUG_OPTIONS}>" )
if( CMAKE_COMPILER_IS_GNUCXX )
set( CODE_COVERAGE_OPTIONS --coverage -g -O0 -w )
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:DEBUG>:${CODE_COVERAGE_OPTIONS}>" )
target_link_libraries( unit_tests Catch gcov )
if( BUILD_TESTS )
include( CTest )
set( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/ext/Catch2/contrib ${CMAKE_MODULE_PATH} )
include( Catch )
set( CATCH_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/ext/Catch2/single_include/catch2 )
add_library( Catch INTERFACE )
target_include_directories( Catch INTERFACE ${CATCH_INCLUDE_DIR} )
file( GLOB_RECURSE TEST_SRCS RELATIVE ${CMAKE_SOURCE_DIR} "tests/*.cpp" )
list( REMOVE_ITEM SRCS "src/main.cpp" )
add_executable( unit_tests ${TEST_SRCS} ${SRCS} ${EXT_SRCS} )
target_compile_definitions( unit_tests PUBLIC BUILD_TESTING )
target_compile_definitions( unit_tests PUBLIC TESTS_PATH="${CMAKE_SOURCE_DIR}/tests/" )
target_link_libraries( unit_tests Catch ${CORE_LIBRARIES} )
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:DEBUG>:${KITRT_DEBUG_OPTIONS}>" )
if( CMAKE_COMPILER_IS_GNUCXX )
set( CODE_COVERAGE_OPTIONS --coverage -g -O0 -w )
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:DEBUG>:${CODE_COVERAGE_OPTIONS}>" )
target_link_libraries( unit_tests Catch gcov )
endif()
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:RELWITHDEBINFO>:${KITRT_RELWITHDEBINFO_OPTIONS}>" )
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:RELEASE>:${KITRT_RELEASE_OPTIONS}>" )
catch_discover_tests( unit_tests )
endif()
#################################################
### BUILD GUI ###################################
if( BUILD_GUI )
find_package( Qt5 COMPONENTS Core Widgets Gui OpenGL REQUIRED )
find_package( VTK COMPONENTS vtkGUISupportQt vtkInteractionStyle vtkInteractionWidgets vtkRenderingAnnotation vtkRenderingCore vtkRenderingFreeType vtkRenderingOpenGL2 REQUIRED )
include_directories( ${CMAKE_SOURCE_DIR}/include/gui )
file( GLOB_RECURSE GUI_SRCS RELATIVE ${CMAKE_SOURCE_DIR} "src/gui/*" )
file( GLOB_RECURSE GUI_INCL RELATIVE ${CMAKE_SOURCE_DIR} "include/gui/*" )
add_executable( ${CMAKE_PROJECT_NAME}_gui ${SRCS} ${EXT_SRCS} ${GUI_SRCS} ${GUI_INCL})
target_compile_definitions( ${CMAKE_PROJECT_NAME}_gui PUBLIC BUILD_GUI )
set_target_properties( ${CMAKE_PROJECT_NAME}_gui PROPERTIES AUTOMOC ON )
set_target_properties( ${CMAKE_PROJECT_NAME}_gui PROPERTIES AUTOUIC ON )
set_target_properties( ${CMAKE_PROJECT_NAME}_gui PROPERTIES AUTORCC ON )
set( GUI_LIBRARIES Qt5::Core Qt5::Widgets Qt5::Gui Qt5::OpenGL ${VTK_LIBRARIES} )
target_link_libraries( ${CMAKE_PROJECT_NAME}_gui ${CORE_LIBRARIES} ${GUI_LIBRARIES} )
set_target_properties( ${CMAKE_PROJECT_NAME}_gui PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin" )
target_compile_options( ${CMAKE_PROJECT_NAME}_gui PUBLIC "$<$<CONFIG:DEBUG>:${KITRT_DEBUG_OPTIONS}>" )
target_compile_options( ${CMAKE_PROJECT_NAME}_gui PUBLIC "$<$<CONFIG:RELWITHDEBINFO>:${KITRT_RELWITHDEBINFO_OPTIONS}>" )
target_compile_options( ${CMAKE_PROJECT_NAME}_gui PUBLIC "$<$<CONFIG:RELEASE>:${KITRT_RELEASE_OPTIONS}>" )
endif()
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:RELWITHDEBINFO>:${KITRT_RELWITHDEBINFO_OPTIONS}>" )
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:RELEASE>:${KITRT_RELEASE_OPTIONS}>" )
catch_discover_tests( unit_tests )
enable_testing()
#################################################
Subproject commit ff349a50bfc6214b4081f4ca63c7de35e2162f60
Subproject commit 0e9bae1cdb5d7bcd967bcab10539805cc3bccb32
blaze @ 69e2fe55
Subproject commit 0380370f0626de2ad0ec7ea815803e22bbf6b42e
Subproject commit 69e2fe554e72d90efc39ceec72d8cbddf88802a8
Subproject commit 54f38c0a6154004efa2f8cad4737d127f6dcde59
Subproject commit cbe9448650176797739dbab13961ef4c07f4290f
Subproject commit 83b9149930f392d7797b54fe97a66ab3f2120671
/*!
* @file config.h
* @brief Class to handle all options and their pre and postprocessing.
* @brief: Class to handle all options and their pre and postprocessing.
* DO NOT CREATE SETTERS FOR THIS CLASS! ALL OPTIONS ARE CONSTANT (after SetPostprocessing).
*
* @author S. Schotthöfer
*
* Disclaimer: This class structure was copied and modifed with open source permission from SU2 v7.0.3 https://su2code.github.io/
* Disclaimer: This class structure was copied and (heavily) modifed with open source permission from SU2 v7.0.3 https://su2code.github.io/
*/
#ifndef CONFIG_H
......@@ -48,7 +50,17 @@ class Config
unsigned _nQuadPoints;
// Mesh
unsigned _nCells;
unsigned _nCells; /*!< @brief: Number of cells in the mesh */
unsigned short _dim; /*!< @brief: spatial dimensionality of the mesh/test case */
// Boundary Conditions
/*!< @brief List of all Pairs (marker, BOUNDARY_TYPE), e.g. (farfield,DIRICHLET).
Each Boundary Conditions must have an entry in enum BOUNDARY_TYPE*/
std::vector<std::pair<std::string, BOUNDARY_TYPE>> _boundaries;
unsigned short _nMarkerDirichlet; /*!< @brief Number of Dirichlet BC markers. Enum entry: DIRICHLET */
unsigned short _nMarkerNeumann; /*!< @brief Number of Neumann BC markers. Enum entry: Neumann */
std::vector<std::string> _MarkerDirichlet; /*!< @brief Dirichlet BC markers. */
std::vector<std::string> _MarkerNeumann; /*!< @brief Neumann BC markers. */
// Solver
double _CFL; /*!< @brief CFL Number for Solver*/
......@@ -59,38 +71,40 @@ class Config
unsigned short _maxMomentDegree; /*!< @brief Maximal Order of Moments for PN and MN Solver */
unsigned short _reconsOrder; /*!< @brief Spatial Order of Accuracy for Solver */
// Linesource
double _sigmaS; /*!< @brief Scattering coeffient for Linesource test case */
/*!< @brief If true, very low entries (10^-10 or smaller) of the flux matrices will be set to zero,
* to improve floating point accuracy */
bool _cleanFluxMat;
bool _allGaussPts; /*!< @brief If true, the SN Solver uses all Gauss pts in the quadrature */
bool _csd; /*!< @brief If true, continuous slowing down approximation will be used */
bool _csd; /*!< @brief If true, continuous slowing down approximation will be used */
std::string _hydrogenFile; /*!< @brief Name of hydrogen cross section file */
std::string _oxygenFile; /*!< @brief Name of oxygen cross section file */
// --- Problems ---
// Boundary Conditions
/*!< @brief List of all Pairs (marker, BOUNDARY_TYPE), e.g. (farfield,DIRICHLET).
Each Boundary Conditions must have an entry in enum BOUNDARY_TYPE*/
std::vector<std::pair<std::string, BOUNDARY_TYPE>> _boundaries;
unsigned short _nMarkerDirichlet; /*!< @brief Number of Dirichlet BC markers. Enum entry: DIRICHLET */
unsigned short _nMarkerNeumann; /*!< @brief Number of Neumann BC markers. Enum entry: Neumann */
std::vector<std::string> _MarkerDirichlet; /*!< @brief Dirichlet BC markers. */
std::vector<std::string> _MarkerNeumann; /*!< @brief Neumann BC markers. */
// Linesource
double _sigmaS; /*!< @brief Scattering coeffient for Linesource test case */
// Database ICRU
std::string _dataDir; /*!< @brief material directory */
// ElectronRT
std::string _hydrogenFile; /*!< @brief Name of hydrogen cross section file path*/
std::string _oxygenFile; /*!< @brief Name of oxygen cross section file path */
std::string _stoppingPowerFile; /*!< @brief Name of stopping power file path */
// Scattering Kernel
KERNEL_NAME _kernelName; /*!< @brief Scattering Kernel Name*/
// Spherical Basis
SPHERICAL_BASIS_NAME _sphericalBasisName; /*!< @brief: Name of the basis on the unit sphere */
// Optimizer
OPTIMIZER_NAME _entropyOptimizerName; /*!< @brief Choice of optimizer */
double _optimizerEpsilon; /*!< @brief termination criterion epsilon for Newton Optmizer */
unsigned short _newtonIter; /*!< @brief Maximal Number of newton iterations */
unsigned long _newtonIter; /*!< @brief Maximal Number of newton iterations */
double _newtonStepSize; /*!< @brief Stepsize factor for newton optimizer */
unsigned short _newtonLineSearchIter; /*!< @brief Maximal Number of line search iterations for newton optimizer */
unsigned long _newtonLineSearchIter; /*!< @brief Maximal Number of line search iterations for newton optimizer */
bool _newtonFastMode; /*!< @brief If true, we skip the NewtonOptimizer for quadratic entropy and assign alpha = u */
// NeuralModel
unsigned short _neuralModel; /*!< @brief: Version number of the employed neural model */
// Output Options
unsigned short _nVolumeOutput; /*!< @brief Number of volume outputs */
std::vector<VOLUME_OUTPUT> _volumeOutput; /*!< @brief Output groups for volume output*/
......@@ -104,6 +118,13 @@ class Config
std::vector<SCALAR_OUTPUT> _historyOutput; /*!< @brief Output groups for screen output*/
unsigned short _historyOutputFrequency; /*!< @brief Frequency of screen output*/
// Data Generator Settings
/*!< @brief Check, if data generator mode is active. If yes, no solver is called, but instead the data generator is executed */
bool _dataGeneratorMode;
unsigned long _tainingSetSize; /*!< @brief Size of training data set for data generator */
unsigned long _maxValFirstMoment; /*!< @brief Size of training data set for data generator */
double _boundaryDistanceRealizableSet; /*! @brief Distance of the sampled moments to the boundary of the realizable set */
// --- Parsing Functionality and Initializing of Options ---
/*!
* @brief Set default values for all options not yet set.
......@@ -223,13 +244,18 @@ class Config
*/
// File structure
std::string inline GetCTFile() const { return std::filesystem::path( _ctFile ).lexically_normal(); }
std::string inline GetHydrogenFile() const { return std::filesystem::path( _hydrogenFile ).lexically_normal(); }
std::string inline GetLogDir() const { return std::filesystem::path( _logDir ).lexically_normal(); }
std::string inline GetLogFile() const { return std::filesystem::path( _logFileName ).lexically_normal(); }
std::string inline GetMeshFile() const { return std::filesystem::path( _meshFile ).lexically_normal(); }
std::string inline GetOutputDir() const { return std::filesystem::path( _outputDir ).lexically_normal(); }
std::string inline GetOutputFile() const { return std::filesystem::path( _outputFile ).lexically_normal(); }
// Problem Files
std::string inline GetHydrogenFile() const { return std::filesystem::path( _hydrogenFile ).lexically_normal(); }
std::string inline GetOxygenFile() const { return std::filesystem::path( _oxygenFile ).lexically_normal(); }
std::string inline GetStoppingPowerFile() const { return std::filesystem::path( _stoppingPowerFile ).lexically_normal(); }
std::string inline GetDataDir() const { return std::filesystem::path( _dataDir ).lexically_normal(); }
// Quadrature Structure
unsigned GetNQuadPoints() { return _nQuadPoints; }
......@@ -238,6 +264,7 @@ class Config
// Mesh Structure
unsigned GetNCells() { return _nCells; }
unsigned short GetDim() { return _dim; }
// Solver Structure
double inline GetCFL() const { return _CFL; }
......@@ -256,18 +283,23 @@ class Config
// Optimizer
double inline GetNewtonOptimizerEpsilon() const { return _optimizerEpsilon; }
unsigned inline GetNewtonIter() const { return _newtonIter; }
unsigned long inline GetNewtonIter() const { return _newtonIter; }
double inline GetNewtonStepSize() const { return _newtonStepSize; }
unsigned inline GetNewtonMaxLineSearches() const { return _newtonLineSearchIter; }
unsigned long inline GetNewtonMaxLineSearches() const { return _newtonLineSearchIter; }
bool inline GetNewtonFastMode() const { return _newtonFastMode; }
OPTIMIZER_NAME inline GetOptimizerName() const { return _entropyOptimizerName; }
// Neural Closure
unsigned short inline GetNeuralModel() { return _neuralModel; }
// Boundary Conditions
BOUNDARY_TYPE GetBoundaryType( std::string nameMarker ) const; /*! @brief Get Boundary Type of given marker */
// Scattering Kernel
KERNEL_NAME inline GetKernelName() const { return _kernelName; }
// Basis name
SPHERICAL_BASIS_NAME inline GetSphericalBasisName() const { return _sphericalBasisName; }
// Output Structure
std::vector<VOLUME_OUTPUT> inline GetVolumeOutput() { return _volumeOutput; }
unsigned short inline GetNVolumeOutput() { return _nVolumeOutput; }
......@@ -280,10 +312,17 @@ class Config
std::vector<SCALAR_OUTPUT> inline GetHistoryOutput() { return _historyOutput; }
unsigned short inline GetNHistoryOutput() { return _nHistoryOutput; }
unsigned short inline GetHistoryOutputFrequency() { return _historyOutputFrequency; }
// ---- Setters for option structure
// Data generator
bool inline GetDataGeneratorMode() { return _dataGeneratorMode; }
unsigned long inline GetTrainingDataSetSize() { return _tainingSetSize; }
unsigned long inline GetMaxValFirstMoment() { return _maxValFirstMoment; }
double GetBoundaryDistanceRealizableSet() { return _boundaryDistanceRealizableSet; }
// ---- Setters for option structure
// This section is dangerous
// Quadrature Structure
void SetNQuadPoints( unsigned nq ) { _nQuadPoints = nq; }
void SetNQuadPoints( unsigned nq ) { _nQuadPoints = nq; } /*! @brief Never change the nq! This is only for the test framework. */
void SetQuadName( QUAD_NAME quadName ) { _quadName = quadName; } /*! @brief Never change the quadName! This is only for the test framework. */
void SetQuadOrder( unsigned quadOrder ) { _quadOrder = quadOrder; } /*! @brief Never change the quadOrder! This is only for the test framework. */
void SetSNAllGaussPts( bool useall ) { _allGaussPts = useall; } /*! @brief Never change the this! This is only for the test framework. */
......
/*!
/*!
* \file GlobalConstants.h
* \brief All global defined (physical) constants, enums etc
* \author <blank>
......@@ -55,7 +55,16 @@ enum BOUNDARY_TYPE { DIRICHLET, NEUMANN, NONE, INVALID };
/*! @brief Enum for all currently available quadratures in rtsn.
* Option enums are written in capital letters with underscores as spaces (e.g option "time integration" has option enum "TIME_INTEGRATION")
*/
enum QUAD_NAME { QUAD_MonteCarlo, QUAD_GaussLegendreTensorized, QUAD_GaussLegendre1D, QUAD_LevelSymmetric, QUAD_Lebedev, QUAD_LDFESA, QUAD_Product };
enum QUAD_NAME {
QUAD_MonteCarlo,
QUAD_GaussLegendreTensorized,
QUAD_GaussLegendre1D,
QUAD_LevelSymmetric,
QUAD_Lebedev,
QUAD_LDFESA,
QUAD_Product,
QUAD_GaussChebyshev1D
};
/*! @brief Conversion Map String to enum
*/
......@@ -77,7 +86,8 @@ enum PROBLEM_NAME {
PROBLEM_LineSource_Pseudo_1D_Physics,
PROBLEM_AirCavity,
PROBLEM_MuscleBoneLung,
PROBLEM_Phantom2D
PROBLEM_Phantom2D,
PROBLEM_IsotropicSource_2D
};
inline std::map<std::string, PROBLEM_NAME> Problem_Map{ { "LINESOURCE", PROBLEM_LineSource },
......@@ -87,6 +97,7 @@ inline std::map<std::string, PROBLEM_NAME> Problem_Map{ { "LINESOURCE", PROBLEM_
{ "AIRCAVITY", PROBLEM_AirCavity },
{ "MUSCLEBONELUNG", PROBLEM_MuscleBoneLung },
{ "PHANTOM2D", PROBLEM_Phantom2D },
{ "ISOTROPICPOINTSOURCE2D", PROBLEM_IsotropicSource_2D },
{ "LINESOURCE_PSEUDO_1D", PROBLEM_LineSource_Pseudo_1D },
{ "LINESOURCE_PSEUDO_1D_PHYSICS", PROBLEM_LineSource_Pseudo_1D_Physics } };
......@@ -130,10 +141,10 @@ enum OPTIMIZER_NAME { NEWTON, ML };
inline std::map<std::string, OPTIMIZER_NAME> Optimizer_Map{ { "NEWTON", NEWTON }, { "ML", ML } };
// Volume output
enum VOLUME_OUTPUT { ANALYTIC, MINIMAL, MOMENTS, DUAL_MOMENTS, DOSE };
enum VOLUME_OUTPUT { ANALYTIC, MINIMAL, MOMENTS, DUAL_MOMENTS, MEDICAL };
inline std::map<std::string, VOLUME_OUTPUT> VolOutput_Map{
{ "ANALYTIC", ANALYTIC }, { "MINIMAL", MINIMAL }, { "MOMENTS", MOMENTS }, { "DUAL_MOMENTS", DUAL_MOMENTS }, { "DOSE", DOSE } };
{ "ANALYTIC", ANALYTIC }, { "MINIMAL", MINIMAL }, { "MOMENTS", MOMENTS }, { "DUAL_MOMENTS", DUAL_MOMENTS }, { "MEDICAL", MEDICAL } };
// Scalar output
enum SCALAR_OUTPUT { ITER, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT };
......@@ -141,4 +152,10 @@ enum SCALAR_OUTPUT { ITER, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT };
inline std::map<std::string, SCALAR_OUTPUT> ScalarOutput_Map{
{ "ITER", ITER }, { "MASS", MASS }, { "RMS_FLUX", RMS_FLUX }, { "VTK_OUTPUT", VTK_OUTPUT }, { "CSV_OUTPUT", CSV_OUTPUT } };
// Spherical Basis Name
enum SPHERICAL_BASIS_NAME { SPHERICAL_HARMONICS, SPHERICAL_MONOMIALS };
inline std::map<std::string, SPHERICAL_BASIS_NAME> SphericalBasis_Map{ { "SPHERICAL_HARMONICS", SPHERICAL_HARMONICS },
{ "SPHERICAL_MONOMIALS", SPHERICAL_MONOMIALS } };
#endif // GLOBAL_CONSTANTS_H
......@@ -22,7 +22,7 @@ class OptionBase
std::vector<std::string> _value; /*! @brief: String name of the option */
public:
OptionBase(){};
OptionBase() {}
virtual ~OptionBase() = 0;
virtual std::string SetValue( std::vector<std::string> value ); /*! @brief: Set string name of the option */
......@@ -45,7 +45,7 @@ class OptionDouble : public OptionBase
public:
OptionDouble( std::string option_field_name, double& option_field, double default_value );
~OptionDouble() override{};
~OptionDouble() override {}
std::string SetValue( std::vector<std::string> option_value ) override;
......@@ -61,7 +61,7 @@ class OptionString : public OptionBase
public:
OptionString( std::string option_field_name, std::string& option_field, std::string default_value );
~OptionString() override{};
~OptionString() override {}
std::string SetValue( std::vector<std::string> option_value ) override;
......@@ -77,7 +77,7 @@ class OptionInt : public OptionBase
public:
OptionInt( std::string option_field_name, int& option_field, int default_value );
~OptionInt() override{};
~OptionInt() override {}
std::string SetValue( std::vector<std::string> option_value ) override;
......@@ -93,7 +93,7 @@ class OptionULong : public OptionBase
public:
OptionULong( std::string option_field_name, unsigned long& option_field, unsigned long default_value );
~OptionULong() override{};
~OptionULong() override {}
std::string SetValue( std::vector<std::string> option_value ) override;
......@@ -109,7 +109,7 @@ class OptionUShort : public OptionBase
public:
OptionUShort( std::string option_field_name, unsigned short& option_field, unsigned short default_value );
~OptionUShort() override{};
~OptionUShort() override {}
std::string SetValue( std::vector<std::string> option_value ) override;
......@@ -125,7 +125,7 @@ class OptionLong : public OptionBase
public:
OptionLong( std::string option_field_name, long& option_field, long default_value );
~OptionLong() override{};
~OptionLong() override {}
std::string SetValue( std::vector<std::string> option_value ) override;
......@@ -141,7 +141,7 @@ class OptionBool : public OptionBase
public:
OptionBool( std::string option_field_name, bool& option_field, bool default_value );
~OptionBool() override{};
~OptionBool() override {}
std::string SetValue( std::vector<std::string> option_value ) override;
......@@ -157,7 +157,7 @@ class OptionStringList : public OptionBase
public:
OptionStringList( std::string option_field_name, unsigned short& list_size, std::vector<std::string>& option_field );
~OptionStringList() override{};
~OptionStringList() override {}
std::string SetValue( std::vector<std::string> option_value ) override;
......
#ifndef CMAP_H
#define CMAP_H
#include "common/typedef.h"
const Matrix viridis{ { 0.0, 0.267004, 0.004874, 0.329415 },
{ 0.00392156862745098, 0.26851, 0.009605, 0.335427 },
{ 0.00784313725490196, 0.269944, 0.014625, 0.341379 },
{ 0.011764705882352941, 0.271305, 0.019942, 0.347269 },
{ 0.01568627450980392, 0.272594, 0.025563, 0.353093 },
{ 0.0196078431372549, 0.273809, 0.031497, 0.358853 },
{ 0.023529411764705882, 0.274952, 0.037752, 0.364543 },
{ 0.027450980392156862, 0.276022, 0.044167, 0.370164 },
{ 0.03137254901960784, 0.277018, 0.050344, 0.375715 },
{ 0.03529411764705882, 0.277941, 0.056324, 0.381191 },
{ 0.0392156862745098, 0.278791, 0.062145, 0.386592 },
{ 0.043137254901960784, 0.279566, 0.067836, 0.391917 },
{ 0.047058823529411764, 0.280267, 0.073417, 0.397163 },
{ 0.050980392156862744, 0.280894, 0.078907, 0.402329 },
{ 0.054901960784313725, 0.281446, 0.08432, 0.407414 },
{ 0.058823529411764705, 0.281924, 0.089666, 0.412415 },
{ 0.06274509803921569, 0.282327, 0.094955, 0.417331 },
{ 0.06666666666666667, 0.282656, 0.100196, 0.42216 },
{ 0.07058823529411765, 0.28291, 0.105393, 0.426902 },
{ 0.07450980392156863, 0.283091, 0.110553, 0.431554 },
{ 0.0784313725490196, 0.283197, 0.11568, 0.436115 },
{ 0.08235294117647059, 0.283229, 0.120777, 0.440584 },
{ 0.08627450980392157, 0.283187, 0.125848, 0.44496 },
{ 0.09019607843137255, 0.283072, 0.130895, 0.449241 },
{ 0.09411764705882353, 0.282884, 0.13592, 0.453427 },
{ 0.09803921568627451, 0.282623, 0.140926, 0.457517 },
{ 0.10196078431372549, 0.28229, 0.145912, 0.46151 },
{ 0.10588235294117647, 0.281887, 0.150881, 0.465405 },
{ 0.10980392156862745, 0.281412, 0.155834, 0.469201 },
{ 0.11372549019607843, 0.280868, 0.160771, 0.472899 },
{ 0.11764705882352941, 0.280255, 0.165693, 0.476498 },
{ 0.12156862745098039, 0.279574, 0.170599, 0.479997 },
{ 0.12549019607843137, 0.278826, 0.17549, 0.483397 },
{ 0.12941176470588237, 0.278012, 0.180367, 0.486697 },
{ 0.13333333333333333, 0.277134, 0.185228, 0.489898 },
{ 0.13725490196078433, 0.276194, 0.190074, 0.493001 },
{ 0.1411764705882353, 0.275191, 0.194905, 0.496005 },
{ 0.1450980392156863, 0.274128, 0.199721, 0.498911 },
{ 0.14901960784313725, 0.273006, 0.20452, 0.501721 },
{ 0.15294117647058825, 0.271828, 0.209303, 0.504434 },
{ 0.1568627450980392, 0.270595, 0.214069, 0.507052 },