Chombo + EB  3.2
TylerChannelIF.H
Go to the documentation of this file.
1 #ifdef CH_LANG_CC
2 /*
3  * _______ __
4  * / ___/ / ___ __ _ / / ___
5  * / /__/ _ \/ _ \/ V \/ _ \/ _ \
6  * \___/_//_/\___/_/_/_/_.__/\___/
7  * Please refer to Copyright.txt, in Chombo's root directory.
8  */
9 #endif
10 
11 #ifndef _TYLERCHANNELIF_H_
12 #define _TYLERCHANNELIF_H_
13 
14 #include "MayDay.H"
15 #include "RealVect.H"
16 
17 #include "BaseIF.H"
18 
19 #include "NamespaceHeader.H"
20 
21 ///
22 /**
23  This implicit function specifies a sphere.
24  */
25 class TylerChannelIF: public BaseIF
26 {
27 public:
28  ///
29  /**
30  A C-infinity contraction/expansion channel.
31 
32  The geometry is centered at [x_M,y_M] = [(a_x1+a_x2)/2,yDomainLength/2]
33  and is symmetric about y = y_M. The size of the channel goes from
34  2*a_y1 to 2*a_y2 as x goes from -infinity to infinity.
35 
36  The boundary is given by:
37 
38  y(x) = y_M +/- yDist(x)
39  yDist(x) = a_y1*(1-frac(x)) + a_y2*frac(x)
40  frac(x) = (tanh(theta(x)) + 1) / 2
41  theta(x) = 4 * (x - x_M)/(a_x2 - a_x1)
42  */
43  TylerChannelIF(const Real& a_x1,
44  const Real& a_x2,
45  const Real& a_y1,
46  const Real& a_y2,
47  const Real& a_yDomainLength);
48 
49  /// Copy constructor
50  TylerChannelIF(const TylerChannelIF& a_inputIF);
51 
52  /// Destructor
53  virtual ~TylerChannelIF();
54 
55  ///
56  /**
57  Return the value of the function at a_point.
58  */
59  virtual Real value(const RealVect& a_point) const;
60 
61  virtual BaseIF* newImplicitFunction() const;
62 
63 protected:
66 
69 
71 
72 private:
74  {
75  MayDay::Abort("TylerChannelIF uses strong construction");
76  }
77 
78  void operator=(const TylerChannelIF& a_inputIF)
79  {
80  MayDay::Abort("TylerChannelIF doesn't allow assignment");
81  }
82 };
83 
84 #include "NamespaceFooter.H"
85 #endif
Real m_y2
Definition: TylerChannelIF.H:68
Real m_yDomainLength
Definition: TylerChannelIF.H:70
Real m_y1
Definition: TylerChannelIF.H:67
void operator=(const TylerChannelIF &a_inputIF)
Definition: TylerChannelIF.H:78
TylerChannelIF()
Definition: TylerChannelIF.H:73
Real m_x2
Definition: TylerChannelIF.H:65
Definition: BaseIF.H:32
double Real
Definition: REAL.H:33
virtual Real value(const RealVect &a_point) const
A Real vector in SpaceDim-dimensional space.
Definition: RealVect.H:41
virtual BaseIF * newImplicitFunction() const
Definition: TylerChannelIF.H:25
Real m_x1
Definition: TylerChannelIF.H:64
static void Abort(const char *const a_msg=m_nullString)
Print out message to cerr and exit via abort() (if serial) or MPI_Abort() (if parallel).
virtual ~TylerChannelIF()
Destructor.