46 #include "lifev/core/LifeV.hpp" 47 #include "lifev/core/fem/BCHandler.hpp" 50 #include "lifev/fsi/solver/FSIMonolithicGE.hpp" 51 #include "lifev/fsi/solver/FSIMonolithicGI.hpp" 55 #define FLUIDINTERFACE 1
56 #define SOLIDINTERFACE 1
67 Real fZero (
const Real& ,
const Real& ,
const Real& ,
const Real& ,
const ID& )
72 Real u2normal (
const Real& ,
const Real& ,
const Real& ,
const Real& ,
const ID& )
77 typedef FSIOperator::fluid_Type fluid;
78 typedef FSIOperator::solid_Type solid;
80 FSIOperator::fluidBchandlerPtr_Type BCh_harmonicExtension (FSIOperator& _oper)
84 debugStream ( 10000 ) <<
"Boundary condition for the harmonic extension\n";
86 BCFunctionBase bcf (fZero);
88 FSISolver::fluidBchandlerPtr_Type BCh_he (
new FSIOperator::fluidBchandler_Type );
90 std::vector<ID> componentsVector (0);
91 componentsVector.push_back (2);
92 BCh_he->addBC (
"Base",
INLET, Essential, Component, bcf, componentsVector);
93 BCh_he->addBC (
"Top",
OUTLET, Essential, Component, bcf, componentsVector);
95 if (_oper.data().method() ==
"monolithicGE")
97 debugStream (10000) <<
"FSIMonolithic GCE harmonic extension\n";
98 FSIMonolithicGE* MOper =
dynamic_cast<FSIMonolithicGE*> (&_oper);
99 MOper->setStructureDispToHarmonicExtension (_oper.lambdaFluidRepeated() );
101 *MOper->bcvStructureDispToHarmonicExtension(), 3);
108 FSIOperator::fluidBchandlerPtr_Type BCh_monolithicFluid (FSIOperator& _oper)
112 if (! _oper.isFluid() )
114 return FSIOperator::fluidBchandlerPtr_Type();
117 FSIOperator::fluidBchandlerPtr_Type BCh_fluid (
new FSIOperator::fluidBchandler_Type );
119 BCFunctionBase bcf (fZero);
120 BCFunctionBase in_flow (u2normal);
122 BCh_fluid->addBC (
"InFlow" ,
INLET, Natural, Normal, in_flow);
127 FSIOperator::solidBchandlerPtr_Type BCh_monolithicSolid (FSIOperator& _oper)
131 if (! _oper.isSolid() )
133 return FSIOperator::solidBchandlerPtr_Type();
136 FSIOperator::solidBchandlerPtr_Type BCh_solid (
new FSIOperator::solidBchandler_Type );
138 BCFunctionBase bcf (fZero);
140 std::vector<ID> componentsVector (0);
141 componentsVector.push_back (2);
142 BCh_solid->addBC (
"Base",
INLET, Essential, Component, bcf, componentsVector);
143 BCh_solid->addBC (
"Top",
OUTLET, Essential, Component, bcf, componentsVector);
148 FSIOperator::fluidBchandlerPtr_Type BCh_monolithicFlux (
bool )
150 FSIOperator::fluidBchandlerPtr_Type BCh_fluid (
new FSIOperator::fluidBchandler_Type );