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> 59 #define FLUIDINTERFACE 1
60 #define SOLIDINTERFACE 1
70 typedef FSIOperator::fluid_Type fluid;
71 typedef FSIOperator::solid_Type solid;
73 FSIOperator::fluidBchandlerPtr_Type BCh_harmonicExtension (FSIOperator& _oper)
77 debugStream ( 10000
) <<
"Boundary condition for the harmonic extension\n";
79 BCFunctionBase bcf (fZero);
81 FSISolver::fluidBchandlerPtr_Type BCh_he (
new FSIOperator::fluidBchandler_Type );
83 BCh_he->addBC (
"Edges",
INOUTEDGE, Essential, Full, bcf, 3);
84 BCh_he->addBC (
"Edges",
INEDGE, Essential, Full, bcf, 3);
85 BCh_he->addBC (
"Base",
INLET, Essential, Full, bcf, 3);
87 if (_oper.data().method() ==
"monolithicGE")
89 debugStream (10000
) <<
"FSIMonolithic GCE harmonic extension\n";
90 FSIMonolithicGE* MOper =
dynamic_cast<FSIMonolithicGE*> (&_oper);
91 MOper->setStructureDispToHarmonicExtension (_oper.lambdaFluidRepeated() );
93 *MOper->bcvStructureDispToHarmonicExtension(), 3);
95 else if (_oper.data().method() ==
"monolithicGI")
104 FSIOperator::fluidBchandlerPtr_Type BCh_monolithicFlux (
bool )
106 FSIOperator::fluidBchandlerPtr_Type BCh_fluid (
new FSIOperator::fluidBchandler_Type );
108 BCFunctionBase flow_3 (fluxFunction);
109 BCFunctionBase bcf (fZero);
117 BCh_fluid->addBC (
"InFlow" ,
INLET, Flux, Normal, flow_3);
125 debugStream ( 10000
) <<
"Boundary condition for the fluid\n";
127 if (! _oper.isFluid() )
129 return FSIOperator::fluidBchandlerPtr_Type();
132 FSIOperator::fluidBchandlerPtr_Type BCh_fluid (
new FSIOperator::fluidBchandler_Type );
134 BCFunctionBase bcf (fZero);
135 BCFunctionBase in_flow (u2normal);
139 BCFunctionBase out_press (FlowConditions::outPressure0);
140 BCFunctionBase bcfw0 (w0);
146 BCh_fluid->addBC (
"OutFlow",
OUTLET, Natural, Normal, out_press);
152 FSIOperator::solidBchandlerPtr_Type BCh_monolithicSolid (FSIOperator& _oper)
155 if (! _oper.isSolid() )
157 return FSIOperator::solidBchandlerPtr_Type();
161 debugStream ( 10000
) <<
"Boundary condition for the solid\n";
162 FSIOperator::solidBchandlerPtr_Type BCh_solid (
new FSIOperator::solidBchandler_Type );
164 BCFunctionBase bcf (fZero);
166 BCh_solid->addBC (
"Top",
RING, Essential, Full, bcf, 3);
167 BCh_solid->addBC (
"Base",
RING2, Essential, Full, bcf, 3);
169 aortaVelIn::S_timestep = _oper.dataFluid()->dataTime()->timeStep();
170 BCFunctionBase hyd (fZero);
171 BCFunctionBase young (E);
173 _oper.setRobinOuterWall (hyd, young);
174 BCh_solid->addBC (
"OuterWall",
OUTERWALL, Robin, Normal, _oper.bcfRobinOuterWall() );
void assignFunction(bcBase_Type &base)
Assign the function to the base of the BCHandler.
NdebugStream noDebugStream(int=0, NdebugStream::stprintf=&printf)
FSIOperator::fluidBchandlerPtr_Type BCh_monolithicFluid(FSIOperator &_oper, bool const &isOpen=true)