AFEPack
Operator.h
浏览该文件的文档。
00001 
00002 // Operator.h :
00003 //
00004 
00005 #ifndef _Operator_h_
00006 #define _Operator_h_
00007 
00008 #include <typeinfo>
00009 #include <iostream>
00010 #include <fstream>
00011 #include <string>
00012 #include <vector>
00013 #include <list>
00014 #include <iterator>
00015 #include <algorithm>
00016 
00017 #include <base/exceptions.h>
00018 #include <lac/vector.h>
00019 #include <lac/sparsity_pattern.h>
00020 #include <lac/sparse_matrix.h>
00021 
00022 #include "AMGSolver.h"
00023 #include "Geometry.h"
00024 #include "TemplateElement.h"
00025 #include "FEMSpace.h"
00026 #include "HGeometry.h"
00027 #include "BilinearOperator.h"
00028 
00037 namespace Operator {
00038   typedef int                           Method;
00039   static const Method           MASS_ACCUMULATION = 1;
00040   static const Method           LEAST_SQUARE = 2;
00041   static const Method           LOCAL_LEAST_SQUARE = 3;
00042 
00047   template <class value_type, int DIM>
00048     void L2Interpolate(const FEMFunction<value_type, DIM>& src, FEMFunction<value_type, DIM>& des);
00053   template <class value_type, int DIM>
00054     void L2Interpolate(value_type (*)(const double *), FEMFunction<value_type, DIM>& fun);
00059   template <class value_type, int DIM>
00060     void L2Interpolate(value_type (*)(const afepack::Point<DIM>&), FEMFunction<value_type, DIM>& fun);
00065   template <class value_type, int DIM>
00066     void L2Interpolate(const Function<value_type>&, FEMFunction<value_type, DIM>& fun);
00067         
00073   template <class value_type, int DIM> 
00074     void L2Project(const FEMFunction<value_type, DIM>& src, FEMFunction<value_type, DIM>& des, 
00075                    Method method, int algebric_accuracy);
00081   template <class value_type, int DIM>
00082     void L2Project(value_type (*)(const double *), FEMFunction<value_type, DIM>& fun, 
00083                    Method method, int algebric_accuracy);
00089   template <class value_type, int DIM>
00090     void L2Project(value_type (*)(const afepack::Point<DIM>&), FEMFunction<value_type, DIM>& fun, 
00091                    Method method, int algebric_accuracy);
00097   template <class value_type, int DIM>
00098     void L2Project(const Function<value_type>&, FEMFunction<value_type, DIM>& fun, 
00099                    Method method, int algebric_accuracy);
00100 
00106   template <class value_type, int DIM>
00107     void L2Project(value_type (*f)(const value_type&), const FEMFunction<value_type,DIM>& src,
00108                    FEMFunction<value_type,DIM>& des, Method method, int algebric_accuracy);
00117   template <class value_type, int DIM>
00118     void L2Project(value_type (*f)(const value_type&,const value_type&),
00119                    const FEMFunction<value_type,DIM>& src0, const FEMFunction<value_type,DIM>& src1,
00120                    FEMFunction<value_type,DIM>& des, Method method, int algebric_accuracy);
00121 
00125   template <class value_type, int DIM>
00126     void L2Discretize(const FEMFunction<value_type, DIM>& src, Vector<double>& des, int algebric_accuracy);
00130   template <class value_type, int DIM>
00131     void L2Discretize(const FEMFunction<value_type, DIM>& src, const FEMSpace<value_type, DIM>& space,
00132                       Vector<double>& des, int algebric_accuracy);
00136   template <class value_type, int DIM> 
00137     void L2Discretize(value_type (*)(const double *), const FEMSpace<value_type, DIM>& space, 
00138                       Vector<double>& des, int algebric_accuracy);
00142   template <class value_type, int DIM>
00143     void L2Discretize(value_type (*)(const afepack::Point<DIM>&), const FEMSpace<value_type, DIM>& space, 
00144                       Vector<double>& des, int algebric_accuracy);
00148   template <class value_type, int DIM>
00149     void L2Discretize(const Function<value_type>&, const FEMSpace<value_type, DIM>& space, 
00150                       Vector<double>& des, int algebric_accuracy);
00151 
00156   template <class value_type, int DIM>
00157     void L2Discretize(value_type (*f)(const value_type&), const FEMFunction<value_type, DIM>& src,
00158                       Vector<double>& des, int algebric_accuracy);
00163   template <class value_type, int DIM>
00164     void L2Discretize(value_type (*f)(const value_type&), const FEMFunction<value_type, DIM>& src,
00165                       const FEMSpace<value_type, DIM>& space, Vector<double>& des, int algebric_accuracy);
00174   template <class value_type, int DIM>
00175     void L2Discretize(value_type (*f)(const value_type&, const value_type&),
00176                       const FEMFunction<value_type, DIM>& src0, const FEMFunction<value_type, DIM>& src1,
00177                       const FEMSpace<value_type, DIM>& space, Vector<double>& des, int algebric_accuracy);
00178 };
00179 
00180 
00181 
00182 #endif
00183 
00184 //
00185 // end of file