FSIOperator::fluidBchandlerPtr_Type BCh_monolithicFluid (FSIOperator& _oper, bool const& isOpen = true) { // Boundary conditions for the fluid velocity debugStream ( 10000 ) << "Boundary condition for the fluid\n"; if (! _oper.isFluid() ) { return FSIOperator::fluidBchandlerPtr_Type(); } FSIOperator::fluidBchandlerPtr_Type BCh_fluid ( new FSIOperator::fluidBchandler_Type ); BCFunctionBase bcf (fZero); BCFunctionBase in_flow (/*uInterpolated*/u2normal/*aortaPhisPress*/); // BCFunctionBase out_flow (fZero); //BCFunctionBase in_flow (LumpedHeart::outPressure); BCFunctionBase out_press (FlowConditions::outPressure0); BCFunctionBase bcfw0 (w0); // if(!isOpen) // BCh_fluid->addBC("InFlow" , INLET, Natural, Full, bcf,3); BCh_fluid->addBC ("OutFlow", OUTLET, Natural, Normal, out_press); //BCh_fluid->addBC("OutFlow", INOUTEDGE, EssentialEdges, Full, bcf,3); return BCh_fluid; }
FSIOperator::fluidBchandlerPtr_Type BCh_monolithicFluid (FSIOperator& _oper, bool const& /*isOpen=true*/) { // Boundary conditions for the fluid velocity debugStream ( 10000 ) << "Boundary condition for the fluid\n"; if (! _oper.isFluid() ) { return FSIOperator::fluidBchandlerPtr_Type(); } FSIOperator::fluidBchandlerPtr_Type BCh_fluid ( new FSIOperator::fluidBchandler_Type ); BCFunctionBase bcf (fZero); BCFunctionBase in_flow (uInterpolated); // BCFunctionBase out_flow (fZero); BCFunctionBase out_press3 (FlowConditions::outPressure0); BCFunctionBase InletVect (aneurismFluxInVectorial); //BCFunctionBase bcfw0 (w0); //Inlets BCh_fluid->addBC ("InFlow" , INLET, EssentialVertices, Full, InletVect, 3); //Outlets //Absorbing BC seemed not to work //Absorbing BC on outlet 2and3 caused instabilities BCh_fluid->addBC ("out3", OUTLET, Natural, Normal, out_press3); //BCh_fluid->addBC("out3", OUTLET, Natural, Normal, bcf); return BCh_fluid; }
FSIOperator::fluidBchandlerPtr_Type BCh_fluid (FSIOperator& _oper) { // Boundary conditions for the fluid velocity debugStream ( 10000 ) << "Boundary condition for the fluid\n"; if (! _oper.isFluid() ) { return FSIOperator::fluidBchandlerPtr_Type(); } FSIOperator::fluidBchandlerPtr_Type BCh_fluid ( new FSIOperator::fluidBchandler_Type ); BCFunctionBase bcf (fZero); BCFunctionBase in_flow (u2); // BCFunctionBase in_flow_flux (PhysFlux); BCFunctionBase out_flow (fZero); #ifdef FLUX BCh_fluid->addBC ("InFlow" , 2, Flux, Normal, in_flow, 3); #else BCh_fluid->addBC ("InFlow" , 2, Natural, Full, in_flow, 3); #endif BCh_fluid->addBC ("OutFlow", 3, Natural, Full, out_flow, 3); //BCh_fluid->addBC("EdgesIn", 20, EssentialVertices, Full, bcf, 3); // BCh_fluid->showMe(); _oper.setStructureToFluid (_oper.veloFluidMesh() ); // _oper.setHarmonicExtensionVelToFluid(_oper.veloFluidMesh()); if (_oper.data().algorithm() == "RobinNeumann") { // _oper.setAlphafbcf(alpha); // if alpha is bcFunction define in ud_function.cpp // assert(false); _oper.setSolidLoadToStructure ( _oper.minusSigmaFluidRepeated() ); _oper.setStructureToFluidParameters(); BCh_fluid->addBC ("Interface", FLUIDINTERFACE, Robin, Full, *_oper.bcvStructureToFluid(), 3); BCh_fluid->addBC ("Interface", FLUIDINTERFACE, Natural, Full, *_oper.bcvSolidLoadToStructure(), 3); } else { BCh_fluid->addBC ("Interface", FLUIDINTERFACE, Essential, Full, *_oper.bcvStructureToFluid(), 3); } return BCh_fluid; }
FSIOperator::fluidBchandlerPtr_Type BCh_monolithicFlux (bool /*isOpen=true*/) { FSIOperator::fluidBchandlerPtr_Type BCh_fluid ( new FSIOperator::fluidBchandler_Type ); BCFunctionBase flow_3 (fluxFunction); BCFunctionBase bcf (fZero); //uncomment to use fluxes // BCh_fluid->addBC("InFlow" , INLET, Flux, Normal, flow_3); // if(!isOpen) // BCh_fluid->addBC("InFlow" , INLET, Flux, Normal, bcf); //uncomment to use fluxes BCh_fluid->addBC ("InFlow" , INLET, Flux, Normal, flow_3); return BCh_fluid; }