LifeV
BCVector.hpp
Go to the documentation of this file.
1 //@HEADER
2 /*
3 *******************************************************************************
4 
5  Copyright (C) 2004, 2005, 2007 EPFL, Politecnico di Milano, INRIA
6  Copyright (C) 2010 EPFL, Politecnico di Milano, Emory University
7 
8  This file is part of LifeV.
9 
10  LifeV is free software; you can redistribute it and/or modify
11  it under the terms of the GNU Lesser General Public License as published by
12  the Free Software Foundation, either version 3 of the License, or
13  (at your option) any later version.
14 
15  LifeV is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public License
21  along with LifeV. If not, see <http://www.gnu.org/licenses/>.
22 
23 *******************************************************************************
24 */
25 //@HEADER
26 
27 /*!
28  @file
29  @brief File contains classes to holds the FE vectors used for prescribing boundary conditions
30 
31  @author Miguel Fernandez <miguel.fernandez@inria.fr>
32  @author Christophe Prud'homme <christophe.prudhomme@epfl.ch>
33  @author Vincent Martin <vincent.martin@inria.fr>
34  @contributor Mauro Perego <perego.mauro@gmail.com>
35  @maintainer Mauro Perego <perego.mauro@gmail.com>
36 
37  */
38 
39 #ifndef BCVECTOR_H
40 #define BCVECTOR_H 1
41 
42 #include <lifev/core/LifeV.hpp>
43 #include <lifev/core/fem/DOFInterface.hpp>
44 #include <lifev/core/array/VectorEpetra.hpp>
45 
46 namespace LifeV
47 {
48 
49 //! BCVectorBase - class that holds the FE vectors used for prescribing boundary conditions.
50 /*!
51  @author Miguel Fernandez
52  @author Christophe Prud'homme <christophe.prudhomme@epfl.ch>
53  @author Vincent Martin <vincent.martin@inria.fr>
54 
55  This class holds the FE vectors used for prescribing boundary conditions.
56  The FE vectors given by the user must have the dimension of the total DOFs, although only DOFs on the boundary are considered.
57 
58  In the case of Essential boundary condition, we want to prescribe u = v on part of the boundary ( u is the solution, v the given FE vector).
59  In the case of Natural boundary condition, depending on the type, we want to add to the right hand side of the equation one of the following terms:
60 
61  type 0: v, in this case v is a quantity integrated on the boundary (i.e. a residual) <br>
62  type 1: ( v, n phi)_bd with v scalar and phi vector <br>
63  type 2: ( v n, phi)_bd v vector, phi scalar <br>
64  type 3: ( v, phi)_bd v and phi can be both vectors or scalars (not yet implemented)
65 
66  here ( . , . )_bd denote the L2 inner product on the boundary, n is the normal, v the given FE vector
67 
68  This class holds data structure also for Resistance and Flux boundary conditions
69 
70  This is the base class for other BCVectorXXX classes.
71  Inheritance is used to hold specific boundary condition data.
72 */
73 
75 {
76 public:
77 
78  //! @name Public Types
79  //@{
80 
84 
85  //@}
86 
87  //! @name Constructors and Detypedef BCVectorBase::vector_Type vector_Type;structor
88  //@{
89 
90 
91  //! Empty Constructor
92  /*!
93  * The user must call setBCVector(..).
94  */
95  BCVectorBase();
96 
97 
98  //! Constructor
99  /*!
100  @param rightHandSideVector The given Finite Element vector holding data to prescribe on boundary
101  @param numberOfTotalDof number of total dof in the vector of data
102  @param type The type can assume the following values (0, 1, 2); see BCVector class description for their meaning
103  */
104 
105  BCVectorBase ( const vector_Type& rightHandSideVector, const UInt numberOfTotalDof, UInt type = 0 );
106 
107 
108  //! Copy Constructor
109  BCVectorBase ( const BCVectorBase& bcVectorBase);
110 
111 
112  //! Destructor
113  virtual ~BCVectorBase()
114  {
115  // nothing to be done here
116  }
117 
118 
119  //@}
120 
121  //! @name Operators
122  //@{
123 
124  //! Assignment operator
125  virtual BCVectorBase& operator= ( BCVectorBase const& );
126 
127  //! Return the value of the selected component of rightHandSideVector at position globalDofID
128  /*!
129  @param globalDofId The global DOF id
130  @param component The vector component
131  */
132  virtual Real operator() ( const ID& globalDofId, const ID& component ) const;
133 
134  //@}
135 
136 
137  //! @name Methods
138 
139  //! Clone the current object
140  /*!
141  @return Pointer to the cloned object
142  */
143  virtual BCVectorBasePtr_Type clone() const
144  {
145  BCVectorBasePtr_Type copy ( new BCVectorBase ( *this ) );
146  return copy;
147  }
148 
149  //! Return the value of the selected component of the boundary mass coefficient vector at position dofID
150  /*!
151  @param globalDofId The global DOF id
152  @param component The vector component
153  */
154  virtual Real robinCoeffVector ( const ID& globalDofId, const ID& component ) const;
155 
156 
157  //! Return the value of the selected component of the beta coefficient vector at position dofID
158  /*!
159  @param globalDofId The global DOF id
160  @param component The vector component
161  */
162  virtual Real betaCoeffVector ( const ID& globalDofId, const ID& component ) const;
163 
164 
165  //! showMe
166  /*!
167  * @param verbose The verbosity
168  * @param out The output stream (default: cout)
169  */
170  virtual std::ostream& showMe ( bool /*verbose = false*/, std::ostream& out = std::cout ) const
171  {
172  out << "not implemented in parent class, use derived class implementation!" << std::endl;
173  return out;
174  }
175 
176 
177  //@}
178 
179  //! @name Get Methods
180  //@{
181 
182  //! Return the underlying data structure for the RHS vector
183  inline const vector_Type& rhsVector( ) const
184  {
185  return *M_rightHandSideVectorPtr;
186  };
187 
188 
189  //! Return the number of total DOF
190  inline UInt nbTotalDOF() const
191  {
192  return M_numberOfTotalDof;
193  }
194 
195 
196  //! Return the type of conditions (see BCVector class description)
197  inline UInt type() const
198  {
199  return M_type;
200  }
201 
202 
203  //! determine whether the BCVector is updated
204  inline bool isFinalized() const
205  {
206  return M_finalized;
207  }
208 
209 
210  //! determine whether the boundary mass coefficient for Robin bc is a Vector
211  inline bool isRobinCoeffAVector() const
212  {
214  }
215 
216 
217  //true if beta coefficient is a Vector
218  inline bool isBetaCoeffAVector() const
219  {
220  return M_isBetaCoeffAVector;
221  }
222 
223  //! Return the value of the boundary mass coefficient of Robin conditions
224  inline Real robinCoeff() const
225  {
227  }
228 
229 
230  //! Return the value of the resistance coefficient
231  inline Real resistanceCoeff() const
232  {
233  return M_resistanceCoeff;
234  }
235 
236 
237  //! Return the value of the beta coefficient
238  inline Real betaCoeff() const
239  {
240  return M_betaCoeff;
241  }
242 
243  //@}
244 
245 
246  //! @name Set Methods
247  //@{
248 
249  //! set the boundary mass coefficient of Robin bc
250  /*!
251  @param robinBoundaryMassCoeff The boundary mass coefficient of robin conditions
252  */
253  inline void setRobinCoeff ( const Real& robinBoundaryMassCoeff )
254  {
255  M_robinBoundaryMassCoeff = robinBoundaryMassCoeff;
256  }
257 
258 
259  //! set the Resistance coefficient
260  /*!
261  @param robinBoundaryMassCoeff The boundary mass coefficient of robin conditions
262  */
263 
264  inline void setResistanceCoeff ( const Real& resistanceCoeff )
265  {
266  M_resistanceCoeff = resistanceCoeff;
267  }
268 
269 
270  //! set the Beta coefficient FE vector
271  /*!
272  @param betaCoeff The beta coefficient
273  */
274 
275  inline void setBetaCoeff ( const Real& betaCoeff )
276  {
277  M_betaCoeff = betaCoeff;
278  }
279 
280 
281  //! set the boundary mass coefficient FE vector for Robin boundary conditions
282  /*!
283  @param robinBoundaryMassCoeff The boundary mass coefficient of robin conditions
284  */
285 
286  void setRobinCoeffVector ( const vector_Type& robinBoundaryMassCoeffVector );
287 
288 
289 
290  //! set the beta coefficient FE vector
291  /*!
292  @param betaCoeffVector The beta coefficient FE vector
293  */
294  void setBetaCoeffVector ( const vector_Type& betaCoeffVector );
295 
296 
297  //! set the right hand side FE vector
298  /*!
299  @param righHandSideVector
300  @param numberOfTotalDOF
301  @param type
302  */
303  void setRhsVector ( const vector_Type& righHandSideVector, UInt numberOfTotalDOF, UInt type = 0 );
304 
305  //@}
306 
307 protected:
308 
309  //! The pointer to FE vector for the right hand side part of the equation
311 
312  //! The pointer to FE Vector holding the robin boundary Mass coefficients
315 
316  //! Number of total dof in the vector of data
318 
319  //! Coefficient for boundary mass term in Robin conditions
321 
322  //! Coefficient for Resistance coefficient
324 
325 
326  //! Coefficient for the beta coefficient
328 
329  //! boolean determining whether the boundary mass coefficient is a FE Vector
331 
332  //! boolean determining whether the boundary mass coefficient is a FE Vector
334 
335  //! Type of boundary condition; see the BCBase class description
337 
338  //! true when the BCVector is updated
340 
341 };
342 
343 
344 
345 // ============ BCVector ================
346 
347 
348 //! BCVector - class that holds the FE vectors used for prescribing boundary conditions.
349 /*!
350  @author Miguel Fernandez
351  @author Christophe Prud'homme <christophe.prudhomme@epfl.ch>
352  @author Vincent Martin <vincent.martin@inria.fr>
353 
354  This class holds the FE vectors used for prescribing boundary conditions. It is derived from the class BCVectorBase
355  The FE vectors given by the user must have the dimension of the total DOFs, although only DOFs on the boundary are considered.
356 
357  In the case of Essential boundary condition, we want to prescribe u = v on part of the boundary ( u is the solution, v the given FE vector).
358  In the case of Natural boundary condition, depending on the type, we want to add to the right hand side of the equation one of the following terms:
359 
360  type 0: @c v, in this case v is a quantity integrated on the boundary (i.e. a residual) <br>
361  type 1: @c ( v, n phi)_bd with v scalar and phi vector <br>
362  type 2: @c ( v n, phi)_bd v vector, phi scalar <br>
363  type 3: @c ( v, phi)_bd v and phi can be both vectors or scalars (not yet implemented)
364 
365  here ( . , . )_bd denote the the L2 inner product on the boundary, n is the normal, v the given FE vector and phi the FE test function
366 
367  This class holds data structure also for Robin, Resistance and Flux boundary conditions.
368 
369  Since the FE vector v is used in the right hand side of the equation, the associate code variable is @c M_rightHandSideVector (VectorEpetra)
370 
371  In Robin boundary conditions we add to the matrix the term: <br>
372  @c (coeff u, phi)_bd <br>
373  and to the right hand side of the equation the term: <br>
374  @ ( v, phi)_bd <br>
375  The code variables associated with coeff are M_boundaryMassCoeff and M_boundaryMassCoeffVector, the former being a scalar (Real), the latter an FE Vector (VectorEpetra)
376 
377  This is the base class for other BCVectorInterface class.
378  Inheritance is used to hold specific boundary condition data.
379 */
380 
381 class BCVector:
382  public BCVectorBase
383 {
384 public:
385 
386  //! @name Public Types
387  //@{
388  //! super class
390  typedef BCVectorBase::vector_Type vector_Type;
391  typedef BCVectorBase::vectorConstPtr_Type vectorConstPtr_Type;
392 
393  //@}
394 
395  //! @name Constructors and Destructor
396  //@{
397 
398  //! Default Constructor
399  /*!
400  * The user must call setVector(..)
401  */
402  BCVector() {}
403 
404  //! Constructor
405  /*!
406  @param rightHandSideVector The given Finite Element vector holding data to prescribe on boundary
407  @param numberOfTotalDof number of total dof in the vector of data
408  @param type The type can assume the following values (0, 1, 2); see BCVector class description for their meaning
409  */
410  BCVector ( const vector_Type& rightHandSideVector, UInt const numberOfTotalDof, UInt type = 0 );
411 
412 
413  //Copy Constructor
414  BCVector ( const BCVector& bcVector );
415 
416  //! Destructor
417  virtual ~BCVector( ) {}
418  //@}
419 
420  //! @name Operators
421  //@{
422  //! Assignment operator for BCVector
423  BCVector& operator= ( const BCVector& bcVector );
424 
425  //@}
426 
427  //! @name Methods
428  //@{
429 
430  //! showMe
431  /*!
432  * @param verbose The verbosity
433  * @param out The output stream (default: cout)
434  */
435  std::ostream& showMe ( bool verbose = false, std::ostream& out = std::cout ) const;
436 
437  //@}
438 };
439 
440 // ============ BCVectorInterface ================
441 
442 //! BCVectorInterface - class that holds the FE vectors used for prescribing boundary conditions on Interfaces.
443 /*!
444  @author Miguel Fernandez
445  @author Christophe Prud'homme <christophe.prudhomme@epfl.ch>
446  @author Vincent Martin <vincent.martin@inria.fr>
447 
448  This class holds the FE vectors used for prescribing boundary conditions. It is derived from the class BCVectorBase
449  The FE vectors given by the user must have the dimension of the total DOFs, although only DOFs on the boundary are considered.
450 
451  In the case of Essential boundary condition, we want to prescribe u = v on part of the boundary ( u is the solution, v the given FE vector).
452  In the case of Natural boundary condition, depending on the type, we want to add to the right hand side of the equation one of the following terms:
453 
454  type 0: v, in this case v is a quantity integrated on the boundary (i.e. a residual) <br>
455  type 1: ( v, n phi)_bd with v scalar and phi vector <br>
456  type 2: ( v n, phi)_bd v vector, phi scalar <br>
457  type 3: ( v, phi)_bd v and phi can be both vectors or scalars (not yet implemented)
458 
459  here ( . , . )_bd denote the L2 inner product on the boundary, n is the normal, v the given FE vector
460 
461  This class holds data structure also for Robin, Resistance and Flux boundary conditions.
462 
463  Since the FE vector v is used in the right hand side of the equation, the associate code variable is @c M_rightHandSideVector (VectorEpetra)
464 
465  In Robin boundary conditions we add to the matrix the term: <br>
466  @c (coeff u, phi)_bd <br>
467  and to the right hand side of the equation the term: <br>
468  @ ( v, phi)_bd <br>
469  The code variables associated with coeff are M_boundaryMassCoeff and M_boundaryMassCoeffVector, the former being a scalar (Real), the latter an FE Vector (VectorEpetra)
470 
471  This is the base class for other BCVectorInterface class.
472  Inheritance is used to hold specific boundary condition data.
473 */
474 
476  :
477 public BCVectorBase
478 {
479 public:
480 
481  //! @name Public Types
482  //@{
483 
484 
487  typedef BCVectorBase::vector_Type vector_Type;
488  typedef BCVectorBase::vectorConstPtr_Type vectorConstPtr_Type;
489 
490  //@}
491 
492 
493  //! @name Constructors and Destructor
494  //@{
495 
496 
497  //! Default Constructor
498  /*!
499  * The user must call setVector(..)
500  */
502 
503  //! Constructor
504  /*!
505  @param rightHandSideVector The given Finite Element vector holding data to prescribe on boundary
506  @param numberOfTotalDof Number of total dof in the vector of data
507  @param interfaceDofPtr The pointer to the container of connections between the DOFs on two matching meshes
508  @param type The type can assume the following values (0, 1, 2); see BCVector class description for their meaning
509  */
510  BCVectorInterface ( const vector_Type& rightHandSideVector, UInt numberOfTotalDof, const dofInterfacePtr_Type& interfaceDofPtr, UInt type = 0 );
511 
512 
513  //! Copy Constructor
514  BCVectorInterface ( const BCVectorInterface& bcVectorInterface );
515 
516 
517  //!Destructor
518  virtual ~BCVectorInterface() {}
519 
520 
521  //@}
522 
523 
524 
525  //! @name Operators
526  //@{
527 
528  //! Assignment operator for BCVectorInterface
529  BCVectorInterface& operator= ( const BCVectorInterface& bcVectorInterface );
530 
531 
532  //! Return the value of the selected component of rightHandSideVector at position globalDofID
533  /*!
534  @param globalDofId The global DOF id
535  @param component The vector component
536  */
537  Real operator() ( const ID& globalDofId, const ID& component ) const;
538 
539 
540 
541  //@}
542 
543 
544 
545  //! setup after default constructor
546  /*!
547  @param rightHandSideVector The given Finite Element vector holding data to prescribe on boundary
548  @param numberOfTotalDof Number of total dof in the vector of data
549  @param interfaceDofPtr The pointer to the container of connections between the DOFs on two matching meshes
550  @param type The type can assume the following values (0, 1, 2); see BCVectorInterface class description for their meaning
551  */
552  void setup ( const vector_Type& rightHandSideVector, UInt numberOfTotalDof, const dofInterfacePtr_Type& interfaceDofPtr, UInt type = 0 );
553 
554 
555  //! set the BC vector (after default construction)
556  /*!
557  @param rightHandSideVector The given Finite Element vector holding data to prescribe on boundary
558  @param numberOfTotalDof Number of total dof in the vector of data
559  @param interfaceDofPtr The pointer to the container of connections between the DOFs on two matching meshes
560  @param type The type can assume the following values (0, 1, 2); see BCVectorInterface class description for their meaning
561  */
562  void setRhsVector ( const vector_Type& rightHandSideVector, UInt numberOfTotalDof, const dofInterfacePtr_Type& interfaceDofPtr, UInt type = 0);
563 
564 
565 
566  //! @name Methods
567  //@{
568 
569  //! Clone the current object
570  /*!
571  @return Pointer to the cloned object
572  */
574  {
575  BCVectorBase::BCVectorBasePtr_Type copy ( new BCVectorInterface ( *this ) );
576  return copy;
577  }
578 
579  //! Return the value of the selected component of the boundary mass coefficient vector at position dofID
580  /*!
581  @param globalDofId The global DOF id
582  @param component The vector component
583  */
584  Real robinCoeffVector ( const ID& globalDofId, const ID& component ) const;
585 
586 
587  //! Return the value of the selected component of the beta coefficient vector at position dofID
588  /*!
589  @param globalDofId The global DOF id
590  @param component The vector component
591  */
592  Real betaCoeffVector ( const ID& globalDofId, const ID& component ) const;
593 
594 
595  //! showMe
596  /*!
597  * @param verbose The verbosity
598  * @param out The output stream (default: cout)
599  */
600  std::ostream& showMe ( bool verbose = false, std::ostream& out = std::cout ) const;
601 
602 
603  //! Return reference to DOFInterface object, the container of connection of DOFs
604  inline DOFInterface const& dofInterface() const
605  {
606  return *M_interfaceDofPtr;
607  }
608 
609  //@}
610 
611 protected:
612 
613  //! DOFInterface object holding the connections between the interface dofs
615 
616 };
617 }
618 #endif
Real betaCoeff() const
Return the value of the beta coefficient.
Definition: BCVector.hpp:238
VectorEpetra - The Epetra Vector format Wrapper.
void setRobinCoeff(const Real &robinBoundaryMassCoeff)
set the boundary mass coefficient of Robin bc
Definition: BCVector.hpp:253
std::ostream & showMe(bool verbose=false, std::ostream &out=std::cout) const
showMe
Definition: BCVector.cpp:346
BCVectorInterface()
Default Constructor.
Definition: BCVector.hpp:501
void setResistanceCoeff(const Real &resistanceCoeff)
set the Resistance coefficient
Definition: BCVector.hpp:264
virtual Real robinCoeffVector(const ID &globalDofId, const ID &component) const
Return the value of the selected component of the boundary mass coefficient vector at position dofID...
Definition: BCVector.cpp:135
vectorConstPtr_Type M_robinBoundaryMassCoeffVectorPtr
The pointer to FE Vector holding the robin boundary Mass coefficients.
Definition: BCVector.hpp:313
BCVector(const vector_Type &rightHandSideVector, UInt const numberOfTotalDof, UInt type=0)
Constructor.
Definition: BCVector.cpp:192
Real M_betaCoeff
Coefficient for the beta coefficient.
Definition: BCVector.hpp:327
vector_Type const * vectorConstPtr_Type
Definition: BCVector.hpp:82
UInt nbTotalDOF() const
Return the number of total DOF.
Definition: BCVector.hpp:190
dofInterfacePtr_Type M_interfaceDofPtr
DOFInterface object holding the connections between the interface dofs.
Definition: BCVector.hpp:614
bool M_finalized
true when the BCVector is updated
Definition: BCVector.hpp:339
BCVectorBase bcVectorBase_Type
Definition: BCVector.hpp:485
Real operator()(const ID &globalDofId, const ID &component) const
Return the value of the selected component of rightHandSideVector at position globalDofID.
Definition: BCVector.cpp:292
const vector_Type & rhsVector() const
Return the underlying data structure for the RHS vector.
Definition: BCVector.hpp:183
std::ostream & showMe(bool verbose=false, std::ostream &out=std::cout) const
showMe
Definition: BCVector.cpp:227
bool M_isRobinBdMassCoeffAVector
boolean determining whether the boundary mass coefficient is a FE Vector
Definition: BCVector.hpp:330
void setup(const vector_Type &rightHandSideVector, UInt numberOfTotalDof, const dofInterfacePtr_Type &interfaceDofPtr, UInt type=0)
setup after default constructor
Definition: BCVector.cpp:302
Real M_resistanceCoeff
Coefficient for Resistance coefficient.
Definition: BCVector.hpp:323
UInt M_type
Type of boundary condition; see the BCBase class description.
Definition: BCVector.hpp:336
void updateInverseJacobian(const UInt &iQuadPt)
bool isFinalized() const
determine whether the BCVector is updated
Definition: BCVector.hpp:204
Real robinCoeff() const
Return the value of the boundary mass coefficient of Robin conditions.
Definition: BCVector.hpp:224
void setBetaCoeff(const Real &betaCoeff)
set the Beta coefficient FE vector
Definition: BCVector.hpp:275
bool isBetaCoeffAVector() const
Definition: BCVector.hpp:218
BCVector & operator=(const BCVector &bcVector)
Assignment operator for BCVector.
Definition: BCVector.cpp:211
vectorConstPtr_Type M_rightHandSideVectorPtr
The pointer to FE vector for the right hand side part of the equation.
Definition: BCVector.hpp:310
Real betaCoeffVector(const ID &globalDofId, const ID &component) const
Return the value of the selected component of the beta coefficient vector at position dofID...
Definition: BCVector.cpp:338
BCVectorBase::BCVectorBasePtr_Type clone() const
Clone the current object.
Definition: BCVector.hpp:573
VectorEpetra vector_Type
Definition: BCVector.hpp:81
BCVectorBase - class that holds the FE vectors used for prescribing boundary conditions.
Definition: BCVector.hpp:74
Real resistanceCoeff() const
Return the value of the resistance coefficient.
Definition: BCVector.hpp:231
uint32_type ID
IDs.
Definition: LifeV.hpp:194
BCVectorInterface(const BCVectorInterface &bcVectorInterface)
Copy Constructor.
Definition: BCVector.cpp:269
BCVector()
Default Constructor.
Definition: BCVector.hpp:402
virtual BCVectorBase & operator=(BCVectorBase const &)
Assignment operator.
Definition: BCVector.cpp:101
BCVectorInterface & operator=(const BCVectorInterface &bcVectorInterface)
Assignment operator for BCVectorInterface.
Definition: BCVector.cpp:279
BCVectorInterface - class that holds the FE vectors used for prescribing boundary conditions on Inter...
Definition: BCVector.hpp:475
virtual ~BCVector()
Destructor.
Definition: BCVector.hpp:417
BCVectorBase(const BCVectorBase &bcVectorBase)
Copy Constructor.
Definition: BCVector.cpp:79
void setRhsVector(const vector_Type &rightHandSideVector, UInt numberOfTotalDof, const dofInterfacePtr_Type &interfaceDofPtr, UInt type=0)
set the BC vector (after default construction)
Definition: BCVector.cpp:318
vectorConstPtr_Type M_betaCoeffVectorPtr
Definition: BCVector.hpp:314
BCVectorInterface(const vector_Type &rightHandSideVector, UInt numberOfTotalDof, const dofInterfacePtr_Type &interfaceDofPtr, UInt type=0)
Constructor.
Definition: BCVector.cpp:259
BCVectorBase()
Empty Constructor.
Definition: BCVector.cpp:54
bool isRobinCoeffAVector() const
determine whether the boundary mass coefficient for Robin bc is a Vector
Definition: BCVector.hpp:211
void setRhsVector(const vector_Type &righHandSideVector, UInt numberOfTotalDOF, UInt type=0)
set the right hand side FE vector
Definition: BCVector.cpp:158
BCVectorBase bcVectorBase_Type
super class
Definition: BCVector.hpp:389
void setRobinCoeffVector(const vector_Type &robinBoundaryMassCoeffVector)
set the boundary mass coefficient FE vector for Robin boundary conditions
Definition: BCVector.cpp:167
Real M_robinBoundaryMassCoeff
Coefficient for boundary mass term in Robin conditions.
Definition: BCVector.hpp:320
virtual Real operator()(const ID &globalDofId, const ID &component) const
Return the value of the selected component of rightHandSideVector at position globalDofID.
Definition: BCVector.cpp:123
double Real
Generic real data.
Definition: LifeV.hpp:175
Real robinCoeffVector(const ID &globalDofId, const ID &component) const
Return the value of the selected component of the boundary mass coefficient vector at position dofID...
Definition: BCVector.cpp:330
BCVectorBase(const vector_Type &rightHandSideVector, const UInt numberOfTotalDof, UInt type=0)
Constructor.
Definition: BCVector.cpp:66
DOFInterface const & dofInterface() const
Return reference to DOFInterface object, the container of connection of DOFs.
Definition: BCVector.hpp:604
void setBetaCoeffVector(const vector_Type &betaCoeffVector)
set the beta coefficient FE vector
Definition: BCVector.cpp:174
virtual BCVectorBasePtr_Type clone() const
Clone the current object.
Definition: BCVector.hpp:143
std::shared_ptr< DOFInterface > dofInterfacePtr_Type
Definition: BCVector.hpp:486
UInt type() const
Return the type of conditions (see BCVector class description)
Definition: BCVector.hpp:197
BCVector - class that holds the FE vectors used for prescribing boundary conditions.
Definition: BCVector.hpp:381
virtual ~BCVectorInterface()
Destructor.
Definition: BCVector.hpp:518
UInt M_numberOfTotalDof
Number of total dof in the vector of data.
Definition: BCVector.hpp:317
std::shared_ptr< BCVectorBase > BCVectorBasePtr_Type
Definition: BCVector.hpp:83
bool M_isBetaCoeffAVector
boolean determining whether the boundary mass coefficient is a FE Vector
Definition: BCVector.hpp:333
virtual Real betaCoeffVector(const ID &globalDofId, const ID &component) const
Return the value of the selected component of the beta coefficient vector at position dofID...
Definition: BCVector.cpp:143
uint32_type UInt
generic unsigned integer (used mainly for addressing)
Definition: LifeV.hpp:191
virtual std::ostream & showMe(bool, std::ostream &out=std::cout) const
showMe
Definition: BCVector.hpp:170
virtual ~BCVectorBase()
Destructor.
Definition: BCVector.hpp:113
BCVector(const BCVector &bcVector)
Definition: BCVector.cpp:200