MathTL
geometry/sampled_mapping.h
00001 // -*- c++ -*-
00002 
00003 // +--------------------------------------------------------------------+
00004 // | This file is part of MathTL - the Mathematical Template Library    |
00005 // |                                                                    |
00006 // | Copyright (c) 2002-2009                                            |
00007 // | Thorsten Raasch, Manuel Werner                                     |
00008 // +--------------------------------------------------------------------+
00009 
00010 #ifndef _MATHTL_SAMPLED_MAPPING_H
00011 #define _MATHTL_SAMPLED_MAPPING_H
00012 
00013 #include <iostream>
00014 
00015 #include <geometry/point.h>
00016 #include <geometry/grid.h>
00017 #include <utils/array1d.h>
00018 #include <utils/function.h>
00019 #include <utils/multiindex.h>
00020 #include <utils/fixed_array1d.h>
00021 #include <algebra/matrix.h>
00022 #include <algebra/infinite_vector.h>
00023 
00024 #include <geometry/chart.h>
00025 
00026 
00027 namespace MathTL
00028 {
00034   template <unsigned int DIM, class C=double>
00035   class SampledMapping
00036     : public Grid<DIM>
00037   {
00038   public:
00042     SampledMapping() {}
00043 
00047     SampledMapping(const SampledMapping<DIM>& sm);
00048 
00052     SampledMapping(const Grid<DIM>& grid);
00053 
00057     SampledMapping(const Grid<DIM>& grid, const Array1D<C>& values);
00058 
00062     SampledMapping(const Grid<DIM>& grid, const Function<DIM>& f);
00063 
00068     SampledMapping(const MultiIndex<int, DIM>& a,
00069                    const MultiIndex<int, DIM>& b,
00070                    const InfiniteVector<C, MultiIndex<int, DIM> >& values,
00071                    const int resolution);
00072 
00079     SampledMapping(const Point<DIM,C>& a,
00080                    const Point<DIM,C>& b,
00081                    const FixedArray1D<Array1D<C>,DIM>& values);
00082 
00089     SampledMapping(const Chart<DIM>& ch,
00090                    const FixedArray1D<Array1D<C>,DIM>& values,
00091                    const unsigned int resolution);
00092 
00099     SampledMapping(const Chart<DIM>& ch,
00100                    const unsigned int resolution);
00101 
00105     SampledMapping<DIM,C>& operator = (const SampledMapping<DIM,C>& sm);
00106 
00111     void add(const SampledMapping<DIM,C>& s);
00112     
00117     void add(const C alpha, const SampledMapping<DIM,C>& s);
00118 
00122     void mult(const C alpha);
00123 
00124 
00128     void matlab_output(std::ostream& os) const;
00129   };
00130 
00131   //
00132   //
00133   // template specializations to one and two space dimensions
00134 
00135   template <class C>
00136   class SampledMapping<1,C>
00137     : public Grid<1>
00138   {
00139   public:
00143     SampledMapping();
00144 
00148     SampledMapping(const SampledMapping<1,C>& sm);
00149 
00153     SampledMapping(const Grid<1>& grid);
00154 
00158     SampledMapping(const Grid<1>& grid, const Array1D<C>& values);
00159 
00163     SampledMapping(const Grid<1>& grid, const Function<1,C>& f);
00164 
00168     SampledMapping(const MultiIndex<int,1>& a,
00169                    const MultiIndex<int,1>& b,
00170                    const InfiniteVector<C, MultiIndex<int, 1> >& values,
00171                    const int resolution);
00172 
00176     SampledMapping(const int a,
00177                    const int b,
00178                    const InfiniteVector<C, int>& values,
00179                    const int resolution);
00180 
00188     SampledMapping(const Point<1,C>& a,
00189                    const Point<1,C>& b,
00190                    const FixedArray1D<Array1D<C>,1>& values);
00191 
00198     SampledMapping(const Chart<1>& ch,
00199                    const FixedArray1D<Array1D<C>,1>& values,
00200                    const unsigned int resolution);
00201 
00208     SampledMapping(const Chart<1>& ch,
00209                    const unsigned int resolution);
00210 
00214     SampledMapping<1,C>& operator = (const SampledMapping<1,C>& sm);
00215 
00220     void add(const SampledMapping<1,C>& s);
00221     
00226     void add(const C alpha, const SampledMapping<1,C>& s);
00227 
00231     void mult(const C alpha);
00232 
00236     inline const Array1D<C>& values() const { return values_; }
00237 
00241     void matlab_output(std::ostream& os) const;
00242 
00246     void gnuplot_output(std::ostream& os) const;
00247 
00248   protected:
00252     Array1D<C> values_;
00253   };
00254 
00255   template <class C>
00256   class SampledMapping<2,C>
00257     : public Grid<2>
00258   {
00259   public:
00263     SampledMapping();
00264 
00268     SampledMapping(const SampledMapping<2,C>& sm);
00269 
00273     SampledMapping(const Grid<2>& grid);
00274 
00279     SampledMapping(const Grid<2>& grid, const Matrix<C>& values);
00280 
00284     SampledMapping(const Grid<2>& grid, const Function<2,C>& f);
00285 
00291     SampledMapping(const Grid<2>& grid, Function<1,C>& f);
00292 
00298     SampledMapping(const MultiIndex<int, 2>& a,
00299                    const MultiIndex<int, 2>& b,
00300                    const InfiniteVector<C, MultiIndex<int, 2> >& values,
00301                    const int resolution);
00302 
00309     SampledMapping(const Point<2,C>& a,
00310                    const Point<2,C>& b,
00311                    const FixedArray1D<Array1D<C>,2>& values);
00312 
00319     SampledMapping(const Chart<2>& ch,
00320                    const FixedArray1D<Array1D<C>,2>& values,
00321                    const unsigned int resolution);
00322 
00329     SampledMapping(const Chart<2>& ch,
00330                    const unsigned int resolution);
00331 
00332 
00336     SampledMapping<2,C>& operator = (const SampledMapping<2,C>& sm);
00337 
00342     void add(const SampledMapping<2,C>& s);
00343     
00348     void add(const C alpha, const SampledMapping<2,C>& s);
00349 
00353     void mult(const C alpha);
00354 
00358     inline const Matrix<C>& values() const { return values_; }
00359 
00363     void matlab_output(std::ostream& os) const;
00364        
00368     void gnuplot_output(std::ostream& os) const;
00369 
00370 
00374     void octave_output(std::ostream& os) const;
00375 
00376   protected:
00380     Matrix<C> values_;
00381   };
00382 
00386   template <unsigned int DIM, class C>
00387   void matlab_output(std::ostream& os,
00388                      const Array1D<SampledMapping<DIM,C> >& values);
00389 
00393   template <unsigned int DIM, class C>
00394   void octave_output(std::ostream& os,
00395                      const Array1D<SampledMapping<DIM,C> >& values);
00396 
00397 }
00398 
00399 #include "geometry/sampled_mapping.cpp"
00400 
00401 #endif
 All Classes Functions Variables Typedefs Enumerations