LifeV
MultiscaleCouplingMeanNormalStressArea.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
30  *
31  * @date 11-10-2012
32  * @author Cristiano Malossi <cristiano.malossi@epfl.ch>
33  *
34  * @maintainer Cristiano Malossi <cristiano.malossi@epfl.ch>
35  */
36 
37 #ifndef MultiscaleCouplingMeanNormalStressArea_H
38 #define MultiscaleCouplingMeanNormalStressArea_H 1
39 
40 #include <lifev/multiscale/couplings/MultiscaleCouplingMeanNormalStress.hpp>
41 
42 namespace LifeV
43 {
44 namespace Multiscale
45 {
46 
47 //! MultiscaleCouplingMeanNormalStressArea - Mean normal stress with area coupling condition
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 MultiscaleCouplingMeanNormalStressArea class is an implementation of the multiscaleCoupling_Type
56  * for applying mean normal stress with area coupling conditions to the models interfaces.
57  */
59 {
60 public:
61 
62  //! @name Type definitions
63  //@{
64 
66 
67  //@}
68 
69 
70  //! @name Constructors & Destructor
71  //@{
72 
73  //! Constructor
75 
76  //! Destructor
78 
79  //@}
80 
81 
82  //! @name Multiscale PhysicalCoupling Implementation
83  //@{
84 
85  //! Setup the coupling variables number.
87 
88  //! Setup the coupling
89  void setupCoupling();
90 
91  //! Initialize the values of the coupling variables
93 
94  //! Compute the local coupling residuals vector
96 
97  //@}
98 
99 private:
100 
101  //! @name Unimplemented Methods
102  //@{
103 
105 
107 
108  //@}
109 
110 
111  //! @name Private Multiscale PhysicalCoupling Implementation
112  //@{
113 
114  //! Build the list of models affected by the perturbation of a local coupling variable
115  /*!
116  * @param localCouplingVariableID id of the perturbed local coupling variable
117  * @param perturbedModelsList list of models affected by the perturbation
118  */
119  void exportListOfPerturbedModels ( const UInt& localCouplingVariableID, multiscaleModelsContainer_Type& perturbedModelsList );
120 
121 
122  //! Insert constant coefficients into the Jacobian matrix
123  /*!
124  * @param jacobian the Jacobian matrix
125  */
127 
128  //! Insert the Jacobian coefficient(s) depending on a perturbation of the model, due to a specific variable (the column)
129  /*!
130  * @param jacobian the Jacobian matrix
131  * @param column the column related to the perturbed variable
132  * @param ID the global ID of the model which is perturbed by the variable
133  * @param solveLinearSystem a flag to which determine if the linear system has to be solved
134  */
135  void insertJacobianDeltaCoefficients ( multiscaleMatrix_Type& jacobian, const UInt& column, const UInt& ID, bool& solveLinearSystem );
136 
137  //@}
138 
139 };
140 
141 //! Factory create function
143 {
144  return new MultiscaleCouplingMeanNormalStressArea();
145 }
146 
147 } // Namespace Multiscale
148 } // Namespace LifeV
149 
150 #endif /* MultiscaleCouplingMeanNormalStressArea_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...
MultiscaleCouplingMeanNormalStressArea(const MultiscaleCouplingMeanNormalStressArea &coupling)
multiscaleCoupling_Type * createMultiscaleCouplingMeanNormalStressArea()
Factory create function.
MultiscaleCoupling multiscaleCoupling_Type
MultiscaleCouplingMeanNormalStressArea & operator=(const MultiscaleCouplingMeanNormalStressArea &coupling)
void updateInverseJacobian(const UInt &iQuadPt)
void exportListOfPerturbedModels(const UInt &localCouplingVariableID, multiscaleModelsContainer_Type &perturbedModelsList)
Build the list of models affected by the perturbation of a local coupling variable.
MatrixEpetra< Real > multiscaleMatrix_Type
std::vector< multiscaleModelPtr_Type > multiscaleModelsContainer_Type
MultiscaleCouplingMeanNormalStressArea - Mean normal stress with area coupling condition.
void computeCouplingResiduals()
Compute the local coupling residuals vector.
MultiscaleCouplingMeanNormalStress - Stress coupling condition.
void insertJacobianConstantCoefficients(multiscaleMatrix_Type &jacobian)
Insert constant coefficients into the Jacobian matrix.
uint32_type UInt
generic unsigned integer (used mainly for addressing)
Definition: LifeV.hpp:191
void initializeCouplingVariables()
Initialize the values of the coupling variables.