LifeV
MultiscaleCouplingMeanNormalStressValve.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 containing the multiscale mean normal stress coupling class with simple valve
30  *
31  * @date 05-04-2011
32  * @author Cristiano Malossi <cristiano.malossi@epfl.ch>
33  *
34  * @maintainer Cristiano Malossi <cristiano.malossi@epfl.ch>
35  */
36 
37 #ifndef MultiscaleCouplingMeanNormalStressValve_H
38 #define MultiscaleCouplingMeanNormalStressValve_H 1
39 
40 #include <lifev/multiscale/couplings/MultiscaleCouplingMeanNormalStress.hpp>
41 
42 namespace LifeV
43 {
44 namespace Multiscale
45 {
46 
47 //! MultiscaleCouplingMeanNormalStressValve - Mean normal stress coupling condition with simple valve
48 /*!
49  * @author Cristiano Malossi
50  *
51  * @see Full description of the Geometrical Multiscale Framework: \cite Malossi-Thesis
52  * @see Methodology: \cite Malossi2011Algorithms \cite Malossi2011Algorithms1D \cite Malossi2011Algorithms3D1DFSI \cite BlancoMalossi2012
53  * @see Applications: \cite Malossi2011Algorithms3D1DFSIAortaIliac \cite LassilaMalossi2012IdealLeftVentricle \cite BonnemainMalossi2012LVAD
54  *
55  * The MultiscaleCouplingMeanNormalStressValve class is an implementation of the multiscaleCoupling_Type
56  * for applying flow rate coupling conditions on the models including a valve between the first model and the others.
57  *
58  * NOTE: The current implementation works only for two models!
59  */
61 {
62 public:
63 
64  //! @name Type definitions
65  //@{
66 
68 
69  //@}
70 
71 
72  //! @name Constructors & Destructor
73  //@{
74 
75  //! Constructor
77 
78  //! Destructor
80 
81  //@}
82 
83 
84  //! @name Multiscale PhysicalCoupling Implementation
85  //@{
86 
87  //! Setup the coupling
88  void setupCoupling();
89 
90  //! Initialize the values of the coupling variables
92 
93  //! Update the coupling
94  /*!
95  * Update the position of the valve.
96  */
97  void updateCoupling();
98 
99  //! Compute the local coupling residuals vector
101 
102  //! Check if the topology is changed
103  /*!
104  * The opening/closure of the valve change the topology.
105  *
106  * @return true if the topology is changed, false otherwise
107  */
109  {
110  return M_topologyChange;
111  }
112 
113  //@}
114 
115 private:
116 
117  //! @name Private Multiscale PhysicalCoupling Implementation
118  //@{
119 
120  //! Insert constant coefficients into the Jacobian matrix
121  /*!
122  * @param jacobian the Jacobian matrix
123  */
125 
126  //! Insert the Jacobian coefficient(s) depending on a perturbation of the model, due to a specific variable (the column)
127  /*!
128  * @param jacobian the Jacobian matrix
129  * @param column the column related to the perturbed variable
130  * @param ID the global ID of the model which is perturbed by the variable
131  * @param solveLinearSystem a flag to which determine if the linear system has to be solved
132  */
133  void insertJacobianDeltaCoefficients ( multiscaleMatrix_Type& jacobian, const UInt& column, const UInt& ID, bool& solveLinearSystem );
134 
135  //@}
136 
137 
138  //! @name Unimplemented Methods
139  //@{
140 
142 
144 
145  //@}
146 
149 };
150 
151 //! Factory create function
153 {
154  return new MultiscaleCouplingMeanNormalStressValve();
155 }
156 
157 } // Namespace Multiscale
158 } // Namespace LifeV
159 
160 #endif /* MultiscaleCouplingMeanNormalStressValve_H */
void insertJacobianDeltaCoefficients(multiscaleMatrix_Type &jacobian, const UInt &column, const UInt &ID, bool &solveLinearSystem)
Insert the Jacobian coefficient(s) depending on a perturbation of the model, due to a specific variab...
MultiscaleCouplingMeanNormalStressValve & operator=(const MultiscaleCouplingMeanNormalStressValve &coupling)
multiscaleCoupling_Type * createMultiscaleCouplingMeanNormalStressValve()
Factory create function.
MultiscaleCoupling multiscaleCoupling_Type
void updateInverseJacobian(const UInt &iQuadPt)
MatrixEpetra< Real > multiscaleMatrix_Type
MultiscaleCouplingMeanNormalStressValve(const MultiscaleCouplingMeanNormalStressValve &coupling)
MultiscaleCouplingMeanNormalStress - Stress coupling condition.
void computeCouplingResiduals()
Compute the local coupling residuals vector.
void initializeCouplingVariables()
Initialize the values of the coupling variables.
uint32_type UInt
generic unsigned integer (used mainly for addressing)
Definition: LifeV.hpp:191
MultiscaleCouplingMeanNormalStressValve - Mean normal stress coupling condition with simple valve...
void insertJacobianConstantCoefficients(multiscaleMatrix_Type &jacobian)
Insert constant coefficients into the Jacobian matrix.