Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef SUNDANCE_L2PROJECTOR_H
00032 #define SUNDANCE_L2PROJECTOR_H
00033
00034 #include "SundanceDefs.hpp"
00035 #include "SundanceMesh.hpp"
00036 #include "SundanceExpr.hpp"
00037 #include "SundanceDiscreteFunction.hpp"
00038 #include "SundanceDiscreteSpace.hpp"
00039 #include "SundanceLinearProblem.hpp"
00040 #include "SundanceCoordinateSystem.hpp"
00041 #include "TSFLinearOperatorDecl.hpp"
00042 #include "TSFLinearSolverDecl.hpp"
00043 #include "TSFVectorDecl.hpp"
00044 #include "TSFVectorType.hpp"
00045
00046 namespace Sundance
00047 {
00048 using namespace Sundance;
00049 using namespace Sundance;
00050 using namespace Sundance;
00051 using namespace Sundance;
00052 using namespace Sundance;
00053 using namespace Teuchos;
00054 using namespace Thyra;
00055
00056
00057
00058
00059 class L2Projector
00060 {
00061 public:
00062
00063 L2Projector(){;}
00064
00065 L2Projector(const DiscreteSpace& space,
00066 const Expr& expr);
00067
00068 L2Projector(const DiscreteSpace& space,
00069 const Expr& expr,
00070 const LinearSolver<double>& solver);
00071
00072 L2Projector(const DiscreteSpace& space,
00073 const CoordinateSystem& coordSys,
00074 const Expr& expr);
00075
00076 L2Projector(const DiscreteSpace& space,
00077 const CoordinateSystem& coordSys,
00078 const Expr& expr,
00079 const LinearSolver<double>& solver);
00080
00081
00082 Expr project() const {return prob_.solve(solver_);}
00083
00084
00085 const LinearProblem& prob() const {return prob_;}
00086
00087 private:
00088
00089 void init(const DiscreteSpace& space,
00090 const CoordinateSystem& coordSys,
00091 const Expr& expr,
00092 const LinearSolver<double>& solver);
00093
00094 LinearProblem prob_;
00095
00096 LinearSolver<double> solver_;
00097
00098 };
00099 }
00100
00101
00102 #endif