topologically_rectangular_domain.h
Go to the documentation of this file.
1 // LIC// ====================================================================
2 // LIC// This file forms part of oomph-lib, the object-oriented,
3 // LIC// multi-physics finite-element library, available
4 // LIC// at http://www.oomph-lib.org.
5 // LIC//
6 // LIC// Copyright (C) 2006-2022 Matthias Heil and Andrew Hazel
7 // LIC//
8 // LIC// This library is free software; you can redistribute it and/or
9 // LIC// modify it under the terms of the GNU Lesser General Public
10 // LIC// License as published by the Free Software Foundation; either
11 // LIC// version 2.1 of the License, or (at your option) any later version.
12 // LIC//
13 // LIC// This library is distributed in the hope that it will be useful,
14 // LIC// but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // LIC// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // LIC// Lesser General Public License for more details.
17 // LIC//
18 // LIC// You should have received a copy of the GNU Lesser General Public
19 // LIC// License along with this library; if not, write to the Free Software
20 // LIC// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 // LIC// 02110-1301 USA.
22 // LIC//
23 // LIC// The authors may be contacted at oomph-lib@maths.man.ac.uk.
24 // LIC//
25 // LIC//====================================================================
26 // Include guards
27 #ifndef OOMPH_TOPOLOGICALLY_RECTANGULAR_DOMAIN_HEADER
28 #define OOMPH_TOPOLOGICALLY_RECTANGULAR_DOMAIN_HEADER
29 
30 
31 // Config header generated by autoconfig
32 #ifdef HAVE_CONFIG_H
33 #include <oomph-lib-config.h>
34 #endif
35 
36 
37 // oomph-lib headers
38 #include "../generic/domain.h"
39 
40 
41 namespace oomph
42 {
43  //=============================================================================
49  //=============================================================================
51  {
52  public:
57  typedef void (*BoundaryFctPt)(const double& s, Vector<double>& r);
58 
59 
64  BoundaryFctPt east_pt,
65  BoundaryFctPt south_pt,
66  BoundaryFctPt west_pt);
67 
68 
72  TopologicallyRectangularDomain(const double& l_x, const double& l_y);
73 
74 
77  TopologicallyRectangularDomain(const double& x_min,
78  const double& x_max,
79  const double& y_min,
80  const double& y_max);
81 
82 
85  delete;
86 
89 
92 
93 
104  BoundaryFctPt d_east_pt,
105  BoundaryFctPt d_south_pt,
106  BoundaryFctPt d_west_pt);
107 
108 
119  BoundaryFctPt d2_east_pt,
120  BoundaryFctPt d2_south_pt,
121  BoundaryFctPt d2_west_pt);
122 
123 
126  void macro_element_boundary(const unsigned& t,
127  const unsigned& i_macro,
128  const unsigned& i_direct,
129  const Vector<double>& s,
130  Vector<double>& f);
131 
132 
136  void dmacro_element_boundary(const unsigned& t,
137  const unsigned& i_macro,
138  const unsigned& i_direct,
139  const Vector<double>& s,
140  Vector<double>& f);
141 
142 
146  void d2macro_element_boundary(const unsigned& t,
147  const unsigned& i_macro,
148  const unsigned& i_direct,
149  const Vector<double>& s,
150  Vector<double>& f);
151 
152 
153  private:
157 
161 
165 
169 
170 
174 
178 
182 
186 
187 
192 
197 
202 
207 
208 
212 
216 
217 
220  void r_N(const Vector<double>& s, Vector<double>& f);
221 
224  void r_E(const Vector<double>& s, Vector<double>& f);
225 
228  void r_S(const Vector<double>& s, Vector<double>& f);
229 
233  void r_W(const Vector<double>& s, Vector<double>& f);
234 
235 
239  void dr_N(const Vector<double>& s, Vector<double>& dr);
240 
244  void dr_E(const Vector<double>& s, Vector<double>& dr);
245 
249  void dr_S(const Vector<double>& s, Vector<double>& dr);
250 
254  void dr_W(const Vector<double>& s, Vector<double>& dr);
255 
256 
260  void d2r_N(const Vector<double>& s, Vector<double>& d2r);
261 
265  void d2r_E(const Vector<double>& s, Vector<double>& d2r);
266 
270  void d2r_S(const Vector<double>& s, Vector<double>& d2r);
271 
275  void d2r_W(const Vector<double>& s, Vector<double>& d2r);
276  };
277 } // namespace oomph
278 #endif
Definition: domain.h:67
Definition: topologically_rectangular_domain.h:51
void r_E(const Vector< double > &s, Vector< double > &f)
Definition: topologically_rectangular_domain.cc:419
void d2macro_element_boundary(const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
Definition: topologically_rectangular_domain.cc:364
BoundaryFctPt d2North_boundary_fn_pt
Definition: topologically_rectangular_domain.h:191
void dmacro_element_boundary(const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
Definition: topologically_rectangular_domain.cc:328
void dr_E(const Vector< double > &s, Vector< double > &dr)
Definition: topologically_rectangular_domain.cc:514
void dr_S(const Vector< double > &s, Vector< double > &dr)
Definition: topologically_rectangular_domain.cc:550
void operator=(const TopologicallyRectangularDomain &)=delete
Broken assignment operator.
Vector< double > x_south_west
Definition: topologically_rectangular_domain.h:211
BoundaryFctPt d2East_boundary_fn_pt
Definition: topologically_rectangular_domain.h:196
void d2r_W(const Vector< double > &s, Vector< double > &d2r)
Definition: topologically_rectangular_domain.cc:781
BoundaryFctPt South_boundary_fn_pt
Definition: topologically_rectangular_domain.h:164
TopologicallyRectangularDomain(const TopologicallyRectangularDomain &)=delete
Broken copy constructor.
void macro_element_boundary(const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
Definition: topologically_rectangular_domain.cc:292
BoundaryFctPt dEast_boundary_fn_pt
Definition: topologically_rectangular_domain.h:177
BoundaryFctPt d2West_boundary_fn_pt
Definition: topologically_rectangular_domain.h:206
void set_boundary_second_derivative_functions(BoundaryFctPt d2_north_pt, BoundaryFctPt d2_east_pt, BoundaryFctPt d2_south_pt, BoundaryFctPt d2_west_pt)
Definition: topologically_rectangular_domain.cc:274
void r_N(const Vector< double > &s, Vector< double > &f)
Definition: topologically_rectangular_domain.cc:400
void d2r_N(const Vector< double > &s, Vector< double > &d2r)
Definition: topologically_rectangular_domain.cc:622
BoundaryFctPt d2South_boundary_fn_pt
Definition: topologically_rectangular_domain.h:201
void r_S(const Vector< double > &s, Vector< double > &f)
Definition: topologically_rectangular_domain.cc:438
BoundaryFctPt North_boundary_fn_pt
Definition: topologically_rectangular_domain.h:156
void set_boundary_derivative_functions(BoundaryFctPt d_north_pt, BoundaryFctPt d_east_pt, BoundaryFctPt d_south_pt, BoundaryFctPt d_west_pt)
Definition: topologically_rectangular_domain.cc:248
void(* BoundaryFctPt)(const double &s, Vector< double > &r)
Definition: topologically_rectangular_domain.h:57
BoundaryFctPt dWest_boundary_fn_pt
Definition: topologically_rectangular_domain.h:185
void dr_W(const Vector< double > &s, Vector< double > &dr)
Definition: topologically_rectangular_domain.cc:586
void r_W(const Vector< double > &s, Vector< double > &f)
Definition: topologically_rectangular_domain.cc:458
~TopologicallyRectangularDomain()
Destructor - empty; clean up done in base class.
Definition: topologically_rectangular_domain.h:91
void d2r_E(const Vector< double > &s, Vector< double > &d2r)
Definition: topologically_rectangular_domain.cc:675
BoundaryFctPt West_boundary_fn_pt
Definition: topologically_rectangular_domain.h:168
BoundaryFctPt East_boundary_fn_pt
Definition: topologically_rectangular_domain.h:160
TopologicallyRectangularDomain(BoundaryFctPt north_pt, BoundaryFctPt east_pt, BoundaryFctPt south_pt, BoundaryFctPt west_pt)
Definition: topologically_rectangular_domain.cc:36
void dr_N(const Vector< double > &s, Vector< double > &dr)
Definition: topologically_rectangular_domain.cc:478
void d2r_S(const Vector< double > &s, Vector< double > &d2r)
Definition: topologically_rectangular_domain.cc:728
Vector< double > x_north_east
Definition: topologically_rectangular_domain.h:215
BoundaryFctPt dSouth_boundary_fn_pt
Definition: topologically_rectangular_domain.h:181
BoundaryFctPt dNorth_boundary_fn_pt
Definition: topologically_rectangular_domain.h:173
static int f(const TensorMap< Tensor< int, 3 > > &tensor)
Definition: cxx11_tensor_map.cpp:237
RealScalar s
Definition: level1_cplx_impl.h:130
r
Definition: UniformPSDSelfTest.py:20
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
t
Definition: plotPSD.py:36