Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

app-bholger/ell_UC_Solver.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include <iostream>
00004 #include <memory>
00005 #include <algorithm>
00006 #include <sstream>
00007 #include <unistd.h> // for command line parsing
00008 #include <fstream>
00009 #include <memory>
00010 #include <vector>
00011 #include <fstream>
00012 #include <sstream>
00013 #include <string>
00014 
00015 #include "basics.hh"
00016 #include "basics/outputMatlab.hh"
00017 #include "geometry.hh"
00018 #include "space.hh"
00019 #include "graphics.hh"
00020 #include "toolbox.hh"
00021 #include "function.hh"
00022 #include "operator.hh"
00023 #include "integration.hh"
00024 #include "graphics.hh"
00025 #include "linearFEM.hh"
00026 #include "linDG1D.hh"
00027 #include "hp2D.hh"
00028 #include "toolbox/inputParam.hh"
00029 #include "l2projection.hh"
00030 
00034 class Ell_UC_Solver {
00035 public:
00036   Ell_UC_Solver(const concepts::Space<concepts::Real>& space, double epsilon,
00037     const concepts::Formula<concepts::Real>& heat_coeff_F, 
00038     const concepts::Formula<concepts::Real>& mass_coeff_F,
00039     const concepts::BoundaryConditions& bc);
00040 
00041   void setEpsilon(double epsilon);
00042 
00043   void setRhs(const std::string& rhs_r, const std::string& rhs_i);
00044   //TODO: implement methods taking Formula or ElementFormula instances
00045   
00046   void solve(concepts::Cmplx k1, concepts::Cmplx k2,
00047       concepts::Vector<concepts::Cmplx>& sol );
00048 
00049 private:
00050   const concepts::Space<concepts::Real>& space;
00051   concepts::BoundaryConditions bc;
00052   double epsilon;
00053 
00054   static concepts::PiecewiseConstFormula<concepts::Real> zero_F;
00055   hp2D::Laplace<concepts::Real>   lap_BF;
00056   hp2D::Advection<concepts::Real> adv_BF_1; 
00057   hp2D::Advection<concepts::Real> adv_BF_2; 
00058   hp2D::Identity<Real>    id_heat_BF;
00059   hp2D::Identity<Real>    id_mass_BF;
00060 
00061   concepts::Vector<concepts::Cmplx> rhs;
00062   concepts::SparseMatrix<concepts::Real> lap_M;
00063   concepts::SparseMatrix<concepts::Real> id_mass_M;
00064   concepts::SparseMatrix<concepts::Real> id_heat_M;
00065   concepts::SparseMatrix<concepts::Real> adv_M_1;
00066   concepts::SparseMatrix<concepts::Real> adv_M_2;
00067 
00068 };

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)