ug4
lagrange_dirichlet_boundary.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010-2015: G-CSC, Goethe University Frankfurt
3  * Author: Andreas Vogel
4  *
5  * This file is part of UG4.
6  *
7  * UG4 is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License version 3 (as published by the
9  * Free Software Foundation) with the following additional attribution
10  * requirements (according to LGPL/GPL v3 §7):
11  *
12  * (1) The following notice must be displayed in the Appropriate Legal Notices
13  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14  *
15  * (2) The following notice must be displayed at a prominent place in the
16  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17  *
18  * (3) The following bibliography is recommended for citation and must be
19  * preserved in all covered files:
20  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21  * parallel geometric multigrid solver on hierarchically distributed grids.
22  * Computing and visualization in science 16, 4 (2013), 151-164"
23  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24  * flexible software system for simulating pde based models on high performance
25  * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  * GNU Lesser General Public License for more details.
31  */
32 
33 #ifndef __H__UG__LIB_DISC__SPATIAL_DISC__CONSTRAINTS__LAGRANGE_DIRICHLET_BOUNDARY__
34 #define __H__UG__LIB_DISC__SPATIAL_DISC__CONSTRAINTS__LAGRANGE_DIRICHLET_BOUNDARY__
35 
42 
44 
45 #include <map>
46 #include <vector>
47 
48 
49 // #define LAGRANGE_DIRICHLET_ADJ_TRANSFER_FIX
50 
51 namespace ug{
52 
53 template < typename TDomain, typename TAlgebra>
55  : public IDomainConstraint<TDomain, TAlgebra>
56 {
57  public:
60 
62  typedef TDomain domain_type;
63 
65  static const int dim = domain_type::dim;
66 
68  typedef typename domain_type::position_type position_type;
69 
71  typedef TAlgebra algebra_type;
72 
74  typedef typename algebra_type::matrix_type matrix_type;
75 
77  typedef typename algebra_type::vector_type vector_type;
78 
81 
84 
85 
86  public:
89 
92  : m_bInvertSubsetSelection(false),
93  m_bDirichletColumns(false),
94  m_A(NULL)
95 #ifdef LAGRANGE_DIRICHLET_ADJ_TRANSFER_FIX
96  , m_bAdjustTransfers(true)
97 #endif
98  {clear();}
99 
101  DirichletBoundary(bool DirichletColumns)
102  : m_bInvertSubsetSelection(false),
103  m_bDirichletColumns(DirichletColumns),
104  m_A(NULL)
105 #ifdef LAGRANGE_DIRICHLET_ADJ_TRANSFER_FIX
106  , m_bAdjustTransfers(true)
107 #endif
108  {clear();}
109 
110 #ifdef LAGRANGE_DIRICHLET_ADJ_TRANSFER_FIX
112  DirichletBoundary(bool DirichletColumns, bool bAdjustTransfers)
113  : m_bInvertSubsetSelection(false),
114  m_bDirichletColumns(DirichletColumns),
115  m_A(NULL),
116  m_bAdjustTransfers(bAdjustTransfers)
117 
118  {clear();}
119 #endif
120 
123 
125 #ifdef UG_FOR_LUA
126  void add(const char* name, const char* function, const char* subsets);
127  void add(const char* name, const std::vector<std::string>& Fcts, const std::vector<std::string>& Subsets);
128  void add(LuaFunctionHandle fct, const char* function, const char* subsets);
129  void add(LuaFunctionHandle fct, const std::vector<std::string>& Fcts, const std::vector<std::string>& Subsets);
130 #endif
131 
133  void add(SmartPtr<UserData<number, dim, bool> > func, const char* function, const char* subsets);
134  void add(SmartPtr<UserData<number, dim, bool> > func, const std::vector<std::string>& Fcts, const std::vector<std::string>& Subsets);
135 
137  void add(SmartPtr<UserData<number, dim> > func, const char* function, const char* subsets);
138  void add(SmartPtr<UserData<number, dim> > func, const std::vector<std::string>& Fcts, const std::vector<std::string>& Subsets);
139 
141  void add(number value, const char* function, const char* subsets);
142  void add(number value, const std::vector<std::string>& Fcts, const std::vector<std::string>& Subsets);
143 
145  void add(SmartPtr<UserData<MathVector<dim>, dim> > func, const char* functions, const char* subsets);
146  void add(SmartPtr<UserData<MathVector<dim>, dim> > func, const std::vector<std::string>& Fcts, const std::vector<std::string>& Subsets);
147 
149  void add(const char* functions, const char* subsets);
150  void add(const std::vector<std::string>& Fcts, const std::vector<std::string>& Subsets);
151 
154 
157 
159  void clear();
160 
162 
178 
179  public:
181  // Implement Interface
183 
185  void adjust_jacobian(matrix_type& J, const vector_type& u,
186  ConstSmartPtr<DoFDistribution> dd, int type, number time = 0.0,
188  const number s_a0 = 1.0);
189 
191  void adjust_defect(vector_type& d, const vector_type& u,
192  ConstSmartPtr<DoFDistribution> dd, int type, number time = 0.0,
194  const std::vector<number>* vScaleMass = NULL,
195  const std::vector<number>* vScaleStiff = NULL);
196 
199  ConstSmartPtr<DoFDistribution> dd, int type, number time = 0.0);
200 
203  number time = 0.0);
204 
207  ConstSmartPtr<DoFDistribution> dd, int type, number time = 0.0);
208 
210  void adjust_rhs(vector_type& b, const vector_type& u,
211  ConstSmartPtr<DoFDistribution> dd, int type, number time = 0.0);
212 
214  virtual void adjust_error(const vector_type& u, ConstSmartPtr<DoFDistribution> dd, int type,
215  number time = 0.0,
217  const std::vector<number>* vScaleMass = NULL,
218  const std::vector<number>* vScaleStiff = NULL);
219 
221  virtual void adjust_prolongation(matrix_type& P,
224  int type,
225  number time = 0.0);
226 
228  virtual void adjust_restriction(matrix_type& R,
231  int type,
232  number time = 0.0);
233 
235  virtual int type() const {return CT_DIRICHLET;}
236 
237  protected:
238  void check_functions_and_subsets(FunctionGroup& functionGroup,
239  SubsetGroup& subsetGroup, size_t numFct) const;
240 
241  void extract_data();
242 
243  template <typename TUserData, typename TScheduledUserData>
244  void extract_data(std::map<int, std::vector<TUserData*> >& mvUserDataBndSegment,
245  std::vector<TScheduledUserData>& vUserData);
246 
247  template <typename TUserData>
248  void adjust_jacobian(const std::map<int, std::vector<TUserData*> >& mvUserData,
249  matrix_type& J, const vector_type& u,
251 
252  template <typename TBaseElem, typename TUserData>
253  void adjust_jacobian(const std::vector<TUserData*>& vUserData, int si,
254  matrix_type& J, const vector_type& u,
256 
257  template <typename TUserData>
258  void adjust_defect(const std::map<int, std::vector<TUserData*> >& mvUserData,
259  vector_type& d, const vector_type& u,
261 
262  template <typename TBaseElem, typename TUserData>
263  void adjust_defect(const std::vector<TUserData*>& vUserData, int si,
264  vector_type& d, const vector_type& u,
266 
267  template <typename TUserData>
268  void adjust_solution(const std::map<int, std::vector<TUserData*> >& mvUserData,
270 
271  template <typename TUserData>
272  void adjust_correction(const std::map<int, std::vector<TUserData*> >& mvUserData,
274 
275  template <typename TBaseElem, typename TUserData>
276  void adjust_solution(const std::vector<TUserData*>& vUserData, int si,
278 
279  template <typename TBaseElem, typename TUserData>
280  void adjust_correction(const std::vector<TUserData*>& vUserData, int si,
282 
283  template <typename TUserData>
284  void adjust_linear(const std::map<int, std::vector<TUserData*> >& mvUserData,
285  matrix_type& A, vector_type& b,
287 
288  template <typename TBaseElem, typename TUserData>
289  void adjust_linear(const std::vector<TUserData*>& vUserData, int si,
290  matrix_type& A, vector_type& b,
292 
293  template <typename TUserData>
294  void adjust_rhs(const std::map<int, std::vector<TUserData*> >& mvUserData,
295  vector_type& b, const vector_type& u,
297 
298  template <typename TBaseElem, typename TUserData>
299  void adjust_rhs(const std::vector<TUserData*>& vUserData, int si,
300  vector_type& b, const vector_type& u,
302 
303  template <typename TUserData>
304  void adjust_error(const std::map<int, std::vector<TUserData*> >& mvUserData,
306 
307  template <typename TUserData>
308  void adjust_prolongation(const std::map<int, std::vector<TUserData*> >& mvUserData,
309  matrix_type& P,
312  number time);
313 
314  template <typename TBaseElem, typename TUserData>
315  void adjust_prolongation(const std::vector<TUserData*>& vUserData, int si,
316  matrix_type& P,
319  number time);
320 
321  template <typename TUserData>
322  void adjust_restriction(const std::map<int, std::vector<TUserData*> >& mvUserData,
323  matrix_type& R,
326  number time);
327 
328  template <typename TBaseElem, typename TUserData>
329  void adjust_restriction(const std::vector<TUserData*>& vUserData, int si,
330  matrix_type& R,
333  number time);
334 
335  protected:
337  struct NumberData
338  {
339  const static bool isConditional = false;
340  const static bool setSolValue = true;
341  const static size_t numFct = 1;
344  std::string fctName_, std::string ssName_)
345  : spFunctor(functor_), fctName(fctName_), ssName(ssName_)
346  {}
347 
349  number time, int si) const
350  {
351  (*spFunctor)(val[0], x, time, si); return true;
352  }
353 
355  std::string fctName;
356  std::string ssName;
357  size_t fct[numFct];
359  };
360 
363  {
364  const static bool isConditional = true;
365  const static bool setSolValue = true;
366  const static size_t numFct = 1;
369  std::string fctName_, std::string ssName_)
370  : spFunctor(functor_), fctName(fctName_), ssName(ssName_)
371  {}
373  number time, int si) const
374  {
375  return (*spFunctor)(val[0], x, time, si);
376  }
377 
379  std::string fctName;
380  std::string ssName;
381  size_t fct[numFct];
383  };
384 
387  {
388  const static bool isConditional = false;
389  const static bool setSolValue = true;
390  const static size_t numFct = 1;
393  std::string fctName_, std::string ssName_)
394  : functor(value_), fctName(fctName_), ssName(ssName_)
395  {}
396  inline bool operator()(MathVector<1>& val, const MathVector<dim> x,
397  number time, int si) const
398  {
399  val[0] = functor; return true;
400  }
401 
403  std::string fctName;
404  std::string ssName;
405  size_t fct[numFct];
407  };
408 
410  struct VectorData
411  {
412  const static bool isConditional = false;
413  const static bool setSolValue = true;
414  const static size_t numFct = dim;
417  std::string fctName_, std::string ssName_)
418  : spFunctor(value_), fctName(fctName_), ssName(ssName_)
419  {}
421  number time, int si) const
422  {
423  (*spFunctor)(val, x, time, si); return true;
424  }
425 
427  std::string fctName;
428  std::string ssName;
429  size_t fct[numFct];
431  };
432 
435  {
436  const static bool isConditional = false;
437  const static bool setSolValue = false;
438  const static size_t numFct = 1;
440  OldNumberData(std::string fctName_, std::string ssName_)
441  : fctName(fctName_), ssName(ssName_)
442  {}
443  inline bool operator()(MathVector<1>& val, const MathVector<dim> x,
444  number time, int si) const
445  {
446  return true; // note that we do not set val because setSolValue == false
447  }
448 
450  std::string fctName;
451  std::string ssName;
452  size_t fct[numFct];
454  };
455 
456  std::vector<CondNumberData> m_vBNDNumberData;
457  std::vector<NumberData> m_vNumberData;
458  std::vector<ConstNumberData> m_vConstNumberData;
459 
460  std::vector<VectorData> m_vVectorData;
461 
462  std::vector<OldNumberData> m_vOldNumberData;
463 
465  std::map<int, std::vector<NumberData*> > m_mNumberBndSegment;
466 
468  std::map<int, std::vector<ConstNumberData*> > m_mConstNumberBndSegment;
469 
471  std::map<int, std::vector<CondNumberData*> > m_mBNDNumberBndSegment;
472 
474  std::map<int, std::vector<VectorData*> > m_mVectorBndSegment;
475 
477  std::map<int, std::vector<OldNumberData*> > m_mOldNumberBndSegment;
478 
479  protected:
482 
485 
488  std::map<int, std::map<int, std::map<int, value_type> > > m_dirichletMap;
491 
494 
497 
499  typename domain_type::position_accessor_type m_aaPos;
500 #ifdef LAGRANGE_DIRICHLET_ADJ_TRANSFER_FIX
502  bool m_bAdjustTransfers;
503 #endif
504 };
505 
506 } // end namespace ug
507 
509 
510 #endif /* __H__UG__LIB_DISC__SPATIAL_DISC__CONSTRAINTS__LAGRANGE_DIRICHLET_BOUNDARY__ */
location name
Definition: checkpoint_util.lua:128
Definition: smart_pointer.h:296
Definition: smart_pointer.h:108
base class for approximation spaces without type of algebra or dof distribution
Definition: approximation_space.h:279
Definition: lagrange_dirichlet_boundary.h:56
virtual void adjust_error(const vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol=SPNULL, const std::vector< number > *vScaleMass=NULL, const std::vector< number > *vScaleStiff=NULL)
adjusts the assembled error estimator values in the attachments according to the constraint
Definition: lagrange_dirichlet_boundary_impl.h:1599
SmartPtr< ApproximationSpace< TDomain > > m_spApproxSpace
current ApproxSpace
Definition: lagrange_dirichlet_boundary.h:493
DirichletBoundary()
constructor
Definition: lagrange_dirichlet_boundary.h:91
algebra_type::matrix_type matrix_type
Type of algebra matrix.
Definition: lagrange_dirichlet_boundary.h:74
bool m_bDirichletColumns
flag for setting dirichlet columns
Definition: lagrange_dirichlet_boundary.h:484
void add(SmartPtr< UserData< number, dim, bool > > func, const char *function, const char *subsets)
adds a lua callback (cond and non-cond)
Definition: lagrange_dirichlet_boundary_impl.h:73
SmartPtr< TDomain > m_spDomain
current domain
Definition: lagrange_dirichlet_boundary.h:496
std::map< int, std::vector< CondNumberData * > > m_mBNDNumberBndSegment
conditional boundary values for all subsets
Definition: lagrange_dirichlet_boundary.h:471
std::map< int, std::map< int, std::map< int, value_type > > > m_dirichletMap
Definition: lagrange_dirichlet_boundary.h:488
bool m_bInvertSubsetSelection
flag for inverting the subset selection: use Dirichlet throughout except for the given subsets
Definition: lagrange_dirichlet_boundary.h:481
domain_type::position_type position_type
Type of position coordinates (e.g. position_type)
Definition: lagrange_dirichlet_boundary.h:68
std::map< int, std::vector< VectorData * > > m_mVectorBndSegment
non-conditional boundary values for all subsets
Definition: lagrange_dirichlet_boundary.h:474
void assemble_dirichlet_rows(matrix_type &mat, ConstSmartPtr< DoFDistribution > dd, number time=0.0)
Sets dirichlet rows for all registered dirichlet values.
Definition: lagrange_dirichlet_boundary_impl.h:430
algebra_type::vector_type vector_type
Type of algebra vector.
Definition: lagrange_dirichlet_boundary.h:77
void invert_subset_selection()
inverts the subset selection making the conditions be imposed on the rest of the domain
Definition: lagrange_dirichlet_boundary.h:153
void adjust_linear(matrix_type &A, vector_type &b, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0)
sets unity rows in A and dirichlet values in right-hand side b
Definition: lagrange_dirichlet_boundary_impl.h:1275
matrix_type * m_A
Definition: lagrange_dirichlet_boundary.h:490
std::vector< CondNumberData > m_vBNDNumberData
Definition: lagrange_dirichlet_boundary.h:456
std::vector< VectorData > m_vVectorData
Definition: lagrange_dirichlet_boundary.h:460
std::map< int, std::vector< NumberData * > > m_mNumberBndSegment
non-conditional boundary values for all subsets
Definition: lagrange_dirichlet_boundary.h:465
TDomain domain_type
Type of domain.
Definition: lagrange_dirichlet_boundary.h:62
void adjust_defect(vector_type &d, const vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol=NULL, const std::vector< number > *vScaleMass=NULL, const std::vector< number > *vScaleStiff=NULL)
sets a zero value in the defect for all dirichlet indices
Definition: lagrange_dirichlet_boundary_impl.h:920
std::vector< NumberData > m_vNumberData
Definition: lagrange_dirichlet_boundary.h:457
std::map< int, std::vector< ConstNumberData * > > m_mConstNumberBndSegment
constant boundary values for all subsets
Definition: lagrange_dirichlet_boundary.h:468
std::vector< ConstNumberData > m_vConstNumberData
Definition: lagrange_dirichlet_boundary.h:458
void set_approximation_space(SmartPtr< ApproximationSpace< TDomain > > approxSpace)
sets the approximation space to work on
Definition: lagrange_dirichlet_boundary_impl.h:53
std::vector< OldNumberData > m_vOldNumberData
Definition: lagrange_dirichlet_boundary.h:462
virtual void adjust_restriction(matrix_type &R, ConstSmartPtr< DoFDistribution > ddCoarse, ConstSmartPtr< DoFDistribution > ddFine, int type, number time=0.0)
sets constraints in restriction
Definition: lagrange_dirichlet_boundary_impl.h:618
void check_functions_and_subsets(FunctionGroup &functionGroup, SubsetGroup &subsetGroup, size_t numFct) const
Definition: lagrange_dirichlet_boundary_impl.h:309
MultipleSideAndElemErrEstData< TDomain > err_est_type
error estimator type
Definition: lagrange_dirichlet_boundary.h:83
TAlgebra algebra_type
Type of algebra.
Definition: lagrange_dirichlet_boundary.h:71
domain_type::position_accessor_type m_aaPos
current position accessor
Definition: lagrange_dirichlet_boundary.h:499
void adjust_rhs(vector_type &b, const vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0)
sets the dirichlet value in the right-hand side
Definition: lagrange_dirichlet_boundary_impl.h:1458
void adjust_solution(vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0)
sets the dirichlet value in the solution for all dirichlet indices
Definition: lagrange_dirichlet_boundary_impl.h:1042
void adjust_jacobian(matrix_type &J, const vector_type &u, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0, ConstSmartPtr< VectorTimeSeries< vector_type > > vSol=NULL, const number s_a0=1.0)
sets a unity row for all dirichlet indices
Definition: lagrange_dirichlet_boundary_impl.h:754
virtual void adjust_prolongation(matrix_type &P, ConstSmartPtr< DoFDistribution > ddFine, ConstSmartPtr< DoFDistribution > ddCoarse, int type, number time=0.0)
sets constraints in prolongation
Definition: lagrange_dirichlet_boundary_impl.h:486
virtual int type() const
returns the type of the constraints
Definition: lagrange_dirichlet_boundary.h:235
std::map< int, std::vector< OldNumberData * > > m_mOldNumberBndSegment
non-conditional boundary values for all subsets
Definition: lagrange_dirichlet_boundary.h:477
static const int dim
world Dimension
Definition: lagrange_dirichlet_boundary.h:65
void clear()
removes all scheduled dirichlet data.
Definition: lagrange_dirichlet_boundary_impl.h:63
DirichletBoundary(bool DirichletColumns)
constructor with flag for Dirichlet-Columns.
Definition: lagrange_dirichlet_boundary.h:101
void extract_data()
Definition: lagrange_dirichlet_boundary_impl.h:410
IDomainConstraint< TDomain, TAlgebra > base_type
Base Type.
Definition: lagrange_dirichlet_boundary.h:59
matrix_type::value_type value_type
Type of value type.
Definition: lagrange_dirichlet_boundary.h:80
~DirichletBoundary()
destructor
Definition: lagrange_dirichlet_boundary.h:122
virtual void adjust_correction(vector_type &c, ConstSmartPtr< DoFDistribution > dd, int type, number time=0.0)
sets zero to correction
Definition: lagrange_dirichlet_boundary_impl.h:1159
Definition: function_group.h:52
Definition: constraint_interface.h:162
ConstSmartPtr< DoFDistribution > dd(const GridLevel &gl) const
returns the level dof distribution
Definition: constraint_interface.h:242
Handle for a lua reference.
Definition: lua_function_handle.h:40
Definition: err_est_data.h:506
Wrapper for sequential matrices to handle them in parallel.
Definition: parallel_matrix.h:65
Group of subsets.
Definition: subset_group.h:51
time series of solutions and corresponding time point
Definition: solution_time_series.h:59
static const int dim
const NullSmartPtr SPNULL
The equivalent to NULL for smart pointers.
Definition: smart_pointer.h:90
double number
Definition: types.h:124
CPUAlgebra::vector_type vector_type
the ug namespace
@ CT_DIRICHLET
Definition: ass_tuner.h:59
function func(x, y, z, t, si)
T value_type
Definition: sparsematrix_interface.h:2
grouping for subset and conditional data
Definition: lagrange_dirichlet_boundary.h:363
size_t fct[numFct]
Definition: lagrange_dirichlet_boundary.h:381
SubsetGroup ssGrp
Definition: lagrange_dirichlet_boundary.h:382
static const bool setSolValue
Definition: lagrange_dirichlet_boundary.h:365
std::string fctName
Definition: lagrange_dirichlet_boundary.h:379
MathVector< 1 > value_type
Definition: lagrange_dirichlet_boundary.h:367
static const bool isConditional
Definition: lagrange_dirichlet_boundary.h:364
SmartPtr< UserData< number, dim, bool > > spFunctor
Definition: lagrange_dirichlet_boundary.h:378
bool operator()(MathVector< 1 > &val, const MathVector< dim > x, number time, int si) const
Definition: lagrange_dirichlet_boundary.h:372
CondNumberData(SmartPtr< UserData< number, dim, bool > > functor_, std::string fctName_, std::string ssName_)
Definition: lagrange_dirichlet_boundary.h:368
static const size_t numFct
Definition: lagrange_dirichlet_boundary.h:366
std::string ssName
Definition: lagrange_dirichlet_boundary.h:380
grouping for subset and constant data
Definition: lagrange_dirichlet_boundary.h:387
number functor
Definition: lagrange_dirichlet_boundary.h:402
bool operator()(MathVector< 1 > &val, const MathVector< dim > x, number time, int si) const
Definition: lagrange_dirichlet_boundary.h:396
std::string ssName
Definition: lagrange_dirichlet_boundary.h:404
SubsetGroup ssGrp
Definition: lagrange_dirichlet_boundary.h:406
static const bool setSolValue
Definition: lagrange_dirichlet_boundary.h:389
static const size_t numFct
Definition: lagrange_dirichlet_boundary.h:390
MathVector< 1 > value_type
Definition: lagrange_dirichlet_boundary.h:391
size_t fct[numFct]
Definition: lagrange_dirichlet_boundary.h:405
static const bool isConditional
Definition: lagrange_dirichlet_boundary.h:388
std::string fctName
Definition: lagrange_dirichlet_boundary.h:403
ConstNumberData(number value_, std::string fctName_, std::string ssName_)
Definition: lagrange_dirichlet_boundary.h:392
grouping for subset and non-conditional data
Definition: lagrange_dirichlet_boundary.h:338
std::string ssName
Definition: lagrange_dirichlet_boundary.h:356
static const size_t numFct
Definition: lagrange_dirichlet_boundary.h:341
MathVector< 1 > value_type
Definition: lagrange_dirichlet_boundary.h:342
static const bool isConditional
Definition: lagrange_dirichlet_boundary.h:339
SubsetGroup ssGrp
Definition: lagrange_dirichlet_boundary.h:358
size_t fct[numFct]
Definition: lagrange_dirichlet_boundary.h:357
std::string fctName
Definition: lagrange_dirichlet_boundary.h:355
static const bool setSolValue
Definition: lagrange_dirichlet_boundary.h:340
NumberData(SmartPtr< UserData< number, dim > > functor_, std::string fctName_, std::string ssName_)
Definition: lagrange_dirichlet_boundary.h:343
SmartPtr< UserData< number, dim > > spFunctor
Definition: lagrange_dirichlet_boundary.h:354
bool operator()(MathVector< 1 > &val, const MathVector< dim > x, number time, int si) const
Definition: lagrange_dirichlet_boundary.h:348
grouping for subset and the data already stored in the solution
Definition: lagrange_dirichlet_boundary.h:435
OldNumberData(std::string fctName_, std::string ssName_)
Definition: lagrange_dirichlet_boundary.h:440
std::string fctName
Definition: lagrange_dirichlet_boundary.h:450
size_t fct[numFct]
Definition: lagrange_dirichlet_boundary.h:452
static const size_t numFct
Definition: lagrange_dirichlet_boundary.h:438
static const bool setSolValue
Definition: lagrange_dirichlet_boundary.h:437
SubsetGroup ssGrp
Definition: lagrange_dirichlet_boundary.h:453
std::string ssName
Definition: lagrange_dirichlet_boundary.h:451
number functor
Definition: lagrange_dirichlet_boundary.h:449
MathVector< 1 > value_type
Definition: lagrange_dirichlet_boundary.h:439
bool operator()(MathVector< 1 > &val, const MathVector< dim > x, number time, int si) const
Definition: lagrange_dirichlet_boundary.h:443
static const bool isConditional
Definition: lagrange_dirichlet_boundary.h:436
grouping for subset and non-conditional vector data
Definition: lagrange_dirichlet_boundary.h:411
SmartPtr< UserData< MathVector< dim >, dim > > spFunctor
Definition: lagrange_dirichlet_boundary.h:426
static const bool isConditional
Definition: lagrange_dirichlet_boundary.h:412
std::string ssName
Definition: lagrange_dirichlet_boundary.h:428
static const size_t numFct
Definition: lagrange_dirichlet_boundary.h:414
std::string fctName
Definition: lagrange_dirichlet_boundary.h:427
VectorData(SmartPtr< UserData< MathVector< dim >, dim > > value_, std::string fctName_, std::string ssName_)
Definition: lagrange_dirichlet_boundary.h:416
size_t fct[numFct]
Definition: lagrange_dirichlet_boundary.h:429
bool operator()(MathVector< dim > &val, const MathVector< dim > x, number time, int si) const
Definition: lagrange_dirichlet_boundary.h:420
static const bool setSolValue
Definition: lagrange_dirichlet_boundary.h:413
MathVector< dim > value_type
Definition: lagrange_dirichlet_boundary.h:415
SubsetGroup ssGrp
Definition: lagrange_dirichlet_boundary.h:430