37 #include <lifev/core/LifeV.hpp> 65 template<
typename MeshType,
typename SolverType,
typename MapType ,
UInt SpaceDim,
UInt FieldDim>
66 OseenSolver<MeshType, SolverType, MapType , SpaceDim, FieldDim>::
67 OseenSolver ( boost::shared_ptr<data_Type> dataType,
68 FESpace<mesh_Type, MapEpetra>& velocityFESpace,
69 FESpace<mesh_Type, MapEpetra>& pressureFESpace,
70 boost::shared_ptr<Epetra_Comm>& communicator,
71 const Int lagrangeMultiplier ) :
72 M_oseenData ( dataType ),
73 M_velocityFESpace ( velocityFESpace ),
74 M_pressureFESpace ( pressureFESpace ),
75 M_Displayer ( communicator ),
76 M_fluxMap ( lagrangeMultiplier, communicator),
77 M_localMap ( M_velocityFESpace.map() + M_pressureFESpace.map() + lagrangeMultiplier),
78 M_velocityMatrixMass ( ),
79 M_pressureMatrixMass ( ),
82 M_matrixStabilization ( ),
83 M_rightHandSideNoBC ( ),
84 M_solution (
new vector_Type ( M_localMap ) ),
85 M_residual (
new vector_Type (M_localMap ) ),
86 M_linearSolver (
new linearSolver_Type (communicator) ),
88 M_postProcessing (
new PostProcessingBoundary<mesh_Type> ( M_velocityFESpace.mesh(),
89 &M_velocityFESpace.feBd(),
90 &M_velocityFESpace.dof(),
91 &M_pressureFESpace.feBd(),
92 &M_pressureFESpace.dof(),
94 M_stabilization (
false ),
95 M_reuseStabilization (
false ),
96 M_resetStabilization (
false ),
97 M_iterReuseStabilization ( -1 ),
105 M_betaFunction ( 0 ),
106 M_divBetaUv (
false ),
107 M_stiffStrain (
false ),
108 M_diagonalize (
false ),
110 M_recomputeMatrix (
false ),
111 M_elementMatrixStiff ( M_velocityFESpace.fe().nbFEDof(), velocityFESpace.fieldDim(), velocityFESpace.fieldDim() ),
112 M_elementMatrixMass ( M_velocityFESpace.fe().nbFEDof(), velocityFESpace.fieldDim(), velocityFESpace.fieldDim() ),
113 M_elementMatrixPreconditioner ( M_pressureFESpace.fe().nbFEDof(), 1, 1 ),
114 M_elementMatrixDivergence ( M_pressureFESpace.fe().nbFEDof(), 1, 0,
115 M_velocityFESpace.fe().nbFEDof(), 0, velocityFESpace.fieldDim() ),
116 M_elementMatrixGradient ( M_velocityFESpace.fe().nbFEDof(), velocityFESpace.fieldDim(), 0,
117 M_pressureFESpace.fe().nbFEDof(), 0, 1 ),
118 M_elementRightHandSide ( M_velocityFESpace.fe().nbFEDof(), velocityFESpace.fieldDim() ),
119 M_wLoc ( M_velocityFESpace.fe().nbFEDof(), velocityFESpace.fieldDim() ),
120 M_uLoc ( M_velocityFESpace.fe().nbFEDof(), velocityFESpace.fieldDim() ),
121 M_un (
new vector_Type (M_localMap) ),
122 M_velocityPreviousTimestep (
new vector_Type (M_velocityFESpace.map()) ),
123 M_pressurePreviousTimestep (
new vector_Type (M_pressureFESpace.map()) ),
124 M_pressureExtrapolated (
new vector_Type (M_pressureFESpace.map() ) ),
125 M_fespaceUETA (
new ETFESpace_velocity(M_velocityFESpace.mesh(), &(M_velocityFESpace.refFE()), communicator)),
126 M_fespacePETA (
new ETFESpace_pressure(M_pressureFESpace.mesh(), &(M_pressureFESpace.refFE()), communicator)),
127 M_supgStabilization (
new StabilizationSUPG<mesh_Type, MapEpetra, SpaceDim>(velocityFESpace, pressureFESpace)),
128 M_supgVmsStabilization (
new StabilizationSUPGVMS<mesh_Type, MapEpetra, SpaceDim>(velocityFESpace, pressureFESpace)),
129 M_VMSLESStabilization (
new StabilizationVMSLES<mesh_Type, MapEpetra, SpaceDim>(velocityFESpace, pressureFESpace))
134 M_ipStabilization.setFeSpaceVelocity (M_velocityFESpace);
135 M_ipStabilization.setViscosity (M_oseenData->viscosity() );
197 ASSERT(0!=0,
"ENTERING IN THE MONOLITHIC CONSTRUCTOR");
679 ASSERT(0!=0,
"If really needed, please code it using ET");
1243 #ifdef HAVE_LIFEV_DEBUG 1244 M_Displayer.
leaderPrint (
" !!! WARNING - OseenSolver::meanNormalStress( flag, bcHandler, solution) is returning an approximation \n" );
1502 ASSERT ( std::fabs ( ones * ( M_pressureMatrixMass * x ) ) < 1e-9 ,
"after removeMean the mean pressure should be zero!");
void updateInverseJacobian(const UInt &iQuadPt)
VectorSmall< 3 > return_Type
double Real
Generic real data.
buildVector(const buildVector &)
return_Type operator()(Real a, Real b, Real c)
uint32_type UInt
generic unsigned integer (used mainly for addressing)