47 #include <lifev/one_d_fsi/function/OneDFSIFunctionSolverDefined.hpp> 48 #include <lifev/one_d_fsi/solver/OneDFSIData.hpp> 99 explicit OneDFSIBC (
const bcSide_Type& bcSide );
124 void applyBC (
const Real& time,
const Real& timeStep,
const solution_Type& solution,
125 const fluxPtr_Type& fluxPtr, vectorPtrContainer_Type& rhs );
133 void applyViscoelasticBC (
const fluxPtr_Type& fluxPtr, matrix_Type& matrix, vector_Type& rhs );
146 void setType (
const bcLine_Type& bcLine,
const bcType_Type& bcType )
148 M_bcType[bcLine] = bcType;
156 void setBCFunction (
const bcLine_Type& bcLine,
const bcFunction_Type& rhs )
158 M_bcFunction[bcLine] = rhs;
172 const bcType_Type&
type (
const bcLine_Type& bcLine )
const 174 return M_bcType.find ( bcLine )->second;
182 const bcFunction_Type&
bcFunction (
const bcLine_Type& bcLine )
const 184 return M_bcFunction.find ( bcLine )->second;
215 const container2D_Type& leftEigenvector1,
const container2D_Type& leftEigenvector2,
216 const UInt& dof, std::map<bcLine_Type, container2D_Type>& bcMatrix,
Real& bcRHS );
227 const container2D_Type& line2,
const container2D_Type& rhs )
const;
std::array< vectorPtr_Type, 2 > vectorPtrContainer_Type
void setType(const bcLine_Type &bcLine, const bcType_Type &bcType)
Set the type of boundary condition.
void applyBC(const Real &time, const Real &timeStep, const solution_Type &solution, const fluxPtr_Type &fluxPtr, vectorPtrContainer_Type &rhs)
Apply boundary conditions to the rhs of the Taylor-Galerkin problem.
void setBCFunction(const bcLine_Type &bcLine, const bcFunction_Type &rhs)
Set the boundary condition function.
std::map< bcLine_Type, bcFunction_Type > M_bcFunction
OneDFSIBC(const OneDFSIBC &bc)
Copy constructor.
void computeMatrixAndRHS(const Real &time, const Real &timeStep, const fluxPtr_Type &fluxPtr, const bcLine_Type &bcLine, const container2D_Type &leftEigenvector1, const container2D_Type &leftEigenvector2, const UInt &dof, std::map< bcLine_Type, container2D_Type > &bcMatrix, Real &bcRHS)
Compute the matrix and the RHS for the BC 2x2 linear system.
std::shared_ptr< flux_Type > fluxPtr_Type
linearSolver_Type::matrix_type matrix_Type
void updateInverseJacobian(const UInt &iQuadPt)
OneDFSIBC - Class featuring methods to handle boundary conditions.
OneDFSIFunction bcFunction_Type
OneDFSIFunctionSolverDefined bcFunctionSolverDefined_Type
const bcFunction_Type & bcFunction(const bcLine_Type &bcLine) const
Get the boundary condition function.
std::shared_ptr< bcFunction_Type > bcFunctionPtr_Type
void applyViscoelasticBC(const fluxPtr_Type &fluxPtr, matrix_Type &matrix, vector_Type &rhs)
Apply boundary conditions to the rhs of the viscoelastic problem.
double Real
Generic real data.
std::shared_ptr< solution_Type > solutionPtr_Type
const bcType_Type & type(const bcLine_Type &bcLine) const
Get the type of boundary condition.
std::shared_ptr< bcFunctionSolverDefined_Type > bcFunctionSolverDefinedPtr_Type
OneDFSIModelBCFunctionDefault - Base class for deriving specific 1D boundary functions.
std::shared_ptr< source_Type > sourcePtr_Type
container2D_Type solveLinearSystem(const container2D_Type &line1, const container2D_Type &line2, const container2D_Type &rhs) const
Solve a 2x2 linear system by the Cramer method (for the boundary conditions)
linearSolver_Type::vector_type vector_Type
std::map< std::string, vectorPtr_Type > solution_Type
virtual ~OneDFSIBC()
Destructor.
std::map< bcLine_Type, bcType_Type > M_bcType
OneDFSIBC(const bcSide_Type &bcSide)
Constructor.
uint32_type UInt
generic unsigned integer (used mainly for addressing)
OneDFSIBC & operator=(const OneDFSIBC &bc)