//
//
// File author(s):  <Julian Andres Garcia Grajales and Gabriel Rucabado>, (C) 2014
//
// Copyright: this software is licenced under the terms stipulated in the license.txt file located in its root directory
//
//

#ifndef _SOLVER
#define _SOLVER

class Solver {
 public:
  //!\brief This function updates the electrical variables based on the previous time step information
  //  @param input_active Flag used to indicate if it has to use  the input current to update the values
  virtual void update (bool input_active) = 0;
  //!\brief Calculate one iteration of the explicit finite difference discretization solver
  virtual void calculate() = 0;
   //! \brief Copy the current potential to the pointer of the parameter
  //  @param potential Pointer on which the potential will be copied 
  virtual void snapshot(TYPE *potential) = 0;
  //! \brief Free all memory used by the solver
  virtual ~Solver(){};
};

#endif