diff --git a/src/Examples/flow-sw/RiemannProblemInitialCondition.h b/src/Examples/flow-sw/RiemannProblemInitialCondition.h index 0d085fed07e52d06ac78a26c12aaf7c7107122c3..c38150f5484216287784fdf616178c41e5b53149 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 0d085fed07e52d06ac78a26c12aaf7c7107122c3..c38150f5484216287784fdf616178c41e5b53149 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 810602b164003a6f7a0195d4dac9ab02577c304d..a761d68be778784b143369fd002676042d819f92 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 81d1ca1f2848208a00bdd0be2012a32729c4423e..e933648bb10ed9832925077d9d4fd67219f10265 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 81d1ca1f2848208a00bdd0be2012a32729c4423e..e933648bb10ed9832925077d9d4fd67219f10265 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 867fc671c9c348f5778255c8da817948a69ab377..fc2c43f5f8c3f92c4706629ca19f7c8d20341ce6 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 264842c9418f91aeac479dd5f1a686992dfc68d8..e6f157843b6c22a2917dddf8672c6dd3ca100542 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 da310a1ca43e073c01f1cc96e45b2c07d899a8b8..f70b8adccb46db5858c7ce059a0ceddca2162905 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 b995dc11a8130c96cf5ac16607b73a28e9ff680a..0ed70e50583ea52fc2a0890c8a3be5c8faf2d746 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 583f3eebcb22fa815fa2624dbd73de3073498c73..6582b19598b1201983ddaabeaced4a545117d7e8 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/Matrices/LambdaMatrix.hpp b/src/TNL/Matrices/LambdaMatrix.hpp index 77de0872c5379a8bd144c10c85a70e5755717805..730c8b5b1d092d03ce1914b31722fdd5c88966dc 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/Sandbox/SparseSandboxMatrixView.hpp b/src/TNL/Matrices/Sandbox/SparseSandboxMatrixView.hpp index 07342e8e758065aceab6baf38af6f0db1e43eba4..4a6afa6916f142a538cfac0e1bea099574951f1d 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/SparseMatrix.h b/src/TNL/Matrices/SparseMatrix.h index d6420438137bdace3f5a96082bbc11c5e8cce2f4..fa3441b01874b7f5c78a528fda7236dbc6f03838 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 dd11c6cf74cd4b961331f220829bb0c79428f69a..93cd9b173f786fdf7403cb7ef06ac6c753d6afb7 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 a20964b0c11f3fce145e1d9f54ec828c17ea628b..eaf692ac66d58c1778caa9847f36c65094cd7a4d 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 c3f7387fd05f6c75e8e5140d5620bb8852cf420c..2af26efd5986fd268f04ada7e1074479e7178de4 100644 --- a/src/TNL/Matrices/SparseMatrixView.hpp +++ b/src/TNL/Matrices/SparseMatrixView.hpp @@ -10,11 +10,13 @@ #pragma once +#include #include #include #include #include #include +#include namespace TNL { namespace Matrices { @@ -832,14 +834,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, diff --git a/src/TNL/Matrices/details/SparseMatrix.h b/src/TNL/Matrices/details/SparseMatrix.h index 9eeac76142f26533b96f2eff56fc6e9d9a8d5c75..65007164f181dd97268f1ae14739a10b56cc837f 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 ) diff --git a/src/TNL/Operators/Analytic/Shift.h b/src/TNL/Operators/Analytic/Shift.h index d41464fad3b9f1297a3de4860168169337ad9336..6b5478a50d3c6cb5846e75e57c138784ba1f19e5 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; }; diff --git a/src/TNL/Solvers/IterativeSolver.h b/src/TNL/Solvers/IterativeSolver.h index 75487fa0197a51b79897384de3b12ecec12c667b..97d3f1c565b418ec93ae2a408e0656e4a5168a1f 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 74% rename from src/TNL/Solvers/IterativeSolver_impl.h rename to src/TNL/Solvers/IterativeSolver.hpp index 701e6fccea4a62e51788e7fa8561c86763b2db83..f894f37119e247247e6a7c0e265e7a341acc6063 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. @@ -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 ); + 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 ); - // 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 + "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/IterativeSolverMonitor.h b/src/TNL/Solvers/IterativeSolverMonitor.h index f85322083dea6a85c97922afbe001cb9370d14d3..07dee8de99a0a151e40bffbbae082b81469069e7 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 a4721e4c3e11fd55c7dc57a2a71a34d57d68ed9f..a1fa8c45434ee43828ec74ccc7fff823796ba79e 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/Linear/BICGStab.h b/src/TNL/Solvers/Linear/BICGStab.h index 474a45d023a579095bf22db383cdbee4feb43294..233590ed7aed38dd46927de100e9fb0c11a9a283 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 94% rename from src/TNL/Solvers/Linear/BICGStab_impl.h rename to src/TNL/Solvers/Linear/BICGStab.hpp index ff3b42ed0c7b7cc65527481f8edd2990b94b639d..afbdbc39945aa0a07934aed80bc30d3d76760856 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 @@ -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.h b/src/TNL/Solvers/Linear/BICGStabL.h index f2481b588bc92722e9795fea2a91b8676e5a307d..f30a236342382406e6f40fa14824a813ab7761e5 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 95% rename from src/TNL/Solvers/Linear/BICGStabL_impl.h rename to src/TNL/Solvers/Linear/BICGStabL.hpp index 9eeb0700a65f56323721f152654a2f1055cc7db9..7ae4999c9fad724a4c9be9f87285992b35f24d0e 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. @@ -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/CG.h b/src/TNL/Solvers/Linear/CG.h index 6dff7024512660444073e82f8517ae33d892e02a..f2cad3f05de87e23a6144ffbe77b666dc25698a8 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 1b96bd1b146a943f939947a6e58bb0387c75de0b..67442b4b1702ba408f3f9a18470772c11e2b361c 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 818f1c163019a3f83347c2f8a0ca0ce1c518a667..7314a3a05b8f5c391311b4ba932c7421d1d7b7ee 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 95% rename from src/TNL/Solvers/Linear/GMRES_impl.h rename to src/TNL/Solvers/Linear/GMRES.hpp index 2dc71629037b4f2fe8cec23762c52a8206c84dd7..4e6dcb81158f0a93649a2c311ffa2ab1176468ba 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. @@ -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 e4e74d5dff6c7037278e0455303c6713ed26276f..f8261efe9ca4ce488977473a93c4b868c2582156 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 { @@ -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 839d2a34a84059c59961009499b4326ad3484a46..e80bad4b1a98a6cb86142ed1ae61aa6131aead37 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 { @@ -44,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/Diagonal.h b/src/TNL/Solvers/Linear/Preconditioners/Diagonal.h index 7c03dd7ce6bf073a1a675798eb19f677d8339520..22bfceb007fa3107813ca069cf7efb861030afb7 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 44bd8e4477f2cebee9b85ebf93642e3f2da9965b..ee4a378dba92f4d6d858844ad280d85e09d3eabe 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 7040a24817b46685d39b0eb8af4c1d03200648e3..b623e86fbd74faada4afed7c0d09c0c872907610 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 7dc0e64ba80b6594ed762f73a77ed9af3fee732c..c9f755cc0441dea9bfe3bf9720e1cc3ed8fc636f 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 82ab88e862603464ebfb5f8b799a490f9d158e86..88f5441bac5b7289532f275ba3a8939ebd2523de 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 96% rename from src/TNL/Solvers/Linear/Preconditioners/ILUT_impl.h rename to src/TNL/Solvers/Linear/Preconditioners/ILUT.hpp index e7da268b5db1cdfb12d5b4b2396980d86b4056ba..f9fb3e89218e1576977a8e78d6e415516530fb0f 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 { @@ -31,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/Preconditioners/Preconditioner.h b/src/TNL/Solvers/Linear/Preconditioners/Preconditioner.h index d9e937f034bdafaf8517d7c2a5233877caea4b2a..672f5167e0b2a7ff87e1551e837884ff7dc8dbdb 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 0d9aae433324aa3fd1346237c851fc5f6a192225..8bc1a171694a41f91b7010e138cc8219b91c5e8f 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 87% rename from src/TNL/Solvers/Linear/SOR_impl.h rename to src/TNL/Solvers/Linear/SOR.hpp index f7b4ffa9472bd482ca02c08dc40f306acfa8089a..30101c08b831ed78a994d739642660f77f50da94 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 { @@ -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; diff --git a/src/TNL/Solvers/Linear/TFQMR.h b/src/TNL/Solvers/Linear/TFQMR.h index 2a94f44e7c94413edbe54203d87227ded8cc6983..d267819da7f80d7be624b21c34e9c464e2bd0919 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 0ea03e83c5fc06b41ef0bdb1e11e9fa3a6a4d164..9c2a1f205e6342f5297b833c033418c90b143127 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 0e2e5d7ac78a9d6264f1b4448beaf5728e7dce7f..27c54d476d58182fef98e1851571951864b14fe1 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 1a86290998961717cb274c5948a353299ed02df8..01c3e71045b923cdf6c55369a16a3cd4d14bb576 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 8a25c32092e86ff51f3a353aa240c3a9e4454662..306e54c2396aed4fc33efd27d8c592832ac46adc 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 4ad7fcd0b0f2468db710d901fae5f08bfcf85de3..8bb967b9e6a5fc4882adf0ecd6b342d73757cf0b 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 6a0467341fa210d77536082e1cc641fe5d601790..8e2c08b66fa5bd6b14aef9c6337577c5db64e0e4 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 diff --git a/src/TNL/Solvers/ODE/Euler.hpp b/src/TNL/Solvers/ODE/Euler.hpp index 9dc6b6570329e2684e359c109dc6eb969ee0b9e7..4532feb4d588a83c1f701add169c3340380c885f 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 bade4ded756ae428601bc2fb9e23cb3d810c6d34..f1b870b92816c98da51d33a8619ef069abbd1d30 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 04837dee25d107faf14d78abf8e4bb2973aa453d..b62f5813a0709291a2ed3370ee5162df2d6b331f 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 630a8669432d342c6e62f15bc798dd4b85c7c258..7695339678a8fcfe34a5f1c6e97c080c7235c448 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 76398123cec697a9c70a525e1728cc3c17f8b34d..c48e0484237b5afd2e198da75236d3ae115cecf5 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 be65a95120c04ce9cd086f12b2a0b4a86a7297e8..7b016fe9f3c5632cd556e172c816f715d0e22947 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 9428485f493b3aa26cbef792f74756b579095007..4a219cacb95d1b895877807cf7bea7ab1e4a4426 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 70f19d8de9e58fcb8ae3c141eeecd7ea95e3e862..d81615c98f997498087a34faa27531d1e9ed723c 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 8bdcbd86ab3905dc08227370580f034d53abc612..562d13e85da8989990b5b6b6ebf1d8ff5ca41845 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 5d079a96606eb4f5be543c2ca024f528983f6461..af49c518f220695eb5e007e13697e4bc9433ee49 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 87e9801309158e7685e7f209b03a11c8e30a90c3..d15f21bef6330c62393762ddb5da877077cf5ab0 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 51b1868408efe0c57a47134e791cabe46ed7cfdb..13fb600447caba1713756e4ae7971baa56ceb956 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 7bf2ca33cdffc7d884ea07c4355b45eba897b6db..8f86e7cdb26df0dcb698f7710b2e209723ab16fc 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 15a5e7ba1b77bc2c0b6ca4bbfcdf77a406b384bc..297c07652fa729b41286d9335f891b25072f29dc 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 edc7086acc6c67d518daaf202a67bba8d82d32f1..9a6ac7b81b684e6af357037f690a16077fbbf362 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 8f1d7070f6c050b2b1f3afe3ee51edf57c999a80..8efd6195ffc9ea6eb0e1a38efa89a488f3b96856 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 44b99c4ced50067c2714e5b62485cec7884f6d58..6d8725ffdffec149109c9896bd24418ef492b765 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 5a5a35a6f98abee870435e722cf059cea3685023..0000000000000000000000000000000000000000 --- 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 dec9d2e117277e39d846a5e777bfb36a3eb7dc1a..c8ec06dd26cac95bce45535b4ded7c0a0e4fa9c8 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 1678a8a30b2b259f9cbe2ab87bdaa31da11732cb..36cd6c0a9a7017ac3cc5db3a7198cde58cced5f4 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 0843c93b4bdc4f5db0cc0a95a221d556baf9ad5d..8fd46b37ac67267f66bbfb8130f9e986f702049d 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 49a43f8c829b1dfa90d8b88895b9edd2daf45f10..144869cfabe29b05ef6604a088d7c0ae30467e1a 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 a054ad7d9f32b04b47440c2fb71a8b5ccf937dda..0000000000000000000000000000000000000000 --- 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