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

Fixed explicit solver after introducing virtual methods to linear solvers.

parent c9260515
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ class Euler : public ExplicitSolver< Problem >

   Euler();

   String getType() const;
   static String getType();

   static void configSetup( Config::ConfigDescription& config,
                            const String& prefix = "" );
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ Euler< Problem > :: Euler()
};

template< typename Problem >
String Euler< Problem > :: getType() const
String Euler< Problem > :: getType()
{
   return String( "Euler< " ) +
          Problem :: getType() +
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ class Merson : public ExplicitSolver< Problem >

   Merson();

   String getType() const;
   static String getType();

   static void configSetup( Config::ConfigDescription& config,
                            const String& prefix = "" );
+2 −2
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ Merson< Problem > :: Merson()
};

template< typename Problem >
String Merson< Problem > :: getType() const
String Merson< Problem > :: getType()
{
   return String( "Merson< " ) +
          Problem::getType() +
+14 −11
Original line number Diff line number Diff line
@@ -27,20 +27,23 @@ class ExplicitTimeStepper
{
   public:

      typedef Problem ProblemType;
      typedef OdeSolver< ExplicitTimeStepper< Problem, OdeSolver > > OdeSolverType;
      typedef typename Problem::RealType RealType;
      typedef typename Problem::DeviceType DeviceType;
      typedef typename Problem::IndexType IndexType;
      typedef typename Problem::MeshType MeshType;
      typedef Pointers::SharedPointer< MeshType > MeshPointer;
      typedef typename ProblemType::DofVectorType DofVectorType;
      typedef Pointers::SharedPointer< DofVectorType, DeviceType > DofVectorPointer;
      typedef IterativeSolverMonitor< RealType, IndexType > SolverMonitorType;
      using ProblemType = Problem;
      using RealType = typename Problem::RealType;
      using DeviceType = typename Problem::DeviceType;
      using IndexType = typename Problem::IndexType;
      using MeshType = typename Problem::MeshType;
      using MeshPointer = Pointers::SharedPointer< MeshType >;
      using DofVectorType = typename ProblemType::DofVectorType;
      using DofVectorPointer = Pointers::SharedPointer< DofVectorType, DeviceType >;
      using SolverMonitorType = IterativeSolverMonitor< RealType, IndexType >;
      using CommunicatorType = typename Problem::CommunicatorType;
      using OdeSolverType = OdeSolver< ExplicitTimeStepper< Problem, OdeSolver > >;
      using OdeSolverPointer = Pointers::SharedPointer< OdeSolverType, DeviceType >;

      static_assert( ProblemType::isTimeDependent(), "The problem is not time dependent." );

      static String getType();
      
      ExplicitTimeStepper();

      static void configSetup( Config::ConfigDescription& config,
@@ -79,7 +82,7 @@ class ExplicitTimeStepper

   protected:

      OdeSolverType* odeSolver;
      OdeSolverPointer odeSolver;

      SolverMonitorType* solverMonitor;

Loading