47 #include "lifev/core/LifeV.hpp" 48 #include "lifev/core/fem/BCHandler.hpp" 51 #include "lifev/fsi/solver/FSIMonolithicGE.hpp" 52 #include "lifev/fsi/solver/FSIMonolithicGI.hpp" 64 #define RCSUBCARING 20
66 #define RCSUBSUBCARING 90
68 #define LSSUBCARING 40
70 #define LSSUBSUBCARING 30
73 #define FLUIDINTERFACE 200
77 #define OUTLETWALLRINGIN 50
78 #define OUTLETWALLRINGOUT 51
80 #define INLETWALLRINGIN 60
81 #define INLETWALLRINGOUT 61
84 #define RCCAWALLRINGIN 80
85 #define RCCAWALLRINGOUT 81
87 #define RCSUBCAWALLRINGIN 20
88 #define RCSUBCAWALLRINGOUT 21
89 #define RCSUBSUBCAWALL 9
90 #define RCSUBSUBCAWALLRINGIN 90
91 #define RCSUBSUBCAWALLRINGOUT 91
93 #define LSSUBCAWALLRINGIN 40
94 #define LSSUBCAWALLRINGOUT 41
95 #define LSUBSUBCAWALL 3
96 #define LSSUBSUBCAWALLRINGIN 30
97 #define LSSUBSUBCAWALLRINGOUT 31
99 #define LCCAWALLRINGIN 70
100 #define LCCAWALLRINGOUT 70
101 #define SOLIDINTERFACE 200
102 #define OUTERWALL 210
143 typedef FSIOperator::fluid_Type fluid;
144 typedef FSIOperator::solid_Type solid;
146 FSIOperator::fluidBchandlerPtr_Type BCh_harmonicExtension (FSIOperator& _oper)
150 debugStream ( 10000 ) <<
"Boundary condition for the harmonic extension\n";
152 BCFunctionBase bcf (fZero);
154 FSISolver::fluidBchandlerPtr_Type BCh_he (
new FSIOperator::fluidBchandler_Type );
157 BCh_he->addBC (
"Base",
INLET, Essential, Full, bcf, 3);
159 if (_oper.data().method() ==
"monolithicGE")
161 debugStream (10000) <<
"FSIMonolithic GCE harmonic extension\n";
162 FSIMonolithicGE* MOper =
dynamic_cast<FSIMonolithicGE*> (&_oper);
163 MOper->setStructureDispToHarmonicExtension (_oper.lambdaFluidRepeated() );
165 *MOper->bcvStructureDispToHarmonicExtension(), 3);
172 FSIOperator::fluidBchandlerPtr_Type BCh_monolithicFlux()
176 FSIOperator::fluidBchandlerPtr_Type BCh_fluid (
new FSIOperator::fluidBchandler_Type );
178 BCFunctionBase flow_in (aortaFluxIn);
179 BCFunctionBase flow_3 (linearFlux3_);
180 BCFunctionBase flow_4 (linearFlux4);
181 BCFunctionBase flow_5 (linearFlux5);
182 BCFunctionBase flow_6 (linearFlux6_);
183 BCFunctionBase flow_7 (linearFlux7);
184 BCFunctionBase flow_8 (linearFlux8);
185 BCFunctionBase flow_9 (linearFlux9);
190 BCh_fluid->addBC (
"InFlow" ,
INLET, Flux, Normal, flow_in);
191 BCh_fluid->addBC (
"OutFlow" ,
OUTLET, Flux, Normal, flow_3);
194 BCh_fluid->addBC (
"Flow4" ,
LSUBCA, Flux, Normal, flow_4);
195 BCh_fluid->addBC (
"Flow7" ,
RCSUBCA, Flux, Normal, flow_7);
196 BCh_fluid->addBC (
"Flow6" ,
RCSUBSUBCA, Flux, Normal, flow_6);
197 BCh_fluid->addBC (
"Flow5" ,
RCCA, Flux, Normal, flow_5);
198 BCh_fluid->addBC (
"Flow8" ,
LCCA, Flux, Normal, flow_8);
199 BCh_fluid->addBC (
"Flow9" ,
LSUBSUBCA, Flux, Normal, flow_9);
204 FSIOperator::fluidBchandlerPtr_Type BCh_monolithicFluid (FSIOperator& _oper)
207 debugStream ( 10000 ) <<
"Boundary condition for the fluid\n";
209 if (! _oper.isFluid() )
211 return FSIOperator::fluidBchandlerPtr_Type();
214 FSIOperator::fluidBchandlerPtr_Type BCh_fluid (
new FSIOperator::fluidBchandler_Type );
216 BCFunctionBase bcf (fZero);
219 BCFunctionBase in_flow (aortaPhisPress);
221 BCFunctionBase out_flow (fZero);
229 FSIOperator::solidBchandlerPtr_Type BCh_monolithicSolid (FSIOperator& _oper)
233 if (! _oper.isSolid() )
235 return FSIOperator::solidBchandlerPtr_Type();
238 FSIOperator::solidBchandlerPtr_Type BCh_solid (
new FSIOperator::solidBchandler_Type );
240 BCFunctionBase bcf (fZero);
243 BCFunctionBase young (E);
246 _oper.setRobinOuterWall (bcf, young);
247 BCh_solid->addBC (
"OuterWall",
OUTERWALL, Robin, Normal, _oper.bcfRobinOuterWall() );
250 BCh_solid->addBC (
"Base",
INLET, Essential, Full, bcf, 3);