From 98cf2afaf4a4b216d90708cb4d4ea6cfa198897e Mon Sep 17 00:00:00 2001
From: ralfulrich <ralf.ulrich@kit.edu>
Date: Thu, 7 Jan 2021 02:39:51 +0100
Subject: [PATCH] dimensionless_d must cast to double for some math expressions

---
 CMakeLists.txt                                |  6 --
 .../framework/utility/CorsikaFenvFallback.inl |  4 +-
 .../framework/utility/CorsikaFenvOSX.inl      |  4 +-
 .../tracking/TrackingLeapFrogCurved.inl       |  2 +-
 corsika/framework/core/PhysicalUnits.hpp      |  4 +-
 corsika/framework/random/RNGManager.hpp       |  2 +-
 .../phys => corsika/framework}/units/io.hpp   |  6 +-
 .../framework}/units/io_output.hpp            |  2 +-
 .../framework}/units/io_output_eng.hpp        |  2 +-
 .../framework}/units/io_symbols.hpp           |  2 +-
 .../framework}/units/other_units.hpp          |  2 +-
 .../framework}/units/physical_constants.hpp   |  2 +-
 .../framework}/units/quantity.hpp             | 18 +++++-
 .../framework}/units/quantity_io.hpp          |  2 +-
 .../framework}/units/quantity_io_ampere.hpp   |  2 +-
 .../units/quantity_io_becquerel.hpp           |  2 +-
 .../framework}/units/quantity_io_candela.hpp  |  2 +-
 .../framework}/units/quantity_io_celsius.hpp  |  2 +-
 .../framework}/units/quantity_io_coulomb.hpp  |  2 +-
 .../units/quantity_io_dimensionless.hpp       |  2 +-
 .../units/quantity_io_engineering.hpp         |  2 +-
 .../framework}/units/quantity_io_farad.hpp    |  2 +-
 .../framework}/units/quantity_io_gray.hpp     |  2 +-
 .../framework}/units/quantity_io_henry.hpp    |  2 +-
 .../framework}/units/quantity_io_hertz.hpp    |  2 +-
 .../framework}/units/quantity_io_joule.hpp    |  2 +-
 .../framework}/units/quantity_io_kelvin.hpp   |  2 +-
 .../framework}/units/quantity_io_kilogram.hpp |  2 +-
 .../framework}/units/quantity_io_lumen.hpp    |  2 +-
 .../framework}/units/quantity_io_lux.hpp      |  2 +-
 .../framework}/units/quantity_io_meter.hpp    |  2 +-
 .../framework}/units/quantity_io_mole.hpp     |  2 +-
 .../framework}/units/quantity_io_newton.hpp   |  2 +-
 .../framework}/units/quantity_io_ohm.hpp      |  2 +-
 .../framework}/units/quantity_io_pascal.hpp   |  2 +-
 .../framework}/units/quantity_io_radian.hpp   |  2 +-
 .../framework}/units/quantity_io_second.hpp   |  2 +-
 .../framework}/units/quantity_io_siemens.hpp  |  2 +-
 .../framework}/units/quantity_io_sievert.hpp  |  2 +-
 .../framework}/units/quantity_io_speed.hpp    |  2 +-
 .../units/quantity_io_steradian.hpp           |  2 +-
 .../framework/units/quantity_io_symbols.hpp   | 57 +++++++++++++++++++
 .../framework}/units/quantity_io_tesla.hpp    |  2 +-
 .../framework}/units/quantity_io_volt.hpp     |  2 +-
 .../framework}/units/quantity_io_watt.hpp     |  2 +-
 .../framework}/units/quantity_io_weber.hpp    |  2 +-
 corsika/framework/utility/CorsikaFenv.hpp     |  4 +-
 corsika/media/FlatExponential.hpp             |  4 +-
 .../phys/units/quantity_io_symbols.hpp        | 57 -------------------
 tests/modules/testParticleCut.cpp             |  4 +-
 50 files changed, 128 insertions(+), 118 deletions(-)
 rename {externals/phys_units/phys => corsika/framework}/units/io.hpp (76%)
 rename {externals/phys_units/phys => corsika/framework}/units/io_output.hpp (91%)
 rename {externals/phys_units/phys => corsika/framework}/units/io_output_eng.hpp (90%)
 rename {externals/phys_units/phys => corsika/framework}/units/io_symbols.hpp (90%)
 rename {externals/phys_units/phys => corsika/framework}/units/other_units.hpp (99%)
 rename {externals/phys_units/phys => corsika/framework}/units/physical_constants.hpp (97%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity.hpp (98%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io.hpp (99%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_ampere.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_becquerel.hpp (95%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_candela.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_celsius.hpp (95%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_coulomb.hpp (95%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_dimensionless.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_engineering.hpp (98%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_farad.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_gray.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_henry.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_hertz.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_joule.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_kelvin.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_kilogram.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_lumen.hpp (95%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_lux.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_meter.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_mole.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_newton.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_ohm.hpp (95%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_pascal.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_radian.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_second.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_siemens.hpp (95%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_sievert.hpp (95%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_speed.hpp (95%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_steradian.hpp (94%)
 create mode 100644 corsika/framework/units/quantity_io_symbols.hpp
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_tesla.hpp (95%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_volt.hpp (95%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_watt.hpp (94%)
 rename {externals/phys_units/phys => corsika/framework}/units/quantity_io_weber.hpp (95%)
 delete mode 100644 externals/phys_units/phys/units/quantity_io_symbols.hpp

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d1ce75dec..022493b44 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -190,11 +190,6 @@ option (WITH_HISTORY "Flag to switch on/off HISTORY" ON)
 set (Python_ADDITIONAL_VERSIONS 3)
 find_package (PythonInterp 3 REQUIRED)
 
-#+++++++++++++++++++++++++++++
-# get phys_units
-#
-find_package (PhysUnits REQUIRED)
-
 
 #+++++++++++++++++++++++++++++
 # CORSIKA8
@@ -211,7 +206,6 @@ target_include_directories (
 target_link_libraries (
   CORSIKA8
   INTERFACE
-  PhysUnits
   CONAN_PKG::eigen
   CONAN_PKG::spdlog
   CONAN_PKG::boost
diff --git a/corsika/detail/framework/utility/CorsikaFenvFallback.inl b/corsika/detail/framework/utility/CorsikaFenvFallback.inl
index 825cd6351..473b6a279 100644
--- a/corsika/detail/framework/utility/CorsikaFenvFallback.inl
+++ b/corsika/detail/framework/utility/CorsikaFenvFallback.inl
@@ -12,7 +12,7 @@
 extern "C" {
 #warning No enabling/disabling of floating point exceptions - platform needs better implementation
 
-inline int feenableexcept(int /*excepts*/) { return -1; }
+inline int feenableexcept(int /*excepts*/) throw() { return -1; }
 
-inline int fedisableexcept(int /*excepts*/) { return -1; }
+inline int fedisableexcept(int /*excepts*/) throw() { return -1; }
 }
diff --git a/corsika/detail/framework/utility/CorsikaFenvOSX.inl b/corsika/detail/framework/utility/CorsikaFenvOSX.inl
index 06b17451c..5b8ed554d 100644
--- a/corsika/detail/framework/utility/CorsikaFenvOSX.inl
+++ b/corsika/detail/framework/utility/CorsikaFenvOSX.inl
@@ -28,7 +28,7 @@
 
 extern "C" {
 
-int feenableexcept(int excepts) {
+int feenableexcept(int excepts) throw() {
   static fenv_t fenv;
   int new_excepts = excepts & FE_ALL_EXCEPT;
   // previous masks
@@ -44,7 +44,7 @@ int feenableexcept(int excepts) {
   return fesetenv(&fenv) ? -1 : old_excepts;
 }
 
-int fedisableexcept(int excepts) {
+int fedisableexcept(int excepts) throw() {
   static fenv_t fenv;
   int new_excepts = excepts & FE_ALL_EXCEPT;
   // all previous masks
diff --git a/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl b/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl
index c57267525..3ddd6d6ce 100644
--- a/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl
+++ b/corsika/detail/modules/tracking/TrackingLeapFrogCurved.inl
@@ -52,7 +52,7 @@ namespace corsika {
       direction =
           direction + direction.cross(magneticfield) * steplength * k; // Second Movement
       position = position + direction * steplength / 2;
-      auto steplength_true = steplength * (1.0 + (double)direction.getNorm()) / 2;
+      auto const steplength_true = steplength * (1 + direction.getNorm()) / 2;
       return std::make_tuple(position, direction.normalized(), steplength_true);
     }
 
diff --git a/corsika/framework/core/PhysicalUnits.hpp b/corsika/framework/core/PhysicalUnits.hpp
index 185a65fce..82373acc9 100644
--- a/corsika/framework/core/PhysicalUnits.hpp
+++ b/corsika/framework/core/PhysicalUnits.hpp
@@ -9,8 +9,8 @@
 #pragma once
 
 // the templated static-unit package we use:
-#include <phys/units/io.hpp>
-#include <phys/units/quantity.hpp>
+#include <corsika/framework/units/io.hpp>
+#include <corsika/framework/units/quantity.hpp>
 
 #include <corsika/framework/core/PhysicalConstants.hpp>
 
diff --git a/corsika/framework/random/RNGManager.hpp b/corsika/framework/random/RNGManager.hpp
index 775d62570..9fb217f24 100644
--- a/corsika/framework/random/RNGManager.hpp
+++ b/corsika/framework/random/RNGManager.hpp
@@ -33,7 +33,7 @@ namespace corsika {
     typedef std::map<std::string, prng_type> streams_type;
     typedef std::map<std::string, std::seed_seq> seeds_type;
 
-    RNGManager(RNGManager const&) = default;
+    RNGManager(RNGManager const&) = delete; // since it is a singleton
 
     RNGManager& operator=(RNGManager const&) = delete;
 
diff --git a/externals/phys_units/phys/units/io.hpp b/corsika/framework/units/io.hpp
similarity index 76%
rename from externals/phys_units/phys/units/io.hpp
rename to corsika/framework/units/io.hpp
index 9bb533842..f250a36af 100644
--- a/externals/phys_units/phys/units/io.hpp
+++ b/corsika/framework/units/io.hpp
@@ -16,9 +16,9 @@
 #ifndef PHYS_UNITS_IO_HPP_INCLUDED
 #define PHYS_UNITS_IO_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
-#include "phys/units/quantity_io_engineering.hpp"
-#include "phys/units/quantity_io_symbols.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io_engineering.hpp"
+#include "corsika/framework/units/quantity_io_symbols.hpp"
 
 #endif // PHYS_UNITS_IO_HPP_INCLUDED
 
diff --git a/externals/phys_units/phys/units/io_output.hpp b/corsika/framework/units/io_output.hpp
similarity index 91%
rename from externals/phys_units/phys/units/io_output.hpp
rename to corsika/framework/units/io_output.hpp
index f9095a92d..c2786ad15 100644
--- a/externals/phys_units/phys/units/io_output.hpp
+++ b/corsika/framework/units/io_output.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_IO_OUTPUT_HPP_INCLUDED
 #define PHYS_UNITS_IO_OUTPUT_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 #endif // PHYS_UNITS_IO_OUTPUT_HPP_INCLUDED
 
diff --git a/externals/phys_units/phys/units/io_output_eng.hpp b/corsika/framework/units/io_output_eng.hpp
similarity index 90%
rename from externals/phys_units/phys/units/io_output_eng.hpp
rename to corsika/framework/units/io_output_eng.hpp
index 47bc2e2e8..d4f709acd 100644
--- a/externals/phys_units/phys/units/io_output_eng.hpp
+++ b/corsika/framework/units/io_output_eng.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_IO_ENG_HPP_INCLUDED
 #define PHYS_UNITS_IO_ENG_HPP_INCLUDED
 
-#include "phys/units/quantity_io_engineering.hpp"
+#include "corsika/framework/units/quantity_io_engineering.hpp"
 
 #endif // PHYS_UNITS_IO_ENG_HPP_INCLUDED
 
diff --git a/externals/phys_units/phys/units/io_symbols.hpp b/corsika/framework/units/io_symbols.hpp
similarity index 90%
rename from externals/phys_units/phys/units/io_symbols.hpp
rename to corsika/framework/units/io_symbols.hpp
index b91666ee9..adeaf7f2a 100644
--- a/externals/phys_units/phys/units/io_symbols.hpp
+++ b/corsika/framework/units/io_symbols.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_IO_SYMBOLS_HPP_INCLUDED
 #define PHYS_UNITS_IO_SYMBOLS_HPP_INCLUDED
 
-#include "phys/units/quantity_io_symbols.hpp"
+#include "corsika/framework/units/quantity_io_symbols.hpp"
 
 #endif // PHYS_UNITS_IO_SYMBOLS_HPP_INCLUDED
 
diff --git a/externals/phys_units/phys/units/other_units.hpp b/corsika/framework/units/other_units.hpp
similarity index 99%
rename from externals/phys_units/phys/units/other_units.hpp
rename to corsika/framework/units/other_units.hpp
index 3e6c35540..4ba5df3d8 100644
--- a/externals/phys_units/phys/units/other_units.hpp
+++ b/corsika/framework/units/other_units.hpp
@@ -29,7 +29,7 @@
 #ifndef PHYS_UNITS_OTHER_UNITS_HPP_INCLUDED
 #define PHYS_UNITS_OTHER_UNITS_HPP_INCLUDED
 
-#include "phys/units/quantity.hpp"
+#include "corsika/framework/units/quantity.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/physical_constants.hpp b/corsika/framework/units/physical_constants.hpp
similarity index 97%
rename from externals/phys_units/phys/units/physical_constants.hpp
rename to corsika/framework/units/physical_constants.hpp
index 131dfb03c..ae098428c 100644
--- a/externals/phys_units/phys/units/physical_constants.hpp
+++ b/corsika/framework/units/physical_constants.hpp
@@ -22,7 +22,7 @@
 #ifndef PHYS_UNITS_PHYSICAL_CONSTANTS_HPP_INCLUDED
 #define PHYS_UNITS_PHYSICAL_CONSTANTS_HPP_INCLUDED
 
-#include "phys/units/quantity.hpp"
+#include "corsika/framework/units/quantity.hpp"
 
 namespace phys {
   namespace units {
diff --git a/externals/phys_units/phys/units/quantity.hpp b/corsika/framework/units/quantity.hpp
similarity index 98%
rename from externals/phys_units/phys/units/quantity.hpp
rename to corsika/framework/units/quantity.hpp
index 970773d59..3e897cfc8 100644
--- a/externals/phys_units/phys/units/quantity.hpp
+++ b/corsika/framework/units/quantity.hpp
@@ -31,6 +31,7 @@
 #include <cmath>
 #include <cstdlib>
 #include <utility> // std::declval
+#include <type_traits>
 
 /// namespace phys.
 
@@ -358,6 +359,21 @@ namespace phys {
       static constexpr quantity zero() { return quantity{value_type(0.0)}; }
       //    static constexpr quantity zero = quantity{ value_type( 0.0 ) };
 
+      /**
+       * We also define "infinity" for each type.
+       *
+       * RU, Do 7. Jan 02:10:18 CET 2021
+       */
+      static constexpr quantity infinity() {
+        return quantity{value_type(std::numeric_limits<value_type>::infinity())};
+      }
+
+      template <typename _dim = dimension_type,
+                std::enable_if_t<std::is_same_v<_dim, dimensionless_d>, bool> = true>
+      operator double() const {
+        return m_value;
+      }
+
     private:
       /**
        * private initializing constructor.
@@ -471,7 +487,7 @@ namespace phys {
 
       template <typename D, typename X, typename Y>
       friend constexpr bool operator>=(quantity<D, X> const& x, quantity<D, Y> const& y);
-    };
+    }; // namespace units
 
     // helper to check whether some type is a quantity
     template <typename TNonQuantityType>
diff --git a/externals/phys_units/phys/units/quantity_io.hpp b/corsika/framework/units/quantity_io.hpp
similarity index 99%
rename from externals/phys_units/phys/units/quantity_io.hpp
rename to corsika/framework/units/quantity_io.hpp
index e94ffab36..db32e911b 100644
--- a/externals/phys_units/phys/units/quantity_io.hpp
+++ b/corsika/framework/units/quantity_io.hpp
@@ -22,7 +22,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_HPP_INCLUDED
 
-#include "phys/units/quantity.hpp"
+#include "corsika/framework/units/quantity.hpp"
 
 #include <algorithm>
 #include <iosfwd>
diff --git a/externals/phys_units/phys/units/quantity_io_ampere.hpp b/corsika/framework/units/quantity_io_ampere.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_ampere.hpp
rename to corsika/framework/units/quantity_io_ampere.hpp
index a21e8c255..98477e1f3 100644
--- a/externals/phys_units/phys/units/quantity_io_ampere.hpp
+++ b/corsika/framework/units/quantity_io_ampere.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_AMPERE_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_AMPERE_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_becquerel.hpp b/corsika/framework/units/quantity_io_becquerel.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_becquerel.hpp
rename to corsika/framework/units/quantity_io_becquerel.hpp
index deaf47c3f..cab345476 100644
--- a/externals/phys_units/phys/units/quantity_io_becquerel.hpp
+++ b/corsika/framework/units/quantity_io_becquerel.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_BECQUEREL_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_BECQUEREL_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_candela.hpp b/corsika/framework/units/quantity_io_candela.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_candela.hpp
rename to corsika/framework/units/quantity_io_candela.hpp
index 8814dbb2d..cdb7694a3 100644
--- a/externals/phys_units/phys/units/quantity_io_candela.hpp
+++ b/corsika/framework/units/quantity_io_candela.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_CANDELA_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_CANDELA_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_celsius.hpp b/corsika/framework/units/quantity_io_celsius.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_celsius.hpp
rename to corsika/framework/units/quantity_io_celsius.hpp
index fc769a4d4..cc145ecdf 100644
--- a/externals/phys_units/phys/units/quantity_io_celsius.hpp
+++ b/corsika/framework/units/quantity_io_celsius.hpp
@@ -17,7 +17,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_CELSIUS_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_CELSIUS_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_coulomb.hpp b/corsika/framework/units/quantity_io_coulomb.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_coulomb.hpp
rename to corsika/framework/units/quantity_io_coulomb.hpp
index 0f140d78d..8fcc4af30 100644
--- a/externals/phys_units/phys/units/quantity_io_coulomb.hpp
+++ b/corsika/framework/units/quantity_io_coulomb.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_COULOMB_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_COULOMB_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_dimensionless.hpp b/corsika/framework/units/quantity_io_dimensionless.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_dimensionless.hpp
rename to corsika/framework/units/quantity_io_dimensionless.hpp
index 1d1ca57e7..254dac4d1 100644
--- a/externals/phys_units/phys/units/quantity_io_dimensionless.hpp
+++ b/corsika/framework/units/quantity_io_dimensionless.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_DIMENSIONLESS_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_DIMENSIONLESS_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_engineering.hpp b/corsika/framework/units/quantity_io_engineering.hpp
similarity index 98%
rename from externals/phys_units/phys/units/quantity_io_engineering.hpp
rename to corsika/framework/units/quantity_io_engineering.hpp
index 0423f5aca..16b4be8f5 100644
--- a/externals/phys_units/phys/units/quantity_io_engineering.hpp
+++ b/corsika/framework/units/quantity_io_engineering.hpp
@@ -23,7 +23,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_ENGINEERING_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_ENGINEERING_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 #include <cmath>
 #include <iomanip>
diff --git a/externals/phys_units/phys/units/quantity_io_farad.hpp b/corsika/framework/units/quantity_io_farad.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_farad.hpp
rename to corsika/framework/units/quantity_io_farad.hpp
index fcd0c445b..aa56f6f6c 100644
--- a/externals/phys_units/phys/units/quantity_io_farad.hpp
+++ b/corsika/framework/units/quantity_io_farad.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_FARAD_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_FARAD_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_gray.hpp b/corsika/framework/units/quantity_io_gray.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_gray.hpp
rename to corsika/framework/units/quantity_io_gray.hpp
index 769110dd9..5e5300b26 100644
--- a/externals/phys_units/phys/units/quantity_io_gray.hpp
+++ b/corsika/framework/units/quantity_io_gray.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_GRAY_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_GRAY_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_henry.hpp b/corsika/framework/units/quantity_io_henry.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_henry.hpp
rename to corsika/framework/units/quantity_io_henry.hpp
index d1e733637..34e8989e0 100644
--- a/externals/phys_units/phys/units/quantity_io_henry.hpp
+++ b/corsika/framework/units/quantity_io_henry.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_HENRY_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_HENRY_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_hertz.hpp b/corsika/framework/units/quantity_io_hertz.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_hertz.hpp
rename to corsika/framework/units/quantity_io_hertz.hpp
index 3695e5435..a3ffff728 100644
--- a/externals/phys_units/phys/units/quantity_io_hertz.hpp
+++ b/corsika/framework/units/quantity_io_hertz.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_HERTZ_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_HERTZ_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_joule.hpp b/corsika/framework/units/quantity_io_joule.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_joule.hpp
rename to corsika/framework/units/quantity_io_joule.hpp
index 33f26c584..817f2fe05 100644
--- a/externals/phys_units/phys/units/quantity_io_joule.hpp
+++ b/corsika/framework/units/quantity_io_joule.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_JOULE_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_JOULE_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_kelvin.hpp b/corsika/framework/units/quantity_io_kelvin.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_kelvin.hpp
rename to corsika/framework/units/quantity_io_kelvin.hpp
index 24dfa48b2..164206219 100644
--- a/externals/phys_units/phys/units/quantity_io_kelvin.hpp
+++ b/corsika/framework/units/quantity_io_kelvin.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_KELVIN_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_KELVIN_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_kilogram.hpp b/corsika/framework/units/quantity_io_kilogram.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_kilogram.hpp
rename to corsika/framework/units/quantity_io_kilogram.hpp
index 375cdc518..fdb333229 100644
--- a/externals/phys_units/phys/units/quantity_io_kilogram.hpp
+++ b/corsika/framework/units/quantity_io_kilogram.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_KILOGRAM_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_KILOGRAM_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_lumen.hpp b/corsika/framework/units/quantity_io_lumen.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_lumen.hpp
rename to corsika/framework/units/quantity_io_lumen.hpp
index f5443b500..f4d53d3fb 100644
--- a/externals/phys_units/phys/units/quantity_io_lumen.hpp
+++ b/corsika/framework/units/quantity_io_lumen.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_LUMEN_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_LUMEN_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_lux.hpp b/corsika/framework/units/quantity_io_lux.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_lux.hpp
rename to corsika/framework/units/quantity_io_lux.hpp
index 98a8d9e4b..cbaf29867 100644
--- a/externals/phys_units/phys/units/quantity_io_lux.hpp
+++ b/corsika/framework/units/quantity_io_lux.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_LUX_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_LUX_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_meter.hpp b/corsika/framework/units/quantity_io_meter.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_meter.hpp
rename to corsika/framework/units/quantity_io_meter.hpp
index 4b537d502..3a5ebd9cf 100644
--- a/externals/phys_units/phys/units/quantity_io_meter.hpp
+++ b/corsika/framework/units/quantity_io_meter.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_METER_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_METER_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_mole.hpp b/corsika/framework/units/quantity_io_mole.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_mole.hpp
rename to corsika/framework/units/quantity_io_mole.hpp
index cd3b184dc..4007e4328 100644
--- a/externals/phys_units/phys/units/quantity_io_mole.hpp
+++ b/corsika/framework/units/quantity_io_mole.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_MOLE_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_MOLE_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_newton.hpp b/corsika/framework/units/quantity_io_newton.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_newton.hpp
rename to corsika/framework/units/quantity_io_newton.hpp
index 4a7505e6c..7599315b5 100644
--- a/externals/phys_units/phys/units/quantity_io_newton.hpp
+++ b/corsika/framework/units/quantity_io_newton.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_NEWTON_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_NEWTON_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_ohm.hpp b/corsika/framework/units/quantity_io_ohm.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_ohm.hpp
rename to corsika/framework/units/quantity_io_ohm.hpp
index 84d33c7eb..2bfce23d0 100644
--- a/externals/phys_units/phys/units/quantity_io_ohm.hpp
+++ b/corsika/framework/units/quantity_io_ohm.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_OHM_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_OHM_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_pascal.hpp b/corsika/framework/units/quantity_io_pascal.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_pascal.hpp
rename to corsika/framework/units/quantity_io_pascal.hpp
index 011e3da40..a8b896836 100644
--- a/externals/phys_units/phys/units/quantity_io_pascal.hpp
+++ b/corsika/framework/units/quantity_io_pascal.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_PASCAL_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_PASCAL_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_radian.hpp b/corsika/framework/units/quantity_io_radian.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_radian.hpp
rename to corsika/framework/units/quantity_io_radian.hpp
index 780e1bcea..56f69f3b1 100644
--- a/externals/phys_units/phys/units/quantity_io_radian.hpp
+++ b/corsika/framework/units/quantity_io_radian.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_RADIAN_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_RADIAN_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_second.hpp b/corsika/framework/units/quantity_io_second.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_second.hpp
rename to corsika/framework/units/quantity_io_second.hpp
index 31edd4dea..6f4b8dca3 100644
--- a/externals/phys_units/phys/units/quantity_io_second.hpp
+++ b/corsika/framework/units/quantity_io_second.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_SECOND_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_SECOND_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_siemens.hpp b/corsika/framework/units/quantity_io_siemens.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_siemens.hpp
rename to corsika/framework/units/quantity_io_siemens.hpp
index 34f145de2..13e9d4e34 100644
--- a/externals/phys_units/phys/units/quantity_io_siemens.hpp
+++ b/corsika/framework/units/quantity_io_siemens.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_SIEMENS_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_SIEMENS_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_sievert.hpp b/corsika/framework/units/quantity_io_sievert.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_sievert.hpp
rename to corsika/framework/units/quantity_io_sievert.hpp
index 971ca1559..ef7c0b994 100644
--- a/externals/phys_units/phys/units/quantity_io_sievert.hpp
+++ b/corsika/framework/units/quantity_io_sievert.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_SIEVERT_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_SIEVERT_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_speed.hpp b/corsika/framework/units/quantity_io_speed.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_speed.hpp
rename to corsika/framework/units/quantity_io_speed.hpp
index 7a6f63181..544cd27f6 100644
--- a/externals/phys_units/phys/units/quantity_io_speed.hpp
+++ b/corsika/framework/units/quantity_io_speed.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_SPEED_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_SPEED_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_steradian.hpp b/corsika/framework/units/quantity_io_steradian.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_steradian.hpp
rename to corsika/framework/units/quantity_io_steradian.hpp
index 87a977e5a..037bd0d30 100644
--- a/externals/phys_units/phys/units/quantity_io_steradian.hpp
+++ b/corsika/framework/units/quantity_io_steradian.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_STERADIAN_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_STERADIAN_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/corsika/framework/units/quantity_io_symbols.hpp b/corsika/framework/units/quantity_io_symbols.hpp
new file mode 100644
index 000000000..7b302dec0
--- /dev/null
+++ b/corsika/framework/units/quantity_io_symbols.hpp
@@ -0,0 +1,57 @@
+/**
+ * \file quantity_io_symbols.hpp
+ *
+ * \brief   load all available unit names and symbols.
+ * \author  Martin Moene
+ * \date    7 September 2013
+ * \since   1.0
+ *
+ * Copyright 2013 Universiteit Leiden. All rights reserved.
+ * This code is provided as-is, with no warrantee of correctness.
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+#ifndef PHYS_UNITS_QUANTITY_IO_SYMBOLS_HPP_INCLUDED
+#define PHYS_UNITS_QUANTITY_IO_SYMBOLS_HPP_INCLUDED
+
+#include "corsika/framework/units/quantity_io_ampere.hpp"
+//prefer Hertz
+//#include "corsika/framework/units/quantity_io_becquerel.hpp"
+#include "corsika/framework/units/quantity_io_candela.hpp"
+//prefer kelvin
+//#include "corsika/framework/units/quantity_io_celsius.hpp"
+#include "corsika/framework/units/quantity_io_coulomb.hpp"
+#include "corsika/framework/units/quantity_io_dimensionless.hpp"
+#include "corsika/framework/units/quantity_io_farad.hpp"
+//prefer sievert
+//#include "corsika/framework/units/quantity_io_gray.hpp"
+#include "corsika/framework/units/quantity_io_joule.hpp"
+#include "corsika/framework/units/quantity_io_henry.hpp"
+#include "corsika/framework/units/quantity_io_hertz.hpp"
+#include "corsika/framework/units/quantity_io_kelvin.hpp"
+#include "corsika/framework/units/quantity_io_kilogram.hpp"
+//prefer Cd base unit
+//#include "corsika/framework/units/quantity_io_lumen.hpp"
+#include "corsika/framework/units/quantity_io_lux.hpp"
+#include "corsika/framework/units/quantity_io_meter.hpp"
+#include "corsika/framework/units/quantity_io_newton.hpp"
+#include "corsika/framework/units/quantity_io_ohm.hpp"
+#include "corsika/framework/units/quantity_io_pascal.hpp"
+#include "corsika/framework/units/quantity_io_radian.hpp"
+#include "corsika/framework/units/quantity_io_second.hpp"
+#include "corsika/framework/units/quantity_io_siemens.hpp"
+#include "corsika/framework/units/quantity_io_sievert.hpp"
+#include "corsika/framework/units/quantity_io_speed.hpp"
+#include "corsika/framework/units/quantity_io_steradian.hpp"
+#include "corsika/framework/units/quantity_io_tesla.hpp"
+#include "corsika/framework/units/quantity_io_volt.hpp"
+#include "corsika/framework/units/quantity_io_watt.hpp"
+#include "corsika/framework/units/quantity_io_weber.hpp"
+
+#endif // PHYS_UNITS_QUANTITY_IO_SYMBOLS_HPP_INCLUDED
+
+/*
+ * end of file
+ */
diff --git a/externals/phys_units/phys/units/quantity_io_tesla.hpp b/corsika/framework/units/quantity_io_tesla.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_tesla.hpp
rename to corsika/framework/units/quantity_io_tesla.hpp
index fc4e651c6..04ea10fcd 100644
--- a/externals/phys_units/phys/units/quantity_io_tesla.hpp
+++ b/corsika/framework/units/quantity_io_tesla.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_TESLA_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_TESLA_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_volt.hpp b/corsika/framework/units/quantity_io_volt.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_volt.hpp
rename to corsika/framework/units/quantity_io_volt.hpp
index baacf3907..0957b513b 100644
--- a/externals/phys_units/phys/units/quantity_io_volt.hpp
+++ b/corsika/framework/units/quantity_io_volt.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_VOLT_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_VOLT_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_watt.hpp b/corsika/framework/units/quantity_io_watt.hpp
similarity index 94%
rename from externals/phys_units/phys/units/quantity_io_watt.hpp
rename to corsika/framework/units/quantity_io_watt.hpp
index 7e616c706..8dd317e60 100644
--- a/externals/phys_units/phys/units/quantity_io_watt.hpp
+++ b/corsika/framework/units/quantity_io_watt.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_WATT_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_WATT_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/externals/phys_units/phys/units/quantity_io_weber.hpp b/corsika/framework/units/quantity_io_weber.hpp
similarity index 95%
rename from externals/phys_units/phys/units/quantity_io_weber.hpp
rename to corsika/framework/units/quantity_io_weber.hpp
index 95ab61675..600c3f8f5 100644
--- a/externals/phys_units/phys/units/quantity_io_weber.hpp
+++ b/corsika/framework/units/quantity_io_weber.hpp
@@ -16,7 +16,7 @@
 #ifndef PHYS_UNITS_QUANTITY_IO_WEBER_HPP_INCLUDED
 #define PHYS_UNITS_QUANTITY_IO_WEBER_HPP_INCLUDED
 
-#include "phys/units/quantity_io.hpp"
+#include "corsika/framework/units/quantity_io.hpp"
 
 namespace phys { namespace units {
 
diff --git a/corsika/framework/utility/CorsikaFenv.hpp b/corsika/framework/utility/CorsikaFenv.hpp
index f3be6389c..13482b988 100644
--- a/corsika/framework/utility/CorsikaFenv.hpp
+++ b/corsika/framework/utility/CorsikaFenv.hpp
@@ -16,8 +16,8 @@
  */
 extern "C" {
 
-int feenableexcept(int excepts);
-int fedisableexcept(int excepts);
+int feenableexcept(int excepts) throw();
+int fedisableexcept(int excepts) throw();
 }
 
 #ifdef CORSIKA_HAS_FEENABLEEXCEPT
diff --git a/corsika/media/FlatExponential.hpp b/corsika/media/FlatExponential.hpp
index 704e69b45..a33c76496 100644
--- a/corsika/media/FlatExponential.hpp
+++ b/corsika/media/FlatExponential.hpp
@@ -42,10 +42,10 @@ namespace corsika {
     NuclearComposition const& getNuclearComposition() const override;
 
     GrammageType getIntegratedGrammage(setup::Trajectory const& line,
-                                       LengthType to) const;
+                                       LengthType to) const override;
 
     LengthType getArclengthFromGrammage(setup::Trajectory const& line,
-                                        GrammageType grammage) const;
+                                        GrammageType grammage) const override;
 
   private:
     DirectionVector const axis_;
diff --git a/externals/phys_units/phys/units/quantity_io_symbols.hpp b/externals/phys_units/phys/units/quantity_io_symbols.hpp
deleted file mode 100644
index 41dc6189b..000000000
--- a/externals/phys_units/phys/units/quantity_io_symbols.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * \file quantity_io_symbols.hpp
- *
- * \brief   load all available unit names and symbols.
- * \author  Martin Moene
- * \date    7 September 2013
- * \since   1.0
- *
- * Copyright 2013 Universiteit Leiden. All rights reserved.
- * This code is provided as-is, with no warrantee of correctness.
- *
- * Distributed under the Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- */
-
-#ifndef PHYS_UNITS_QUANTITY_IO_SYMBOLS_HPP_INCLUDED
-#define PHYS_UNITS_QUANTITY_IO_SYMBOLS_HPP_INCLUDED
-
-#include "phys/units/quantity_io_ampere.hpp"
-//prefer Hertz
-//#include "phys/units/quantity_io_becquerel.hpp"
-#include "phys/units/quantity_io_candela.hpp"
-//prefer kelvin
-//#include "phys/units/quantity_io_celsius.hpp"
-#include "phys/units/quantity_io_coulomb.hpp"
-#include "phys/units/quantity_io_dimensionless.hpp"
-#include "phys/units/quantity_io_farad.hpp"
-//prefer sievert
-//#include "phys/units/quantity_io_gray.hpp"
-#include "phys/units/quantity_io_joule.hpp"
-#include "phys/units/quantity_io_henry.hpp"
-#include "phys/units/quantity_io_hertz.hpp"
-#include "phys/units/quantity_io_kelvin.hpp"
-#include "phys/units/quantity_io_kilogram.hpp"
-//prefer Cd base unit
-//#include "phys/units/quantity_io_lumen.hpp"
-#include "phys/units/quantity_io_lux.hpp"
-#include "phys/units/quantity_io_meter.hpp"
-#include "phys/units/quantity_io_newton.hpp"
-#include "phys/units/quantity_io_ohm.hpp"
-#include "phys/units/quantity_io_pascal.hpp"
-#include "phys/units/quantity_io_radian.hpp"
-#include "phys/units/quantity_io_second.hpp"
-#include "phys/units/quantity_io_siemens.hpp"
-#include "phys/units/quantity_io_sievert.hpp"
-#include "phys/units/quantity_io_speed.hpp"
-#include "phys/units/quantity_io_steradian.hpp"
-#include "phys/units/quantity_io_tesla.hpp"
-#include "phys/units/quantity_io_volt.hpp"
-#include "phys/units/quantity_io_watt.hpp"
-#include "phys/units/quantity_io_weber.hpp"
-
-#endif // PHYS_UNITS_QUANTITY_IO_SYMBOLS_HPP_INCLUDED
-
-/*
- * end of file
- */
diff --git a/tests/modules/testParticleCut.cpp b/tests/modules/testParticleCut.cpp
index 81414e5ec..52907dd21 100644
--- a/tests/modules/testParticleCut.cpp
+++ b/tests/modules/testParticleCut.cpp
@@ -54,7 +54,7 @@ TEST_CASE("ParticleCut", "[processes]") {
         Code::Proton, Eabove, MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
         Point(rootCS, 0_m, 0_m, 0_m), 0_ns));
     // view on secondary particles
-    SecondaryView view(particle);
+    setup::StackView view(particle);
     // ref. to primary particle through the secondary view.
     // only this way the secondary view is populated
     auto projectile = view.getProjectile();
@@ -107,7 +107,7 @@ TEST_CASE("ParticleCut", "[processes]") {
         std::make_tuple(Code::Proton, Eabove,
                         MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}), point0, 0_ns));
     // view on secondary particles
-    SecondaryView view(particle);
+    setup::StackView view(particle);
     // ref. to primary particle through the secondary view.
     // only this way the secondary view is populated
     auto projectile = view.getProjectile();
-- 
GitLab