コード例 #1
0
ファイル: boundaryConditions.hpp プロジェクト: chknipp/lifev
FSIOperator::solidBchandlerPtr_Type BCh_monolithicSolid (FSIOperator& _oper)
{

    if (! _oper.isSolid() )
    {
        return FSIOperator::solidBchandlerPtr_Type();
    }

    // Boundary conditions for the solid displacement
    debugStream ( 10000 ) << "Boundary condition for the solid\n";
    FSIOperator::solidBchandlerPtr_Type BCh_solid ( new FSIOperator::solidBchandler_Type );

    BCFunctionBase bcf (fZero);

    BCh_solid->addBC ("Top",   RING, Essential, Full, bcf,  3);
    BCh_solid->addBC ("Base",  RING2, Essential, Full, bcf,  3);

    aortaVelIn::S_timestep = _oper.dataFluid()->dataTime()->timeStep();
    BCFunctionBase hyd (fZero);
    BCFunctionBase young (E);
    //robin condition on the outer wall
    _oper.setRobinOuterWall (hyd, young);
    BCh_solid->addBC ("OuterWall", OUTERWALL, Robin, Normal, _oper.bcfRobinOuterWall() );

    return BCh_solid;
}
コード例 #2
0
FSIOperator::solidBchandlerPtr_Type BCh_solid (FSIOperator& _oper)
{

    if (! _oper.isSolid() )
    {
        return FSIOperator::solidBchandlerPtr_Type();
    }

    // Boundary conditions for the solid displacement
    debugStream ( 10000 ) << "Boundary condition for the solid\n";
    FSIOperator::solidBchandlerPtr_Type BCh_solid ( new FSIOperator::solidBchandler_Type );

    BCFunctionBase bcf (fZero);


    BCh_solid->addBC ("Top",       3, Essential, Full, bcf,  3);
    BCh_solid->addBC ("Base",      2, Essential, Full, bcf,  3);
    //BCh_solid->addBC("EdgesIn",    20, EssentialVertices, Full, bcf,  3);

    std::vector<ID> zComp (1);
    zComp[0] = 3;
    //     debugStream(10000) << "SP harmonic extension\n";

    if (_oper.data().method() == "steklovPoincare")
    {
        //         steklovPoincare *SPOper = dynamic_cast<steklovPoincare *>(&_oper);
        //         SPOper->setSolidInterfaceDisp((LifeV::Vector&) _oper.displacement());

        //         BCh_solid->addBC("Interface", 1, Essential, Full,
        //                          *SPOper->bcvSolidInterfaceDisp(), 3);
    }
    else if (_oper.data().method() == "exactJacobian")
    {
        FSIExactJacobian*  EJOper = dynamic_cast<FSIExactJacobian*> (&_oper);
        EJOper->setFluidLoadToStructure (_oper.sigmaSolidRepeated() );

        BCh_solid->addBC ("Interface", SOLIDINTERFACE, Natural,   Full,
                          *EJOper->bcvFluidLoadToStructure(), 3);
    }
    else if (_oper.data().method() == "fixedPoint")
    {
        FSIFixedPoint* FPOper = dynamic_cast<FSIFixedPoint*> (&_oper);

        FPOper->setFluidLoadToStructure (_oper.sigmaSolidRepeated() );

        BCh_solid->addBC ("Interface", FLUIDINTERFACE, Natural, Full,
                          *FPOper->bcvFluidLoadToStructure(), 3);
    }

    return BCh_solid;
}
コード例 #3
0
ファイル: boundaryConditions.hpp プロジェクト: chknipp/lifev
FSIOperator::solidBchandlerPtr_Type BCh_monolithicSolid (FSIOperator& _oper)
{

    if (! _oper.isSolid() )
    {
        return FSIOperator::solidBchandlerPtr_Type();
    }

    // Boundary conditions for the solid displacement
    debugStream ( 10000 ) << "Boundary condition for the solid\n";
    FSIOperator::solidBchandlerPtr_Type BCh_solid ( new FSIOperator::solidBchandler_Type );

    BCFunctionBase bcf (fZero);

    //Inlets & Outlets
    BCh_solid->addBC ("BORDERS",   INLETWALL, Essential, Full, bcf,  3);
    BCh_solid->addBC ("BORDERS-RIN",   INLETWALL_INTRING, Essential, Full, bcf,  3);
    BCh_solid->addBC ("BORDERS-ROUT",   INLETWALL_OUTRING, Essential, Full, bcf,  3);
    BCh_solid->addBC ("BORDERS",   OUTLETWALL, Essential, Full, bcf,  3);
    BCh_solid->addBC ("BORDERS-rin",   OUTLETWALL_INTRING, Essential, Full, bcf,  3);
    BCh_solid->addBC ("BORDERS-rout",   OUTLETWALL_OUTRING, Essential, Full, bcf,  3);

    //aortaVelIn::S_timestep = _oper.dataFluid()->dataTime()->timeStep();


    //Robin BC
    BCFunctionBase hyd (fZero);
    BCFunctionBase young (E);
    //robin condition on the outer wall
    _oper.setRobinOuterWall (hyd, young);
    //BCh_solid->addBC("OuterWall", OUTERWALL, Robin, Normal, _oper.bcfRobinOuterWall());


    //First try: Homogeneous Neumann
    BCh_solid->addBC ("OuterWall", OUTERWALL, Natural, Normal, bcf);

    return BCh_solid;
}