O3r2Interpolator.h
00001 #ifndef gridripper_amr1d_O3r2Interpolation_h
00002 #define gridripper_amr1d_O3r2Interpolation_h
00003
00004 #include <gridripper/config.h>
00005 #include <gridripper/amr1d/GridInterpolator.h>
00006 #include <gridripper/lang/IllegalArgumentException.h>
00007 #include <gridripper/tvalarray.h>
00008 #include <iostream>
00009
00010 namespace gridripper { namespace amr1d {
00011
00012 class FieldWrapper;
00013
00014 namespace interpolation {
00015
00016 using namespace std;
00017
00024 class O3r2Interpolator: public GridInterpolator
00025 {
00026 public:
00027 void interpolateMargin(const Grid& p, Grid& g, const PDE& pde) const
00028 throw(IllegalArgumentException&);
00029
00030 void interpolate(const Grid& p, Grid& g, const PDE& pde) const
00031 throw(IllegalArgumentException&);
00032
00033 string toString() const {
00034 return "O3r2Interpolator";
00035 }
00036
00037 private:
00038 static bool interpol_2L_2R(const PDE& pde, const Grid& p, int k,
00039 FieldWrapper& fw0, FieldWrapper& fw1,
00040 FieldWrapper& fw2, FieldWrapper& fw3,
00041 FieldWrapper& fw);
00042
00043 static bool interpol_3L_1R(const PDE& pde, const Grid& p, int k, int nc,
00044 GReal_t* w0, GReal_t* w1,
00045 GReal_t* w2, GReal_t* w3,
00046 GReal_t* w);
00047
00048 static bool interpol_1L_3R(const PDE& pde, const Grid& p, int k, int nc,
00049 GReal_t* w0, GReal_t* w1,
00050 GReal_t* w2, GReal_t* w3,
00051 GReal_t* w);
00052
00053 static void appendB(ostream& out, int f);
00054 };
00055
00056 } } }
00057
00058 #endif