Commit 87d2d81d authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

Merge branch 'master' into develop

Conflicts:
	examples/advection/LaxFridrichs.h
	examples/advection/LaxFridrichs_impl.h
	examples/advection/advection.h
	examples/advection/advectionBuildConfigTag.h
	examples/advection/advectionProblem_impl.h
	examples/advection/advectionRhs.h
	examples/inviscid-flow/1d/EulerPressureGetter.h
	examples/inviscid-flow/1d/EulerVelGetter.h
	examples/inviscid-flow/1d/LaxFridrichsContinuity.h
	examples/inviscid-flow/1d/LaxFridrichsContinuity_impl.h
	examples/inviscid-flow/1d/LaxFridrichsEnergy.h
	examples/inviscid-flow/1d/LaxFridrichsEnergy_impl.h
	examples/inviscid-flow/1d/LaxFridrichsMomentum.h
	examples/inviscid-flow/1d/LaxFridrichsMomentum_impl.h
	examples/inviscid-flow/1d/eulerProblem_impl.h
	examples/inviscid-flow/2d/EulerPressureGetter.h
	examples/inviscid-flow/2d/EulerPressureGetter_impl.h
	examples/inviscid-flow/2d/EulerVelGetter.h
	examples/inviscid-flow/2d/EulerVelGetter_impl.h
	examples/inviscid-flow/2d/EulerVelXGetter.h
	examples/inviscid-flow/2d/EulerVelXGetter_impl.h
	examples/inviscid-flow/2d/EulerVelYGetter.h
	examples/inviscid-flow/2d/EulerVelYGetter_impl.h
	examples/inviscid-flow/2d/LaxFridrichsContinuity.h
	examples/inviscid-flow/2d/LaxFridrichsContinuity_impl .h
	examples/inviscid-flow/2d/LaxFridrichsEnergy.h
	examples/inviscid-flow/2d/LaxFridrichsEnergy_impl.h
	examples/inviscid-flow/2d/LaxFridrichsMomentumX.h
	examples/inviscid-flow/2d/LaxFridrichsMomentumX_impl.h
	examples/inviscid-flow/2d/LaxFridrichsMomentumY.h
	examples/inviscid-flow/2d/LaxFridrichsMomentumY_impl.h
	examples/inviscid-flow/2d/euler.h
	examples/inviscid-flow/2d/eulerBuildConfigTag.h
	examples/inviscid-flow/2d/eulerRhs.h
	examples/inviscid-flow/eulerBuildConfigTag.h
	examples/inviscid-flow/eulerProblem_impl.h
	src/TNL/Functions/MeshFunction_impl.h
	src/TNL/Functions/OperatorFunction.h
	src/TNL/Functions/TestFunction.h
	src/TNL/Functions/TestFunction_impl.h
	src/Tools/tnl-view.h
	tests/benchmarks/heat-equation-benchmark/tnlTestGrid2D.h
	tests/benchmarks/heat-equation-benchmark/tnlTestGridEntity.h
parents 7c51a1b5 b7feb60f
Loading
Loading
Loading
Loading
+60 −0
Original line number Diff line number Diff line
/***************************************************************************
                          HeatEquationBuildConfigTag.h  -  description
                             -------------------
    begin                : Jul 7, 2014
    copyright            : (C) 2014 by Tomas Oberhuber
    email                : tomas.oberhuber@fjfi.cvut.cz
 ***************************************************************************/

/* See Copyright Notice in tnl/Copyright */

#pragma once

#include <TNL/Solvers/BuildConfigTags.h>

namespace TNL {
namespace Solvers {
   
class HeatEquationBuildConfig
{
   public:

      static void print() { std::cerr << "HeatEquationBuildConfig" << std::endl; }
};

/****
 * Turn off support for float and long double.
 */
template<> struct ConfigTagReal< HeatEquationBuildConfig, float > { enum { enabled = false }; };
template<> struct ConfigTagReal< HeatEquationBuildConfig, long double > { enum { enabled = false }; };

/****
 * Turn off support for short int and long int indexing.
 */
template<> struct ConfigTagIndex< HeatEquationBuildConfig, short int >{ enum { enabled = false }; };
template<> struct ConfigTagIndex< HeatEquationBuildConfig, long int >{ enum { enabled = false }; };

/****
 * Use of Grid is enabled for allowed dimensions and Real, Device and Index types.
 */
template< int Dimension, typename Real, typename Device, typename Index >
   struct ConfigTagMesh< HeatEquationBuildConfig, Meshes::Grid< Dimension, Real, Device, Index > >
      { enum { enabled = ConfigTagDimension< HeatEquationBuildConfig, Dimension >::enabled  &&
                         ConfigTagReal< HeatEquationBuildConfig, Real >::enabled &&
                         ConfigTagDevice< HeatEquationBuildConfig, Device >::enabled &&
                         ConfigTagIndex< HeatEquationBuildConfig, Index >::enabled }; };

/****
 * Please, chose your preferred time discretization  here.
 */
template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfig, ExplicitTimeDiscretisationTag >{ enum { enabled = true }; };
template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfig, SemiImplicitTimeDiscretisationTag >{ enum { enabled = false }; };
template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfig, ImplicitTimeDiscretisationTag >{ enum { enabled = false }; };

/****
 * Only the Runge-Kutta-Merson solver is enabled by default.
 */
template<> struct ConfigTagExplicitSolver< HeatEquationBuildConfig, ExplicitEulerSolverTag >{ enum { enabled = false }; };

} // namespace Solvers
} // namespace TNL
+6 −6
Original line number Diff line number Diff line
@@ -53,17 +53,17 @@ class heatEquationSetter
   typedef Device DeviceType;
   typedef Index IndexType;

   typedef Containers::StaticVector< MeshType::meshDimensions, Real > Vertex;
   typedef Containers::StaticVector< MeshType::meshDimension, Real > Vertex;

   static bool run( const Config::ParameterContainer& parameters )
   {
      enum { Dimensions = MeshType::meshDimensions };
      enum { Dimension = MeshType::meshDimension };
      typedef Operators::LinearDiffusion< MeshType, Real, Index > ApproximateOperator;
      typedef Operators::ExactLinearDiffusion< Dimensions > ExactOperator;
      typedef Functions::TestFunction< MeshType::meshDimensions, Real, Device > TestFunction;
      typedef Operators::ExactLinearDiffusion< Dimension > ExactOperator;
      typedef Functions::TestFunction< MeshType::meshDimension, Real, Device > TestFunction;
      typedef HeatEquationEocRhs< ExactOperator, TestFunction > RightHandSide;
      typedef Containers::StaticVector < MeshType::meshDimensions, Real > Vertex;
      typedef Operators::DirichletBoundaryConditions< MeshType, TestFunction, Dimensions, Real, Index > BoundaryConditions;
      typedef Containers::StaticVector < MeshType::meshDimension, Real > Vertex;
      typedef Operators::DirichletBoundaryConditions< MeshType, TestFunction, Dimension, Real, Index > BoundaryConditions;
      typedef HeatEquationEocProblem< MeshType, BoundaryConditions, RightHandSide, ApproximateOperator > Solver;
      SolverStarter solverStarter;
      return solverStarter.template run< Solver >( parameters );
+5 −3
Original line number Diff line number Diff line
@@ -21,12 +21,14 @@
#include <TNL/Functions/MeshFunction.h>
#include <TNL/Problems/HeatEquationProblem.h>
#include <TNL/Meshes/Grid.h>
#include "HeatEquationBuildConfigTag.h"

using namespace TNL;
using namespace TNL::Problems;

//typedef tnlDefaultBuildMeshConfig BuildConfig;
typedef Solvers::FastBuildConfig BuildConfig;
//typedef Solvers::HeatEquationBuildConfig BuildConfig;

template< typename MeshConfig >
class heatEquationConfig
@@ -66,14 +68,14 @@ class heatEquationSetter

   static bool run( const Config::ParameterContainer& parameters )
   {
      enum { Dimensions = MeshType::meshDimensions };
      enum { Dimension = MeshType::meshDimension };
      typedef Operators::LinearDiffusion< MeshType, Real, Index > ApproximateOperator;
      typedef Functions::Analytic::Constant< Dimensions, Real > RightHandSide;
      typedef Functions::Analytic::Constant< Dimension, Real > RightHandSide;

      String boundaryConditionsType = parameters.getParameter< String >( "boundary-conditions-type" );
      if( parameters.checkParameter( "boundary-conditions-constant" ) )
      {
         typedef Functions::Analytic::Constant< Dimensions, Real > Constant;
         typedef Functions::Analytic::Constant< Dimension, Real > Constant;
         if( boundaryConditionsType == "dirichlet" )
         {
            typedef Operators::DirichletBoundaryConditions< MeshType, Constant > BoundaryConditions;
+1 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ class CompressibleConservativeVariables
{
   public:
      typedef Mesh MeshType;
      static const int Dimensions = MeshType::getMeshDimensions();
      static const int Dimensions = MeshType::getDimension();
      typedef typename MeshType::RealType RealType;
      typedef typename MeshType::DeviceType DeviceType;
      typedef typename MeshType::IndexType IndexType;
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ class LaxFridrichs
      typedef typename Mesh::DeviceType DeviceType;
      typedef Index IndexType;
      typedef Functions::MeshFunction< Mesh > MeshFunctionType;
      static const int Dimensions = Mesh::getMeshDimensions();
      static const int Dimensions = Mesh::getDimension();
      typedef Functions::VectorField< Dimensions, MeshFunctionType > VectorFieldType;
 
      typedef LaxFridrichsContinuity< Mesh, Real, Index > ContinuityOperatorType;
Loading