From fdafec9fa83c5fa0f8d9bfb0192166fdd926378f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= Date: Wed, 8 Dec 2021 15:17:23 -0700 Subject: [PATCH 1/6] Cleaned up linear solvers and preconditioners Mostly file renaming, also removed useless #includes. --- src/TNL/Solvers/Linear/BICGStab.h | 2 +- .../Solvers/Linear/{BICGStab_impl.h => BICGStab.hpp} | 2 +- src/TNL/Solvers/Linear/BICGStabL.h | 2 +- .../Solvers/Linear/{BICGStabL_impl.h => BICGStabL.hpp} | 2 +- src/TNL/Solvers/Linear/CG.h | 4 +--- src/TNL/Solvers/Linear/{CG_impl.h => CG.hpp} | 2 +- src/TNL/Solvers/Linear/GMRES.h | 2 +- src/TNL/Solvers/Linear/{GMRES_impl.h => GMRES.hpp} | 2 +- src/TNL/Solvers/Linear/Jacobi.h | 2 +- src/TNL/Solvers/Linear/LinearSolver.h | 3 +-- src/TNL/Solvers/Linear/Preconditioners/Diagonal.h | 4 +--- .../Preconditioners/{Diagonal_impl.h => Diagonal.hpp} | 2 +- src/TNL/Solvers/Linear/Preconditioners/ILU0.h | 2 +- .../Linear/Preconditioners/{ILU0_impl.h => ILU0.hpp} | 7 +++---- src/TNL/Solvers/Linear/Preconditioners/ILUT.h | 2 +- .../Linear/Preconditioners/{ILUT_impl.h => ILUT.hpp} | 5 ++--- .../Solvers/Linear/Preconditioners/Preconditioner.h | 3 +-- src/TNL/Solvers/Linear/SOR.h | 2 +- src/TNL/Solvers/Linear/{SOR_impl.h => SOR.hpp} | 6 +++--- src/TNL/Solvers/Linear/TFQMR.h | 2 +- src/TNL/Solvers/Linear/{TFQMR_impl.h => TFQMR.hpp} | 2 +- src/TNL/Solvers/Linear/UmfpackWrapper.h | 4 +--- .../{UmfpackWrapper_impl.h => UmfpackWrapper.hpp} | 4 ++-- .../Solvers/Linear/{ => Utils}/LinearResidueGetter.h | 5 ++--- .../LinearResidueGetter.hpp} | 10 +++------- src/TNL/Solvers/Linear/{ => Utils}/Traits.h | 0 .../{Preconditioners => Utils}/TriangularSolve.h | 2 -- 27 files changed, 34 insertions(+), 51 deletions(-) rename src/TNL/Solvers/Linear/{BICGStab_impl.h => BICGStab.hpp} (98%) rename src/TNL/Solvers/Linear/{BICGStabL_impl.h => BICGStabL.hpp} (99%) rename src/TNL/Solvers/Linear/{CG_impl.h => CG.hpp} (98%) rename src/TNL/Solvers/Linear/{GMRES_impl.h => GMRES.hpp} (99%) rename src/TNL/Solvers/Linear/Preconditioners/{Diagonal_impl.h => Diagonal.hpp} (98%) rename src/TNL/Solvers/Linear/Preconditioners/{ILU0_impl.h => ILU0.hpp} (99%) rename src/TNL/Solvers/Linear/Preconditioners/{ILUT_impl.h => ILUT.hpp} (98%) rename src/TNL/Solvers/Linear/{SOR_impl.h => SOR.hpp} (94%) rename src/TNL/Solvers/Linear/{TFQMR_impl.h => TFQMR.hpp} (98%) rename src/TNL/Solvers/Linear/{UmfpackWrapper_impl.h => UmfpackWrapper.hpp} (96%) rename src/TNL/Solvers/Linear/{ => Utils}/LinearResidueGetter.h (90%) rename src/TNL/Solvers/Linear/{LinearResidueGetter_impl.h => Utils/LinearResidueGetter.hpp} (74%) rename src/TNL/Solvers/Linear/{ => Utils}/Traits.h (100%) rename src/TNL/Solvers/Linear/{Preconditioners => Utils}/TriangularSolve.h (98%) diff --git a/src/TNL/Solvers/Linear/BICGStab.h b/src/TNL/Solvers/Linear/BICGStab.h index 474a45d02..233590ed7 100644 --- a/src/TNL/Solvers/Linear/BICGStab.h +++ b/src/TNL/Solvers/Linear/BICGStab.h @@ -52,4 +52,4 @@ protected: } // namespace Solvers } // namespace TNL -#include +#include "BICGStab.hpp" diff --git a/src/TNL/Solvers/Linear/BICGStab_impl.h b/src/TNL/Solvers/Linear/BICGStab.hpp similarity index 98% rename from src/TNL/Solvers/Linear/BICGStab_impl.h rename to src/TNL/Solvers/Linear/BICGStab.hpp index ff3b42ed0..382bf48f5 100644 --- a/src/TNL/Solvers/Linear/BICGStab_impl.h +++ b/src/TNL/Solvers/Linear/BICGStab.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - BICGStab_impl.h - description + BICGStab.hpp - description ------------------- begin : 2007/07/31 copyright : (C) 2007 by Tomas Oberhuber diff --git a/src/TNL/Solvers/Linear/BICGStabL.h b/src/TNL/Solvers/Linear/BICGStabL.h index f2481b588..f30a23634 100644 --- a/src/TNL/Solvers/Linear/BICGStabL.h +++ b/src/TNL/Solvers/Linear/BICGStabL.h @@ -102,4 +102,4 @@ protected: } // namespace Solvers } // namespace TNL -#include +#include "BICGStabL.hpp" diff --git a/src/TNL/Solvers/Linear/BICGStabL_impl.h b/src/TNL/Solvers/Linear/BICGStabL.hpp similarity index 99% rename from src/TNL/Solvers/Linear/BICGStabL_impl.h rename to src/TNL/Solvers/Linear/BICGStabL.hpp index 9eeb0700a..f0a458589 100644 --- a/src/TNL/Solvers/Linear/BICGStabL_impl.h +++ b/src/TNL/Solvers/Linear/BICGStabL.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - BICGStabL.h - description + BICGStabL.hpp - description ------------------- begin : Jul 4, 2017 copyright : (C) 2017 by Tomas Oberhuber et al. diff --git a/src/TNL/Solvers/Linear/CG.h b/src/TNL/Solvers/Linear/CG.h index 6dff70245..f2cad3f05 100644 --- a/src/TNL/Solvers/Linear/CG.h +++ b/src/TNL/Solvers/Linear/CG.h @@ -12,8 +12,6 @@ #include "LinearSolver.h" -#include - namespace TNL { namespace Solvers { namespace Linear { @@ -43,4 +41,4 @@ protected: } // namespace Solvers } // namespace TNL -#include +#include "CG.hpp" diff --git a/src/TNL/Solvers/Linear/CG_impl.h b/src/TNL/Solvers/Linear/CG.hpp similarity index 98% rename from src/TNL/Solvers/Linear/CG_impl.h rename to src/TNL/Solvers/Linear/CG.hpp index 1b96bd1b1..67442b4b1 100644 --- a/src/TNL/Solvers/Linear/CG_impl.h +++ b/src/TNL/Solvers/Linear/CG.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - CG_impl.h - description + CG.hpp - description ------------------- begin : 2007/07/31 copyright : (C) 2007 by Tomas Oberhuber diff --git a/src/TNL/Solvers/Linear/GMRES.h b/src/TNL/Solvers/Linear/GMRES.h index 818f1c163..7314a3a05 100644 --- a/src/TNL/Solvers/Linear/GMRES.h +++ b/src/TNL/Solvers/Linear/GMRES.h @@ -160,4 +160,4 @@ protected: } // namespace Solvers } // namespace TNL -#include +#include "GMRES.hpp" diff --git a/src/TNL/Solvers/Linear/GMRES_impl.h b/src/TNL/Solvers/Linear/GMRES.hpp similarity index 99% rename from src/TNL/Solvers/Linear/GMRES_impl.h rename to src/TNL/Solvers/Linear/GMRES.hpp index 2dc716290..55fb3e2e5 100644 --- a/src/TNL/Solvers/Linear/GMRES_impl.h +++ b/src/TNL/Solvers/Linear/GMRES.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - GMRES_impl.h - description + GMRES.hpp - description ------------------- begin : May 13, 2016 copyright : (C) 2016 by Tomas Oberhuber et al. diff --git a/src/TNL/Solvers/Linear/Jacobi.h b/src/TNL/Solvers/Linear/Jacobi.h index e4e74d5df..fd4e99eed 100644 --- a/src/TNL/Solvers/Linear/Jacobi.h +++ b/src/TNL/Solvers/Linear/Jacobi.h @@ -11,7 +11,7 @@ #include "LinearSolver.h" #include -#include +#include namespace TNL { namespace Solvers { diff --git a/src/TNL/Solvers/Linear/LinearSolver.h b/src/TNL/Solvers/Linear/LinearSolver.h index 839d2a34a..f5607e6e0 100644 --- a/src/TNL/Solvers/Linear/LinearSolver.h +++ b/src/TNL/Solvers/Linear/LinearSolver.h @@ -17,8 +17,7 @@ #include #include - -#include "Traits.h" +#include namespace TNL { namespace Solvers { diff --git a/src/TNL/Solvers/Linear/Preconditioners/Diagonal.h b/src/TNL/Solvers/Linear/Preconditioners/Diagonal.h index 7c03dd7ce..22bfceb00 100644 --- a/src/TNL/Solvers/Linear/Preconditioners/Diagonal.h +++ b/src/TNL/Solvers/Linear/Preconditioners/Diagonal.h @@ -14,8 +14,6 @@ #include "Preconditioner.h" -#include - namespace TNL { namespace Solvers { namespace Linear { @@ -71,4 +69,4 @@ protected: } // namespace Solvers } // namespace TNL -#include +#include "Diagonal.hpp" diff --git a/src/TNL/Solvers/Linear/Preconditioners/Diagonal_impl.h b/src/TNL/Solvers/Linear/Preconditioners/Diagonal.hpp similarity index 98% rename from src/TNL/Solvers/Linear/Preconditioners/Diagonal_impl.h rename to src/TNL/Solvers/Linear/Preconditioners/Diagonal.hpp index 44bd8e447..ee4a378db 100644 --- a/src/TNL/Solvers/Linear/Preconditioners/Diagonal_impl.h +++ b/src/TNL/Solvers/Linear/Preconditioners/Diagonal.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - Diagonal_impl.h - description + Diagonal.hpp - description ------------------- begin : Dec 17, 2015 copyright : (C) 2015 by Tomas Oberhuber et al. diff --git a/src/TNL/Solvers/Linear/Preconditioners/ILU0.h b/src/TNL/Solvers/Linear/Preconditioners/ILU0.h index 7040a2481..b623e86fb 100644 --- a/src/TNL/Solvers/Linear/Preconditioners/ILU0.h +++ b/src/TNL/Solvers/Linear/Preconditioners/ILU0.h @@ -223,4 +223,4 @@ public: } // namespace Solvers } // namespace TNL -#include +#include "ILU0.hpp" diff --git a/src/TNL/Solvers/Linear/Preconditioners/ILU0_impl.h b/src/TNL/Solvers/Linear/Preconditioners/ILU0.hpp similarity index 99% rename from src/TNL/Solvers/Linear/Preconditioners/ILU0_impl.h rename to src/TNL/Solvers/Linear/Preconditioners/ILU0.hpp index 7dc0e64ba..c9f755cc0 100644 --- a/src/TNL/Solvers/Linear/Preconditioners/ILU0_impl.h +++ b/src/TNL/Solvers/Linear/Preconditioners/ILU0.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - ILU0_impl.h - description + ILU0.hpp - description ------------------- begin : Dec 24, 2016 copyright : (C) 2016 by Tomas Oberhuber et al. @@ -13,10 +13,9 @@ #pragma once #include "ILU0.h" -#include "TriangularSolve.h" - -#include +#include #include +#include namespace TNL { namespace Solvers { diff --git a/src/TNL/Solvers/Linear/Preconditioners/ILUT.h b/src/TNL/Solvers/Linear/Preconditioners/ILUT.h index 82ab88e86..88f5441ba 100644 --- a/src/TNL/Solvers/Linear/Preconditioners/ILUT.h +++ b/src/TNL/Solvers/Linear/Preconditioners/ILUT.h @@ -116,4 +116,4 @@ public: } // namespace Solvers } // namespace TNL -#include +#include "ILUT.hpp" diff --git a/src/TNL/Solvers/Linear/Preconditioners/ILUT_impl.h b/src/TNL/Solvers/Linear/Preconditioners/ILUT.hpp similarity index 98% rename from src/TNL/Solvers/Linear/Preconditioners/ILUT_impl.h rename to src/TNL/Solvers/Linear/Preconditioners/ILUT.hpp index e7da268b5..ac128dafe 100644 --- a/src/TNL/Solvers/Linear/Preconditioners/ILUT_impl.h +++ b/src/TNL/Solvers/Linear/Preconditioners/ILUT.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - ILUT_impl.h - description + ILUT.hpp - description ------------------- begin : Aug 31, 2018 copyright : (C) 2018 by Tomas Oberhuber et al. @@ -16,8 +16,7 @@ #include #include "ILUT.h" -#include "TriangularSolve.h" - +#include #include namespace TNL { diff --git a/src/TNL/Solvers/Linear/Preconditioners/Preconditioner.h b/src/TNL/Solvers/Linear/Preconditioners/Preconditioner.h index d9e937f03..672f5167e 100644 --- a/src/TNL/Solvers/Linear/Preconditioners/Preconditioner.h +++ b/src/TNL/Solvers/Linear/Preconditioners/Preconditioner.h @@ -15,9 +15,8 @@ #include // std::add_const_t #include // std::shared_ptr -#include #include -#include +#include namespace TNL { namespace Solvers { diff --git a/src/TNL/Solvers/Linear/SOR.h b/src/TNL/Solvers/Linear/SOR.h index 0d9aae433..8bc1a1716 100644 --- a/src/TNL/Solvers/Linear/SOR.h +++ b/src/TNL/Solvers/Linear/SOR.h @@ -48,4 +48,4 @@ protected: } // namespace Solvers } // namespace TNL -#include +#include "SOR.hpp" diff --git a/src/TNL/Solvers/Linear/SOR_impl.h b/src/TNL/Solvers/Linear/SOR.hpp similarity index 94% rename from src/TNL/Solvers/Linear/SOR_impl.h rename to src/TNL/Solvers/Linear/SOR.hpp index f7b4ffa94..fe3f0b84a 100644 --- a/src/TNL/Solvers/Linear/SOR_impl.h +++ b/src/TNL/Solvers/Linear/SOR.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - SOR_impl.h - description + SOR.hpp - description ------------------- begin : Nov 25, 2012 copyright : (C) 2012 by Tomas Oberhuber @@ -10,8 +10,8 @@ #pragma once -#include -#include +#include "SOR.h" +#include namespace TNL { namespace Solvers { diff --git a/src/TNL/Solvers/Linear/TFQMR.h b/src/TNL/Solvers/Linear/TFQMR.h index 2a94f44e7..d267819da 100644 --- a/src/TNL/Solvers/Linear/TFQMR.h +++ b/src/TNL/Solvers/Linear/TFQMR.h @@ -40,4 +40,4 @@ protected: } // namespace Solvers } // namespace TNL -#include +#include "TFQMR.hpp" diff --git a/src/TNL/Solvers/Linear/TFQMR_impl.h b/src/TNL/Solvers/Linear/TFQMR.hpp similarity index 98% rename from src/TNL/Solvers/Linear/TFQMR_impl.h rename to src/TNL/Solvers/Linear/TFQMR.hpp index 0ea03e83c..9c2a1f205 100644 --- a/src/TNL/Solvers/Linear/TFQMR_impl.h +++ b/src/TNL/Solvers/Linear/TFQMR.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - TFQMR_impl.h - description + TFQMR.hpp - description ------------------- begin : Dec 8, 2012 copyright : (C) 2007 by Tomas Oberhuber diff --git a/src/TNL/Solvers/Linear/UmfpackWrapper.h b/src/TNL/Solvers/Linear/UmfpackWrapper.h index 0e2e5d7ac..27c54d476 100644 --- a/src/TNL/Solvers/Linear/UmfpackWrapper.h +++ b/src/TNL/Solvers/Linear/UmfpackWrapper.h @@ -17,10 +17,8 @@ #include #include "LinearSolver.h" - #include - namespace TNL { namespace Solvers { namespace Linear { @@ -88,6 +86,6 @@ public: } // namespace Solvers } // namespace TNL -#include "UmfpackWrapper_impl.h" +#include "UmfpackWrapper.hpp" #endif diff --git a/src/TNL/Solvers/Linear/UmfpackWrapper_impl.h b/src/TNL/Solvers/Linear/UmfpackWrapper.hpp similarity index 96% rename from src/TNL/Solvers/Linear/UmfpackWrapper_impl.h rename to src/TNL/Solvers/Linear/UmfpackWrapper.hpp index 1a8629099..01c3e7104 100644 --- a/src/TNL/Solvers/Linear/UmfpackWrapper_impl.h +++ b/src/TNL/Solvers/Linear/UmfpackWrapper.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - UmfpackWrapper_impl.h - description + UmfpackWrapper.hpp - description ------------------- begin : Mar 21, 2016 copyright : (C) 2016 by Tomas Oberhuber et al. @@ -16,7 +16,7 @@ #include "UmfpackWrapper.h" -#include +#include namespace TNL { namespace Solvers { diff --git a/src/TNL/Solvers/Linear/LinearResidueGetter.h b/src/TNL/Solvers/Linear/Utils/LinearResidueGetter.h similarity index 90% rename from src/TNL/Solvers/Linear/LinearResidueGetter.h rename to src/TNL/Solvers/Linear/Utils/LinearResidueGetter.h index 8a25c3209..306e54c23 100644 --- a/src/TNL/Solvers/Linear/LinearResidueGetter.h +++ b/src/TNL/Solvers/Linear/Utils/LinearResidueGetter.h @@ -14,9 +14,8 @@ namespace TNL { namespace Solvers { namespace Linear { -class LinearResidueGetter +struct LinearResidueGetter { -public: template< typename Matrix, typename Vector1, typename Vector2 > static typename Matrix::RealType getResidue( const Matrix& matrix, @@ -29,4 +28,4 @@ public: } // namespace Solvers } // namespace TNL -#include +#include "LinearResidueGetter.hpp" diff --git a/src/TNL/Solvers/Linear/LinearResidueGetter_impl.h b/src/TNL/Solvers/Linear/Utils/LinearResidueGetter.hpp similarity index 74% rename from src/TNL/Solvers/Linear/LinearResidueGetter_impl.h rename to src/TNL/Solvers/Linear/Utils/LinearResidueGetter.hpp index 4ad7fcd0b..8bb967b9e 100644 --- a/src/TNL/Solvers/Linear/LinearResidueGetter_impl.h +++ b/src/TNL/Solvers/Linear/Utils/LinearResidueGetter.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - LinearResidueGetter_impl.h - description + LinearResidueGetter.hpp - description ------------------- begin : Nov 25, 2012 copyright : (C) 2012 by Tomas Oberhuber @@ -10,9 +10,8 @@ #pragma once -#include -#include -#include +#include "LinearResidueGetter.h" +#include "Traits.h" namespace TNL { namespace Solvers { @@ -26,9 +25,6 @@ getResidue( const Matrix& matrix, const Vector2& b, typename Matrix::RealType bNorm ) { - using RealType = typename Matrix::RealType; - using DeviceType = typename Matrix::DeviceType; - using IndexType = typename Matrix::IndexType; using VectorType = typename Traits< Matrix >::VectorType; if( bNorm == 0.0 ) diff --git a/src/TNL/Solvers/Linear/Traits.h b/src/TNL/Solvers/Linear/Utils/Traits.h similarity index 100% rename from src/TNL/Solvers/Linear/Traits.h rename to src/TNL/Solvers/Linear/Utils/Traits.h diff --git a/src/TNL/Solvers/Linear/Preconditioners/TriangularSolve.h b/src/TNL/Solvers/Linear/Utils/TriangularSolve.h similarity index 98% rename from src/TNL/Solvers/Linear/Preconditioners/TriangularSolve.h rename to src/TNL/Solvers/Linear/Utils/TriangularSolve.h index 6a0467341..8e2c08b66 100644 --- a/src/TNL/Solvers/Linear/Preconditioners/TriangularSolve.h +++ b/src/TNL/Solvers/Linear/Utils/TriangularSolve.h @@ -15,7 +15,6 @@ namespace TNL { namespace Solvers { namespace Linear { -namespace Preconditioners { /* * Solves `x` from `Lx = b`, where L is a square lower triangular matrix with @@ -113,7 +112,6 @@ void triangularSolveUpper( const Matrix& U, Vector1& x, const Vector2& b ) } } -} // namespace Preconditioners } // namespace Linear } // namespace Solvers } // namespace TNL -- GitLab From 70623718a048c5b32dc6e484fac673064ec5ab00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= Date: Wed, 8 Dec 2021 16:11:15 -0700 Subject: [PATCH 2/6] Refactored parameters for linear solvers Fixes #93 --- src/TNL/Solvers/IterativeSolver_impl.h | 46 +++++++++++-------- src/TNL/Solvers/Linear/BICGStab.hpp | 4 +- src/TNL/Solvers/Linear/BICGStabL.hpp | 7 ++- src/TNL/Solvers/Linear/GMRES.hpp | 41 ++++++++++------- src/TNL/Solvers/Linear/Jacobi.h | 4 +- src/TNL/Solvers/Linear/LinearSolver.h | 4 +- .../Solvers/Linear/Preconditioners/ILUT.hpp | 6 ++- src/TNL/Solvers/Linear/SOR.hpp | 4 +- 8 files changed, 73 insertions(+), 43 deletions(-) diff --git a/src/TNL/Solvers/IterativeSolver_impl.h b/src/TNL/Solvers/IterativeSolver_impl.h index 701e6fcce..7742c9949 100644 --- a/src/TNL/Solvers/IterativeSolver_impl.h +++ b/src/TNL/Solvers/IterativeSolver_impl.h @@ -23,18 +23,21 @@ IterativeSolver< Real, Index, SolverMonitor >:: configSetup( Config::ConfigDescription& config, const String& prefix ) { - config.addEntry< int > ( prefix + "max-iterations", "Maximal number of iterations the solver may perform.", 1000000000 ); - config.addEntry< int > ( prefix + "min-iterations", "Minimal number of iterations the solver must perform.", 0 ); - - // The default value for the convergence residue MUST be zero since not in all problems we want to stop the solver - // when we reach a state near a steady state. This can be only temporary if, for example, when the boundary conditions - // are time dependent (growing velocity at inlet starting from 0). - config.addEntry< double >( prefix + "convergence-residue", "Convergence occurs when the residue drops bellow this limit.", 0.0 ); - config.addEntry< double >( prefix + "divergence-residue", "Divergence occurs when the residue exceeds given limit.", std::numeric_limits< float >::max() ); + if( config.getEntry( prefix + "max-iterations" ) == nullptr ) + config.addEntry< int > ( prefix + "max-iterations", "Maximal number of iterations the solver may perform.", 1000000000 ); + if( config.getEntry( prefix + "min-iterations" ) == nullptr ) + config.addEntry< int > ( prefix + "min-iterations", "Minimal number of iterations the solver must perform.", 0 ); + + if( config.getEntry( prefix + "convergence-residue" ) == nullptr ) + config.addEntry< double >( prefix + "convergence-residue", "Convergence occurs when the residue drops bellow this limit.", 1e-6 ); + if( config.getEntry( prefix + "divergence-residue" ) == nullptr ) + config.addEntry< double >( prefix + "divergence-residue", "Divergence occurs when the residue exceeds given limit.", std::numeric_limits< float >::max() ); // TODO: setting refresh rate should be done in SolverStarter::setup (it's not a parameter of the IterativeSolver) - config.addEntry< int > ( prefix + "refresh-rate", "Number of milliseconds between solver monitor refreshes.", 500 ); + if( config.getEntry( prefix + "refresh-rate" ) == nullptr ) + config.addEntry< int > ( prefix + "refresh-rate", "Number of milliseconds between solver monitor refreshes.", 500 ); - config.addEntry< String >( prefix + "residual-history-file", "Path to the file where the residual history will be saved.", "" ); + if( config.getEntry( prefix + "residual-history-file" ) == nullptr ) + config.addEntry< String >( prefix + "residual-history-file", "Path to the file where the residual history will be saved.", "" ); } template< typename Real, typename Index, typename SolverMonitor > @@ -43,15 +46,22 @@ IterativeSolver< Real, Index, SolverMonitor >:: setup( const Config::ParameterContainer& parameters, const String& prefix ) { - this->setMaxIterations( parameters.getParameter< int >( prefix + "max-iterations" ) ); - this->setMinIterations( parameters.getParameter< int >( prefix + "min-iterations" ) ); - this->setConvergenceResidue( parameters.getParameter< double >( prefix + "convergence-residue" ) ); - this->setDivergenceResidue( parameters.getParameter< double >( prefix + "divergence-residue" ) ); + if( parameters.checkParameter( prefix + "max-iterations" ) ) + this->setMaxIterations( parameters.getParameter< int >( prefix + "max-iterations" ) ); + if( parameters.checkParameter( prefix + "min-iterations" ) ) + this->setMinIterations( parameters.getParameter< int >( prefix + "min-iterations" ) ); + if( parameters.checkParameter( prefix + "convergence-residue" ) ) + this->setConvergenceResidue( parameters.getParameter< double >( prefix + "convergence-residue" ) ); + if( parameters.checkParameter( prefix + "divergence-residue" ) ) + this->setDivergenceResidue( parameters.getParameter< double >( prefix + "divergence-residue" ) ); // TODO: setting refresh rate should be done in SolverStarter::setup (it's not a parameter of the IterativeSolver) - this->setRefreshRate( parameters.getParameter< int >( prefix + "refresh-rate" ) ); - this->residualHistoryFileName = parameters.getParameter< String >( prefix + "residual-history-file" ); - if( this->residualHistoryFileName ) - this->residualHistoryFile.open( this->residualHistoryFileName.getString() ); + if( parameters.checkParameter( prefix + "refresh-rate" ) ) + this->setRefreshRate( parameters.getParameter< int >( prefix + "refresh-rate" ) ); + if( parameters.checkParameter( prefix + "residual-history-file" ) ) { + this->residualHistoryFileName = parameters.getParameter< String >( prefix + "residual-history-file" ); + if( this->residualHistoryFileName ) + this->residualHistoryFile.open( this->residualHistoryFileName.getString() ); + } return true; } diff --git a/src/TNL/Solvers/Linear/BICGStab.hpp b/src/TNL/Solvers/Linear/BICGStab.hpp index 382bf48f5..afbdbc399 100644 --- a/src/TNL/Solvers/Linear/BICGStab.hpp +++ b/src/TNL/Solvers/Linear/BICGStab.hpp @@ -24,6 +24,7 @@ BICGStab< Matrix >:: configSetup( Config::ConfigDescription& config, const String& prefix ) { + LinearSolver< Matrix >::configSetup( config, prefix ); config.addEntry< bool >( prefix + "bicgstab-exact-residue", "Whether the BiCGstab should compute the exact residue in each step (true) or to use a cheap approximation (false).", false ); } @@ -33,7 +34,8 @@ BICGStab< Matrix >:: setup( const Config::ParameterContainer& parameters, const String& prefix ) { - exact_residue = parameters.getParameter< bool >( "bicgstab-exact-residue" ); + if( parameters.checkParameter( prefix + "bicgstab-exact-residue" ) ) + exact_residue = parameters.getParameter< bool >( "bicgstab-exact-residue" ); return LinearSolver< Matrix >::setup( parameters, prefix ); } diff --git a/src/TNL/Solvers/Linear/BICGStabL.hpp b/src/TNL/Solvers/Linear/BICGStabL.hpp index f0a458589..7ae4999c9 100644 --- a/src/TNL/Solvers/Linear/BICGStabL.hpp +++ b/src/TNL/Solvers/Linear/BICGStabL.hpp @@ -26,6 +26,7 @@ BICGStabL< Matrix >:: configSetup( Config::ConfigDescription& config, const String& prefix ) { + LinearSolver< Matrix >::configSetup( config, prefix ); config.addEntry< int >( prefix + "bicgstab-ell", "Number of Bi-CG iterations before the MR part starts.", 1 ); config.addEntry< bool >( prefix + "bicgstab-exact-residue", "Whether the BiCGstab should compute the exact residue in each step (true) or to use a cheap approximation (false).", false ); } @@ -36,8 +37,10 @@ BICGStabL< Matrix >:: setup( const Config::ParameterContainer& parameters, const String& prefix ) { - ell = parameters.getParameter< int >( "bicgstab-ell" ); - exact_residue = parameters.getParameter< bool >( "bicgstab-exact-residue" ); + if( parameters.checkParameter( prefix + "bicgstab-ell" ) ) + ell = parameters.getParameter< int >( "bicgstab-ell" ); + if( parameters.checkParameter( prefix + "bicgstab-exact-residue" ) ) + exact_residue = parameters.getParameter< bool >( "bicgstab-exact-residue" ); return LinearSolver< Matrix >::setup( parameters, prefix ); } diff --git a/src/TNL/Solvers/Linear/GMRES.hpp b/src/TNL/Solvers/Linear/GMRES.hpp index 55fb3e2e5..4e6dcb811 100644 --- a/src/TNL/Solvers/Linear/GMRES.hpp +++ b/src/TNL/Solvers/Linear/GMRES.hpp @@ -30,6 +30,7 @@ GMRES< Matrix >:: configSetup( Config::ConfigDescription& config, const String& prefix ) { + LinearSolver< Matrix >::configSetup( config, prefix ); config.addEntry< String >( prefix + "gmres-variant", "Minimal number of iterations after which the GMRES restarts.", "CWY" ); config.addEntryEnum( "CGS" ); config.addEntryEnum( "CGSR" ); @@ -48,24 +49,30 @@ GMRES< Matrix >:: setup( const Config::ParameterContainer& parameters, const String& prefix ) { - const String var = parameters.getParameter< String >( prefix + "gmres-variant" ); - if( var == "CGS" ) - variant = Variant::CGS; - else if( var == "CGSR" ) - variant = Variant::CGSR; - else if( var == "MGS" ) - variant = Variant::MGS; - else if( var == "MGSR" ) - variant = Variant::MGSR; - else if( var == "CWY" ) - variant = Variant::CWY; - else - return false; + if( parameters.checkParameter( prefix + "gmres-variant" ) ) { + const String var = parameters.getParameter< String >( prefix + "gmres-variant" ); + if( var == "CGS" ) + variant = Variant::CGS; + else if( var == "CGSR" ) + variant = Variant::CGSR; + else if( var == "MGS" ) + variant = Variant::MGS; + else if( var == "MGSR" ) + variant = Variant::MGSR; + else if( var == "CWY" ) + variant = Variant::CWY; + else + return false; + } - restarting_min = parameters.getParameter< int >( prefix + "gmres-restarting-min" ); - restarting_max = parameters.getParameter< int >( prefix + "gmres-restarting-max" ); - restarting_step_min = parameters.getParameter< int >( prefix + "gmres-restarting-step-min" ); - restarting_step_max = parameters.getParameter< int >( prefix + "gmres-restarting-step-max" ); + if( parameters.checkParameter( prefix + "gmres-restarting-min" ) ) + restarting_min = parameters.getParameter< int >( prefix + "gmres-restarting-min" ); + if( parameters.checkParameter( prefix + "gmres-restarting-max" ) ) + restarting_max = parameters.getParameter< int >( prefix + "gmres-restarting-max" ); + if( parameters.checkParameter( prefix + "gmres-restarting-step-min" ) ) + restarting_step_min = parameters.getParameter< int >( prefix + "gmres-restarting-step-min" ); + if( parameters.checkParameter( prefix + "gmres-restarting-step-max" ) ) + restarting_step_max = parameters.getParameter< int >( prefix + "gmres-restarting-step-max" ); return LinearSolver< Matrix >::setup( parameters, prefix ); } diff --git a/src/TNL/Solvers/Linear/Jacobi.h b/src/TNL/Solvers/Linear/Jacobi.h index fd4e99eed..f8261efe9 100644 --- a/src/TNL/Solvers/Linear/Jacobi.h +++ b/src/TNL/Solvers/Linear/Jacobi.h @@ -32,13 +32,15 @@ public: static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ) { + LinearSolver< Matrix >::configSetup( config, prefix ); config.addEntry< double >( prefix + "jacobi-omega", "Relaxation parameter of the weighted/damped Jacobi method.", 1.0 ); } bool setup( const Config::ParameterContainer& parameters, const String& prefix = "" ) override { - this->setOmega( parameters.getParameter< double >( prefix + "jacobi-omega" ) ); + if( parameters.checkParameter( prefix + "jacobi-omega" ) ) + this->setOmega( parameters.getParameter< double >( prefix + "jacobi-omega" ) ); if( this->omega <= 0.0 || this->omega > 2.0 ) { std::cerr << "Warning: The Jacobi method parameter omega is out of interval (0,2). The value is " << this->omega << " the method will not converge." << std::endl; diff --git a/src/TNL/Solvers/Linear/LinearSolver.h b/src/TNL/Solvers/Linear/LinearSolver.h index f5607e6e0..e80bad4b1 100644 --- a/src/TNL/Solvers/Linear/LinearSolver.h +++ b/src/TNL/Solvers/Linear/LinearSolver.h @@ -43,7 +43,9 @@ public: static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ) - {} + { + IterativeSolver< RealType, IndexType >::configSetup( config, prefix ); + } virtual bool setup( const Config::ParameterContainer& parameters, const String& prefix = "" ) diff --git a/src/TNL/Solvers/Linear/Preconditioners/ILUT.hpp b/src/TNL/Solvers/Linear/Preconditioners/ILUT.hpp index ac128dafe..f9fb3e892 100644 --- a/src/TNL/Solvers/Linear/Preconditioners/ILUT.hpp +++ b/src/TNL/Solvers/Linear/Preconditioners/ILUT.hpp @@ -30,8 +30,10 @@ ILUT_impl< Matrix, Real, Devices::Host, Index >:: setup( const Config::ParameterContainer& parameters, const String& prefix ) { - p = parameters.getParameter< int >( "ilut-p" ); - tau = parameters.getParameter< double >( "ilut-threshold" ); + if( parameters.checkParameter( prefix + "ilut-p" ) ) + p = parameters.getParameter< int >( prefix + "ilut-p" ); + if( parameters.checkParameter( prefix + "ilut-threshold" ) ) + tau = parameters.getParameter< double >( prefix + "ilut-threshold" ); return true; } diff --git a/src/TNL/Solvers/Linear/SOR.hpp b/src/TNL/Solvers/Linear/SOR.hpp index fe3f0b84a..30101c08b 100644 --- a/src/TNL/Solvers/Linear/SOR.hpp +++ b/src/TNL/Solvers/Linear/SOR.hpp @@ -23,6 +23,7 @@ SOR< Matrix >:: configSetup( Config::ConfigDescription& config, const String& prefix ) { + LinearSolver< Matrix >::configSetup( config, prefix ); config.addEntry< double >( prefix + "sor-omega", "Relaxation parameter of the SOR method.", 1.0 ); } @@ -32,7 +33,8 @@ SOR< Matrix >:: setup( const Config::ParameterContainer& parameters, const String& prefix ) { - this->setOmega( parameters.getParameter< double >( prefix + "sor-omega" ) ); + if( parameters.checkParameter( prefix + "sor-omega" ) ) + this->setOmega( parameters.getParameter< double >( prefix + "sor-omega" ) ); if( this->omega <= 0.0 || this->omega > 2.0 ) { std::cerr << "Warning: The SOR method parameter omega is out of interval (0,2). The value is " << this->omega << " the method will not converge." << std::endl; -- GitLab From 212c187b7ac1f3d7872dbd13a8f819c848342d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= Date: Wed, 8 Dec 2021 17:13:03 -0700 Subject: [PATCH 3/6] Renamed files under Solvers --- src/TNL/Solvers/IterativeSolver.h | 2 +- ...ativeSolver_impl.h => IterativeSolver.hpp} | 2 +- src/TNL/Solvers/IterativeSolverMonitor.h | 2 +- ...itor_impl.h => IterativeSolverMonitor.hpp} | 2 +- src/TNL/Solvers/ODE/Euler.hpp | 2 +- src/TNL/Solvers/ODE/ExplicitSolver.h | 2 +- ...plicitSolver_impl.h => ExplicitSolver.hpp} | 4 +- src/TNL/Solvers/ODE/Merson.h | 2 +- .../Solvers/ODE/{Merson_impl.h => Merson.hpp} | 2 +- src/TNL/Solvers/PDE/ExplicitTimeStepper.h | 2 +- ...Stepper_impl.h => ExplicitTimeStepper.hpp} | 2 +- src/TNL/Solvers/PDE/PDESolver.h | 3 +- .../PDE/{PDESolver_impl.h => PDESolver.hpp} | 2 +- src/TNL/Solvers/PDE/SemiImplicitTimeStepper.h | 2 +- ...per_impl.h => SemiImplicitTimeStepper.hpp} | 2 +- src/TNL/Solvers/PDE/TimeDependentPDESolver.h | 2 +- ...lver_impl.h => TimeDependentPDESolver.hpp} | 2 +- .../Solvers/PDE/TimeIndependentPDESolver.h | 4 +- ...er_impl.h => TimeIndependentPDESolver.hpp} | 2 +- src/TNL/Solvers/Solver.h | 36 +++- src/TNL/Solvers/SolverConfig.h | 145 +++++++++++++++- src/TNL/Solvers/SolverConfig_impl.h | 157 ------------------ src/TNL/Solvers/SolverInitiator.h | 2 +- ...erInitiator_impl.h => SolverInitiator.hpp} | 2 +- src/TNL/Solvers/SolverStarter.h | 4 +- ...SolverStarter_impl.h => SolverStarter.hpp} | 2 +- src/TNL/Solvers/Solver_impl.h | 50 ------ 27 files changed, 192 insertions(+), 249 deletions(-) rename src/TNL/Solvers/{IterativeSolver_impl.h => IterativeSolver.hpp} (99%) rename src/TNL/Solvers/{IterativeSolverMonitor_impl.h => IterativeSolverMonitor.hpp} (98%) rename src/TNL/Solvers/ODE/{ExplicitSolver_impl.h => ExplicitSolver.hpp} (97%) rename src/TNL/Solvers/ODE/{Merson_impl.h => Merson.hpp} (99%) rename src/TNL/Solvers/PDE/{ExplicitTimeStepper_impl.h => ExplicitTimeStepper.hpp} (98%) rename src/TNL/Solvers/PDE/{PDESolver_impl.h => PDESolver.hpp} (98%) rename src/TNL/Solvers/PDE/{SemiImplicitTimeStepper_impl.h => SemiImplicitTimeStepper.hpp} (99%) rename src/TNL/Solvers/PDE/{TimeDependentPDESolver_impl.h => TimeDependentPDESolver.hpp} (99%) rename src/TNL/Solvers/PDE/{TimeIndependentPDESolver_impl.h => TimeIndependentPDESolver.hpp} (98%) delete mode 100644 src/TNL/Solvers/SolverConfig_impl.h rename src/TNL/Solvers/{SolverInitiator_impl.h => SolverInitiator.hpp} (99%) rename src/TNL/Solvers/{SolverStarter_impl.h => SolverStarter.hpp} (99%) delete mode 100644 src/TNL/Solvers/Solver_impl.h diff --git a/src/TNL/Solvers/IterativeSolver.h b/src/TNL/Solvers/IterativeSolver.h index 75487fa01..97d3f1c56 100644 --- a/src/TNL/Solvers/IterativeSolver.h +++ b/src/TNL/Solvers/IterativeSolver.h @@ -97,4 +97,4 @@ protected: } // namespace Solvers } // namespace TNL -#include +#include diff --git a/src/TNL/Solvers/IterativeSolver_impl.h b/src/TNL/Solvers/IterativeSolver.hpp similarity index 99% rename from src/TNL/Solvers/IterativeSolver_impl.h rename to src/TNL/Solvers/IterativeSolver.hpp index 7742c9949..f894f3711 100644 --- a/src/TNL/Solvers/IterativeSolver_impl.h +++ b/src/TNL/Solvers/IterativeSolver.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - IterativeSolver_impl.h - description + IterativeSolver.hpp - description ------------------- begin : Oct 19, 2012 copyright : (C) 2012 by Tomas Oberhuber et al. diff --git a/src/TNL/Solvers/IterativeSolverMonitor.h b/src/TNL/Solvers/IterativeSolverMonitor.h index f85322083..07dee8de9 100644 --- a/src/TNL/Solvers/IterativeSolverMonitor.h +++ b/src/TNL/Solvers/IterativeSolverMonitor.h @@ -60,4 +60,4 @@ protected: } // namespace Solvers } // namespace TNL -#include +#include diff --git a/src/TNL/Solvers/IterativeSolverMonitor_impl.h b/src/TNL/Solvers/IterativeSolverMonitor.hpp similarity index 98% rename from src/TNL/Solvers/IterativeSolverMonitor_impl.h rename to src/TNL/Solvers/IterativeSolverMonitor.hpp index a4721e4c3..a1fa8c454 100644 --- a/src/TNL/Solvers/IterativeSolverMonitor_impl.h +++ b/src/TNL/Solvers/IterativeSolverMonitor.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - IterativeSolverMonitor_impl.h - description + IterativeSolverMonitor.hpp - description ------------------- begin : Oct 19, 2012 copyright : (C) 2012 by Tomas Oberhuber diff --git a/src/TNL/Solvers/ODE/Euler.hpp b/src/TNL/Solvers/ODE/Euler.hpp index 9dc6b6570..4532feb4d 100644 --- a/src/TNL/Solvers/ODE/Euler.hpp +++ b/src/TNL/Solvers/ODE/Euler.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - Euler_impl.h - description + Euler.hpp - description ------------------- begin : Mar 10, 2013 copyright : (C) 2013 by Tomas Oberhuber diff --git a/src/TNL/Solvers/ODE/ExplicitSolver.h b/src/TNL/Solvers/ODE/ExplicitSolver.h index bade4ded7..f1b870b92 100644 --- a/src/TNL/Solvers/ODE/ExplicitSolver.h +++ b/src/TNL/Solvers/ODE/ExplicitSolver.h @@ -109,4 +109,4 @@ protected: } // namespace Solvers } // namespace TNL -#include +#include diff --git a/src/TNL/Solvers/ODE/ExplicitSolver_impl.h b/src/TNL/Solvers/ODE/ExplicitSolver.hpp similarity index 97% rename from src/TNL/Solvers/ODE/ExplicitSolver_impl.h rename to src/TNL/Solvers/ODE/ExplicitSolver.hpp index 04837dee2..b62f5813a 100644 --- a/src/TNL/Solvers/ODE/ExplicitSolver_impl.h +++ b/src/TNL/Solvers/ODE/ExplicitSolver.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - ExplicitSolver_impl.h - description + ExplicitSolver.hpp - description ------------------- begin : Nov 22, 2014 copyright : (C) 2014 by oberhuber @@ -14,7 +14,7 @@ namespace TNL { namespace Solvers { -namespace ODE { +namespace ODE { template< typename Problem, typename SolverMonitor > ExplicitSolver< Problem, SolverMonitor >:: diff --git a/src/TNL/Solvers/ODE/Merson.h b/src/TNL/Solvers/ODE/Merson.h index 630a86694..769533967 100644 --- a/src/TNL/Solvers/ODE/Merson.h +++ b/src/TNL/Solvers/ODE/Merson.h @@ -62,4 +62,4 @@ class Merson : public ExplicitSolver< Problem, SolverMonitor > } // namespace Solvers } // namespace TNL -#include +#include diff --git a/src/TNL/Solvers/ODE/Merson_impl.h b/src/TNL/Solvers/ODE/Merson.hpp similarity index 99% rename from src/TNL/Solvers/ODE/Merson_impl.h rename to src/TNL/Solvers/ODE/Merson.hpp index 76398123c..c48e04842 100644 --- a/src/TNL/Solvers/ODE/Merson_impl.h +++ b/src/TNL/Solvers/ODE/Merson.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - Merson_impl.h - description + Merson.hpp - description ------------------- begin : Mar 10, 2013 copyright : (C) 2007 by Tomas Oberhuber diff --git a/src/TNL/Solvers/PDE/ExplicitTimeStepper.h b/src/TNL/Solvers/PDE/ExplicitTimeStepper.h index be65a9512..7b016fe9f 100644 --- a/src/TNL/Solvers/PDE/ExplicitTimeStepper.h +++ b/src/TNL/Solvers/PDE/ExplicitTimeStepper.h @@ -95,4 +95,4 @@ class ExplicitTimeStepper } // namespace Solvers } // namespace TNL -#include +#include diff --git a/src/TNL/Solvers/PDE/ExplicitTimeStepper_impl.h b/src/TNL/Solvers/PDE/ExplicitTimeStepper.hpp similarity index 98% rename from src/TNL/Solvers/PDE/ExplicitTimeStepper_impl.h rename to src/TNL/Solvers/PDE/ExplicitTimeStepper.hpp index 9428485f4..4a219cacb 100644 --- a/src/TNL/Solvers/PDE/ExplicitTimeStepper_impl.h +++ b/src/TNL/Solvers/PDE/ExplicitTimeStepper.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - ExplicitTimeStepper_impl.h - description + ExplicitTimeStepper.hpp - description ------------------- begin : Jan 15, 2013 copyright : (C) 2013 by Tomas Oberhuber diff --git a/src/TNL/Solvers/PDE/PDESolver.h b/src/TNL/Solvers/PDE/PDESolver.h index 70f19d8de..d81615c98 100644 --- a/src/TNL/Solvers/PDE/PDESolver.h +++ b/src/TNL/Solvers/PDE/PDESolver.h @@ -64,5 +64,4 @@ class PDESolver } // namespace Solvers } // namespace TNL -#include - +#include diff --git a/src/TNL/Solvers/PDE/PDESolver_impl.h b/src/TNL/Solvers/PDE/PDESolver.hpp similarity index 98% rename from src/TNL/Solvers/PDE/PDESolver_impl.h rename to src/TNL/Solvers/PDE/PDESolver.hpp index 8bdcbd86a..562d13e85 100644 --- a/src/TNL/Solvers/PDE/PDESolver_impl.h +++ b/src/TNL/Solvers/PDE/PDESolver.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - PDESolver_impl.h - description + PDESolver.hpp - description ------------------- begin : Nov 11, 2017 copyright : (C) 2017 by Tomas Oberhuber diff --git a/src/TNL/Solvers/PDE/SemiImplicitTimeStepper.h b/src/TNL/Solvers/PDE/SemiImplicitTimeStepper.h index 5d079a966..af49c518f 100644 --- a/src/TNL/Solvers/PDE/SemiImplicitTimeStepper.h +++ b/src/TNL/Solvers/PDE/SemiImplicitTimeStepper.h @@ -92,4 +92,4 @@ class SemiImplicitTimeStepper } // namespace Solvers } // namespace TNL -#include +#include diff --git a/src/TNL/Solvers/PDE/SemiImplicitTimeStepper_impl.h b/src/TNL/Solvers/PDE/SemiImplicitTimeStepper.hpp similarity index 99% rename from src/TNL/Solvers/PDE/SemiImplicitTimeStepper_impl.h rename to src/TNL/Solvers/PDE/SemiImplicitTimeStepper.hpp index 87e980130..d15f21bef 100644 --- a/src/TNL/Solvers/PDE/SemiImplicitTimeStepper_impl.h +++ b/src/TNL/Solvers/PDE/SemiImplicitTimeStepper.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - SemiImplicitTimeStepper_impl.h - description + SemiImplicitTimeStepper.hpp - description ------------------- begin : Oct 4, 2014 copyright : (C) 2014 by Tomas Oberhuber diff --git a/src/TNL/Solvers/PDE/TimeDependentPDESolver.h b/src/TNL/Solvers/PDE/TimeDependentPDESolver.h index 51b186840..13fb60044 100644 --- a/src/TNL/Solvers/PDE/TimeDependentPDESolver.h +++ b/src/TNL/Solvers/PDE/TimeDependentPDESolver.h @@ -103,4 +103,4 @@ class TimeDependentPDESolver } // namespace Solvers } // namespace TNL -#include +#include diff --git a/src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h b/src/TNL/Solvers/PDE/TimeDependentPDESolver.hpp similarity index 99% rename from src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h rename to src/TNL/Solvers/PDE/TimeDependentPDESolver.hpp index 7bf2ca33c..8f86e7cdb 100644 --- a/src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h +++ b/src/TNL/Solvers/PDE/TimeDependentPDESolver.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - TimeDependentPDESolver_impl.h - description + TimeDependentPDESolver.hpp - description ------------------- begin : Jan 15, 2013 copyright : (C) 2013 by Tomas Oberhuber diff --git a/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h b/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h index 15a5e7ba1..297c07652 100644 --- a/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h +++ b/src/TNL/Solvers/PDE/TimeIndependentPDESolver.h @@ -1,5 +1,5 @@ /*************************************************************************** - tnlTimeIndependentPDESolver.h - description + TimeIndependentPDESolver.h - description ------------------- begin : Jan 15, 2013 copyright : (C) 2013 by Tomas Oberhuber @@ -84,4 +84,4 @@ class TimeIndependentPDESolver : public PDESolver< typename Problem::RealType, } // namespace Solvers } // namespace TNL -#include +#include diff --git a/src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h b/src/TNL/Solvers/PDE/TimeIndependentPDESolver.hpp similarity index 98% rename from src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h rename to src/TNL/Solvers/PDE/TimeIndependentPDESolver.hpp index edc7086ac..9a6ac7b81 100644 --- a/src/TNL/Solvers/PDE/TimeIndependentPDESolver_impl.h +++ b/src/TNL/Solvers/PDE/TimeIndependentPDESolver.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - TimeIndependentPDESolver_impl.h - description + TimeIndependentPDESolver.hpp - description ------------------- begin : Jan 15, 2013 copyright : (C) 2013 by Tomas Oberhuber diff --git a/src/TNL/Solvers/Solver.h b/src/TNL/Solvers/Solver.h index 8f1d7070f..8efd6195f 100644 --- a/src/TNL/Solvers/Solver.h +++ b/src/TNL/Solvers/Solver.h @@ -11,22 +11,42 @@ #pragma once #include +#include +#include +#include +#include +#include +#include +#include namespace TNL { namespace Solvers { template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter, - template< typename ConfTag > class ProblemConfig, + template< typename ConfigTag > class ProblemConfig, typename ConfigTag = DefaultBuildConfigTag > -class Solver +struct Solver { - public: - static bool run( int argc, char* argv[] ); - - protected: + static bool run( int argc, char* argv[] ) + { + Config::ParameterContainer parameters; + Config::ConfigDescription configDescription; + ProblemConfig< ConfigTag >::configSetup( configDescription ); + SolverConfig< ConfigTag, ProblemConfig< ConfigTag> >::configSetup( configDescription ); + configDescription.addDelimiter( "Parallelization setup:" ); + Devices::Host::configSetup( configDescription ); + Devices::Cuda::configSetup( configDescription ); + MPI::configSetup( configDescription ); + + TNL::MPI::ScopedInitializer mpi( argc, argv ); + + if( ! parseCommandLine( argc, argv, configDescription, parameters ) ) + return false; + + SolverInitiator< ProblemSetter, ConfigTag > solverInitiator; + return solverInitiator.run( parameters ); + } }; } // namespace Solvers } // namespace TNL - -#include diff --git a/src/TNL/Solvers/SolverConfig.h b/src/TNL/Solvers/SolverConfig.h index 44b99c4ce..6d8725ffd 100644 --- a/src/TNL/Solvers/SolverConfig.h +++ b/src/TNL/Solvers/SolverConfig.h @@ -11,19 +11,150 @@ #pragma once #include +#include +#include +#include +#include +#include +#include namespace TNL { -namespace Solvers { +namespace Solvers { -template< typename MeshConfig, +template< typename ConfigTag, typename ProblemConfig > -class SolverConfig +struct SolverConfig { - public: - static bool configSetup( Config::ConfigDescription& configDescription ); + static bool configSetup( Config::ConfigDescription& config ) + { + config.addDelimiter( " === General parameters ==== " ); + config.addEntry< bool >( "catch-exceptions", + "Catch C++ exceptions. Disabling it allows the program to drop into the debugger " + "and track the origin of the exception.", + true ); + /**** + * Setup real type + */ + config.addEntry< String >( "real-type", + "Precision of the floating point arithmetics.", + "double" ); + if( ConfigTagReal< ConfigTag, float >::enabled ) + config.addEntryEnum( "float" ); + if( ConfigTagReal< ConfigTag, double >::enabled ) + config.addEntryEnum( "double" ); + if( ConfigTagReal< ConfigTag, long double >::enabled ) + config.addEntryEnum( "long-double" ); + + /**** + * Setup device. + */ + config.addEntry< String >( "device", + "Device to use for the computations.", + "host" ); + if( ConfigTagDevice< ConfigTag, Devices::Host >::enabled ) + config.addEntryEnum( "host" ); +#ifdef HAVE_CUDA + if( ConfigTagDevice< ConfigTag, Devices::Cuda >::enabled ) + config.addEntryEnum( "cuda" ); +#endif + + /**** + * Setup index type. + */ + config.addEntry< String >( "index-type", + "Indexing type for arrays, vectors, matrices etc.", + "int" ); + if( ConfigTagIndex< ConfigTag, short int >::enabled ) + config.addEntryEnum( "short-int" ); + + if( ConfigTagIndex< ConfigTag, int >::enabled ) + config.addEntryEnum( "int" ); + + if( ConfigTagIndex< ConfigTag, long int >::enabled ) + config.addEntryEnum( "long-int" ); + + /**** + * Mesh file parameter + */ + config.addDelimiter( " === Space discretisation parameters ==== " ); + config.addEntry< String >( "mesh", "A file which contains the numerical mesh. You may create it with tools like tnl-grid-setup or tnl-mesh-convert.", "mesh.vti" ); + config.addEntry< String >( "mesh-format", "Mesh file format.", "auto" ); + + /**** + * Time discretisation + */ + config.addDelimiter( " === Time discretisation parameters ==== " ); + using PDEProblem = Problems::PDEProblem< Meshes::Grid<1, double, Devices::Host, int> >; + using ExplicitTimeStepper = PDE::ExplicitTimeStepper< PDEProblem, ODE::Euler >; + PDE::TimeDependentPDESolver< PDEProblem, ExplicitTimeStepper >::configSetup( config ); + ExplicitTimeStepper::configSetup( config ); + if( ConfigTagTimeDiscretisation< ConfigTag, ExplicitTimeDiscretisationTag >::enabled || + ConfigTagTimeDiscretisation< ConfigTag, SemiImplicitTimeDiscretisationTag >::enabled || + ConfigTagTimeDiscretisation< ConfigTag, ImplicitTimeDiscretisationTag >::enabled ) + { + config.addRequiredEntry< String >( "time-discretisation", "Discratisation in time."); + if( ConfigTagTimeDiscretisation< ConfigTag, ExplicitTimeDiscretisationTag >::enabled ) + config.addEntryEnum( "explicit" ); + if( ConfigTagTimeDiscretisation< ConfigTag, SemiImplicitTimeDiscretisationTag >::enabled ) + config.addEntryEnum( "semi-implicit" ); + if( ConfigTagTimeDiscretisation< ConfigTag, ImplicitTimeDiscretisationTag >::enabled ) + config.addEntryEnum( "implicit" ); + } + config.addRequiredEntry< String >( "discrete-solver", "The solver of the discretised problem:" ); + if( ConfigTagTimeDiscretisation< ConfigTag, ExplicitTimeDiscretisationTag >::enabled ) + { + if( ConfigTagExplicitSolver< ConfigTag, ExplicitEulerSolverTag >::enabled ) + config.addEntryEnum( "euler" ); + if( ConfigTagExplicitSolver< ConfigTag, ExplicitMersonSolverTag >::enabled ) + config.addEntryEnum( "merson" ); + } + if( ConfigTagTimeDiscretisation< ConfigTag, SemiImplicitTimeDiscretisationTag >::enabled ) + { + for( auto o : getLinearSolverOptions() ) + config.addEntryEnum( String( o ) ); + config.addEntry< String >( "preconditioner", "The preconditioner for the discrete solver:", "none" ); + for( auto o : getPreconditionerOptions() ) + config.addEntryEnum( String( o ) ); + } + if( ConfigTagTimeDiscretisation< ConfigTag, ExplicitTimeDiscretisationTag >::enabled || + ConfigTagTimeDiscretisation< ConfigTag, SemiImplicitTimeDiscretisationTag >::enabled ) + { + config.addDelimiter( " === Iterative solvers parameters === " ); + IterativeSolver< double, int >::configSetup( config ); + } + if( ConfigTagTimeDiscretisation< ConfigTag, ExplicitTimeDiscretisationTag >::enabled ) + { + config.addDelimiter( " === Explicit solvers parameters === " ); + ODE::ExplicitSolver< PDEProblem >::configSetup( config ); + if( ConfigTagExplicitSolver< ConfigTag, ExplicitEulerSolverTag >::enabled ) + ODE::Euler< PDEProblem >::configSetup( config ); + + if( ConfigTagExplicitSolver< ConfigTag, ExplicitMersonSolverTag >::enabled ) + ODE::Merson< PDEProblem >::configSetup( config ); + } + if( ConfigTagTimeDiscretisation< ConfigTag, SemiImplicitTimeDiscretisationTag >::enabled ) + { + config.addDelimiter( " === Semi-implicit solvers parameters === " ); + using MatrixType = Matrices::SparseMatrix< double >; + Linear::CG< MatrixType >::configSetup( config ); + Linear::BICGStab< MatrixType >::configSetup( config ); + Linear::BICGStabL< MatrixType >::configSetup( config ); + Linear::GMRES< MatrixType >::configSetup( config ); + Linear::TFQMR< MatrixType >::configSetup( config ); + Linear::SOR< MatrixType >::configSetup( config ); + + Linear::Preconditioners::Diagonal< MatrixType >::configSetup( config ); + Linear::Preconditioners::ILU0< MatrixType >::configSetup( config ); + Linear::Preconditioners::ILUT< MatrixType >::configSetup( config ); + } + + config.addDelimiter( " === Logs and messages ===" ); + config.addEntry< int >( "verbose", "Set the verbose mode. The higher number the more messages are generated.", 2 ); + config.addEntry< String >( "log-file", "Log file for the computation.", "log.txt" ); + config.addEntry< int >( "log-width", "Number of columns of the log table.", 80 ); + return true; + } }; } // namespace Solvers } // namespace TNL - -#include diff --git a/src/TNL/Solvers/SolverConfig_impl.h b/src/TNL/Solvers/SolverConfig_impl.h deleted file mode 100644 index 5a5a35a6f..000000000 --- a/src/TNL/Solvers/SolverConfig_impl.h +++ /dev/null @@ -1,157 +0,0 @@ -/*************************************************************************** - SolverConfig_impl.h - description - ------------------- - begin : Jul 8, 2014 - copyright : (C) 2014 by Tomas Oberhuber - email : tomas.oberhuber@fjfi.cvut.cz - ***************************************************************************/ - -/* See Copyright Notice in tnl/Copyright */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace TNL { -namespace Solvers { - -template< typename ConfigTag, - typename ProblemConfig > -bool SolverConfig< ConfigTag, ProblemConfig >::configSetup( Config::ConfigDescription& config ) -{ - config.addDelimiter( " === General parameters ==== " ); - config.addEntry< bool >( "catch-exceptions", - "Catch C++ exceptions. Disabling it allows the program to drop into the debugger " - "and track the origin of the exception.", - true ); - /**** - * Setup real type - */ - config.addEntry< String >( "real-type", - "Precision of the floating point arithmetics.", - "double" ); - if( ConfigTagReal< ConfigTag, float >::enabled ) - config.addEntryEnum( "float" ); - if( ConfigTagReal< ConfigTag, double >::enabled ) - config.addEntryEnum( "double" ); - if( ConfigTagReal< ConfigTag, long double >::enabled ) - config.addEntryEnum( "long-double" ); - - /**** - * Setup device. - */ - config.addEntry< String >( "device", - "Device to use for the computations.", - "host" ); - if( ConfigTagDevice< ConfigTag, Devices::Host >::enabled ) - config.addEntryEnum( "host" ); -#ifdef HAVE_CUDA - if( ConfigTagDevice< ConfigTag, Devices::Cuda >::enabled ) - config.addEntryEnum( "cuda" ); -#endif - - /**** - * Setup index type. - */ - config.addEntry< String >( "index-type", - "Indexing type for arrays, vectors, matrices etc.", - "int" ); - if( ConfigTagIndex< ConfigTag, short int >::enabled ) - config.addEntryEnum( "short-int" ); - - if( ConfigTagIndex< ConfigTag, int >::enabled ) - config.addEntryEnum( "int" ); - - if( ConfigTagIndex< ConfigTag, long int >::enabled ) - config.addEntryEnum( "long-int" ); - - /**** - * Mesh file parameter - */ - config.addDelimiter( " === Space discretisation parameters ==== " ); - config.addEntry< String >( "mesh", "A file which contains the numerical mesh. You may create it with tools like tnl-grid-setup or tnl-mesh-convert.", "mesh.vti" ); - config.addEntry< String >( "mesh-format", "Mesh file format.", "auto" ); - - /**** - * Time discretisation - */ - config.addDelimiter( " === Time discretisation parameters ==== " ); - using PDEProblem = Problems::PDEProblem< Meshes::Grid<1, double, Devices::Host, int> >; - using ExplicitTimeStepper = PDE::ExplicitTimeStepper< PDEProblem, ODE::Euler >; - PDE::TimeDependentPDESolver< PDEProblem, ExplicitTimeStepper >::configSetup( config ); - ExplicitTimeStepper::configSetup( config ); - if( ConfigTagTimeDiscretisation< ConfigTag, ExplicitTimeDiscretisationTag >::enabled || - ConfigTagTimeDiscretisation< ConfigTag, SemiImplicitTimeDiscretisationTag >::enabled || - ConfigTagTimeDiscretisation< ConfigTag, ImplicitTimeDiscretisationTag >::enabled ) - { - config.addRequiredEntry< String >( "time-discretisation", "Discratisation in time."); - if( ConfigTagTimeDiscretisation< ConfigTag, ExplicitTimeDiscretisationTag >::enabled ) - config.addEntryEnum( "explicit" ); - if( ConfigTagTimeDiscretisation< ConfigTag, SemiImplicitTimeDiscretisationTag >::enabled ) - config.addEntryEnum( "semi-implicit" ); - if( ConfigTagTimeDiscretisation< ConfigTag, ImplicitTimeDiscretisationTag >::enabled ) - config.addEntryEnum( "implicit" ); - } - config.addRequiredEntry< String >( "discrete-solver", "The solver of the discretised problem:" ); - if( ConfigTagTimeDiscretisation< ConfigTag, ExplicitTimeDiscretisationTag >::enabled ) - { - if( ConfigTagExplicitSolver< ConfigTag, ExplicitEulerSolverTag >::enabled ) - config.addEntryEnum( "euler" ); - if( ConfigTagExplicitSolver< ConfigTag, ExplicitMersonSolverTag >::enabled ) - config.addEntryEnum( "merson" ); - } - if( ConfigTagTimeDiscretisation< ConfigTag, SemiImplicitTimeDiscretisationTag >::enabled ) - { - for( auto o : getLinearSolverOptions() ) - config.addEntryEnum( String( o ) ); - config.addEntry< String >( "preconditioner", "The preconditioner for the discrete solver:", "none" ); - for( auto o : getPreconditionerOptions() ) - config.addEntryEnum( String( o ) ); - } - if( ConfigTagTimeDiscretisation< ConfigTag, ExplicitTimeDiscretisationTag >::enabled || - ConfigTagTimeDiscretisation< ConfigTag, SemiImplicitTimeDiscretisationTag >::enabled ) - { - config.addDelimiter( " === Iterative solvers parameters === " ); - IterativeSolver< double, int >::configSetup( config ); - } - if( ConfigTagTimeDiscretisation< ConfigTag, ExplicitTimeDiscretisationTag >::enabled ) - { - config.addDelimiter( " === Explicit solvers parameters === " ); - ODE::ExplicitSolver< PDEProblem >::configSetup( config ); - if( ConfigTagExplicitSolver< ConfigTag, ExplicitEulerSolverTag >::enabled ) - ODE::Euler< PDEProblem >::configSetup( config ); - - if( ConfigTagExplicitSolver< ConfigTag, ExplicitMersonSolverTag >::enabled ) - ODE::Merson< PDEProblem >::configSetup( config ); - } - if( ConfigTagTimeDiscretisation< ConfigTag, SemiImplicitTimeDiscretisationTag >::enabled ) - { - config.addDelimiter( " === Semi-implicit solvers parameters === " ); - using MatrixType = Matrices::SparseMatrix< double >; - Linear::CG< MatrixType >::configSetup( config ); - Linear::BICGStab< MatrixType >::configSetup( config ); - Linear::BICGStabL< MatrixType >::configSetup( config ); - Linear::GMRES< MatrixType >::configSetup( config ); - Linear::TFQMR< MatrixType >::configSetup( config ); - Linear::SOR< MatrixType >::configSetup( config ); - - Linear::Preconditioners::Diagonal< MatrixType >::configSetup( config ); - Linear::Preconditioners::ILU0< MatrixType >::configSetup( config ); - Linear::Preconditioners::ILUT< MatrixType >::configSetup( config ); - } - - config.addDelimiter( " === Logs and messages ===" ); - config.addEntry< int >( "verbose", "Set the verbose mode. The higher number the more messages are generated.", 2 ); - config.addEntry< String >( "log-file", "Log file for the computation.", "log.txt" ); - config.addEntry< int >( "log-width", "Number of columns of the log table.", 80 ); - return true; -} - -} // namespace Solvers -} // namespace TNL diff --git a/src/TNL/Solvers/SolverInitiator.h b/src/TNL/Solvers/SolverInitiator.h index dec9d2e11..c8ec06dd2 100644 --- a/src/TNL/Solvers/SolverInitiator.h +++ b/src/TNL/Solvers/SolverInitiator.h @@ -29,4 +29,4 @@ class SolverInitiator } // namespace Solvers } // namespace TNL -#include +#include diff --git a/src/TNL/Solvers/SolverInitiator_impl.h b/src/TNL/Solvers/SolverInitiator.hpp similarity index 99% rename from src/TNL/Solvers/SolverInitiator_impl.h rename to src/TNL/Solvers/SolverInitiator.hpp index 1678a8a30..36cd6c0a9 100644 --- a/src/TNL/Solvers/SolverInitiator_impl.h +++ b/src/TNL/Solvers/SolverInitiator.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - SolverInitiator_impl.h - description + SolverInitiator.hpp - description ------------------- begin : Feb 23, 2013 copyright : (C) 2013 by Tomas Oberhuber diff --git a/src/TNL/Solvers/SolverStarter.h b/src/TNL/Solvers/SolverStarter.h index 0843c93b4..8fd46b37a 100644 --- a/src/TNL/Solvers/SolverStarter.h +++ b/src/TNL/Solvers/SolverStarter.h @@ -16,7 +16,7 @@ #include namespace TNL { -namespace Solvers { +namespace Solvers { template< typename ConfigTag > class SolverStarter @@ -45,4 +45,4 @@ class SolverStarter } // namespace Solvers } // namespace TNL -#include +#include diff --git a/src/TNL/Solvers/SolverStarter_impl.h b/src/TNL/Solvers/SolverStarter.hpp similarity index 99% rename from src/TNL/Solvers/SolverStarter_impl.h rename to src/TNL/Solvers/SolverStarter.hpp index 49a43f8c8..144869cfa 100644 --- a/src/TNL/Solvers/SolverStarter_impl.h +++ b/src/TNL/Solvers/SolverStarter.hpp @@ -1,5 +1,5 @@ /*************************************************************************** - SolverStarter_impl.h - description + SolverStarter.h - description ------------------- begin : Mar 9, 2013 copyright : (C) 2013 by Tomas Oberhuber diff --git a/src/TNL/Solvers/Solver_impl.h b/src/TNL/Solvers/Solver_impl.h deleted file mode 100644 index a054ad7d9..000000000 --- a/src/TNL/Solvers/Solver_impl.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - Solver_impl.h - description - ------------------- - begin : Mar 9, 2013 - copyright : (C) 2013 by Tomas Oberhuber - email : tomas.oberhuber@fjfi.cvut.cz - ***************************************************************************/ - -/* See Copyright Notice in tnl/Copyright */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace TNL { -namespace Solvers { - -template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter, - template< typename MeshConfig > class ProblemConfig, - typename MeshConfig > -bool -Solver< ProblemSetter, ProblemConfig, MeshConfig >:: -run( int argc, char* argv[] ) -{ - Config::ParameterContainer parameters; - Config::ConfigDescription configDescription; - ProblemConfig< MeshConfig >::configSetup( configDescription ); - SolverConfig< MeshConfig, ProblemConfig< MeshConfig> >::configSetup( configDescription ); - configDescription.addDelimiter( "Parallelization setup:" ); - Devices::Host::configSetup( configDescription ); - Devices::Cuda::configSetup( configDescription ); - MPI::configSetup( configDescription ); - - TNL::MPI::ScopedInitializer mpi( argc, argv ); - - if( ! parseCommandLine( argc, argv, configDescription, parameters ) ) - return false; - - SolverInitiator< ProblemSetter, MeshConfig > solverInitiator; - return solverInitiator.run( parameters ); -}; - -} // namespace Solvers -} // namespace TNL -- GitLab From 945e8507233488b8d72d8561354dd1eb096659fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= Date: Wed, 8 Dec 2021 17:47:29 -0700 Subject: [PATCH 4/6] Changed unimplemented performSORIteration methods to throw exceptions instead of returning false --- src/TNL/Matrices/LambdaMatrix.hpp | 2 ++ src/TNL/Matrices/SparseMatrix.h | 2 +- src/TNL/Matrices/SparseMatrix.hpp | 4 ++-- src/TNL/Matrices/SparseMatrixView.h | 2 +- src/TNL/Matrices/SparseMatrixView.hpp | 5 +++-- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/TNL/Matrices/LambdaMatrix.hpp b/src/TNL/Matrices/LambdaMatrix.hpp index 77de0872c..730c8b5b1 100644 --- a/src/TNL/Matrices/LambdaMatrix.hpp +++ b/src/TNL/Matrices/LambdaMatrix.hpp @@ -17,6 +17,7 @@ #include #include #include +#include namespace TNL { namespace Matrices { @@ -413,6 +414,7 @@ performSORIteration( const Vector1& b, Vector2& x, const RealType& omega ) const { + throw Exceptions::NotImplementedError("performSORIteration is not implemented for SparseMatrixView"); } template< typename MatrixElementsLambda, diff --git a/src/TNL/Matrices/SparseMatrix.h b/src/TNL/Matrices/SparseMatrix.h index d64204381..fa3441b01 100644 --- a/src/TNL/Matrices/SparseMatrix.h +++ b/src/TNL/Matrices/SparseMatrix.h @@ -1044,7 +1044,7 @@ class SparseMatrix : public Matrix< Real, Device, Index, RealAllocator > */ template< typename Vector1, typename Vector2 > - bool performSORIteration( const Vector1& b, + void performSORIteration( const Vector1& b, const IndexType row, Vector2& x, const RealType& omega = 1.0 ) const; diff --git a/src/TNL/Matrices/SparseMatrix.hpp b/src/TNL/Matrices/SparseMatrix.hpp index dd11c6cf7..93cd9b173 100644 --- a/src/TNL/Matrices/SparseMatrix.hpp +++ b/src/TNL/Matrices/SparseMatrix.hpp @@ -824,14 +824,14 @@ template< typename Real, typename RealAllocator, typename IndexAllocator > template< typename Vector1, typename Vector2 > -bool +void SparseMatrix< Real, Device, Index, MatrixType, Segments, ComputeReal, RealAllocator, IndexAllocator >:: performSORIteration( const Vector1& b, const IndexType row, Vector2& x, const RealType& omega ) const { - return false; + this->view.performSORIteration( b, row, x, omega ); } // copy assignment diff --git a/src/TNL/Matrices/SparseMatrixView.h b/src/TNL/Matrices/SparseMatrixView.h index a20964b0c..eaf692ac6 100644 --- a/src/TNL/Matrices/SparseMatrixView.h +++ b/src/TNL/Matrices/SparseMatrixView.h @@ -822,7 +822,7 @@ class SparseMatrixView : public MatrixView< Real, Device, Index > IndexType end = 0 ) const; template< typename Vector1, typename Vector2 > - bool performSORIteration( const Vector1& b, + void performSORIteration( const Vector1& b, const IndexType row, Vector2& x, const RealType& omega = 1.0 ) const; diff --git a/src/TNL/Matrices/SparseMatrixView.hpp b/src/TNL/Matrices/SparseMatrixView.hpp index c3f7387fd..540b7c14a 100644 --- a/src/TNL/Matrices/SparseMatrixView.hpp +++ b/src/TNL/Matrices/SparseMatrixView.hpp @@ -15,6 +15,7 @@ #include #include #include +#include namespace TNL { namespace Matrices { @@ -832,14 +833,14 @@ template< typename Real, template< typename, typename > class SegmentsView, typename ComputeReal > template< typename Vector1, typename Vector2 > -bool +void SparseMatrixView< Real, Device, Index, MatrixType, SegmentsView, ComputeReal >:: performSORIteration( const Vector1& b, const IndexType row, Vector2& x, const RealType& omega ) const { - return false; + throw Exceptions::NotImplementedError("performSORIteration is not implemented for SparseMatrixView"); } template< typename Real, -- GitLab From 376b95b13410234e631893701cfcf13edb996407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= Date: Wed, 8 Dec 2021 17:55:32 -0700 Subject: [PATCH 5/6] Fixed includes in details/SparseMatrix.h and SparseMatrixView.hpp --- src/TNL/Matrices/Sandbox/SparseSandboxMatrixView.hpp | 3 ++- src/TNL/Matrices/SparseMatrixView.hpp | 1 + src/TNL/Matrices/details/SparseMatrix.h | 7 +------ 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/TNL/Matrices/Sandbox/SparseSandboxMatrixView.hpp b/src/TNL/Matrices/Sandbox/SparseSandboxMatrixView.hpp index 07342e8e7..4a6afa691 100644 --- a/src/TNL/Matrices/Sandbox/SparseSandboxMatrixView.hpp +++ b/src/TNL/Matrices/Sandbox/SparseSandboxMatrixView.hpp @@ -10,6 +10,7 @@ #pragma once +#include #include #include #include @@ -271,7 +272,7 @@ addElement( IndexType row, TNL_ASSERT_LT( column,this->getColumns(), "Row index is out of the symmetric part of the matrix after transposition." ); } - // SANDBOX_TODO: Replace the following line with a code that computes number of matrix elements allocated for + // SANDBOX_TODO: Replace the following line with a code that computes number of matrix elements allocated for // matrix row with indedx `row`. Note that the code works on both host and GPU kernel. To achieve // the same effect, you may use macro __CUDA_ARCH__ as can be seen bellow in this method. const IndexType rowSize = this->rowPointers.getElement( row + 1 ) - this->rowPointers.getElement( row ); diff --git a/src/TNL/Matrices/SparseMatrixView.hpp b/src/TNL/Matrices/SparseMatrixView.hpp index 540b7c14a..2af26efd5 100644 --- a/src/TNL/Matrices/SparseMatrixView.hpp +++ b/src/TNL/Matrices/SparseMatrixView.hpp @@ -10,6 +10,7 @@ #pragma once +#include #include #include #include diff --git a/src/TNL/Matrices/details/SparseMatrix.h b/src/TNL/Matrices/details/SparseMatrix.h index 9eeac7614..65007164f 100644 --- a/src/TNL/Matrices/details/SparseMatrix.h +++ b/src/TNL/Matrices/details/SparseMatrix.h @@ -10,17 +10,12 @@ #pragma once -#include -#include -#include -#include - +#include namespace TNL { namespace Matrices { namespace details { - template< typename VectorOrView, std::enable_if_t< HasSetSizeMethod< VectorOrView >::value, bool > = true > static void set_size_if_resizable( VectorOrView& v, typename VectorOrView::IndexType size ) -- GitLab From 38c38c0f8dba63b119ff67cca293e13799208f9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= Date: Wed, 8 Dec 2021 08:33:14 -0700 Subject: [PATCH 6/6] Moved the setup method from StaticVector to the ParameterContainer as getXyz --- .../flow-sw/RiemannProblemInitialCondition.h | 290 +++++++++--------- .../flow-vl/RiemannProblemInitialCondition.h | 290 +++++++++--------- .../flow/RiemannProblemInitialCondition.h | 290 +++++++++--------- .../RiemannProblemInitialCondition.h | 290 +++++++++--------- .../RiemannProblemInitialCondition.h | 290 +++++++++--------- .../RiemannProblemInitialCondition.h | 290 +++++++++--------- src/TNL/Config/ParameterContainer.h | 18 ++ src/TNL/Containers/StaticVector.h | 10 - src/TNL/Containers/StaticVector.hpp | 10 - src/TNL/Functions/Analytic/VectorNorm.h | 91 +++--- src/TNL/Operators/Analytic/Shift.h | 48 +-- 11 files changed, 958 insertions(+), 959 deletions(-) diff --git a/src/Examples/flow-sw/RiemannProblemInitialCondition.h b/src/Examples/flow-sw/RiemannProblemInitialCondition.h index 0d085fed0..c38150f54 100644 --- a/src/Examples/flow-sw/RiemannProblemInitialCondition.h +++ b/src/Examples/flow-sw/RiemannProblemInitialCondition.h @@ -21,7 +21,7 @@ namespace TNL { template class RiemannProblemInitialConditionSetter { - + }; template > { public: - + typedef Meshes::Grid< 1,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -112,7 +112,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 1,MeshReal, Device, Me { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -187,7 +187,7 @@ template > { public: - + typedef Meshes::Grid< 2,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -269,7 +269,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 2, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -407,7 +407,7 @@ template > { public: - + typedef Meshes::Grid< 3, MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -489,7 +489,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 3, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -760,7 +760,7 @@ template< typename Mesh > class RiemannProblemInitialCondition { public: - + typedef Mesh MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -770,7 +770,7 @@ class RiemannProblemInitialCondition typedef Functions::MeshFunctionView< MeshType > MeshFunctionType; typedef Pointers::SharedPointer< MeshFunctionType > MeshFunctionPointer; typedef Functions::VectorField< Dimensions, MeshType > VectorFieldType; - + RiemannProblemInitialCondition() : discontinuityPlacement( 0.5 ), leftDensity( 1.0 ), rightDensity( 1.0 ), @@ -781,60 +781,60 @@ class RiemannProblemInitialCondition static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ) { - config.addEntry< double >( prefix + "discontinuity-placement-0", "x-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-1", "y-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-2", "z-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-x", "x-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-y", "y-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-z", "z-coordinate of the discontinuity placement.", 0.5 ); /* config.addEntry< double >( prefix + "left-density", "Density on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-density", "Density on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "left-velocity-0", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-1", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-2", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "right-velocity-0", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-1", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-2", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "left-velocity-x", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-y", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-z", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "right-velocity-x", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-y", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-z", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); config.addEntry< double >( prefix + "left-pressure", "Pressure on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-pressure", "Pressure on the right side of the discontinuity.", 0.0 ); */ config.addEntry< double >( prefix + "NWU-density", "This sets a value of northwest up density.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-0", "This sets a value of northwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-1", "This sets a value of northwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-2", "This sets a value of northwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-x", "This sets a value of northwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-y", "This sets a value of northwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-z", "This sets a value of northwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWU-pressure", "This sets a value of northwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "SWU-density", "This sets a value of southwest up density.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-0", "This sets a value of southwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-1", "This sets a value of southwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-2", "This sets a value of southwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-x", "This sets a value of southwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-y", "This sets a value of southwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-z", "This sets a value of southwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWU-pressure", "This sets a value of southwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "NWD-density", "This sets a value of northwest down density.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-0", "This sets a value of northwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-1", "This sets a value of northwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-2", "This sets a value of northwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-x", "This sets a value of northwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-y", "This sets a value of northwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-z", "This sets a value of northwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWD-pressure", "This sets a value of northwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "SWD-density", "This sets a value of southwest down density.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-0", "This sets a value of southwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-1", "This sets a value of southwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-2", "This sets a value of southwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-x", "This sets a value of southwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-y", "This sets a value of southwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-z", "This sets a value of southwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWD-pressure", "This sets a value of southwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "NEU-density", "This sets a value of northeast up density.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-0", "This sets a value of northeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-1", "This sets a value of northeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-2", "This sets a value of northeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-x", "This sets a value of northeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-y", "This sets a value of northeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-z", "This sets a value of northeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NEU-pressure", "This sets a value of northeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "SEU-density", "This sets a value of southeast up density.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-0", "This sets a value of southeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-1", "This sets a value of southeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-2", "This sets a value of southeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-x", "This sets a value of southeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-y", "This sets a value of southeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-z", "This sets a value of southeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SEU-pressure", "This sets a value of southeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "NED-density", "This sets a value of northeast down density.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-0", "This sets a value of northeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-1", "This sets a value of northeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-2", "This sets a value of northeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-x", "This sets a value of northeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-y", "This sets a value of northeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-z", "This sets a value of northeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NED-pressure", "This sets a value of northeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "SED-density", "This sets a value of southeast down density.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-0", "This sets a value of southeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-1", "This sets a value of southeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-2", "This sets a value of southeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-x", "This sets a value of southeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-y", "This sets a value of southeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-z", "This sets a value of southeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SED-pressure", "This sets a value of southeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "gamma", "Gamma in the ideal gas state equation.", 1.4 ); @@ -853,19 +853,19 @@ class RiemannProblemInitialCondition config.addEntryEnum< String >( "2D_12" ); config.addEntryEnum< String >( "2D_15" ); config.addEntryEnum< String >( "2D_17" ); - } - + } + bool setup( const Config::ParameterContainer& parameters, const String& prefix = "" ) { String initial = parameters.getParameter< String >( prefix + "initial" ); if(initial == prefix + "none") { - this->discontinuityPlacement.setup( parameters, prefix + "discontinuity-placement-" ); + this->discontinuityPlacement = parameters.getXyz< PointType >( prefix + "discontinuity-placement" ); this->gamma = parameters.getParameter< double >( prefix + "gamma" ); /* - this->leftVelocity.setup( parameters, prefix + "left-velocity-" ); - this->rightVelocity.setup( parameters, prefix + "right-velocity-" ); + this->leftVelocity = parameters.getXyz< PointType >( prefix + "left-velocity" ); + this->rightVelocity = parameters.getXyz< PointType >( prefix + "right-velocity" ); this->leftDensity = parameters.getParameter< double >( prefix + "left-density" ); this->rightDensity = parameters.getParameter< double >( prefix + "right-density" ); this->leftPressure = parameters.getParameter< double >( prefix + "left-pressure" ); @@ -873,60 +873,60 @@ class RiemannProblemInitialCondition */ this->NWUDensity = parameters.getParameter< RealType >( prefix + "NWU-density" ); - this->NWUVelocity.setup( parameters, prefix + "NWU-velocity-" ); + this->NWUVelocity = parameters.getXyz< PointType >( prefix + "NWU-velocity" ); this->NWUPressure = parameters.getParameter< RealType >( prefix + "NWU-pressure" ); - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = parameters.getParameter< RealType >( prefix + "SWU-density" ); - this->SWUVelocity.setup( parameters, prefix + "SWU-velocity-" ); + this->SWUVelocity = parameters.getXyz< PointType >( prefix + "SWU-velocity" ); this->SWUPressure = parameters.getParameter< RealType >( prefix + "SWU-pressure" ); this->SWUEnergy = Energy( SWUDensity, SWUPressure, gamma, SWUVelocity); this->SWUMomentum = SWUVelocity * SWUDensity; this->NWDDensity = parameters.getParameter< RealType >( prefix + "NWD-density" ); - this->NWDVelocity.setup( parameters, prefix + "NWD-velocity-" ); + this->NWDVelocity = parameters.getXyz< PointType >( prefix + "NWD-velocity" ); this->NWDPressure = parameters.getParameter< RealType >( prefix + "NWD-pressure" ); this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = parameters.getParameter< RealType >( prefix + "SWD-density" ); - this->SWDVelocity.setup( parameters, prefix + "SWD-velocity-" ); + this->SWDVelocity = parameters.getXyz< PointType >( prefix + "SWD-velocity" ); this->SWDPressure = parameters.getParameter< RealType >( prefix + "SWD-pressure" ); this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = parameters.getParameter< RealType >( prefix + "NEU-density" ); - this->NEUVelocity.setup( parameters, prefix + "NEU-velocity-" ); + this->NEUVelocity = parameters.getXyz< PointType >( prefix + "NEU-velocity" ); this->NEUPressure = parameters.getParameter< RealType >( prefix + "NEU-pressure" ); this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = parameters.getParameter< RealType >( prefix + "SEU-density" ); - this->SEUVelocity.setup( parameters, prefix + "SEU-velocity-" ); + this->SEUVelocity = parameters.getXyz< PointType >( prefix + "SEU-velocity" ); this->SEUPressure = parameters.getParameter< RealType >( prefix + "SEU-pressure" ); this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = parameters.getParameter< RealType >( prefix + "NED-density" ); - this->NEDVelocity.setup(parameters, prefix + "NED-velocity-" ); + this->NEDVelocity = parameters.getXyz< PointType >( prefix + "NED-velocity" ); this->NEDPressure = parameters.getParameter< RealType >( prefix + "NED-pressure" ); this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = parameters.getParameter< RealType >( prefix + "SED-density" ); - this->SEDVelocity.setup( parameters, prefix + "SED-velocity-" ); + this->SEDVelocity = parameters.getXyz< PointType >( prefix + "SED-velocity" ); this->SEDPressure = parameters.getParameter< RealType >( prefix + "SED-pressure" ); this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; - + } if(initial == prefix + "1D_2") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -938,10 +938,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_3a") predefinedInitialCondition( 1.4, 0.8, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -953,10 +953,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_4") predefinedInitialCondition( 1.666, 0.4, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -968,10 +968,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_5") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -983,10 +983,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_6") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -998,10 +998,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_Noh") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1013,10 +1013,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_peak") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1028,10 +1028,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_3") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 1.206, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1043,10 +1043,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_4") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.8939, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1059,10 +1059,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_6") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.75, 0.5, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1074,10 +1074,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_12") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.7276, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1090,10 +1090,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_15") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, -0.6259, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1105,10 +1105,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_17") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1120,32 +1120,32 @@ class RiemannProblemInitialCondition ); return true; } - + void setDiscontinuityPlacement( const PointType& v ) { this->discontinuityPlacement = v; } - + const PointType& getDiscontinuityPlasement() const { return this->discontinuityPlacement; } - + void setLeftDensity( const RealType& leftDensity ) { this->leftDensity = leftDensity; } - + const RealType& getLeftDensity() const { return this->leftDensity; } - + void setRightDensity( const RealType& rightDensity ) { this->rightDensity = rightDensity; } - + const RealType& getRightDensity() const { return this->rightDensity; @@ -1155,17 +1155,17 @@ class RiemannProblemInitialCondition { this->leftVelocity = leftVelocity; } - + const PointType& getLeftVelocity() const { return this->leftVelocity; } - + void setRightVelocity( const RealType& rightVelocity ) { this->rightVelocity = rightVelocity; } - + const PointType& getRightVelocity() const { return this->rightVelocity; @@ -1175,17 +1175,17 @@ class RiemannProblemInitialCondition { this->leftPressure = leftPressure; } - + const RealType& getLeftPressure() const { return this->leftPressure; } - + void setRightPressure( const RealType& rightPressure ) { this->rightPressure = rightPressure; } - + const RealType& getRightPressure() const { return this->rightPressure; @@ -1193,10 +1193,10 @@ class RiemannProblemInitialCondition void predefinedInitialCondition( double preGamma, double preDiscX, double preDiscY, double preDiscZ, - double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1214,7 +1214,7 @@ class RiemannProblemInitialCondition this->NWUDensity = preNWUDensity; this->NWUVelocity = PointLoad(preNWUVelocityX, preNWUVelocityY, preNWUVelocityZ); this->NWUPressure = preNWUPressure; - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = preNWUDensity; @@ -1226,47 +1226,47 @@ class RiemannProblemInitialCondition this->NWDDensity = preNWDDensity; this->NWDVelocity = PointLoad(preNWDVelocityX, preNWDVelocityY, preNWDVelocityZ); this->NWDPressure = preNWDPressure; - this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); + this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = preSWDDensity; this->SWDVelocity = PointLoad(preSWDVelocityX, preSWDVelocityY, preSWDVelocityZ); this->SWDPressure = preSWDPressure; - this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); + this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = preNEUDensity; this->NEUVelocity = PointLoad(preNEUVelocityX, preNEUVelocityY, preNEUVelocityZ); this->NEUPressure = preNEUPressure; - this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); + this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = preSEUDensity; this->SEUVelocity = PointLoad(preSEUVelocityX, preSEUVelocityY, preSEUVelocityZ); this->SEUPressure = preSEUPressure; - this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); + this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = preNEDDensity; this->NEDVelocity = PointLoad(preNEDVelocityX, preNEDVelocityY, preNEDVelocityZ); this->NEDPressure = preNEDPressure; - this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); + this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = preSEDDensity; this->SEDVelocity = PointLoad(preSEDVelocityX, preSEDVelocityY, preSEDVelocityZ); this->SEDPressure = preSEDPressure; - this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); + this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; std::cout << this->SEDEnergy; std::cout << this->SWDEnergy; - + } PointType PointLoad( RealType ValueX, RealType ValueY, RealType ValueZ) { - PointType point; + PointType point; switch (Dimensions) { case 1: point[ 0 ] = ValueX; @@ -1275,7 +1275,7 @@ class RiemannProblemInitialCondition point[ 1 ] = ValueY; break; case 3: point[ 0 ] = ValueX; - point[ 1 ] = ValueY; + point[ 1 ] = ValueY; point[ 2 ] = ValueZ; break; } @@ -1296,7 +1296,7 @@ class RiemannProblemInitialCondition } return energy; } - + void setInitialCondition( CompressibleConservativeVariables< MeshType >& conservativeVariables, const PointType& center = PointType( 0.0 ) ) { @@ -1343,7 +1343,7 @@ class RiemannProblemInitialCondition typedef Operators::Analytic::Sign< Dimensions, RealType > SignType; typedef Functions::OperatorFunction< SignType, VectorNormType > InitialConditionType; typedef Pointers::SharedPointer< InitialConditionType, DeviceType > InitialConditionPointer; - + InitialConditionPointer initialCondition; initialCondition->getFunction().setCenter( center ); initialCondition->getFunction().setMaxNorm( true ); @@ -1353,7 +1353,7 @@ class RiemannProblemInitialCondition discontinuityPlacement[ i ] = 1.0 / discontinuityPlacement[ i ]; initialCondition->getFunction().setAnisotropy( discontinuityPlacement ); initialCondition->getFunction().setMultiplicator( -1.0 ); - + Functions::MeshFunctionEvaluator< MeshFunctionType, InitialConditionType > evaluator; */ /**** @@ -1362,12 +1362,12 @@ class RiemannProblemInitialCondition /* conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); */ -/* +/* initialCondition->getOperator().setPositiveValue( leftDensity ); initialCondition->getOperator().setNegativeValue( rightDensity ); evaluator.evaluate( conservativeVariables.getDensity(), initialCondition ); conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); -*/ +*/ /**** * Momentum */ @@ -1379,7 +1379,7 @@ class RiemannProblemInitialCondition initialCondition->getOperator().setNegativeValue( rightDensity * rightVelocity[ i ] ); evaluator.evaluate( conservativeVariables.getMomentum()[ i ], initialCondition ); } -*/ +*/ /**** * Energy */ @@ -1397,10 +1397,10 @@ class RiemannProblemInitialCondition (* conservativeVariables.getEnergy())->write( "energy-init", "gnuplot" ); */ } - - + + protected: - + PointType discontinuityPlacement; PointType NWUVelocity, NEUVelocity, SWUVelocity, SEUVelocity, NWDVelocity, NEDVelocity, SWDVelocity, SEDVelocity; RealType NWUDensity, NEUDensity, SWUDensity, SEUDensity, NWDDensity, NEDDensity, SWDDensity, SEDDensity; @@ -1410,7 +1410,7 @@ class RiemannProblemInitialCondition RealType leftDensity, rightDensity; PointType leftVelocity, rightVelocity; RealType leftPressure, rightPressure; - + RealType gamma; // gamma in the ideal gas state equation }; diff --git a/src/Examples/flow-vl/RiemannProblemInitialCondition.h b/src/Examples/flow-vl/RiemannProblemInitialCondition.h index 0d085fed0..c38150f54 100644 --- a/src/Examples/flow-vl/RiemannProblemInitialCondition.h +++ b/src/Examples/flow-vl/RiemannProblemInitialCondition.h @@ -21,7 +21,7 @@ namespace TNL { template class RiemannProblemInitialConditionSetter { - + }; template > { public: - + typedef Meshes::Grid< 1,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -112,7 +112,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 1,MeshReal, Device, Me { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -187,7 +187,7 @@ template > { public: - + typedef Meshes::Grid< 2,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -269,7 +269,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 2, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -407,7 +407,7 @@ template > { public: - + typedef Meshes::Grid< 3, MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -489,7 +489,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 3, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -760,7 +760,7 @@ template< typename Mesh > class RiemannProblemInitialCondition { public: - + typedef Mesh MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -770,7 +770,7 @@ class RiemannProblemInitialCondition typedef Functions::MeshFunctionView< MeshType > MeshFunctionType; typedef Pointers::SharedPointer< MeshFunctionType > MeshFunctionPointer; typedef Functions::VectorField< Dimensions, MeshType > VectorFieldType; - + RiemannProblemInitialCondition() : discontinuityPlacement( 0.5 ), leftDensity( 1.0 ), rightDensity( 1.0 ), @@ -781,60 +781,60 @@ class RiemannProblemInitialCondition static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ) { - config.addEntry< double >( prefix + "discontinuity-placement-0", "x-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-1", "y-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-2", "z-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-x", "x-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-y", "y-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-z", "z-coordinate of the discontinuity placement.", 0.5 ); /* config.addEntry< double >( prefix + "left-density", "Density on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-density", "Density on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "left-velocity-0", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-1", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-2", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "right-velocity-0", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-1", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-2", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "left-velocity-x", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-y", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-z", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "right-velocity-x", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-y", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-z", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); config.addEntry< double >( prefix + "left-pressure", "Pressure on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-pressure", "Pressure on the right side of the discontinuity.", 0.0 ); */ config.addEntry< double >( prefix + "NWU-density", "This sets a value of northwest up density.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-0", "This sets a value of northwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-1", "This sets a value of northwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-2", "This sets a value of northwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-x", "This sets a value of northwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-y", "This sets a value of northwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-z", "This sets a value of northwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWU-pressure", "This sets a value of northwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "SWU-density", "This sets a value of southwest up density.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-0", "This sets a value of southwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-1", "This sets a value of southwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-2", "This sets a value of southwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-x", "This sets a value of southwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-y", "This sets a value of southwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-z", "This sets a value of southwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWU-pressure", "This sets a value of southwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "NWD-density", "This sets a value of northwest down density.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-0", "This sets a value of northwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-1", "This sets a value of northwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-2", "This sets a value of northwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-x", "This sets a value of northwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-y", "This sets a value of northwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-z", "This sets a value of northwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWD-pressure", "This sets a value of northwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "SWD-density", "This sets a value of southwest down density.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-0", "This sets a value of southwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-1", "This sets a value of southwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-2", "This sets a value of southwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-x", "This sets a value of southwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-y", "This sets a value of southwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-z", "This sets a value of southwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWD-pressure", "This sets a value of southwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "NEU-density", "This sets a value of northeast up density.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-0", "This sets a value of northeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-1", "This sets a value of northeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-2", "This sets a value of northeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-x", "This sets a value of northeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-y", "This sets a value of northeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-z", "This sets a value of northeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NEU-pressure", "This sets a value of northeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "SEU-density", "This sets a value of southeast up density.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-0", "This sets a value of southeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-1", "This sets a value of southeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-2", "This sets a value of southeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-x", "This sets a value of southeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-y", "This sets a value of southeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-z", "This sets a value of southeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SEU-pressure", "This sets a value of southeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "NED-density", "This sets a value of northeast down density.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-0", "This sets a value of northeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-1", "This sets a value of northeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-2", "This sets a value of northeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-x", "This sets a value of northeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-y", "This sets a value of northeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-z", "This sets a value of northeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NED-pressure", "This sets a value of northeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "SED-density", "This sets a value of southeast down density.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-0", "This sets a value of southeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-1", "This sets a value of southeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-2", "This sets a value of southeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-x", "This sets a value of southeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-y", "This sets a value of southeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-z", "This sets a value of southeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SED-pressure", "This sets a value of southeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "gamma", "Gamma in the ideal gas state equation.", 1.4 ); @@ -853,19 +853,19 @@ class RiemannProblemInitialCondition config.addEntryEnum< String >( "2D_12" ); config.addEntryEnum< String >( "2D_15" ); config.addEntryEnum< String >( "2D_17" ); - } - + } + bool setup( const Config::ParameterContainer& parameters, const String& prefix = "" ) { String initial = parameters.getParameter< String >( prefix + "initial" ); if(initial == prefix + "none") { - this->discontinuityPlacement.setup( parameters, prefix + "discontinuity-placement-" ); + this->discontinuityPlacement = parameters.getXyz< PointType >( prefix + "discontinuity-placement" ); this->gamma = parameters.getParameter< double >( prefix + "gamma" ); /* - this->leftVelocity.setup( parameters, prefix + "left-velocity-" ); - this->rightVelocity.setup( parameters, prefix + "right-velocity-" ); + this->leftVelocity = parameters.getXyz< PointType >( prefix + "left-velocity" ); + this->rightVelocity = parameters.getXyz< PointType >( prefix + "right-velocity" ); this->leftDensity = parameters.getParameter< double >( prefix + "left-density" ); this->rightDensity = parameters.getParameter< double >( prefix + "right-density" ); this->leftPressure = parameters.getParameter< double >( prefix + "left-pressure" ); @@ -873,60 +873,60 @@ class RiemannProblemInitialCondition */ this->NWUDensity = parameters.getParameter< RealType >( prefix + "NWU-density" ); - this->NWUVelocity.setup( parameters, prefix + "NWU-velocity-" ); + this->NWUVelocity = parameters.getXyz< PointType >( prefix + "NWU-velocity" ); this->NWUPressure = parameters.getParameter< RealType >( prefix + "NWU-pressure" ); - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = parameters.getParameter< RealType >( prefix + "SWU-density" ); - this->SWUVelocity.setup( parameters, prefix + "SWU-velocity-" ); + this->SWUVelocity = parameters.getXyz< PointType >( prefix + "SWU-velocity" ); this->SWUPressure = parameters.getParameter< RealType >( prefix + "SWU-pressure" ); this->SWUEnergy = Energy( SWUDensity, SWUPressure, gamma, SWUVelocity); this->SWUMomentum = SWUVelocity * SWUDensity; this->NWDDensity = parameters.getParameter< RealType >( prefix + "NWD-density" ); - this->NWDVelocity.setup( parameters, prefix + "NWD-velocity-" ); + this->NWDVelocity = parameters.getXyz< PointType >( prefix + "NWD-velocity" ); this->NWDPressure = parameters.getParameter< RealType >( prefix + "NWD-pressure" ); this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = parameters.getParameter< RealType >( prefix + "SWD-density" ); - this->SWDVelocity.setup( parameters, prefix + "SWD-velocity-" ); + this->SWDVelocity = parameters.getXyz< PointType >( prefix + "SWD-velocity" ); this->SWDPressure = parameters.getParameter< RealType >( prefix + "SWD-pressure" ); this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = parameters.getParameter< RealType >( prefix + "NEU-density" ); - this->NEUVelocity.setup( parameters, prefix + "NEU-velocity-" ); + this->NEUVelocity = parameters.getXyz< PointType >( prefix + "NEU-velocity" ); this->NEUPressure = parameters.getParameter< RealType >( prefix + "NEU-pressure" ); this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = parameters.getParameter< RealType >( prefix + "SEU-density" ); - this->SEUVelocity.setup( parameters, prefix + "SEU-velocity-" ); + this->SEUVelocity = parameters.getXyz< PointType >( prefix + "SEU-velocity" ); this->SEUPressure = parameters.getParameter< RealType >( prefix + "SEU-pressure" ); this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = parameters.getParameter< RealType >( prefix + "NED-density" ); - this->NEDVelocity.setup(parameters, prefix + "NED-velocity-" ); + this->NEDVelocity = parameters.getXyz< PointType >( prefix + "NED-velocity" ); this->NEDPressure = parameters.getParameter< RealType >( prefix + "NED-pressure" ); this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = parameters.getParameter< RealType >( prefix + "SED-density" ); - this->SEDVelocity.setup( parameters, prefix + "SED-velocity-" ); + this->SEDVelocity = parameters.getXyz< PointType >( prefix + "SED-velocity" ); this->SEDPressure = parameters.getParameter< RealType >( prefix + "SED-pressure" ); this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; - + } if(initial == prefix + "1D_2") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -938,10 +938,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_3a") predefinedInitialCondition( 1.4, 0.8, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -953,10 +953,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_4") predefinedInitialCondition( 1.666, 0.4, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -968,10 +968,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_5") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -983,10 +983,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_6") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -998,10 +998,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_Noh") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1013,10 +1013,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_peak") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1028,10 +1028,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_3") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 1.206, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1043,10 +1043,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_4") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.8939, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1059,10 +1059,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_6") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.75, 0.5, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1074,10 +1074,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_12") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.7276, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1090,10 +1090,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_15") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, -0.6259, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1105,10 +1105,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_17") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1120,32 +1120,32 @@ class RiemannProblemInitialCondition ); return true; } - + void setDiscontinuityPlacement( const PointType& v ) { this->discontinuityPlacement = v; } - + const PointType& getDiscontinuityPlasement() const { return this->discontinuityPlacement; } - + void setLeftDensity( const RealType& leftDensity ) { this->leftDensity = leftDensity; } - + const RealType& getLeftDensity() const { return this->leftDensity; } - + void setRightDensity( const RealType& rightDensity ) { this->rightDensity = rightDensity; } - + const RealType& getRightDensity() const { return this->rightDensity; @@ -1155,17 +1155,17 @@ class RiemannProblemInitialCondition { this->leftVelocity = leftVelocity; } - + const PointType& getLeftVelocity() const { return this->leftVelocity; } - + void setRightVelocity( const RealType& rightVelocity ) { this->rightVelocity = rightVelocity; } - + const PointType& getRightVelocity() const { return this->rightVelocity; @@ -1175,17 +1175,17 @@ class RiemannProblemInitialCondition { this->leftPressure = leftPressure; } - + const RealType& getLeftPressure() const { return this->leftPressure; } - + void setRightPressure( const RealType& rightPressure ) { this->rightPressure = rightPressure; } - + const RealType& getRightPressure() const { return this->rightPressure; @@ -1193,10 +1193,10 @@ class RiemannProblemInitialCondition void predefinedInitialCondition( double preGamma, double preDiscX, double preDiscY, double preDiscZ, - double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1214,7 +1214,7 @@ class RiemannProblemInitialCondition this->NWUDensity = preNWUDensity; this->NWUVelocity = PointLoad(preNWUVelocityX, preNWUVelocityY, preNWUVelocityZ); this->NWUPressure = preNWUPressure; - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = preNWUDensity; @@ -1226,47 +1226,47 @@ class RiemannProblemInitialCondition this->NWDDensity = preNWDDensity; this->NWDVelocity = PointLoad(preNWDVelocityX, preNWDVelocityY, preNWDVelocityZ); this->NWDPressure = preNWDPressure; - this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); + this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = preSWDDensity; this->SWDVelocity = PointLoad(preSWDVelocityX, preSWDVelocityY, preSWDVelocityZ); this->SWDPressure = preSWDPressure; - this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); + this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = preNEUDensity; this->NEUVelocity = PointLoad(preNEUVelocityX, preNEUVelocityY, preNEUVelocityZ); this->NEUPressure = preNEUPressure; - this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); + this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = preSEUDensity; this->SEUVelocity = PointLoad(preSEUVelocityX, preSEUVelocityY, preSEUVelocityZ); this->SEUPressure = preSEUPressure; - this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); + this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = preNEDDensity; this->NEDVelocity = PointLoad(preNEDVelocityX, preNEDVelocityY, preNEDVelocityZ); this->NEDPressure = preNEDPressure; - this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); + this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = preSEDDensity; this->SEDVelocity = PointLoad(preSEDVelocityX, preSEDVelocityY, preSEDVelocityZ); this->SEDPressure = preSEDPressure; - this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); + this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; std::cout << this->SEDEnergy; std::cout << this->SWDEnergy; - + } PointType PointLoad( RealType ValueX, RealType ValueY, RealType ValueZ) { - PointType point; + PointType point; switch (Dimensions) { case 1: point[ 0 ] = ValueX; @@ -1275,7 +1275,7 @@ class RiemannProblemInitialCondition point[ 1 ] = ValueY; break; case 3: point[ 0 ] = ValueX; - point[ 1 ] = ValueY; + point[ 1 ] = ValueY; point[ 2 ] = ValueZ; break; } @@ -1296,7 +1296,7 @@ class RiemannProblemInitialCondition } return energy; } - + void setInitialCondition( CompressibleConservativeVariables< MeshType >& conservativeVariables, const PointType& center = PointType( 0.0 ) ) { @@ -1343,7 +1343,7 @@ class RiemannProblemInitialCondition typedef Operators::Analytic::Sign< Dimensions, RealType > SignType; typedef Functions::OperatorFunction< SignType, VectorNormType > InitialConditionType; typedef Pointers::SharedPointer< InitialConditionType, DeviceType > InitialConditionPointer; - + InitialConditionPointer initialCondition; initialCondition->getFunction().setCenter( center ); initialCondition->getFunction().setMaxNorm( true ); @@ -1353,7 +1353,7 @@ class RiemannProblemInitialCondition discontinuityPlacement[ i ] = 1.0 / discontinuityPlacement[ i ]; initialCondition->getFunction().setAnisotropy( discontinuityPlacement ); initialCondition->getFunction().setMultiplicator( -1.0 ); - + Functions::MeshFunctionEvaluator< MeshFunctionType, InitialConditionType > evaluator; */ /**** @@ -1362,12 +1362,12 @@ class RiemannProblemInitialCondition /* conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); */ -/* +/* initialCondition->getOperator().setPositiveValue( leftDensity ); initialCondition->getOperator().setNegativeValue( rightDensity ); evaluator.evaluate( conservativeVariables.getDensity(), initialCondition ); conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); -*/ +*/ /**** * Momentum */ @@ -1379,7 +1379,7 @@ class RiemannProblemInitialCondition initialCondition->getOperator().setNegativeValue( rightDensity * rightVelocity[ i ] ); evaluator.evaluate( conservativeVariables.getMomentum()[ i ], initialCondition ); } -*/ +*/ /**** * Energy */ @@ -1397,10 +1397,10 @@ class RiemannProblemInitialCondition (* conservativeVariables.getEnergy())->write( "energy-init", "gnuplot" ); */ } - - + + protected: - + PointType discontinuityPlacement; PointType NWUVelocity, NEUVelocity, SWUVelocity, SEUVelocity, NWDVelocity, NEDVelocity, SWDVelocity, SEDVelocity; RealType NWUDensity, NEUDensity, SWUDensity, SEUDensity, NWDDensity, NEDDensity, SWDDensity, SEDDensity; @@ -1410,7 +1410,7 @@ class RiemannProblemInitialCondition RealType leftDensity, rightDensity; PointType leftVelocity, rightVelocity; RealType leftPressure, rightPressure; - + RealType gamma; // gamma in the ideal gas state equation }; diff --git a/src/Examples/flow/RiemannProblemInitialCondition.h b/src/Examples/flow/RiemannProblemInitialCondition.h index 810602b16..a761d68be 100644 --- a/src/Examples/flow/RiemannProblemInitialCondition.h +++ b/src/Examples/flow/RiemannProblemInitialCondition.h @@ -21,7 +21,7 @@ namespace TNL { template class RiemannProblemInitialConditionSetter { - + }; template > { public: - + typedef Meshes::Grid< 1,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -112,7 +112,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 1,MeshReal, Device, Me { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -187,7 +187,7 @@ template > { public: - + typedef Meshes::Grid< 2,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -269,7 +269,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 2, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -407,7 +407,7 @@ template > { public: - + typedef Meshes::Grid< 3, MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -489,7 +489,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 3, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -760,7 +760,7 @@ template< typename Mesh > class RiemannProblemInitialCondition { public: - + typedef Mesh MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -770,7 +770,7 @@ class RiemannProblemInitialCondition typedef Functions::MeshFunctionView< MeshType > MeshFunctionType; typedef Pointers::SharedPointer< MeshFunctionType > MeshFunctionPointer; typedef Functions::VectorField< Dimensions, MeshType > VectorFieldType; - + RiemannProblemInitialCondition() : discontinuityPlacement( 0.5 ), leftDensity( 1.0 ), rightDensity( 1.0 ), @@ -781,60 +781,60 @@ class RiemannProblemInitialCondition static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ) { - config.addEntry< double >( prefix + "discontinuity-placement-0", "x-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-1", "y-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-2", "z-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-x", "x-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-y", "y-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-z", "z-coordinate of the discontinuity placement.", 0.5 ); /* config.addEntry< double >( prefix + "left-density", "Density on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-density", "Density on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "left-velocity-0", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-1", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-2", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "right-velocity-0", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-1", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-2", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "left-velocity-x", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-y", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-z", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "right-velocity-x", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-y", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-z", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); config.addEntry< double >( prefix + "left-pressure", "Pressure on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-pressure", "Pressure on the right side of the discontinuity.", 0.0 ); */ config.addEntry< double >( prefix + "NWU-density", "This sets a value of northwest up density.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-0", "This sets a value of northwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-1", "This sets a value of northwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-2", "This sets a value of northwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-x", "This sets a value of northwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-y", "This sets a value of northwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-z", "This sets a value of northwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWU-pressure", "This sets a value of northwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "SWU-density", "This sets a value of southwest up density.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-0", "This sets a value of southwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-1", "This sets a value of southwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-2", "This sets a value of southwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-x", "This sets a value of southwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-y", "This sets a value of southwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-z", "This sets a value of southwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWU-pressure", "This sets a value of southwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "NWD-density", "This sets a value of northwest down density.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-0", "This sets a value of northwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-1", "This sets a value of northwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-2", "This sets a value of northwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-x", "This sets a value of northwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-y", "This sets a value of northwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-z", "This sets a value of northwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWD-pressure", "This sets a value of northwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "SWD-density", "This sets a value of southwest down density.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-0", "This sets a value of southwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-1", "This sets a value of southwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-2", "This sets a value of southwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-x", "This sets a value of southwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-y", "This sets a value of southwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-z", "This sets a value of southwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWD-pressure", "This sets a value of southwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "NEU-density", "This sets a value of northeast up density.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-0", "This sets a value of northeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-1", "This sets a value of northeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-2", "This sets a value of northeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-x", "This sets a value of northeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-y", "This sets a value of northeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-z", "This sets a value of northeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NEU-pressure", "This sets a value of northeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "SEU-density", "This sets a value of southeast up density.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-0", "This sets a value of southeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-1", "This sets a value of southeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-2", "This sets a value of southeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-x", "This sets a value of southeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-y", "This sets a value of southeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-z", "This sets a value of southeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SEU-pressure", "This sets a value of southeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "NED-density", "This sets a value of northeast down density.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-0", "This sets a value of northeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-1", "This sets a value of northeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-2", "This sets a value of northeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-x", "This sets a value of northeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-y", "This sets a value of northeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-z", "This sets a value of northeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NED-pressure", "This sets a value of northeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "SED-density", "This sets a value of southeast down density.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-0", "This sets a value of southeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-1", "This sets a value of southeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-2", "This sets a value of southeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-x", "This sets a value of southeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-y", "This sets a value of southeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-z", "This sets a value of southeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SED-pressure", "This sets a value of southeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "gamma", "Gamma in the ideal gas state equation.", 1.4 ); @@ -853,19 +853,19 @@ class RiemannProblemInitialCondition config.addEntryEnum< String >( "2D_12" ); config.addEntryEnum< String >( "2D_15" ); config.addEntryEnum< String >( "2D_17" ); - } - + } + bool setup( const Config::ParameterContainer& parameters, const String& prefix = "" ) { String initial = parameters.getParameter< String >( prefix + "initial" ); if(initial == prefix + "none") { - this->discontinuityPlacement.setup( parameters, prefix + "discontinuity-placement-" ); + this->discontinuityPlacement = parameters.getXyz< PointType >( prefix + "discontinuity-placement" ); this->gamma = parameters.getParameter< double >( prefix + "gamma" ); /* - this->leftVelocity.setup( parameters, prefix + "left-velocity-" ); - this->rightVelocity.setup( parameters, prefix + "right-velocity-" ); + this->leftVelocity = parameters.getXyz< PointType >( prefix + "left-velocity" ); + this->rightVelocity = parameters.getXyz< PointType >( prefix + "right-velocity" ); this->leftDensity = parameters.getParameter< double >( prefix + "left-density" ); this->rightDensity = parameters.getParameter< double >( prefix + "right-density" ); this->leftPressure = parameters.getParameter< double >( prefix + "left-pressure" ); @@ -873,60 +873,60 @@ class RiemannProblemInitialCondition */ this->NWUDensity = parameters.getParameter< RealType >( prefix + "NWU-density" ); - this->NWUVelocity.setup( parameters, prefix + "NWU-velocity-" ); + this->NWUVelocity = parameters.getXyz< PointType >( prefix + "NWU-velocity" ); this->NWUPressure = parameters.getParameter< RealType >( prefix + "NWU-pressure" ); - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = parameters.getParameter< RealType >( prefix + "SWU-density" ); - this->SWUVelocity.setup( parameters, prefix + "SWU-velocity-" ); + this->SWUVelocity = parameters.getXyz< PointType >( prefix + "SWU-velocity" ); this->SWUPressure = parameters.getParameter< RealType >( prefix + "SWU-pressure" ); this->SWUEnergy = Energy( SWUDensity, SWUPressure, gamma, SWUVelocity); this->SWUMomentum = SWUVelocity * SWUDensity; this->NWDDensity = parameters.getParameter< RealType >( prefix + "NWD-density" ); - this->NWDVelocity.setup( parameters, prefix + "NWD-velocity-" ); + this->NWDVelocity = parameters.getXyz< PointType >( prefix + "NWD-velocity" ); this->NWDPressure = parameters.getParameter< RealType >( prefix + "NWD-pressure" ); this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = parameters.getParameter< RealType >( prefix + "SWD-density" ); - this->SWDVelocity.setup( parameters, prefix + "SWD-velocity-" ); + this->SWDVelocity = parameters.getXyz< PointType >( prefix + "SWD-velocity" ); this->SWDPressure = parameters.getParameter< RealType >( prefix + "SWD-pressure" ); this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = parameters.getParameter< RealType >( prefix + "NEU-density" ); - this->NEUVelocity.setup( parameters, prefix + "NEU-velocity-" ); + this->NEUVelocity = parameters.getXyz< PointType >( prefix + "NEU-velocity" ); this->NEUPressure = parameters.getParameter< RealType >( prefix + "NEU-pressure" ); this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = parameters.getParameter< RealType >( prefix + "SEU-density" ); - this->SEUVelocity.setup( parameters, prefix + "SEU-velocity-" ); + this->SEUVelocity = parameters.getXyz< PointType >( prefix + "SEU-velocity" ); this->SEUPressure = parameters.getParameter< RealType >( prefix + "SEU-pressure" ); this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = parameters.getParameter< RealType >( prefix + "NED-density" ); - this->NEDVelocity.setup(parameters, prefix + "NED-velocity-" ); + this->NEDVelocity = parameters.getXyz< PointType >( prefix + "NED-velocity" ); this->NEDPressure = parameters.getParameter< RealType >( prefix + "NED-pressure" ); this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = parameters.getParameter< RealType >( prefix + "SED-density" ); - this->SEDVelocity.setup( parameters, prefix + "SED-velocity-" ); + this->SEDVelocity = parameters.getXyz< PointType >( prefix + "SED-velocity" ); this->SEDPressure = parameters.getParameter< RealType >( prefix + "SED-pressure" ); this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; - + } if(initial == prefix + "1D_2") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -938,10 +938,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_3a") predefinedInitialCondition( 1.4, 0.8, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -953,10 +953,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_4") predefinedInitialCondition( 1.666, 0.4, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -968,10 +968,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_5") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -983,10 +983,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_6") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -998,10 +998,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_Noh") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1013,10 +1013,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_peak") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1028,10 +1028,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_3") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 1.206, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1043,10 +1043,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_4") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.8939, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1059,10 +1059,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_6") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.75, 0.5, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1074,10 +1074,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_12") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.7276, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1090,10 +1090,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_15") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, -0.6259, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1105,10 +1105,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_17") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1120,32 +1120,32 @@ class RiemannProblemInitialCondition ); return true; } - + void setDiscontinuityPlacement( const PointType& v ) { this->discontinuityPlacement = v; } - + const PointType& getDiscontinuityPlasement() const { return this->discontinuityPlacement; } - + void setLeftDensity( const RealType& leftDensity ) { this->leftDensity = leftDensity; } - + const RealType& getLeftDensity() const { return this->leftDensity; } - + void setRightDensity( const RealType& rightDensity ) { this->rightDensity = rightDensity; } - + const RealType& getRightDensity() const { return this->rightDensity; @@ -1155,17 +1155,17 @@ class RiemannProblemInitialCondition { this->leftVelocity = leftVelocity; } - + const PointType& getLeftVelocity() const { return this->leftVelocity; } - + void setRightVelocity( const RealType& rightVelocity ) { this->rightVelocity = rightVelocity; } - + const PointType& getRightVelocity() const { return this->rightVelocity; @@ -1175,17 +1175,17 @@ class RiemannProblemInitialCondition { this->leftPressure = leftPressure; } - + const RealType& getLeftPressure() const { return this->leftPressure; } - + void setRightPressure( const RealType& rightPressure ) { this->rightPressure = rightPressure; } - + const RealType& getRightPressure() const { return this->rightPressure; @@ -1193,10 +1193,10 @@ class RiemannProblemInitialCondition void predefinedInitialCondition( double preGamma, double preDiscX, double preDiscY, double preDiscZ, - double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1214,7 +1214,7 @@ class RiemannProblemInitialCondition this->NWUDensity = preNWUDensity; this->NWUVelocity = PointLoad(preNWUVelocityX, preNWUVelocityY, preNWUVelocityZ); this->NWUPressure = preNWUPressure; - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = preNWUDensity; @@ -1226,43 +1226,43 @@ class RiemannProblemInitialCondition this->NWDDensity = preNWDDensity; this->NWDVelocity = PointLoad(preNWDVelocityX, preNWDVelocityY, preNWDVelocityZ); this->NWDPressure = preNWDPressure; - this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); + this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = preSWDDensity; this->SWDVelocity = PointLoad(preSWDVelocityX, preSWDVelocityY, preSWDVelocityZ); this->SWDPressure = preSWDPressure; - this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); + this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = preNEUDensity; this->NEUVelocity = PointLoad(preNEUVelocityX, preNEUVelocityY, preNEUVelocityZ); this->NEUPressure = preNEUPressure; - this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); + this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = preSEUDensity; this->SEUVelocity = PointLoad(preSEUVelocityX, preSEUVelocityY, preSEUVelocityZ); this->SEUPressure = preSEUPressure; - this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); + this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = preNEDDensity; this->NEDVelocity = PointLoad(preNEDVelocityX, preNEDVelocityY, preNEDVelocityZ); this->NEDPressure = preNEDPressure; - this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); + this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = preSEDDensity; this->SEDVelocity = PointLoad(preSEDVelocityX, preSEDVelocityY, preSEDVelocityZ); this->SEDPressure = preSEDPressure; - this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); - this->SEDMomentum = SEDVelocity * SEDDensity; + this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); + this->SEDMomentum = SEDVelocity * SEDDensity; } PointType PointLoad( RealType ValueX, RealType ValueY, RealType ValueZ) { - PointType point; + PointType point; switch (Dimensions) { case 1: point[ 0 ] = ValueX; @@ -1271,7 +1271,7 @@ class RiemannProblemInitialCondition point[ 1 ] = ValueY; break; case 3: point[ 0 ] = ValueX; - point[ 1 ] = ValueY; + point[ 1 ] = ValueY; point[ 2 ] = ValueZ; break; } @@ -1292,7 +1292,7 @@ class RiemannProblemInitialCondition } return energy; } - + void setInitialCondition( CompressibleConservativeVariables< MeshType >& conservativeVariables, const PointType& center = PointType( 0.0 ) ) { @@ -1339,7 +1339,7 @@ class RiemannProblemInitialCondition typedef Operators::Analytic::Sign< Dimensions, RealType > SignType; typedef Functions::OperatorFunction< SignType, VectorNormType > InitialConditionType; typedef Pointers::SharedPointer< InitialConditionType, DeviceType > InitialConditionPointer; - + InitialConditionPointer initialCondition; initialCondition->getFunction().setCenter( center ); initialCondition->getFunction().setMaxNorm( true ); @@ -1349,7 +1349,7 @@ class RiemannProblemInitialCondition discontinuityPlacement[ i ] = 1.0 / discontinuityPlacement[ i ]; initialCondition->getFunction().setAnisotropy( discontinuityPlacement ); initialCondition->getFunction().setMultiplicator( -1.0 ); - + Functions::MeshFunctionEvaluator< MeshFunctionType, InitialConditionType > evaluator; */ /**** @@ -1358,12 +1358,12 @@ class RiemannProblemInitialCondition /* conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); */ -/* +/* initialCondition->getOperator().setPositiveValue( leftDensity ); initialCondition->getOperator().setNegativeValue( rightDensity ); evaluator.evaluate( conservativeVariables.getDensity(), initialCondition ); conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); -*/ +*/ /**** * Momentum */ @@ -1375,7 +1375,7 @@ class RiemannProblemInitialCondition initialCondition->getOperator().setNegativeValue( rightDensity * rightVelocity[ i ] ); evaluator.evaluate( conservativeVariables.getMomentum()[ i ], initialCondition ); } -*/ +*/ /**** * Energy */ @@ -1393,10 +1393,10 @@ class RiemannProblemInitialCondition (* conservativeVariables.getEnergy())->write( "energy-init", "gnuplot" ); */ } - - + + protected: - + PointType discontinuityPlacement; PointType NWUVelocity, NEUVelocity, SWUVelocity, SEUVelocity, NWDVelocity, NEDVelocity, SWDVelocity, SEDVelocity; RealType NWUDensity, NEUDensity, SWUDensity, SEUDensity, NWDDensity, NEDDensity, SWDDensity, SEDDensity; @@ -1406,7 +1406,7 @@ class RiemannProblemInitialCondition RealType leftDensity, rightDensity; PointType leftVelocity, rightVelocity; RealType leftPressure, rightPressure; - + RealType gamma; // gamma in the ideal gas state equation }; diff --git a/src/Examples/inviscid-flow-sw/RiemannProblemInitialCondition.h b/src/Examples/inviscid-flow-sw/RiemannProblemInitialCondition.h index 81d1ca1f2..e933648bb 100644 --- a/src/Examples/inviscid-flow-sw/RiemannProblemInitialCondition.h +++ b/src/Examples/inviscid-flow-sw/RiemannProblemInitialCondition.h @@ -21,7 +21,7 @@ namespace TNL { template class RiemannProblemInitialConditionSetter { - + }; template > { public: - + typedef Meshes::Grid< 1,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -112,7 +112,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 1,MeshReal, Device, Me { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -187,7 +187,7 @@ template > { public: - + typedef Meshes::Grid< 2,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -269,7 +269,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 2, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -407,7 +407,7 @@ template > { public: - + typedef Meshes::Grid< 3, MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -489,7 +489,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 3, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -760,7 +760,7 @@ template< typename Mesh > class RiemannProblemInitialCondition { public: - + typedef Mesh MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -770,7 +770,7 @@ class RiemannProblemInitialCondition typedef Functions::MeshFunctionView< MeshType > MeshFunctionType; typedef Pointers::SharedPointer< MeshFunctionType > MeshFunctionPointer; typedef Functions::VectorField< Dimensions, MeshType > VectorFieldType; - + RiemannProblemInitialCondition() : discontinuityPlacement( 0.5 ), leftDensity( 1.0 ), rightDensity( 1.0 ), @@ -781,60 +781,60 @@ class RiemannProblemInitialCondition static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ) { - config.addEntry< double >( prefix + "discontinuity-placement-0", "x-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-1", "y-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-2", "z-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-x", "x-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-y", "y-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-z", "z-coordinate of the discontinuity placement.", 0.5 ); /* config.addEntry< double >( prefix + "left-density", "Density on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-density", "Density on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "left-velocity-0", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-1", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-2", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "right-velocity-0", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-1", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-2", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "left-velocity-x", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-y", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-z", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "right-velocity-x", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-y", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-z", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); config.addEntry< double >( prefix + "left-pressure", "Pressure on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-pressure", "Pressure on the right side of the discontinuity.", 0.0 ); */ config.addEntry< double >( prefix + "NWU-density", "This sets a value of northwest up density.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-0", "This sets a value of northwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-1", "This sets a value of northwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-2", "This sets a value of northwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-x", "This sets a value of northwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-y", "This sets a value of northwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-z", "This sets a value of northwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWU-pressure", "This sets a value of northwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "SWU-density", "This sets a value of southwest up density.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-0", "This sets a value of southwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-1", "This sets a value of southwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-2", "This sets a value of southwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-x", "This sets a value of southwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-y", "This sets a value of southwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-z", "This sets a value of southwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWU-pressure", "This sets a value of southwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "NWD-density", "This sets a value of northwest down density.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-0", "This sets a value of northwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-1", "This sets a value of northwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-2", "This sets a value of northwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-x", "This sets a value of northwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-y", "This sets a value of northwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-z", "This sets a value of northwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWD-pressure", "This sets a value of northwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "SWD-density", "This sets a value of southwest down density.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-0", "This sets a value of southwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-1", "This sets a value of southwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-2", "This sets a value of southwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-x", "This sets a value of southwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-y", "This sets a value of southwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-z", "This sets a value of southwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWD-pressure", "This sets a value of southwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "NEU-density", "This sets a value of northeast up density.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-0", "This sets a value of northeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-1", "This sets a value of northeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-2", "This sets a value of northeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-x", "This sets a value of northeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-y", "This sets a value of northeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-z", "This sets a value of northeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NEU-pressure", "This sets a value of northeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "SEU-density", "This sets a value of southeast up density.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-0", "This sets a value of southeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-1", "This sets a value of southeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-2", "This sets a value of southeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-x", "This sets a value of southeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-y", "This sets a value of southeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-z", "This sets a value of southeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SEU-pressure", "This sets a value of southeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "NED-density", "This sets a value of northeast down density.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-0", "This sets a value of northeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-1", "This sets a value of northeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-2", "This sets a value of northeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-x", "This sets a value of northeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-y", "This sets a value of northeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-z", "This sets a value of northeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NED-pressure", "This sets a value of northeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "SED-density", "This sets a value of southeast down density.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-0", "This sets a value of southeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-1", "This sets a value of southeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-2", "This sets a value of southeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-x", "This sets a value of southeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-y", "This sets a value of southeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-z", "This sets a value of southeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SED-pressure", "This sets a value of southeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "gamma", "Gamma in the ideal gas state equation.", 1.4 ); @@ -853,19 +853,19 @@ class RiemannProblemInitialCondition config.addEntryEnum< String >( "2D_12" ); config.addEntryEnum< String >( "2D_15" ); config.addEntryEnum< String >( "2D_17" ); - } - + } + bool setup( const Config::ParameterContainer& parameters, const String& prefix = "" ) { String initial = parameters.getParameter< String >( prefix + "initial" ); if(initial == prefix + "none") { - this->discontinuityPlacement.setup( parameters, prefix + "discontinuity-placement-" ); + this->discontinuityPlacement = parameters.getXyz< PointType >( prefix + "discontinuity-placement" ); this->gamma = parameters.getParameter< double >( prefix + "gamma" ); /* - this->leftVelocity.setup( parameters, prefix + "left-velocity-" ); - this->rightVelocity.setup( parameters, prefix + "right-velocity-" ); + this->leftVelocity = parameters.getXyz< PointType >( prefix + "left-velocity" ); + this->rightVelocity = parameters.getXyz< PointType >( prefix + "right-velocity" ); this->leftDensity = parameters.getParameter< double >( prefix + "left-density" ); this->rightDensity = parameters.getParameter< double >( prefix + "right-density" ); this->leftPressure = parameters.getParameter< double >( prefix + "left-pressure" ); @@ -873,60 +873,60 @@ class RiemannProblemInitialCondition */ this->NWUDensity = parameters.getParameter< RealType >( prefix + "NWU-density" ); - this->NWUVelocity.setup( parameters, prefix + "NWU-velocity-" ); + this->NWUVelocity = parameters.getXyz< PointType >( prefix + "NWU-velocity" ); this->NWUPressure = parameters.getParameter< RealType >( prefix + "NWU-pressure" ); - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = parameters.getParameter< RealType >( prefix + "SWU-density" ); - this->SWUVelocity.setup( parameters, prefix + "SWU-velocity-" ); + this->SWUVelocity = parameters.getXyz< PointType >( prefix + "SWU-velocity" ); this->SWUPressure = parameters.getParameter< RealType >( prefix + "SWU-pressure" ); this->SWUEnergy = Energy( SWUDensity, SWUPressure, gamma, SWUVelocity); this->SWUMomentum = SWUVelocity * SWUDensity; this->NWDDensity = parameters.getParameter< RealType >( prefix + "NWD-density" ); - this->NWDVelocity.setup( parameters, prefix + "NWD-velocity-" ); + this->NWDVelocity = parameters.getXyz< PointType >( prefix + "NWD-velocity" ); this->NWDPressure = parameters.getParameter< RealType >( prefix + "NWD-pressure" ); this->SWUEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = parameters.getParameter< RealType >( prefix + "SWD-density" ); - this->SWDVelocity.setup( parameters, prefix + "SWD-velocity-" ); + this->SWDVelocity = parameters.getXyz< PointType >( prefix + "SWD-velocity" ); this->SWDPressure = parameters.getParameter< RealType >( prefix + "SWD-pressure" ); this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = parameters.getParameter< RealType >( prefix + "NEU-density" ); - this->NEUVelocity.setup( parameters, prefix + "NEU-velocity-" ); + this->NEUVelocity = parameters.getXyz< PointType >( prefix + "NEU-velocity" ); this->NEUPressure = parameters.getParameter< RealType >( prefix + "NEU-pressure" ); this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = parameters.getParameter< RealType >( prefix + "SEU-density" ); - this->SEUVelocity.setup( parameters, prefix + "SEU-velocity-" ); + this->SEUVelocity = parameters.getXyz< PointType >( prefix + "SEU-velocity" ); this->SEUPressure = parameters.getParameter< RealType >( prefix + "SEU-pressure" ); this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = parameters.getParameter< RealType >( prefix + "NED-density" ); - this->NEDVelocity.setup(parameters, prefix + "NED-velocity-" ); + this->NEDVelocity = parameters.getXyz< PointType >( prefix + "NED-velocity" ); this->NEDPressure = parameters.getParameter< RealType >( prefix + "NED-pressure" ); this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = parameters.getParameter< RealType >( prefix + "SED-density" ); - this->SEDVelocity.setup( parameters, prefix + "SED-velocity-" ); + this->SEDVelocity = parameters.getXyz< PointType >( prefix + "SED-velocity" ); this->SEDPressure = parameters.getParameter< RealType >( prefix + "SED-pressure" ); this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; - + } if(initial == prefix + "1D_2") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -938,10 +938,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_3a") predefinedInitialCondition( 1.4, 0.8, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -953,10 +953,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_4") predefinedInitialCondition( 1.666, 0.4, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -968,10 +968,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_5") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -983,10 +983,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_6") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -998,10 +998,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_Noh") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1013,10 +1013,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_peak") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1028,10 +1028,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_3") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 1.206, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1043,10 +1043,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_4") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.8939, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1059,10 +1059,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_6") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.75, 0.5, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1074,10 +1074,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_12") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.7276, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1090,10 +1090,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_15") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, -0.6259, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1105,10 +1105,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_17") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1120,32 +1120,32 @@ class RiemannProblemInitialCondition ); return true; } - + void setDiscontinuityPlacement( const PointType& v ) { this->discontinuityPlacement = v; } - + const PointType& getDiscontinuityPlasement() const { return this->discontinuityPlacement; } - + void setLeftDensity( const RealType& leftDensity ) { this->leftDensity = leftDensity; } - + const RealType& getLeftDensity() const { return this->leftDensity; } - + void setRightDensity( const RealType& rightDensity ) { this->rightDensity = rightDensity; } - + const RealType& getRightDensity() const { return this->rightDensity; @@ -1155,17 +1155,17 @@ class RiemannProblemInitialCondition { this->leftVelocity = leftVelocity; } - + const PointType& getLeftVelocity() const { return this->leftVelocity; } - + void setRightVelocity( const RealType& rightVelocity ) { this->rightVelocity = rightVelocity; } - + const PointType& getRightVelocity() const { return this->rightVelocity; @@ -1175,17 +1175,17 @@ class RiemannProblemInitialCondition { this->leftPressure = leftPressure; } - + const RealType& getLeftPressure() const { return this->leftPressure; } - + void setRightPressure( const RealType& rightPressure ) { this->rightPressure = rightPressure; } - + const RealType& getRightPressure() const { return this->rightPressure; @@ -1193,10 +1193,10 @@ class RiemannProblemInitialCondition void predefinedInitialCondition( double preGamma, double preDiscX, double preDiscY, double preDiscZ, - double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1214,7 +1214,7 @@ class RiemannProblemInitialCondition this->NWUDensity = preNWUDensity; this->NWUVelocity = PointLoad(preNWUVelocityX, preNWUVelocityY, preNWUVelocityZ); this->NWUPressure = preNWUPressure; - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = preNWUDensity; @@ -1226,47 +1226,47 @@ class RiemannProblemInitialCondition this->NWDDensity = preNWDDensity; this->NWDVelocity = PointLoad(preNWDVelocityX, preNWDVelocityY, preNWDVelocityZ); this->NWDPressure = preNWDPressure; - this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); + this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = preSWDDensity; this->SWDVelocity = PointLoad(preSWDVelocityX, preSWDVelocityY, preSWDVelocityZ); this->SWDPressure = preSWDPressure; - this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); + this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = preNEUDensity; this->NEUVelocity = PointLoad(preNEUVelocityX, preNEUVelocityY, preNEUVelocityZ); this->NEUPressure = preNEUPressure; - this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); + this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = preSEUDensity; this->SEUVelocity = PointLoad(preSEUVelocityX, preSEUVelocityY, preSEUVelocityZ); this->SEUPressure = preSEUPressure; - this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); + this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = preNEDDensity; this->NEDVelocity = PointLoad(preNEDVelocityX, preNEDVelocityY, preNEDVelocityZ); this->NEDPressure = preNEDPressure; - this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); + this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = preSEDDensity; this->SEDVelocity = PointLoad(preSEDVelocityX, preSEDVelocityY, preSEDVelocityZ); this->SEDPressure = preSEDPressure; - this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); + this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; std::cout << this->SEDEnergy; std::cout << this->SWDEnergy; - + } PointType PointLoad( RealType ValueX, RealType ValueY, RealType ValueZ) { - PointType point; + PointType point; switch (Dimensions) { case 1: point[ 0 ] = ValueX; @@ -1275,7 +1275,7 @@ class RiemannProblemInitialCondition point[ 1 ] = ValueY; break; case 3: point[ 0 ] = ValueX; - point[ 1 ] = ValueY; + point[ 1 ] = ValueY; point[ 2 ] = ValueZ; break; } @@ -1296,7 +1296,7 @@ class RiemannProblemInitialCondition } return energy; } - + void setInitialCondition( CompressibleConservativeVariables< MeshType >& conservativeVariables, const PointType& center = PointType( 0.0 ) ) { @@ -1343,7 +1343,7 @@ class RiemannProblemInitialCondition typedef Operators::Analytic::Sign< Dimensions, RealType > SignType; typedef Functions::OperatorFunction< SignType, VectorNormType > InitialConditionType; typedef Pointers::SharedPointer< InitialConditionType, DeviceType > InitialConditionPointer; - + InitialConditionPointer initialCondition; initialCondition->getFunction().setCenter( center ); initialCondition->getFunction().setMaxNorm( true ); @@ -1353,7 +1353,7 @@ class RiemannProblemInitialCondition discontinuityPlacement[ i ] = 1.0 / discontinuityPlacement[ i ]; initialCondition->getFunction().setAnisotropy( discontinuityPlacement ); initialCondition->getFunction().setMultiplicator( -1.0 ); - + Functions::MeshFunctionEvaluator< MeshFunctionType, InitialConditionType > evaluator; */ /**** @@ -1362,12 +1362,12 @@ class RiemannProblemInitialCondition /* conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); */ -/* +/* initialCondition->getOperator().setPositiveValue( leftDensity ); initialCondition->getOperator().setNegativeValue( rightDensity ); evaluator.evaluate( conservativeVariables.getDensity(), initialCondition ); conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); -*/ +*/ /**** * Momentum */ @@ -1379,7 +1379,7 @@ class RiemannProblemInitialCondition initialCondition->getOperator().setNegativeValue( rightDensity * rightVelocity[ i ] ); evaluator.evaluate( conservativeVariables.getMomentum()[ i ], initialCondition ); } -*/ +*/ /**** * Energy */ @@ -1397,10 +1397,10 @@ class RiemannProblemInitialCondition (* conservativeVariables.getEnergy())->write( "energy-init", "gnuplot" ); */ } - - + + protected: - + PointType discontinuityPlacement; PointType NWUVelocity, NEUVelocity, SWUVelocity, SEUVelocity, NWDVelocity, NEDVelocity, SWDVelocity, SEDVelocity; RealType NWUDensity, NEUDensity, SWUDensity, SEUDensity, NWDDensity, NEDDensity, SWDDensity, SEDDensity; @@ -1410,7 +1410,7 @@ class RiemannProblemInitialCondition RealType leftDensity, rightDensity; PointType leftVelocity, rightVelocity; RealType leftPressure, rightPressure; - + RealType gamma; // gamma in the ideal gas state equation }; diff --git a/src/Examples/inviscid-flow-vl/RiemannProblemInitialCondition.h b/src/Examples/inviscid-flow-vl/RiemannProblemInitialCondition.h index 81d1ca1f2..e933648bb 100644 --- a/src/Examples/inviscid-flow-vl/RiemannProblemInitialCondition.h +++ b/src/Examples/inviscid-flow-vl/RiemannProblemInitialCondition.h @@ -21,7 +21,7 @@ namespace TNL { template class RiemannProblemInitialConditionSetter { - + }; template > { public: - + typedef Meshes::Grid< 1,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -112,7 +112,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 1,MeshReal, Device, Me { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -187,7 +187,7 @@ template > { public: - + typedef Meshes::Grid< 2,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -269,7 +269,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 2, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -407,7 +407,7 @@ template > { public: - + typedef Meshes::Grid< 3, MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -489,7 +489,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 3, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -760,7 +760,7 @@ template< typename Mesh > class RiemannProblemInitialCondition { public: - + typedef Mesh MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -770,7 +770,7 @@ class RiemannProblemInitialCondition typedef Functions::MeshFunctionView< MeshType > MeshFunctionType; typedef Pointers::SharedPointer< MeshFunctionType > MeshFunctionPointer; typedef Functions::VectorField< Dimensions, MeshType > VectorFieldType; - + RiemannProblemInitialCondition() : discontinuityPlacement( 0.5 ), leftDensity( 1.0 ), rightDensity( 1.0 ), @@ -781,60 +781,60 @@ class RiemannProblemInitialCondition static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ) { - config.addEntry< double >( prefix + "discontinuity-placement-0", "x-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-1", "y-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-2", "z-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-x", "x-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-y", "y-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-z", "z-coordinate of the discontinuity placement.", 0.5 ); /* config.addEntry< double >( prefix + "left-density", "Density on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-density", "Density on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "left-velocity-0", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-1", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-2", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "right-velocity-0", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-1", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-2", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "left-velocity-x", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-y", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-z", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "right-velocity-x", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-y", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-z", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); config.addEntry< double >( prefix + "left-pressure", "Pressure on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-pressure", "Pressure on the right side of the discontinuity.", 0.0 ); */ config.addEntry< double >( prefix + "NWU-density", "This sets a value of northwest up density.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-0", "This sets a value of northwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-1", "This sets a value of northwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-2", "This sets a value of northwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-x", "This sets a value of northwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-y", "This sets a value of northwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-z", "This sets a value of northwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWU-pressure", "This sets a value of northwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "SWU-density", "This sets a value of southwest up density.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-0", "This sets a value of southwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-1", "This sets a value of southwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-2", "This sets a value of southwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-x", "This sets a value of southwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-y", "This sets a value of southwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-z", "This sets a value of southwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWU-pressure", "This sets a value of southwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "NWD-density", "This sets a value of northwest down density.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-0", "This sets a value of northwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-1", "This sets a value of northwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-2", "This sets a value of northwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-x", "This sets a value of northwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-y", "This sets a value of northwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-z", "This sets a value of northwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWD-pressure", "This sets a value of northwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "SWD-density", "This sets a value of southwest down density.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-0", "This sets a value of southwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-1", "This sets a value of southwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-2", "This sets a value of southwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-x", "This sets a value of southwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-y", "This sets a value of southwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-z", "This sets a value of southwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWD-pressure", "This sets a value of southwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "NEU-density", "This sets a value of northeast up density.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-0", "This sets a value of northeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-1", "This sets a value of northeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-2", "This sets a value of northeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-x", "This sets a value of northeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-y", "This sets a value of northeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-z", "This sets a value of northeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NEU-pressure", "This sets a value of northeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "SEU-density", "This sets a value of southeast up density.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-0", "This sets a value of southeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-1", "This sets a value of southeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-2", "This sets a value of southeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-x", "This sets a value of southeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-y", "This sets a value of southeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-z", "This sets a value of southeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SEU-pressure", "This sets a value of southeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "NED-density", "This sets a value of northeast down density.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-0", "This sets a value of northeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-1", "This sets a value of northeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-2", "This sets a value of northeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-x", "This sets a value of northeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-y", "This sets a value of northeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-z", "This sets a value of northeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NED-pressure", "This sets a value of northeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "SED-density", "This sets a value of southeast down density.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-0", "This sets a value of southeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-1", "This sets a value of southeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-2", "This sets a value of southeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-x", "This sets a value of southeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-y", "This sets a value of southeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-z", "This sets a value of southeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SED-pressure", "This sets a value of southeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "gamma", "Gamma in the ideal gas state equation.", 1.4 ); @@ -853,19 +853,19 @@ class RiemannProblemInitialCondition config.addEntryEnum< String >( "2D_12" ); config.addEntryEnum< String >( "2D_15" ); config.addEntryEnum< String >( "2D_17" ); - } - + } + bool setup( const Config::ParameterContainer& parameters, const String& prefix = "" ) { String initial = parameters.getParameter< String >( prefix + "initial" ); if(initial == prefix + "none") { - this->discontinuityPlacement.setup( parameters, prefix + "discontinuity-placement-" ); + this->discontinuityPlacement = parameters.getXyz< PointType >( prefix + "discontinuity-placement" ); this->gamma = parameters.getParameter< double >( prefix + "gamma" ); /* - this->leftVelocity.setup( parameters, prefix + "left-velocity-" ); - this->rightVelocity.setup( parameters, prefix + "right-velocity-" ); + this->leftVelocity = parameters.getXyz< PointType >( prefix + "left-velocity" ); + this->rightVelocity = parameters.getXyz< PointType >( prefix + "right-velocity" ); this->leftDensity = parameters.getParameter< double >( prefix + "left-density" ); this->rightDensity = parameters.getParameter< double >( prefix + "right-density" ); this->leftPressure = parameters.getParameter< double >( prefix + "left-pressure" ); @@ -873,60 +873,60 @@ class RiemannProblemInitialCondition */ this->NWUDensity = parameters.getParameter< RealType >( prefix + "NWU-density" ); - this->NWUVelocity.setup( parameters, prefix + "NWU-velocity-" ); + this->NWUVelocity = parameters.getXyz< PointType >( prefix + "NWU-velocity" ); this->NWUPressure = parameters.getParameter< RealType >( prefix + "NWU-pressure" ); - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = parameters.getParameter< RealType >( prefix + "SWU-density" ); - this->SWUVelocity.setup( parameters, prefix + "SWU-velocity-" ); + this->SWUVelocity = parameters.getXyz< PointType >( prefix + "SWU-velocity" ); this->SWUPressure = parameters.getParameter< RealType >( prefix + "SWU-pressure" ); this->SWUEnergy = Energy( SWUDensity, SWUPressure, gamma, SWUVelocity); this->SWUMomentum = SWUVelocity * SWUDensity; this->NWDDensity = parameters.getParameter< RealType >( prefix + "NWD-density" ); - this->NWDVelocity.setup( parameters, prefix + "NWD-velocity-" ); + this->NWDVelocity = parameters.getXyz< PointType >( prefix + "NWD-velocity" ); this->NWDPressure = parameters.getParameter< RealType >( prefix + "NWD-pressure" ); this->SWUEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = parameters.getParameter< RealType >( prefix + "SWD-density" ); - this->SWDVelocity.setup( parameters, prefix + "SWD-velocity-" ); + this->SWDVelocity = parameters.getXyz< PointType >( prefix + "SWD-velocity" ); this->SWDPressure = parameters.getParameter< RealType >( prefix + "SWD-pressure" ); this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = parameters.getParameter< RealType >( prefix + "NEU-density" ); - this->NEUVelocity.setup( parameters, prefix + "NEU-velocity-" ); + this->NEUVelocity = parameters.getXyz< PointType >( prefix + "NEU-velocity" ); this->NEUPressure = parameters.getParameter< RealType >( prefix + "NEU-pressure" ); this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = parameters.getParameter< RealType >( prefix + "SEU-density" ); - this->SEUVelocity.setup( parameters, prefix + "SEU-velocity-" ); + this->SEUVelocity = parameters.getXyz< PointType >( prefix + "SEU-velocity" ); this->SEUPressure = parameters.getParameter< RealType >( prefix + "SEU-pressure" ); this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = parameters.getParameter< RealType >( prefix + "NED-density" ); - this->NEDVelocity.setup(parameters, prefix + "NED-velocity-" ); + this->NEDVelocity = parameters.getXyz< PointType >( prefix + "NED-velocity" ); this->NEDPressure = parameters.getParameter< RealType >( prefix + "NED-pressure" ); this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = parameters.getParameter< RealType >( prefix + "SED-density" ); - this->SEDVelocity.setup( parameters, prefix + "SED-velocity-" ); + this->SEDVelocity = parameters.getXyz< PointType >( prefix + "SED-velocity" ); this->SEDPressure = parameters.getParameter< RealType >( prefix + "SED-pressure" ); this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; - + } if(initial == prefix + "1D_2") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -938,10 +938,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_3a") predefinedInitialCondition( 1.4, 0.8, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -953,10 +953,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_4") predefinedInitialCondition( 1.666, 0.4, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -968,10 +968,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_5") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -983,10 +983,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_6") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -998,10 +998,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_Noh") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1013,10 +1013,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_peak") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1028,10 +1028,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_3") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 1.206, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1043,10 +1043,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_4") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.8939, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1059,10 +1059,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_6") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.75, 0.5, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1074,10 +1074,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_12") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.7276, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1090,10 +1090,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_15") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, -0.6259, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1105,10 +1105,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_17") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1120,32 +1120,32 @@ class RiemannProblemInitialCondition ); return true; } - + void setDiscontinuityPlacement( const PointType& v ) { this->discontinuityPlacement = v; } - + const PointType& getDiscontinuityPlasement() const { return this->discontinuityPlacement; } - + void setLeftDensity( const RealType& leftDensity ) { this->leftDensity = leftDensity; } - + const RealType& getLeftDensity() const { return this->leftDensity; } - + void setRightDensity( const RealType& rightDensity ) { this->rightDensity = rightDensity; } - + const RealType& getRightDensity() const { return this->rightDensity; @@ -1155,17 +1155,17 @@ class RiemannProblemInitialCondition { this->leftVelocity = leftVelocity; } - + const PointType& getLeftVelocity() const { return this->leftVelocity; } - + void setRightVelocity( const RealType& rightVelocity ) { this->rightVelocity = rightVelocity; } - + const PointType& getRightVelocity() const { return this->rightVelocity; @@ -1175,17 +1175,17 @@ class RiemannProblemInitialCondition { this->leftPressure = leftPressure; } - + const RealType& getLeftPressure() const { return this->leftPressure; } - + void setRightPressure( const RealType& rightPressure ) { this->rightPressure = rightPressure; } - + const RealType& getRightPressure() const { return this->rightPressure; @@ -1193,10 +1193,10 @@ class RiemannProblemInitialCondition void predefinedInitialCondition( double preGamma, double preDiscX, double preDiscY, double preDiscZ, - double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1214,7 +1214,7 @@ class RiemannProblemInitialCondition this->NWUDensity = preNWUDensity; this->NWUVelocity = PointLoad(preNWUVelocityX, preNWUVelocityY, preNWUVelocityZ); this->NWUPressure = preNWUPressure; - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = preNWUDensity; @@ -1226,47 +1226,47 @@ class RiemannProblemInitialCondition this->NWDDensity = preNWDDensity; this->NWDVelocity = PointLoad(preNWDVelocityX, preNWDVelocityY, preNWDVelocityZ); this->NWDPressure = preNWDPressure; - this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); + this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = preSWDDensity; this->SWDVelocity = PointLoad(preSWDVelocityX, preSWDVelocityY, preSWDVelocityZ); this->SWDPressure = preSWDPressure; - this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); + this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = preNEUDensity; this->NEUVelocity = PointLoad(preNEUVelocityX, preNEUVelocityY, preNEUVelocityZ); this->NEUPressure = preNEUPressure; - this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); + this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = preSEUDensity; this->SEUVelocity = PointLoad(preSEUVelocityX, preSEUVelocityY, preSEUVelocityZ); this->SEUPressure = preSEUPressure; - this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); + this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = preNEDDensity; this->NEDVelocity = PointLoad(preNEDVelocityX, preNEDVelocityY, preNEDVelocityZ); this->NEDPressure = preNEDPressure; - this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); + this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = preSEDDensity; this->SEDVelocity = PointLoad(preSEDVelocityX, preSEDVelocityY, preSEDVelocityZ); this->SEDPressure = preSEDPressure; - this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); + this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; std::cout << this->SEDEnergy; std::cout << this->SWDEnergy; - + } PointType PointLoad( RealType ValueX, RealType ValueY, RealType ValueZ) { - PointType point; + PointType point; switch (Dimensions) { case 1: point[ 0 ] = ValueX; @@ -1275,7 +1275,7 @@ class RiemannProblemInitialCondition point[ 1 ] = ValueY; break; case 3: point[ 0 ] = ValueX; - point[ 1 ] = ValueY; + point[ 1 ] = ValueY; point[ 2 ] = ValueZ; break; } @@ -1296,7 +1296,7 @@ class RiemannProblemInitialCondition } return energy; } - + void setInitialCondition( CompressibleConservativeVariables< MeshType >& conservativeVariables, const PointType& center = PointType( 0.0 ) ) { @@ -1343,7 +1343,7 @@ class RiemannProblemInitialCondition typedef Operators::Analytic::Sign< Dimensions, RealType > SignType; typedef Functions::OperatorFunction< SignType, VectorNormType > InitialConditionType; typedef Pointers::SharedPointer< InitialConditionType, DeviceType > InitialConditionPointer; - + InitialConditionPointer initialCondition; initialCondition->getFunction().setCenter( center ); initialCondition->getFunction().setMaxNorm( true ); @@ -1353,7 +1353,7 @@ class RiemannProblemInitialCondition discontinuityPlacement[ i ] = 1.0 / discontinuityPlacement[ i ]; initialCondition->getFunction().setAnisotropy( discontinuityPlacement ); initialCondition->getFunction().setMultiplicator( -1.0 ); - + Functions::MeshFunctionEvaluator< MeshFunctionType, InitialConditionType > evaluator; */ /**** @@ -1362,12 +1362,12 @@ class RiemannProblemInitialCondition /* conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); */ -/* +/* initialCondition->getOperator().setPositiveValue( leftDensity ); initialCondition->getOperator().setNegativeValue( rightDensity ); evaluator.evaluate( conservativeVariables.getDensity(), initialCondition ); conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); -*/ +*/ /**** * Momentum */ @@ -1379,7 +1379,7 @@ class RiemannProblemInitialCondition initialCondition->getOperator().setNegativeValue( rightDensity * rightVelocity[ i ] ); evaluator.evaluate( conservativeVariables.getMomentum()[ i ], initialCondition ); } -*/ +*/ /**** * Energy */ @@ -1397,10 +1397,10 @@ class RiemannProblemInitialCondition (* conservativeVariables.getEnergy())->write( "energy-init", "gnuplot" ); */ } - - + + protected: - + PointType discontinuityPlacement; PointType NWUVelocity, NEUVelocity, SWUVelocity, SEUVelocity, NWDVelocity, NEDVelocity, SWDVelocity, SEDVelocity; RealType NWUDensity, NEUDensity, SWUDensity, SEUDensity, NWDDensity, NEDDensity, SWDDensity, SEDDensity; @@ -1410,7 +1410,7 @@ class RiemannProblemInitialCondition RealType leftDensity, rightDensity; PointType leftVelocity, rightVelocity; RealType leftPressure, rightPressure; - + RealType gamma; // gamma in the ideal gas state equation }; diff --git a/src/Examples/inviscid-flow/RiemannProblemInitialCondition.h b/src/Examples/inviscid-flow/RiemannProblemInitialCondition.h index 867fc671c..fc2c43f5f 100644 --- a/src/Examples/inviscid-flow/RiemannProblemInitialCondition.h +++ b/src/Examples/inviscid-flow/RiemannProblemInitialCondition.h @@ -21,7 +21,7 @@ namespace TNL { template class RiemannProblemInitialConditionSetter { - + }; template > { public: - + typedef Meshes::Grid< 1,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -112,7 +112,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 1,MeshReal, Device, Me { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -187,7 +187,7 @@ template > { public: - + typedef Meshes::Grid< 2,MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -269,7 +269,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 2, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -407,7 +407,7 @@ template > { public: - + typedef Meshes::Grid< 3, MeshReal, Device, MeshIndex > MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -489,7 +489,7 @@ class RiemannProblemInitialConditionSetter< Meshes::Grid< 3, MeshReal, Device, M { this->gamma = gamma; }; - + void placeDensity(CompressibleConservativeVariables< MeshType >& conservativeVariables) { typedef typename MeshType::Cell CellType; @@ -760,7 +760,7 @@ template< typename Mesh > class RiemannProblemInitialCondition { public: - + typedef Mesh MeshType; typedef typename MeshType::RealType RealType; typedef typename MeshType::DeviceType DeviceType; @@ -770,7 +770,7 @@ class RiemannProblemInitialCondition typedef Functions::MeshFunctionView< MeshType > MeshFunctionType; typedef Pointers::SharedPointer< MeshFunctionType > MeshFunctionPointer; typedef Functions::VectorField< Dimensions, MeshType > VectorFieldType; - + RiemannProblemInitialCondition() : discontinuityPlacement( 0.5 ), leftDensity( 1.0 ), rightDensity( 1.0 ), @@ -781,60 +781,60 @@ class RiemannProblemInitialCondition static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ) { - config.addEntry< double >( prefix + "discontinuity-placement-0", "x-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-1", "y-coordinate of the discontinuity placement.", 0.5 ); - config.addEntry< double >( prefix + "discontinuity-placement-2", "z-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-x", "x-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-y", "y-coordinate of the discontinuity placement.", 0.5 ); + config.addEntry< double >( prefix + "discontinuity-placement-z", "z-coordinate of the discontinuity placement.", 0.5 ); /* config.addEntry< double >( prefix + "left-density", "Density on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-density", "Density on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "left-velocity-0", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-1", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "left-velocity-2", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); - config.addEntry< double >( prefix + "right-velocity-0", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-1", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); - config.addEntry< double >( prefix + "right-velocity-2", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "left-velocity-x", "x-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-y", "y-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "left-velocity-z", "z-coordinate of the velocity on the left side of the discontinuity.", 1.0 ); + config.addEntry< double >( prefix + "right-velocity-x", "x-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-y", "y-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); + config.addEntry< double >( prefix + "right-velocity-z", "z-coordinate of the velocity on the right side of the discontinuity.", 0.0 ); config.addEntry< double >( prefix + "left-pressure", "Pressure on the left side of the discontinuity.", 1.0 ); config.addEntry< double >( prefix + "right-pressure", "Pressure on the right side of the discontinuity.", 0.0 ); */ config.addEntry< double >( prefix + "NWU-density", "This sets a value of northwest up density.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-0", "This sets a value of northwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-1", "This sets a value of northwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWU-velocity-2", "This sets a value of northwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-x", "This sets a value of northwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-y", "This sets a value of northwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWU-velocity-z", "This sets a value of northwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWU-pressure", "This sets a value of northwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "SWU-density", "This sets a value of southwest up density.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-0", "This sets a value of southwest up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-1", "This sets a value of southwest up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWU-velocity-2", "This sets a value of southwest up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-x", "This sets a value of southwest up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-y", "This sets a value of southwest up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWU-velocity-z", "This sets a value of southwest up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWU-pressure", "This sets a value of southwest up pressure.", 1.0 ); config.addEntry< double >( prefix + "NWD-density", "This sets a value of northwest down density.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-0", "This sets a value of northwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-1", "This sets a value of northwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NWD-velocity-2", "This sets a value of northwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-x", "This sets a value of northwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-y", "This sets a value of northwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NWD-velocity-z", "This sets a value of northwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NWD-pressure", "This sets a value of northwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "SWD-density", "This sets a value of southwest down density.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-0", "This sets a value of southwest down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-1", "This sets a value of southwest down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SWD-velocity-2", "This sets a value of southwest down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-x", "This sets a value of southwest down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-y", "This sets a value of southwest down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SWD-velocity-z", "This sets a value of southwest down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SWD-pressure", "This sets a value of southwest down pressure.", 1.0 ); config.addEntry< double >( prefix + "NEU-density", "This sets a value of northeast up density.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-0", "This sets a value of northeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-1", "This sets a value of northeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NEU-velocity-2", "This sets a value of northeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-x", "This sets a value of northeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-y", "This sets a value of northeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NEU-velocity-z", "This sets a value of northeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "NEU-pressure", "This sets a value of northeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "SEU-density", "This sets a value of southeast up density.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-0", "This sets a value of southeast up x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-1", "This sets a value of southeast up y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SEU-velocity-2", "This sets a value of southeast up z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-x", "This sets a value of southeast up x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-y", "This sets a value of southeast up y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SEU-velocity-z", "This sets a value of southeast up z velocity.", 1.0 ); config.addEntry< double >( prefix + "SEU-pressure", "This sets a value of southeast up pressure.", 1.0 ); config.addEntry< double >( prefix + "NED-density", "This sets a value of northeast down density.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-0", "This sets a value of northeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-1", "This sets a value of northeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "NED-velocity-2", "This sets a value of northeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-x", "This sets a value of northeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-y", "This sets a value of northeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "NED-velocity-z", "This sets a value of northeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "NED-pressure", "This sets a value of northeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "SED-density", "This sets a value of southeast down density.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-0", "This sets a value of southeast down x velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-1", "This sets a value of southeast down y velocity.", 1.0 ); - config.addEntry< double >( prefix + "SED-velocity-2", "This sets a value of southeast down z velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-x", "This sets a value of southeast down x velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-y", "This sets a value of southeast down y velocity.", 1.0 ); + config.addEntry< double >( prefix + "SED-velocity-z", "This sets a value of southeast down z velocity.", 1.0 ); config.addEntry< double >( prefix + "SED-pressure", "This sets a value of southeast down pressure.", 1.0 ); config.addEntry< double >( prefix + "gamma", "Gamma in the ideal gas state equation.", 1.4 ); @@ -853,19 +853,19 @@ class RiemannProblemInitialCondition config.addEntryEnum< String >( "2D_12" ); config.addEntryEnum< String >( "2D_15" ); config.addEntryEnum< String >( "2D_17" ); - } - + } + bool setup( const Config::ParameterContainer& parameters, const String& prefix = "" ) { String initial = parameters.getParameter< String >( prefix + "initial" ); if(initial == prefix + "none") { - this->discontinuityPlacement.setup( parameters, prefix + "discontinuity-placement-" ); + this->discontinuityPlacement = parameters.getXyz< PointType >( prefix + "discontinuity-placement" ); this->gamma = parameters.getParameter< double >( prefix + "gamma" ); /* - this->leftVelocity.setup( parameters, prefix + "left-velocity-" ); - this->rightVelocity.setup( parameters, prefix + "right-velocity-" ); + this->leftVelocity = parameters.getXyz< PointType >( prefix + "left-velocity" ); + this->rightVelocity = parameters.getXyz< PointType >( prefix + "right-velocity" ); this->leftDensity = parameters.getParameter< double >( prefix + "left-density" ); this->rightDensity = parameters.getParameter< double >( prefix + "right-density" ); this->leftPressure = parameters.getParameter< double >( prefix + "left-pressure" ); @@ -873,60 +873,60 @@ class RiemannProblemInitialCondition */ this->NWUDensity = parameters.getParameter< RealType >( prefix + "NWU-density" ); - this->NWUVelocity.setup( parameters, prefix + "NWU-velocity-" ); + this->NWUVelocity = parameters.getXyz< PointType >( prefix + "NWU-velocity" ); this->NWUPressure = parameters.getParameter< RealType >( prefix + "NWU-pressure" ); - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = parameters.getParameter< RealType >( prefix + "SWU-density" ); - this->SWUVelocity.setup( parameters, prefix + "SWU-velocity-" ); + this->SWUVelocity = parameters.getXyz< PointType >( prefix + "SWU-velocity" ); this->SWUPressure = parameters.getParameter< RealType >( prefix + "SWU-pressure" ); this->SWUEnergy = Energy( SWUDensity, SWUPressure, gamma, SWUVelocity); this->SWUMomentum = SWUVelocity * SWUDensity; this->NWDDensity = parameters.getParameter< RealType >( prefix + "NWD-density" ); - this->NWDVelocity.setup( parameters, prefix + "NWD-velocity-" ); + this->NWDVelocity = parameters.getXyz< PointType >( prefix + "NWD-velocity" ); this->NWDPressure = parameters.getParameter< RealType >( prefix + "NWD-pressure" ); this->SWUEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = parameters.getParameter< RealType >( prefix + "SWD-density" ); - this->SWDVelocity.setup( parameters, prefix + "SWD-velocity-" ); + this->SWDVelocity = parameters.getXyz< PointType >( prefix + "SWD-velocity" ); this->SWDPressure = parameters.getParameter< RealType >( prefix + "SWD-pressure" ); this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = parameters.getParameter< RealType >( prefix + "NEU-density" ); - this->NEUVelocity.setup( parameters, prefix + "NEU-velocity-" ); + this->NEUVelocity = parameters.getXyz< PointType >( prefix + "NEU-velocity" ); this->NEUPressure = parameters.getParameter< RealType >( prefix + "NEU-pressure" ); this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = parameters.getParameter< RealType >( prefix + "SEU-density" ); - this->SEUVelocity.setup( parameters, prefix + "SEU-velocity-" ); + this->SEUVelocity = parameters.getXyz< PointType >( prefix + "SEU-velocity" ); this->SEUPressure = parameters.getParameter< RealType >( prefix + "SEU-pressure" ); this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = parameters.getParameter< RealType >( prefix + "NED-density" ); - this->NEDVelocity.setup(parameters, prefix + "NED-velocity-" ); + this->NEDVelocity = parameters.getXyz< PointType >( prefix + "NED-velocity" ); this->NEDPressure = parameters.getParameter< RealType >( prefix + "NED-pressure" ); this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = parameters.getParameter< RealType >( prefix + "SED-density" ); - this->SEDVelocity.setup( parameters, prefix + "SED-velocity-" ); + this->SEDVelocity = parameters.getXyz< PointType >( prefix + "SED-velocity" ); this->SEDPressure = parameters.getParameter< RealType >( prefix + "SED-pressure" ); this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; - + } if(initial == prefix + "1D_2") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -938,10 +938,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_3a") predefinedInitialCondition( 1.4, 0.8, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1000.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.01, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -953,10 +953,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_4") predefinedInitialCondition( 1.666, 0.4, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 5.99924, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 5.99242, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 460.894, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 46.095, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -968,10 +968,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_5") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -983,10 +983,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_6") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.4, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.1, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -998,10 +998,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_Noh") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 0.000001, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 0.000001, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1013,10 +1013,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "1D_peak") predefinedInitialCondition( 1.4, 0.5, 0.0, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.0, 0.12612, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.0, 6.5915, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.0, 782.929, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.0, 3.15449, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1028,10 +1028,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_3") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5323, 0.138, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.5, 0.5323, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.3, 0.029, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.5, 0.3, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 1.206, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1043,10 +1043,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_4") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5065, 1.1, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.1, 0.5065, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.35, 1.1, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.1, 0.35, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.8939, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1059,10 +1059,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_6") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 3.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.75, 0.5, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1074,10 +1074,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_12") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 1.0, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 0.5313, 1.0, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 1.0, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 0.4, 1.0, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.7276, 0.0, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1090,10 +1090,10 @@ class RiemannProblemInitialCondition if(initial == prefix + "2D_15") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 0.5197, 0.8, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5313, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 0.4, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, -0.6259, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1105,10 +1105,10 @@ class RiemannProblemInitialCondition ); if(initial == prefix + "2D_17") predefinedInitialCondition( 1.666, 0.5, 0.5, 0.0, // double preGamma, double preDiscX, double preDiscY, double preDiscZ, - 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + 0.0, 0.0, 2.0, 1.0625, //double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + 0.0, 0.0, 1.0, 0.5197, //double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + 0.0, 0.0, 1.0, 0.4, //double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + 0.0, 0.0, 1.0, 0.4, //double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, 0.0, 0.0, 0.0, //double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, 0.0, 0.0, 0.0, //double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, 0.0, -0.3, 0.0, //double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1120,32 +1120,32 @@ class RiemannProblemInitialCondition ); return true; } - + void setDiscontinuityPlacement( const PointType& v ) { this->discontinuityPlacement = v; } - + const PointType& getDiscontinuityPlasement() const { return this->discontinuityPlacement; } - + void setLeftDensity( const RealType& leftDensity ) { this->leftDensity = leftDensity; } - + const RealType& getLeftDensity() const { return this->leftDensity; } - + void setRightDensity( const RealType& rightDensity ) { this->rightDensity = rightDensity; } - + const RealType& getRightDensity() const { return this->rightDensity; @@ -1155,17 +1155,17 @@ class RiemannProblemInitialCondition { this->leftVelocity = leftVelocity; } - + const PointType& getLeftVelocity() const { return this->leftVelocity; } - + void setRightVelocity( const RealType& rightVelocity ) { this->rightVelocity = rightVelocity; } - + const PointType& getRightVelocity() const { return this->rightVelocity; @@ -1175,17 +1175,17 @@ class RiemannProblemInitialCondition { this->leftPressure = leftPressure; } - + const RealType& getLeftPressure() const { return this->leftPressure; } - + void setRightPressure( const RealType& rightPressure ) { this->rightPressure = rightPressure; } - + const RealType& getRightPressure() const { return this->rightPressure; @@ -1193,10 +1193,10 @@ class RiemannProblemInitialCondition void predefinedInitialCondition( double preGamma, double preDiscX, double preDiscY, double preDiscZ, - double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, - double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, - double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, - double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, + double preNWUDensity, double preSWUDensity, double preNWDDensity, double preSWDDensity, + double preNEUDensity, double preSEUDensity, double preNEDDensity, double preSEDDensity, + double preNWUPressure, double preSWUPressure, double preNWDPressure, double preSWDPressure, + double preNEUPressure, double preSEUPressure, double preNEDPressure, double preSEDPressure, double preNWUVelocityX, double preNWUVelocityY,double preNWUVelocityZ, double preSWUVelocityX, double preSWUVelocityY,double preSWUVelocityZ, double preNWDVelocityX, double preNWDVelocityY,double preNWDVelocityZ, @@ -1214,7 +1214,7 @@ class RiemannProblemInitialCondition this->NWUDensity = preNWUDensity; this->NWUVelocity = PointLoad(preNWUVelocityX, preNWUVelocityY, preNWUVelocityZ); this->NWUPressure = preNWUPressure; - this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); + this->NWUEnergy = Energy( NWUDensity, NWUPressure, gamma, NWUVelocity); this->NWUMomentum = NWUVelocity * NWUDensity; this->SWUDensity = preNWUDensity; @@ -1226,47 +1226,47 @@ class RiemannProblemInitialCondition this->NWDDensity = preNWDDensity; this->NWDVelocity = PointLoad(preNWDVelocityX, preNWDVelocityY, preNWDVelocityZ); this->NWDPressure = preNWDPressure; - this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); + this->NWDEnergy = Energy( NWDDensity, NWDPressure, gamma, NWDVelocity); this->NWDMomentum = NWDVelocity * NWDDensity; this->SWDDensity = preSWDDensity; this->SWDVelocity = PointLoad(preSWDVelocityX, preSWDVelocityY, preSWDVelocityZ); this->SWDPressure = preSWDPressure; - this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); + this->SWDEnergy = Energy( SWDDensity, SWDPressure, gamma, SWDVelocity); this->SWDMomentum = SWDVelocity * SWDDensity; this->NEUDensity = preNEUDensity; this->NEUVelocity = PointLoad(preNEUVelocityX, preNEUVelocityY, preNEUVelocityZ); this->NEUPressure = preNEUPressure; - this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); + this->NEUEnergy = Energy( NEUDensity, NEUPressure, gamma, NEUVelocity); this->NEUMomentum = NEUVelocity * NEUDensity; this->SEUDensity = preSEUDensity; this->SEUVelocity = PointLoad(preSEUVelocityX, preSEUVelocityY, preSEUVelocityZ); this->SEUPressure = preSEUPressure; - this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); + this->SEUEnergy = Energy( SEUDensity, SEUPressure, gamma, SEUVelocity); this->SEUMomentum = SEUVelocity * SEUDensity; this->NEDDensity = preNEDDensity; this->NEDVelocity = PointLoad(preNEDVelocityX, preNEDVelocityY, preNEDVelocityZ); this->NEDPressure = preNEDPressure; - this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); + this->NEDEnergy = Energy( NEDDensity, NEDPressure, gamma, NEDVelocity); this->NEDMomentum = NEDVelocity * NEDDensity; this->SEDDensity = preSEDDensity; this->SEDVelocity = PointLoad(preSEDVelocityX, preSEDVelocityY, preSEDVelocityZ); this->SEDPressure = preSEDPressure; - this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); + this->SEDEnergy = Energy( SEDDensity, SEDPressure, gamma, SEDVelocity); this->SEDMomentum = SEDVelocity * SEDDensity; std::cout << this->SEDEnergy; std::cout << this->SWDEnergy; - + } PointType PointLoad( RealType ValueX, RealType ValueY, RealType ValueZ) { - PointType point; + PointType point; switch (Dimensions) { case 1: point[ 0 ] = ValueX; @@ -1275,7 +1275,7 @@ class RiemannProblemInitialCondition point[ 1 ] = ValueY; break; case 3: point[ 0 ] = ValueX; - point[ 1 ] = ValueY; + point[ 1 ] = ValueY; point[ 2 ] = ValueZ; break; } @@ -1296,7 +1296,7 @@ class RiemannProblemInitialCondition } return energy; } - + void setInitialCondition( CompressibleConservativeVariables< MeshType >& conservativeVariables, const PointType& center = PointType( 0.0 ) ) { @@ -1343,7 +1343,7 @@ class RiemannProblemInitialCondition typedef Operators::Analytic::Sign< Dimensions, RealType > SignType; typedef Functions::OperatorFunction< SignType, VectorNormType > InitialConditionType; typedef Pointers::SharedPointer< InitialConditionType, DeviceType > InitialConditionPointer; - + InitialConditionPointer initialCondition; initialCondition->getFunction().setCenter( center ); initialCondition->getFunction().setMaxNorm( true ); @@ -1353,7 +1353,7 @@ class RiemannProblemInitialCondition discontinuityPlacement[ i ] = 1.0 / discontinuityPlacement[ i ]; initialCondition->getFunction().setAnisotropy( discontinuityPlacement ); initialCondition->getFunction().setMultiplicator( -1.0 ); - + Functions::MeshFunctionEvaluator< MeshFunctionType, InitialConditionType > evaluator; */ /**** @@ -1362,12 +1362,12 @@ class RiemannProblemInitialCondition /* conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); */ -/* +/* initialCondition->getOperator().setPositiveValue( leftDensity ); initialCondition->getOperator().setNegativeValue( rightDensity ); evaluator.evaluate( conservativeVariables.getDensity(), initialCondition ); conservativeVariables.getDensity()->write( "density.gplt", "gnuplot" ); -*/ +*/ /**** * Momentum */ @@ -1379,7 +1379,7 @@ class RiemannProblemInitialCondition initialCondition->getOperator().setNegativeValue( rightDensity * rightVelocity[ i ] ); evaluator.evaluate( conservativeVariables.getMomentum()[ i ], initialCondition ); } -*/ +*/ /**** * Energy */ @@ -1397,10 +1397,10 @@ class RiemannProblemInitialCondition (* conservativeVariables.getEnergy())->write( "energy-init", "gnuplot" ); */ } - - + + protected: - + PointType discontinuityPlacement; PointType NWUVelocity, NEUVelocity, SWUVelocity, SEUVelocity, NWDVelocity, NEDVelocity, SWDVelocity, SEDVelocity; RealType NWUDensity, NEUDensity, SWUDensity, SEUDensity, NWDDensity, NEDDensity, SWDDensity, SEDDensity; @@ -1410,7 +1410,7 @@ class RiemannProblemInitialCondition RealType leftDensity, rightDensity; PointType leftVelocity, rightVelocity; RealType leftPressure, rightPressure; - + RealType gamma; // gamma in the ideal gas state equation }; diff --git a/src/TNL/Config/ParameterContainer.h b/src/TNL/Config/ParameterContainer.h index 264842c94..e6f157843 100644 --- a/src/TNL/Config/ParameterContainer.h +++ b/src/TNL/Config/ParameterContainer.h @@ -179,6 +179,24 @@ public: return getParameter< std::vector< T > >( name ); } + /** + * \brief Returns up to three parameter values as a StaticArray. + * + * \param prefix Prefix of the parameter names. The names are \e prefix-x, + * \e prefix-y and \e prefix-z. + */ + template< class StaticArray > + StaticArray getXyz( const std::string& prefix ) const + { + StaticArray result; + result[ 0 ] = getParameter< typename StaticArray::ValueType >( prefix + "-x" ); + if( StaticArray::getSize() >= 2 ) + result[ 1 ] = getParameter< typename StaticArray::ValueType >( prefix + "-y" ); + if( StaticArray::getSize() >= 3 ) + result[ 2 ] = getParameter< typename StaticArray::ValueType >( prefix + "-z" ); + return result; + } + protected: std::unordered_map< std::string, Parameter > parameters; }; diff --git a/src/TNL/Containers/StaticVector.h b/src/TNL/Containers/StaticVector.h index da310a1ca..f70b8adcc 100644 --- a/src/TNL/Containers/StaticVector.h +++ b/src/TNL/Containers/StaticVector.h @@ -11,7 +11,6 @@ #pragma once #include -#include #include namespace TNL { @@ -89,15 +88,6 @@ public: __cuda_callable__ StaticVector( const Expressions::StaticUnaryExpressionTemplate< T, Operation >& expr ); - /** - * \brief Sets up a new (vector) parameter which means it can have more elements. - * - * \param parameters Reference to a parameter container where the new parameter is saved. - * \param prefix Name of now parameter/prefix. - */ - bool setup( const Config::ParameterContainer& parameters, - const String& prefix = "" ); - /** * \brief Assignment operator with a vector expression. * diff --git a/src/TNL/Containers/StaticVector.hpp b/src/TNL/Containers/StaticVector.hpp index b995dc11a..0ed70e505 100644 --- a/src/TNL/Containers/StaticVector.hpp +++ b/src/TNL/Containers/StaticVector.hpp @@ -36,16 +36,6 @@ StaticVector< Size, Real >::StaticVector( const Expressions::StaticUnaryExpressi detail::VectorAssignment< StaticVector< Size, Real >, Expressions::StaticUnaryExpressionTemplate< T, Operation > >::assignStatic( *this, expr ); } -template< int Size, typename Real > -bool -StaticVector< Size, Real >::setup( const Config::ParameterContainer& parameters, - const String& prefix ) -{ - for( int i = 0; i < Size; i++ ) - this->data[ i ] = parameters.template getParameter< double >( prefix + convertToString( i ) ); - return true; -} - template< int Size, typename Real > template< typename VectorExpression > __cuda_callable__ diff --git a/src/TNL/Functions/Analytic/VectorNorm.h b/src/TNL/Functions/Analytic/VectorNorm.h index 583f3eebc..6582b1959 100644 --- a/src/TNL/Functions/Analytic/VectorNorm.h +++ b/src/TNL/Functions/Analytic/VectorNorm.h @@ -15,17 +15,17 @@ namespace TNL { namespace Functions { -namespace Analytic { +namespace Analytic { template< int Dimensions_, typename Real > class VectorNormBase : public Domain< Dimensions_, SpaceDomain > { public: - + typedef Real RealType; typedef Containers::StaticVector< Dimensions_, RealType > PointType; - + VectorNormBase() : center( 0.0 ), anisotropy( 1.0 ), @@ -33,22 +33,22 @@ class VectorNormBase : public Domain< Dimensions_, SpaceDomain > radius( 0.0 ), multiplicator( 1.0 ), maxNorm( false ){}; - + static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ) { - config.addEntry< double >( prefix + "center-0", "x-coordinate of the coordinates origin for the vector norm.", 0.0 ); - config.addEntry< double >( prefix + "center-1", "y-coordinate of the coordinates origin for the vector norm.", 0.0 ); - config.addEntry< double >( prefix + "center-2", "z-coordinate of the coordinates origin for the vector norm.", 0.0 ); - config.addEntry< double >( prefix + "anisotropy-0", "x-coordinate of the linear anisotropy of the vector norm.", 1.0 ); - config.addEntry< double >( prefix + "anisotropy-1", "y-coordinate of the linear anisotropy of the vector norm.", 1.0 ); - config.addEntry< double >( prefix + "anisotropy-2", "z-coordinate of the linear anisotropy of the vector norm.", 1.0 ); + config.addEntry< double >( prefix + "center-x", "x-coordinate of the coordinates origin for the vector norm.", 0.0 ); + config.addEntry< double >( prefix + "center-y", "y-coordinate of the coordinates origin for the vector norm.", 0.0 ); + config.addEntry< double >( prefix + "center-z", "z-coordinate of the coordinates origin for the vector norm.", 0.0 ); + config.addEntry< double >( prefix + "anisotropy-x", "x-coordinate of the linear anisotropy of the vector norm.", 1.0 ); + config.addEntry< double >( prefix + "anisotropy-y", "y-coordinate of the linear anisotropy of the vector norm.", 1.0 ); + config.addEntry< double >( prefix + "anisotropy-z", "z-coordinate of the linear anisotropy of the vector norm.", 1.0 ); config.addEntry< double >( prefix + "power", "The p coefficient of the L-p vector norm", 2.0 ); config.addEntry< double >( prefix + "radius", "Radius of the zero-th level-set.", 0.0 ); config.addEntry< double >( prefix + "multiplicator", "Outer multiplicator of the norm - -1.0 turns the function graph upside/down.", 1.0 ); config.addEntry< bool >( prefix + "max-norm", "Turn to 'true' to get maximum norm.", false ); } - + bool setup( const Config::ParameterContainer& parameters, const String& prefix = "" ) { @@ -56,9 +56,10 @@ class VectorNormBase : public Domain< Dimensions_, SpaceDomain > this->maxNorm = parameters.template getParameter< bool >( prefix + "max-norm" ); this->radius = parameters.template getParameter< double >( prefix + "radius" ); this->multiplicator = parameters.template getParameter< double >( prefix + "multiplicator" ); - return( this->center.setup( parameters, prefix + "center-") && - this->anisotropy.setup( parameters, prefix + "anisotropy-" ) ); - }; + this->center = parameters.template getXyz< PointType >( prefix + "center" ); + this->anisotropy = parameters.template getXyz< PointType >( prefix + "anisotropy" ); + return true; + } void setCenter( const PointType& center ) { @@ -69,7 +70,7 @@ class VectorNormBase : public Domain< Dimensions_, SpaceDomain > { return this->center; } - + void setAnisotropy( const PointType& anisotropy ) { this->anisotropy = anisotropy; @@ -79,53 +80,53 @@ class VectorNormBase : public Domain< Dimensions_, SpaceDomain > { return this->anisotropy; } - + void setPower( const RealType& power ) { this->power = power; } - + const RealType& getPower() const { return this->power; } - + void setRadius( const RealType& radius ) { this->radius = radius; } - + const RealType& getRadius() const { return this->radius; } - + void setMultiplicator( const RealType& multiplicator ) { this->multiplicator = multiplicator; } - + const RealType& getMultiplicator() const { return this->multiplicator; } - + void setMaxNorm( bool maxNorm ) { this->maxNorm = maxNorm; } - + const RealType& getMaxNorm() const { return this->maxNorm; } - + protected: PointType center, anisotropy; - + RealType power, radius, multiplicator; - + bool maxNorm; }; @@ -139,8 +140,8 @@ template< typename Real > class VectorNorm< 1, Real > : public VectorNormBase< 1, Real > { public: - - typedef VectorNormBase< 1, Real > BaseType; + + typedef VectorNormBase< 1, Real > BaseType; using typename BaseType::RealType; using typename BaseType::PointType; @@ -164,21 +165,21 @@ class VectorNorm< 1, Real > : public VectorNormBase< 1, Real > } return 0.0; } - + __cuda_callable__ RealType operator()( const PointType& v, const RealType& time = 0.0 ) const { return this->template getPartialDerivative< 0, 0, 0 >( v, time ); - } + } }; template< typename Real > class VectorNorm< 2, Real > : public VectorNormBase< 2, Real > { public: - - typedef VectorNormBase< 2, Real > BaseType; + + typedef VectorNormBase< 2, Real > BaseType; using typename BaseType::RealType; using typename BaseType::PointType; @@ -196,21 +197,21 @@ class VectorNorm< 2, Real > : public VectorNormBase< 2, Real > if( XDiffOrder == 0 && YDiffOrder == 0 ) { if( this->maxNorm ) - return ( TNL::max( TNL::abs( x ) * this->anisotropy.x(), + return ( TNL::max( TNL::abs( x ) * this->anisotropy.x(), TNL::abs( y ) * this->anisotropy.y() ) - this->radius ) * this->multiplicator; if( this->power == 1.0 ) - return ( ( TNL::abs( x ) * this->anisotropy.x() + + return ( ( TNL::abs( x ) * this->anisotropy.x() + TNL::abs( y ) * this->anisotropy.y() ) - this->radius ) * this->multiplicator; if( this->power == 2.0 ) - return ( std::sqrt( x * x * this->anisotropy.x() + + return ( std::sqrt( x * x * this->anisotropy.x() + y * y * this->anisotropy.y() ) - this->radius ) * this->multiplicator; - return ( std::pow( std::pow( TNL::abs( x ), this->power ) * this->anisotropy.x() + + return ( std::pow( std::pow( TNL::abs( x ), this->power ) * this->anisotropy.x() + std::pow( TNL::abs( y ), this->power ) * this->anisotropy.y(), 1.0 / this-> power ) - this->radius ) * this->multiplicator; } TNL_ASSERT_TRUE( false, "Not implemented yet." ); return 0.0; } - + __cuda_callable__ RealType operator()( const PointType& v, const Real& time = 0.0 ) const @@ -223,8 +224,8 @@ template< typename Real > class VectorNorm< 3, Real > : public VectorNormBase< 3, Real > { public: - - typedef VectorNormBase< 3, Real > BaseType; + + typedef VectorNormBase< 3, Real > BaseType; using typename BaseType::RealType; using typename BaseType::PointType; @@ -241,31 +242,31 @@ class VectorNorm< 3, Real > : public VectorNormBase< 3, Real > if( XDiffOrder == 0 && YDiffOrder == 0 && ZDiffOrder == 0 ) { if( this->maxNorm ) - return ( TNL::max( TNL::max( TNL::abs( x ) * this->anisotropy.x(), + return ( TNL::max( TNL::max( TNL::abs( x ) * this->anisotropy.x(), TNL::abs( y ) * this->anisotropy.y() ), TNL::abs( z ) * this->anisotropy.z() ) - this->radius ) * this->multiplicator; if( this->power == 1.0 ) - return ( ( TNL::abs( x ) * this->anisotropy.x() + + return ( ( TNL::abs( x ) * this->anisotropy.x() + TNL::abs( y ) * this->anisotropy.y() + TNL::abs( z ) * this->anisotropy.z() ) - this->radius ) * this->multiplicator; if( this->power == 2.0 ) - return ( std::sqrt( x * x * this->anisotropy.x() + + return ( std::sqrt( x * x * this->anisotropy.x() + y * y * this->anisotropy.y() + z * z * this->anisotropy.z() ) - this->radius ) * this->multiplicator ; - return ( std::pow( std::pow( TNL::abs( x ), this->power ) * this->anisotropy.x() + + return ( std::pow( std::pow( TNL::abs( x ), this->power ) * this->anisotropy.x() + std::pow( TNL::abs( y ), this->power ) * this->anisotropy.y() + std::pow( TNL::abs( z ), this->power ) * this->anisotropy.z(), 1.0 / this-> power ) - this->radius ) * this->multiplicator; } TNL_ASSERT_TRUE( false, "Not implemented yet." ); return 0.0; } - + __cuda_callable__ RealType operator()( const PointType& v, const Real& time = 0.0 ) const { return this->template getPartialDerivative< 0, 0, 0 >( v, time ); - } + } }; template< int Dimensions, diff --git a/src/TNL/Operators/Analytic/Shift.h b/src/TNL/Operators/Analytic/Shift.h index d41464fad..6b5478a50 100644 --- a/src/TNL/Operators/Analytic/Shift.h +++ b/src/TNL/Operators/Analytic/Shift.h @@ -17,56 +17,56 @@ namespace TNL { namespace Operators { -namespace Analytic { - - +namespace Analytic { + + template< int Dimensions, typename Real > class Shift : public Functions::Domain< Dimensions, Functions::SpaceDomain > { public: - + typedef Real RealType; typedef Containers::StaticVector< Dimensions, RealType > PointType; - - + + Shift() : shift( 0.0 ) {}; - + static void configSetup( Config::ConfigDescription& config, const String& prefix = "" ) { - config.addEntry< double >( prefix + "shift-0", "x-coordinate of the shift vector.", 0.0 ); - config.addEntry< double >( prefix + "shift-1", "y-coordinate of the shift vector.", 0.0 ); - config.addEntry< double >( prefix + "shift-2", "z-coordinate of the shift vector.", 0.0 ); - } - + config.addEntry< double >( prefix + "shift-x", "x-coordinate of the shift vector.", 0.0 ); + config.addEntry< double >( prefix + "shift-y", "y-coordinate of the shift vector.", 0.0 ); + config.addEntry< double >( prefix + "shift-z", "z-coordinate of the shift vector.", 0.0 ); + } + bool setup( const Config::ParameterContainer& parameters, const String& prefix = "" ) { - return shift.setup( parameters, prefix + "shift-" ); - }; - - + this->shift = parameters.template getXyz< PointType >( prefix + "shift" ); + return true; + } + void setShift( const PointType& shift ) { this->shift = shift; } - + __cuda_callable__ const PointType& getShift() const { return this->shift; } - + template< typename Function > __cuda_callable__ RealType operator()( const Function& function, const PointType& vertex, const RealType& time = 0 ) const - { + { return function( vertex - this->shift, time ); } - - template< typename Function, + + template< typename Function, int XDiffOrder = 0, int YDiffOrder = 0, int ZDiffOrder = 0 > @@ -79,10 +79,10 @@ class Shift : public Functions::Domain< Dimensions, Functions::SpaceDomain > return this->operator()( function, vertex - this->shift, time ); // TODO: implement the rest } - - + + protected: - + PointType shift; }; -- GitLab