root/include/secOrd_op_brusselator.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*! \file secOrd_op_brusselator.h
   2     \brief Provides the class Esfem::SecOrd_op::Brusselator
   3 
   4      Revision history
   5      --------------------------------------------------
   6 
   7           Revised by Christian Power May 2016
   8           Revised by Christian Power March 2016
   9           Originally written by Christian Power
  10                (power22c@gmail.com) February 2016
  11 
  12      Idea
  13      --------------------------------------------------
  14 
  15      Solves the scalar surface equation using the brusselator model.
  16      You have to use the enum class `Esfem::Growth` to specify which
  17      model you want.
  18 
  19      \author Christian Power
  20      \date 18. May 2016
  21      \copyright Copyright (c) 2016 Christian Power.  All rights reserved.
  22  */
  23 
  24 #ifndef SECORD_OP_BRUSSELATOR_H
  25 #define SECORD_OP_BRUSSELATOR_H 
  26 
  27 #include <memory>
  28 #include "esfem_fwd.h"
  29 
  30 namespace Esfem{
  31   namespace SecOrd_op{
  32     class Brusselator{
  33     public:
  34       Brusselator(const Io::Parameter&, const Grid::Grid_and_time&,
  35                   const Growth);
  36       /*!< \brief This constructor creats two internal FE functions. */
  37       Brusselator(const Io::Parameter&, const Grid::Grid_and_time&,
  38                   const Growth, const Grid::Scal_FEfun&,
  39                   const Grid::Scal_FEfun&);
  40       /*!< \brief This constructor keeps references of
  41                   two external FE functions.
  42       */
  43       ~Brusselator();
  44 
  45       /*! \name Numerical interface for the finite element code */
  46       //@{
  47       void solve(const Grid::Scal_FEfun& rhs, Grid::Scal_FEfun& lhs) const;
  48       void mass_matrix(const Grid::Scal_FEfun& rhs, Grid::Scal_FEfun& lhs) const;
  49       void massMatrix_constOne(Grid::Scal_FEfun&) const;
  50       void add_massMatrixConstOne_to(Grid::Scal_FEfun&) const;
  51       //@}
  52       
  53       /*! \name Assignment member functions
  54         \warning The following two methods throw exceptions if
  55                  you have constructed
  56                  this object with the second constructor.  
  57        */
  58       //@{
  59       void assign_firstArg_quadMassMatrix(const Grid::Scal_FEfun&);
  60       void assign_secondArg_quadMassMatrix(const Grid::Scal_FEfun&);
  61       //@}
  62 
  63       void operator()(const Grid::Scal_FEfun&, Grid::Scal_FEfun&) const;
  64       /*! \brief Included for testing reasons. */
  65     private:
  66       struct Data;
  67       std::unique_ptr<Data> d_ptr;
  68     };
  69   }     // namespace Grid
  70 }       // namespace Esfem
  71 
  72 #endif // SECORD_OP_BRUSSELATOR_H

/* [<][>][^][v][top][bottom][index][help] */