Overture  Version 25
EllipticTransform.h
Go to the documentation of this file.
1 #ifndef ELLIPTIC_TRANSFORM
2 #define ELLIPTIC_TRANSFORM
3 
4 #include "Mapping.h"
5 // include "MappedGridOperators.h"
6 
7 // forward declarations:
9 class GraphicsParameters;
10 class ComposeMapping;
11 class DataPointMapping;
12 
13 // extern GraphicsParameters Overture::defaultGraphicsParameters();
15 
16 class EllipticTransform : public Mapping
17 {
18 //----------------------------------------------------------------
19 // Smooth out a mapping with Elliptic Grid Generation
20 // -------------------------------------------------
21 //
22 //----------------------------------------------------------------
23 
24  public:
25 
27 
28  // Copy constructor is deep by default
29  EllipticTransform( const EllipticTransform &, const CopyType copyType=DEEP );
30 
32 
34 
37 
40 
43 
44  void periodicUpdate(RealArray &x, RealArray xo, RealArray pSrc, RealArray qSrc);
45  void bcUpdate(RealArray &x,RealArray xo,RealArray &pSrc, int iteration);
46  void initialize();
47 
48  virtual int get( const GenericDataBase & dir, const aString & name); // get from a database file
49  virtual int put( GenericDataBase & dir, const aString & name) const; // put to a database file
50 
52 
54 
55  int update( MappingInformation & mapInfo ) ;
56 
57 
58  protected:
59 
60  int setup();
61  void resetDataPointMapping( realArray & x,Index I, Index J, Index K);
62 
64  Mapping *userMap; // original mapping before elliptic grid generation
65  ComposeMapping *compose; // holds the composite map if project==TRUE
66  DataPointMapping *dpm; // This holds the elliptic grid if project==FALSE or
67  // the reparameterization map if project==TRUE
68  bool ellipticGridDefined; // TRUE when the grid has been generated
69 
70  RealArray xe; // xe holds the grid points of the elliptic transform
71 
73 
74 
75  private:
76 
77  //
78  // Virtual member functions used only through class ReferenceCounting:
79  //
81  { return operator=((EllipticTransform &)x); }
82  virtual void reference( const ReferenceCounting& x)
83  { reference((EllipticTransform &)x); }
84  virtual ReferenceCounting* virtualConstructor( const CopyType ct = DEEP ) const
85  { return ::new EllipticTransform(*this, ct); }
86 };
87 
88 
89 #endif