LifeV
FSIMonolithic Class Referenceabstract

FSIMonolithic.hpp pure virtual class containing the core methods of the FSIMonolithic FSI solver. More...

#include <FSIMonolithic.hpp>

+ Inheritance diagram for FSIMonolithic:
+ Collaboration diagram for FSIMonolithic:

Typedefs

typedef FSIOperator super_Type
 
typedef FSIOperator::fluid_Type::matrix_Type matrix_Type
 
typedef std::shared_ptr< matrix_TypematrixPtr_Type
 
typedef super_Type::solution_Type solution_Type
 
typedef super_Type::solutionPtr_Type solutionPtr_Type
 
typedef MonolithicBlock prec_Type
 
typedef std::shared_ptr< prec_TypeprecPtr_Type
 
typedef MonolithicBlockMatrix blockMatrix_Type
 
typedef std::shared_ptr< blockMatrix_TypeblockMatrixPtr_Type
 
typedef FactorySingleton< Factory< FSIMonolithic, std::string > > factory_Type
 
typedef SolverAztecOO solver_Type
 
typedef MatrixEpetraStructured< RealmatrixBlock_Type
 
typedef MatrixEpetraStructuredView< RealmatrixBlockView_Type
 
typedef std::shared_ptr< matrixBlock_TypematrixBlockPtr_Type
 

Constructors, Destructor

 FSIMonolithic ()
 
 ~FSIMonolithic ()
 

Public Setup Methods

void setupFEspace ()
 create FEspace More...
 
virtual void setupDOF (void)
 sets the interface map between the fluid and solid meshes (non scalable, do not use for massively parallel simulations) More...
 
void setupDOF (meshFilter_Type &filterMesh)
 reads the interface map between the fluid and solid meshes from file. More...
 
virtual void setupSystem ()
 sets the parameters from data file More...
 
virtual void setup (const GetPot &dataFile)
 stores the data file into a member More...
 
virtual void setupFluidSolid ()
 builds the global Epetra map More...
 
virtual void setupFluidSolid (UInt const fluxes)
 builds the global Epetra map More...
 

Public Methods

void monolithicToInterface (vector_Type &lambdaSolid, const vector_Type &sol)
 Transfers a vector to the interface. More...
 
void monolithicToX (const vector_Type &disp, vector_Type &dispFluid, MapEpetra &map, UInt offset=(UInt) 0)
 Transfers a vector to a subdomain. More...
 
void buildSystem ()
 builds the constant part of the monolithic matrix More...
 
void mergeBCHandlers ()
 Merges the flux boundary conditions into the fluid BCHandler. More...
 
void computeFluidNormals (vector_Type &normals)
 Computes the normals to the fluid domain. More...
 
virtual void evalResidual (vector_Type &res, const vector_Type &sol, const UInt iter)=0
 Evaluates the nonlinear residual. More...
 
virtual void solveJac (vector_Type &muk, const vector_Type &res, const Real linearRelTol)
 solves the Jacobian system More...
 
virtual void updateSystem ()
 updates the meshmotion, advances of a time step More...
 
void enableStressComputation (UInt flag)
 activates the computation of the wall stress on the boundary with a specified flag. More...
 
vectorPtr_Type computeStress ()
 Computes the stress on the coupling boundary (the traction vector) More...
 

Set Methods

precPtr_TypeprecPtrView ()
 returns a non-const pointer to the preconditioner. Can be used either as a setter or a getter. More...
 
blockMatrixPtr_TypeoperatorPtrView ()
 returns a non-const pointer to the preconditioner. Can be used either as a setter or a getter. More...
 
virtual void setSolidBC (const fluidBchandlerPtr_Type &bc_solid)
 sets the solid BCHandle More...
 
void setFluidBC (const fluidBchandlerPtr_Type &bc_fluid)
 initializes the solution by reference (through a shared_ptr) More...
 
UInt dimInterface () const
 get the total dimension of the FS interface More...
 
UInt offset () const
 Returns true if CE of FI methods are used, false otherwise (GCE) More...
 
void exportSolidDisplacement (vector_Type &solidDisplacement)
 Get the solid displacement from the solution. More...
 
void exportSolidVelocity (vector_Type &solidVelocity)
 Get the solid velocity. More...
 
void exportSolidAcceleration (vector_Type &solidAcceleration)
 Get the solid accelration. More...
 
void exportFluidVelocity (vector_Type &fluidVelocity)
 Export the fluid velocity by copying it to an external vector. More...
 
void exportFluidPressure (vector_Type &fluidPressure)
 Export the fluid pressure by copying it to an external vector. More...
 
void exportFluidVelocityAndPressure (vector_Type &fluidVelocityAndPressure)
 Gets the fluid and pressure. More...
 
virtual std::shared_ptr< MapEpetra > & couplingVariableMap ()
 Returns the monolithic map. More...
 
virtual const vector_Typesolution () const =0
 get the solution vector More...
 
virtual void updateSolution (const vector_Type &solution)
 Update the solution after NonLinearRichardson is called. More...
 
void updateRHS ()
 Updates the right hand side. More...
 
void setVectorInStencils (const vectorPtr_Type &vel, const vectorPtr_Type &pressure, const vectorPtr_Type &solidDisp, const UInt iter)
 Set vectors for restart. More...
 
void setFluidVectorInStencil (const vectorPtr_Type &vel, const vectorPtr_Type &pressure, const UInt iter)
 
void setSolidVectorInStencil (const vectorPtr_Type &solidDisp, const UInt iter)
 
virtual void setALEVectorInStencil (const vectorPtr_Type &fluidDisp, const UInt iter, const bool lastVector)=0
 
void finalizeRestart ()
 
void initializeMonolithicOperator (std::vector< vectorPtr_Type > u0, std::vector< vectorPtr_Type > ds0, std::vector< vectorPtr_Type > df0)
 

Protected methods

virtual void createOperator (std::string &operType)=0
 pure virtual: creates the operator (either of type FSIMonolithicGI or FSIMonolithicGE) More...
 
void iterateMonolithic (const vector_Type &rhs, vector_Type &step)
 solves the monolithic system, once a solver, a preconditioner and a rhs have been defined. More...
 
void couplingRhs (vectorPtr_Type rhs)
 adds the part due to coupling to the rhs More...
 
void evalResidual (const vector_Type &sol, const vectorPtr_Type &rhs, vector_Type &res, bool diagonalScaling=false)
 evaluates the linear residual More...
 
bool recomputePrec ()
 says if the preconditioner will be recomputed More...
 
void updateSolidSystem (vectorPtr_Type &rhsFluidCoupling)
 updates the rhs of the solid block. More...
 
void diagonalScale (vector_Type &rhs, matrixPtr_Type matrFull)
 scales matrix and rhs More...
 
void solidInit (std::string const &dOrder)
 Constructs the solid FESpace. More...
 
void variablesInit (std::string const &dOrder)
 Constructs the solid FESpace and initializes the coupling variables at the interface. More...
 
virtual void setupBlockPrec ()
 
void assembleSolidBlock (UInt iter, const vector_Type &solution)
 assembles the solid problem (the matrix and the rhs due to the time derivative) More...
 
void assembleFluidBlock (UInt iter, const vector_Type &solution)
 assembles the fluid problem (the matrix and the rhs due to the time derivative) More...
 
void checkIfChangedFluxBC (precPtr_Type oper)
 Checks if the flux bcs changed during the simulation, e.g. More...
 

Protected attributes

std::shared_ptr< MapEpetraM_monolithicMap
 
std::shared_ptr< MapEpetraM_interfaceMap
 
std::shared_ptr< vector_TypeM_beta
 the solid interface map More...
 
std::shared_ptr< MonolithicBlockMatrixM_monolithicMatrix
 
precPtr_Type M_precPtr
 
std::shared_ptr< vector_TypeM_rhsFull
 
fluidBchandlerPtr_Type M_BCh_flux
 
solidBchandlerPtr_Type M_BChWS
 
BCFunctionRobin M_bcfWs
 
UInt M_offset
 
UInt M_solidAndFluidDim
 
FSIOperator::fluid_Type::matrixPtr_Type M_fluidBlock
 
matrixPtr_Type M_solidBlockPrec
 
matrixPtr_Type M_robinCoupling
 
matrixPtr_Type M_boundaryMass
 
std::shared_ptr< solver_TypeM_linearSolver
 
std::shared_ptr< vector_TypeM_numerationInterface
 
std::vector< fluidBchandlerPtr_TypeM_BChs
 
std::vector< std::shared_ptr< FESpace< mesh_Type, MapEpetra > > > M_FESpaces
 
bool M_diagonalScale
 
bool M_reusePrec
 
bool M_resetPrec
 
Int M_maxIterSolver
 
bool M_restarts
 

Private attributes

operator $P^{-1}AA^TP^{-T}$, where P is the preconditioner and A is the monolithic matrix

std::shared_ptr< ComposedOperator< Epetra_Operator > > M_preconditionedSymmetrizedMatrix
 
std::shared_ptr< vector_TypeM_stress
 
UInt M_fluxes
 
std::vector< bcName_TypeM_BCFluxNames
 
std::vector< UIntM_fluxOffset
 

Additional Inherited Members

- Public Types inherited from FSIOperator
typedef RegionMesh< LinearTetramesh_Type
 
typedef ExporterHDF5Mesh3D< mesh_TypemeshFilter_Type
 
typedef OseenSolverShapeDerivative< mesh_Typefluid_Type
 
typedef StructuralOperator< mesh_Typesolid_Type
 
typedef HarmonicExtensionSolver< mesh_TypemeshMotion_Type
 
typedef OseenSolverShapeDerivative< mesh_TypefluidLin_Type
 
typedef StructuralOperator< mesh_TypesolidLin_Type
 
typedef std::shared_ptr< fluid_TypefluidPtr_Type
 
typedef std::shared_ptr< solid_TypesolidPtr_Type
 
typedef std::shared_ptr< meshMotion_TypemeshMotionPtr_Type
 
typedef std::shared_ptr< fluidLin_TypefluidLinPtr_Type
 
typedef std::shared_ptr< solidLin_TypesolidLinPtr_Type
 
typedef fluid_Type::vector_Type vector_Type
 
typedef std::shared_ptr< vector_TypevectorPtr_Type
 
typedef vector_Type solution_Type
 
typedef std::shared_ptr< solution_TypesolutionPtr_Type
 
typedef fluid_Type::source_Type fluidSource_Type
 
typedef solid_Type::source_Type solidSource_Type
 
typedef std::function< Real(const Real &, const Real &, const Real &, const Real &, const ID &) > function_Type
 
typedef Real(* bcFunction_Type) (const Real &, const Real &, const Real &, const Real &, const ID &)
 
typedef std::shared_ptr< DOFInterface3Dto3DdofInterface3DPtr_Type
 
typedef std::shared_ptr< DOFInterface3Dto2DdofInterface2DPtr_Type
 
typedef std::shared_ptr< BCVectorInterfacebcVectorInterfacePtr_Type
 
typedef fluid_Type::bcHandlerPtr_Type fluidBchandlerPtr_Type
 
typedef fluid_Type::bcHandler_Type fluidBchandler_Type
 
typedef BCHandler solidBchandler_Type
 
typedef std::shared_ptr< solidBchandler_TypesolidBchandlerPtr_Type
 
typedef FSIData data_Type
 
typedef std::shared_ptr< data_TypedataPtr_Type
 
typedef std::map< ID, ID >::const_iterator iterator_Type
 
typedef FactorySingleton< Factory< FSIOperator, std::string > > FSIFactory_Type
 
typedef Displayer::commPtr_Type commPtr_Type
 
typedef GetPot dataFile_Type
 
typedef std::shared_ptr< dataFile_TypedataFilePtr_Type
 
- Public Member Functions inherited from FSIOperator
 FSIOperator ()
 
virtual ~FSIOperator ()
 
virtual void setDataFile (const dataFile_Type &data)
 initializes the GetPot data file More...
 
virtual void partitionMeshes ()
 partitions the meshes for the fluid and the structure More...
 
void partitionMeshes (meshFilter_Type &fluidMeshFilter, meshFilter_Type &solidMeshFilter)
 reads the meshes already partitioned for the fluid and the structure More...
 
void couplingVariableExtrap ()
 Extrapolates an approximation of the solution. More...
 
virtual void initialize (fluid_Type::function_Type const &u0, fluid_Type::function_Type const &p0, solid_Type::function const &d0, solid_Type::function const &w0, fluid_Type::function_Type const &df0)
 Initializes all the quantities using functions. More...
 
virtual void iterateMesh (const vector_Type &)
 
virtual void setupBDF (const vector_Type &)
 
virtual void applyBoundaryConditions ()
 
void initializeTimeAdvance (const std::vector< vectorPtr_Type > &initialFluidVel, const std::vector< vectorPtr_Type > &initialSolidDisp, const std::vector< vectorPtr_Type > &initialFluiDisp)
 Initializes the TimeAdvance scheme which should handle the fluid time discretization, solid and move mesh. More...
 
void initializeFluid (const vector_Type &velAndPressure, const vector_Type &displacement)
 initializes the fluid solver with vectors More...
 
void initializeSolid (vectorPtr_Type displacement, vectorPtr_Type)
 initializes the solid solver with vectors More...
 
void moveMesh (const vector_Type &disp)
 moves the mesh using the solution of the harmonic extension equation More...
 
void createInterfaceMaps (std::map< ID, ID > const &locDofMap)
 Creates the Epetra maps for the interface. More...
 
void transferFluidOnInterface (const vector_Type &_vec1, vector_Type &_vec2)
 Method to import an VectorEpetra defined on the fluid map (i.e. with the fluid numeration of the dofs) to the interface. More...
 
void transferSolidOnFluid (const vector_Type &_vec1, vector_Type &_vec2)
 
void transferSolidOnInterface (const vector_Type &_vec1, vector_Type &_vec2)
 Method to import an VectorEpetra defined on the solid map (i.e. with the solid numeration of the dofs) to the interface. More...
 
void transferInterfaceOnSolid (const vector_Type &_vec1, vector_Type &_vec2)
 Method to import an VectorEpetra defined on the solid map (i.e. with the solid numeration of the dofs) to the interface. More...
 
void bcManageVectorRHS (const fluidBchandlerPtr_Type &bch, vector_Type &rhs)
 Update the RHS on the base of the fluid BC. More...
 
void bcManageVectorRHS (const fluidBchandlerPtr_Type &bcHandlerFluid, const solidBchandlerPtr_Type &bcHandlerSolid, vector_Type &rhs)
 Update the RHS on the base of the fluid and solid BC. More...
 
void setAlphaf ()
 Method to set the Robin vector coefficient of the Robin–Neumann coupling scheme (as a constant vector vector) More...
 
void setAlphafCoef ()
 Method to compute the scalar coefficient $\alpha$ of the Robin–Neumann coupling scheme. More...
 
void setStructureToFluidParameters ()
 Method calling setAlphaf and setAlphafCoef. More...
 
void resetRHS ()
 Reset the right hand side to zero. More...
 
bool isLeader () const
 
Displayer const & displayer ()
 Getter for the Displayer attribute. More...
 
void extrapolation (vector_Type &extrapolation) const
 Get the extrapolation of the solution. More...
 
UInt imposedFluxes ()
 Returns the number of imposed fluxes. More...
 
const vector_TypelambdaFluid () const
 
const vector_TypelambdaSolid () const
 
const vector_TypelambdaSolidOld () const
 
const vector_TypelambdaDotSolid () const
 
const vector_TypesigmaFluid () const
 
const vector_TypesigmaSolid () const
 
const vector_TypelambdaFluidRepeated () const
 
const vector_TypelambdaSolidRepeated () const
 
const vector_TypelambdaDotSolidRepeated () const
 
const vector_TypesigmaFluidRepeated () const
 
const vector_TypesigmaSolidRepeated () const
 
const vector_TypeminusSigmaFluid () const
 
const vector_TypeminusSigmaFluidRepeated () const
 
vector_TypeAlphaf () const
 coefficient for the Robin–Neumann coupling scheme More...
 
commPtr_Type worldComm () const
 
bool isFluid () const
 
bool isSolid () const
 
bool isLinearFluid () const
 
bool isLinearSolid () const
 
int getFluidLeaderId () const
 
int getSolidLeaderId () const
 
const fluid_Typefluid () const
 Getter for the fluid solver. More...
 
const solid_Typesolid () const
 Getter for the solid solver. More...
 
const meshMotion_TypemeshMotion () const
 Getter for the harmonic extension solver. More...
 
fluid_Typefluid ()
 Getter-Setter for the fluid solver. More...
 
solid_Typesolid ()
 Getter-Setter for the solid solver. More...
 
meshMotion_TypemeshMotion ()
 Getter-Setter for the mesh motion solver. More...
 
const data_Typedata () const
 getter for the FSI data container More...
 
const data_Type::dataFluidPtr_TypedataFluid () const
 getter for the fluid data container More...
 
const data_Type::dataSolidPtr_TypedataSolid () const
 getter for the solid data container More...
 
mesh_TypefluidMesh () const
 getter for the unpartitioned fluid mesh More...
 
mesh_TypesolidMesh () const
 getter for the unpartitioned solid mesh More...
 
mesh_TypefluidLocalMesh ()
 getter for the partitioned fluid mesh More...
 
mesh_TypesolidLocalMesh ()
 getter for the partitioned solid mesh More...
 
const FESpace< mesh_Type, MapEpetra > & uFESpace () const
 getter for the fluid velocity FESpace More...
 
std::shared_ptr< FESpace< mesh_Type, MapEpetra > > uFESpacePtr () const
 
const FESpace< mesh_Type, MapEpetra > & pFESpace () const
 getter for the fluid pressure FESpace More...
 
std::shared_ptr< FESpace< mesh_Type, MapEpetra > > pFESpacePtr () const
 
const FESpace< mesh_Type, MapEpetra > & dFESpace () const
 getter for the solid displacement FESpace More...
 
std::shared_ptr< FESpace< mesh_Type, MapEpetra > > dFESpacePtr () const
 
const ETFESpace< mesh_Type, MapEpetra, 3, 3 > & dFESpaceET () const
 getter for the solid displacement FESpace More...
 
std::shared_ptr< ETFESpace< mesh_Type, MapEpetra, 3, 3 > > dFESpaceETPtr () const
 
const FESpace< mesh_Type, MapEpetra > & mmFESpace () const
 getter for the harmonic extension solution FESpace More...
 
std::shared_ptr< FESpace< mesh_Type, MapEpetra > > mmFESpacePtr () const
 
const vector_TypemeshDisp () const
 getter for the harmonic extension solution More...
 
const vector_TypedispFluidMeshOld () const
 getter for the harmonic extension solution of the previous time step More...
 
virtual vector_TypeveloFluidMesh ()
 getter for the mesh velocity More...
 
vector_TypederVeloFluidMesh ()
 getter for the mesh velocity increment (used for Newton FSI) More...
 
const dofInterface3DPtr_TypedofFluidToStructure () const
 
const dofInterface3DPtr_TypedofStructureToSolid () const
 
const dofInterface3DPtr_TypedofStructureToHarmonicExtension () const
 
const dofInterface3DPtr_TypedofHarmonicExtensionToFluid () const
 
std::shared_ptr< MapEpetra > & fluidInterfaceMap ()
 
std::shared_ptr< MapEpetra > & solidInterfaceMap ()
 
BCFunctionRobinbcfRobinOuterWall ()
 Method to implement Robin boundary conditions on the external wall for the structure. More...
 
bcVectorInterfacePtr_Type bcvStructureDisptoFluid () const
 
bcVectorInterfacePtr_Type bcvStructureToFluid () const
 
bcVectorInterfacePtr_Type bcvSolidLoadToStructure () const
 
bcVectorInterfacePtr_Type bcvFluidInterfaceDisp () const
 
bcVectorInterfacePtr_Type bcvHarmonicExtensionVelToFluid () const
 
bcVectorInterfacePtr_Type bcvDerHarmonicExtensionVelToFluid () const
 
bcVectorInterfacePtr_Type bcvStructureDispToHarmonicExtension () const
 
bcVectorInterfacePtr_Type bcvStructureDispToSolid () const
 
bcVectorInterfacePtr_Type bcvDerStructureDispToSolid () const
 
bcVectorInterfacePtr_Type bcvFluidLoadToStructure () const
 
bcVectorInterfacePtr_Type bcvDerFluidLoadToStructure () const
 
bcVectorInterfacePtr_Type bcvDerFluidLoadToFluid () const
 
const fluidBchandlerPtr_TypeBCh_fluid () const
 Getter for the BCHandler of the fluid problem. More...
 
const fluidBchandlerPtr_TypeBCh_harmonicExtension () const
 Getter for the BCHandler of the harmonic extension problem. More...
 
const fluidBchandlerPtr_TypeBCh_du () const
 Getter for the BCHandler of the linearized fluid problem (to be used in Newton for the partitioned FSI) More...
 
const fluidBchandlerPtr_TypeBCh_du_inv () const
 Getter for the BCHandler of the linearized inverse of the fluid Steklov Poincare' operator (not used) More...
 
const solidBchandlerPtr_TypeBCh_solid () const
 Getter for the BCHandler of the solid problem. More...
 
const solidBchandlerPtr_TypeBCh_dz () const
 Getter for the BCHandler of the linearized solid problem. More...
 
const solidBchandlerPtr_TypeBCh_dz_inv () const
 Getter for the BCHandler of the linearized inverse of the solid Steklov Poincare' operator (not used) More...
 
const vectorPtr_TypegetRHS () const
 Getter for the right hand side. More...
 
const std::shared_ptr< TimeAdvance< vector_Type > > ALETimeAdvance () const
 
const std::shared_ptr< TimeAdvance< vector_Type > > fluidTimeAdvance () const
 
const std::shared_ptr< TimeAdvance< vector_Type > > solidTimeAdvance () const
 
const std::string ALETimeAdvanceMethod () const
 
const std::string fluidTimeAdvanceMethod () const
 
const std::string solidTimeAdvanceMethod () const
 
virtual void getSolidDisp (vector_Type &soliddisp)
 gets the solid displacement by copy More...
 
virtual void getSolidVel (vector_Type &solidvel)
 gets the solid velocity by copy More...
 
virtual void exportFluidDisplacement (vector_Type &fluidDisplacement)
 Export the fluid displacement by copying it to an external vector. More...
 
void setComm (const commPtr_Type &comm, const commPtr_Type &worldComm)
 Setter for the local and world communicators. More...
 
void setData (const dataPtr_Type &data)
 Setter for the FSI data. More...
 
void setFluid (const fluidPtr_Type &fluid, const meshMotionPtr_Type &meshmotion)
 Setter for the fluid and geometry problems. More...
 
void setSolid (const solidPtr_Type &solid)
 Setter for the solid problem. More...
 
void setFluid (const bool &isFluid)
 Setter for the "fluid" flag. More...
 
void setSolid (const bool &isSolid)
 Setter for the "solid" flag. More...
 
void setLinearFluid (const bool &linFluid)
 Setter for the "linear fluid" flag. More...
 
void setLinearSolid (const bool &linSolid)
 Setter for the "linear solid" flag. More...
 
void setFluidLeader (const int &fluidLeader)
 
void setSolidLeader (const int &solidLeader)
 
void setLinFluidBC (const fluidBchandlerPtr_Type &bc_dfluid)
 Setter for the BCHandler of the linearized fluid problem (to be used in segregated Newton FSI) More...
 
void setInvLinFluidBC (const fluidBchandlerPtr_Type &bc_dfluid_inv)
 Setter for the BCHandler of the inverse linearized fluid steklov Poincare' operator (to be used in SP FSI formulation) More...
 
void setHarmonicExtensionBC (const fluidBchandlerPtr_Type &bc_he)
 Setter for the BCHandler of the gerometry problem (to be used in segregated Newton FSI) More...
 
virtual void setSolidBC (const solidBchandlerPtr_Type &bc_solid)
 Setter for the fluid BCHandler. More...
 
void setLinSolidBC (const solidBchandlerPtr_Type &bc_dsolid)
 Setter for the BCHandler of the linearized solid problem (to be used in segregated Newton FSI) More...
 
void setInvLinSolidBC (const solidBchandlerPtr_Type &bc_dsolid_inv)
 Setter for the BCHandler of the inverse linearized solid steklov Poincare' operator (to be used in SP FSI formulation) More...
 
void setLambdaFluid (const vector_Type &lambda)
 Setter for the interface displacement (partitioned according to the fluid) More...
 
void setLambdaSolid (const vector_Type &lambda)
 Setter for the interface displacement (partitioned according to the solid) More...
 
void setLambdaSolidOld (const vector_Type &lambda)
 Setter for the solid interface displacement at the previous time step. More...
 
void setLambdaDotSolid (const vector_Type &lambda)
 Setter for the solid interface velocity at the previous time step. More...
 
void setSigmaFluid (const vector_Type &sigma)
 Setter for the fluid interface stress. More...
 
void setSigmaSolid (const vector_Type &sigma)
 Setter for the solid interface stress. More...
 
void setMinusSigmaFluid (const vector_Type &sigma)
 
void setAlphafbcf (const bcFunction_Type &alphafbcf)
 Setter for the Robin coefficient of the Robin–Neumann coupling scheme (as a BCFunction) More...
 
void setStructureDispToHarmonicExtension (const vector_Type &disp, UInt type=0)
 
void setStructureToFluid (const vector_Type &vel, UInt type=0)
 
void setStructureDispToFluid (const vector_Type &vel, UInt type=0)
 
void setStructureDispToSolid (const vector_Type &disp, UInt type=0)
 
void setDerStructureDispToSolid (const vector_Type &ddisp, UInt type=0)
 
void setSolidLoadToStructure (const vector_Type &load, UInt type=0)
 
void setHarmonicExtensionVelToFluid (const vector_Type &vel, UInt type=0)
 
void setDerHarmonicExtensionVelToFluid (const vector_Type &dvel, UInt type=0)
 
void setFluidLoadToStructure (const vector_Type &load, UInt type=0)
 
void setDerFluidLoadToStructure (const vector_Type &dload, UInt type=0)
 
void setDerFluidLoadToFluid (const vector_Type &dload, UInt type=0)
 
void setRobinOuterWall (const function_Type &dload, const function_Type &E)
 
void setSolutionDerivative (const vector_Type &solutionDerivative)
 Setter for the time derivative of the interface displacement. More...
 
void setupTimeAdvance (const dataFile_Type &dataFile)
 Setup of the TimeAdvance classes given the input data file. More...
 
- Static Public Member Functions inherited from FSIOperator
static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type > * createVenantKirchhoffLinear ()
 
static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type > * createVenantKirchhoffNonLinear ()
 
static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type > * createExponentialMaterialNonLinear ()
 
static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type > * createNeoHookeanMaterialNonLinear ()
 
static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type > * createVenantKirchhoffNonLinearPenalized ()
 
static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type > * createSecondOrderExponentialMaterialNonLinear ()
 
- Protected Member Functions inherited from FSIOperator
void transferMeshMotionOnFluid (const vector_Type &_vec1, vector_Type &_vec2)
 Interpolates the mesh motion dofs on the fluid. More...
 
void interpolateVelocity (const vector_Type &_vec1, vector_Type &_vec2)
 Interpolates mesh motion into velocity. More...
 
void interpolateInterfaceDofs (const FESpace< mesh_Type, MapEpetra > &_fespace1, const vector_Type &_vec1, const FESpace< mesh_Type, MapEpetra > &_fespace2, vector_Type &_vec2, dofInterface3DPtr_Type &_dofInterface)
 Interpolates to vectors on the interface. More...
 
- Protected Attributes inherited from FSIOperator
std::shared_ptr< FESpace< mesh_Type, MapEpetra > > M_uFESpace
 
std::shared_ptr< FESpace< mesh_Type, MapEpetra > > M_pFESpace
 
std::shared_ptr< FESpace< mesh_Type, MapEpetra > > M_dFESpace
 
std::shared_ptr< ETFESpace< mesh_Type, MapEpetra, 3, 3 > > M_dETFESpace
 
std::shared_ptr< FESpace< mesh_Type, MapEpetra > > M_mmFESpace
 
std::shared_ptr< mesh_TypeM_fluidMesh
 
std::shared_ptr< mesh_TypeM_solidMesh
 
std::shared_ptr< mesh_TypeM_fluidLocalMesh
 
std::shared_ptr< mesh_TypeM_solidLocalMesh
 
fluidBchandlerPtr_Type M_BCh_u
 
solidBchandlerPtr_Type M_BCh_d
 
fluidBchandlerPtr_Type M_BCh_mesh
 
fluidBchandlerPtr_Type M_BCh_du
 
fluidBchandlerPtr_Type M_BCh_du_inv
 
solidBchandlerPtr_Type M_BCh_dz
 
solidBchandlerPtr_Type M_BCh_dz_inv
 
fluidBchandlerPtr_Type M_BCh_dp
 
fluidBchandlerPtr_Type M_BCh_dp_inv
 
fluidPtr_Type M_fluid
 
solidPtr_Type M_solid
 
meshMotionPtr_Type M_meshMotion
 
std::string M_fluidTimeAdvanceMethod
 
std::string M_solidTimeAdvanceMethod
 
std::string M_ALETimeAdvanceMethod
 
std::shared_ptr< TimeAdvance< vector_Type > > M_fluidTimeAdvance
 
std::shared_ptr< TimeAdvance< vector_Type > > M_fluidMassTimeAdvance
 
std::shared_ptr< TimeAdvance< vector_Type > > M_solidTimeAdvance
 
std::shared_ptr< TimeAdvance< vector_Type > > M_ALETimeAdvance
 
dataFile_Type M_dataFile
 
std::shared_ptr< MeshDataM_meshDataFluid
 
std::shared_ptr< MeshDataM_meshDataSolid
 
dataPtr_Type M_data
 
std::shared_ptr< MapEpetraM_fluidInterfaceMap
 
std::shared_ptr< MapEpetraM_solidInterfaceMap
 
std::shared_ptr< MapEpetraM_fluidInterfaceMapOnZero
 
std::shared_ptr< MapEpetraM_solidInterfaceMapOnZero
 
dofInterface3DPtr_Type M_dofFluidToStructure
 
dofInterface3DPtr_Type M_dofStructureToFluid
 
dofInterface3DPtr_Type M_dofStructureToSolid
 
dofInterface3DPtr_Type M_dofStructureToHarmonicExtension
 
dofInterface3DPtr_Type M_dofHarmonicExtensionToFluid
 
dofInterface2DPtr_Type M_dofFluid
 
dofInterface2DPtr_Type M_dofSolid
 
dofInterface2DPtr_Type M_dofFluidInv
 
dofInterface2DPtr_Type M_dofSolidInv
 
bcVectorInterfacePtr_Type M_bcvFluidInterfaceDisp
 
bcVectorInterfacePtr_Type M_bcvFluidLoadToStructure
 
bcVectorInterfacePtr_Type M_bcvSolidLoadToStructure
 
bcVectorInterfacePtr_Type M_bcvStructureToFluid
 
bcVectorInterfacePtr_Type M_bcvStructureDispToFluid
 
bcVectorInterfacePtr_Type M_bcvStructureDispToSolid
 
bcVectorInterfacePtr_Type M_bcvStructureDispToHarmonicExtension
 
bcVectorInterfacePtr_Type M_bcvHarmonicExtensionVelToFluid
 
bcVectorInterfacePtr_Type M_bcvDerHarmonicExtensionVelToFluid
 
bcVectorInterfacePtr_Type M_bcvDerFluidLoadToStructure
 
bcVectorInterfacePtr_Type M_bcvDerFluidLoadToFluid
 
bcVectorInterfacePtr_Type M_bcvDerStructureDispToSolid
 
BCFunctionRobin M_bcfRobinOuterWall
 
vectorPtr_Type M_lambdaFluid
 
vectorPtr_Type M_lambdaFluidRepeated
 
vectorPtr_Type M_lambda
 
vectorPtr_Type M_lambdaDot
 
vectorPtr_Type M_rhs
 
vectorPtr_Type M_alphaF
 
Real M_alphaFCoef
 
Real M_betaMean
 
commPtr_Type M_epetraComm
 
commPtr_Type M_epetraWorldComm
 
bool M_structureNonLinear
 

Detailed Description

FSIMonolithic.hpp pure virtual class containing the core methods of the FSIMonolithic FSI solver.

Class handling the monolithic solver for FSI problems. The block structure of the matrix can be $\left(\begin{array}{cc} C&B\\ D&N \end{array}\right)$ if the time discretization at hand is the Geometry-Explicit one (implemented in monolithicGE.hpp), or $\left(\begin{array}{ccc} C&B&D\\ D&N&0\\ 0&I&H \end{array}\right)$ if the time discretization at hand is the Geometry-Implicit one (implemented in monolithicGI.hpp), where $N$ represents the solid block, $C$ the fluid block, $H$ the harmonic extension block, while the extra diagonal blocks represent the coupling. The implementation of the stress continuity coupling condition is obtained by means of an augmented formulation. Different possible preconditioners are implemented. The flag semiImplicit in the data file is used to distinguish between the GCE and CE (with quasi Newton) time discretizations. Exact Newton method and full implicit time discretization are implemented in the FSIMonolithicGI class.

Definition at line 102 of file FSIMonolithic.hpp.

Member Typedef Documentation

◆ super_Type

Definition at line 109 of file FSIMonolithic.hpp.

◆ matrix_Type

◆ matrixPtr_Type

typedef std::shared_ptr<matrix_Type> matrixPtr_Type

Definition at line 111 of file FSIMonolithic.hpp.

◆ solution_Type

Definition at line 112 of file FSIMonolithic.hpp.

◆ solutionPtr_Type

◆ prec_Type

Definition at line 114 of file FSIMonolithic.hpp.

◆ precPtr_Type

typedef std::shared_ptr<prec_Type> precPtr_Type

Definition at line 115 of file FSIMonolithic.hpp.

◆ blockMatrix_Type

Definition at line 116 of file FSIMonolithic.hpp.

◆ blockMatrixPtr_Type

typedef std::shared_ptr<blockMatrix_Type> blockMatrixPtr_Type

Definition at line 117 of file FSIMonolithic.hpp.

◆ factory_Type

typedef FactorySingleton< Factory< FSIMonolithic, std::string > > factory_Type

Definition at line 118 of file FSIMonolithic.hpp.

◆ solver_Type

Definition at line 119 of file FSIMonolithic.hpp.

◆ matrixBlock_Type

Definition at line 122 of file FSIMonolithic.hpp.

◆ matrixBlockView_Type

◆ matrixBlockPtr_Type

typedef std::shared_ptr<matrixBlock_Type> matrixBlockPtr_Type

Definition at line 124 of file FSIMonolithic.hpp.

Constructor & Destructor Documentation

◆ FSIMonolithic()

Definition at line 40 of file FSIMonolithic.cpp.

◆ ~FSIMonolithic()

Definition at line 69 of file FSIMonolithic.cpp.

Member Function Documentation

◆ setupFEspace()

void setupFEspace ( )
virtual

create FEspace

Reimplemented from FSIOperator.

Definition at line 77 of file FSIMonolithic.cpp.

◆ setupDOF() [1/2]

void setupDOF ( void  )
virtual

sets the interface map between the fluid and solid meshes (non scalable, do not use for massively parallel simulations)

Reimplemented from FSIOperator.

Reimplemented in FSIMonolithicGE.

Definition at line 90 of file FSIMonolithic.cpp.

◆ setupDOF() [2/2]

void setupDOF ( meshFilter_Type filterMesh)
virtual

reads the interface map between the fluid and solid meshes from file.

Reimplemented from FSIOperator.

Definition at line 117 of file FSIMonolithic.cpp.

◆ setupSystem()

void setupSystem ( void  )
virtual

sets the parameters from data file

Calls the setup of the fluid problem and the setUp method.

Reimplemented from FSIOperator.

Reimplemented in FSIMonolithicGE.

Definition at line 124 of file FSIMonolithic.cpp.

◆ setup()

void setup ( const GetPot dataFile)
virtual

stores the data file into a member

setup method for the FSIMonolithic solver sets some parameters specific to the FSIMonolithic class

Reimplemented in FSIMonolithicGI.

Definition at line 131 of file FSIMonolithic.cpp.

◆ setupFluidSolid() [1/2]

void setupFluidSolid ( void  )
virtual

builds the global Epetra map

assigns each mesh partition to the corresponding processor, builds the monolithic map

Reimplemented from FSIOperator.

Definition at line 155 of file FSIMonolithic.cpp.

◆ setupFluidSolid() [2/2]

void setupFluidSolid ( UInt const  fluxes)
virtual

builds the global Epetra map

assigns each mesh partition to the corresponding processor, builds the monolithic map with a number of fluxes specified from input

Reimplemented from FSIOperator.

Reimplemented in FSIMonolithicGI, and FSIMonolithicGE.

Definition at line 172 of file FSIMonolithic.cpp.

◆ monolithicToInterface()

void monolithicToInterface ( vector_Type lambdaSolid,
const vector_Type sol 
)

Transfers a vector to the interface.

restricts a vector with a monolithic map on the solid interface map

Parameters
lambdaSolidvector on the solid interface
dispmonolithic vector

Definition at line 211 of file FSIMonolithic.cpp.

◆ monolithicToX()

void monolithicToX ( const vector_Type disp,
vector_Type dispFluid,
MapEpetra map,
UInt  offset = (UInt) 0 
)

Transfers a vector to a subdomain.

restricts a vector with a monolithic map on another map that must have a sequential numbering (not the interface map)

Parameters
dispmonolithic vector
dispFluidvector on the fluid domain
mapMapEpetra of the part of vector that we want to transfer
offsetoffset for the monolithic vector (also alpplied to the input map)

Definition at line 234 of file FSIMonolithic.cpp.

◆ buildSystem()

void buildSystem ( )
virtual

builds the constant part of the monolithic matrix

Reimplemented from FSIOperator.

Definition at line 248 of file FSIMonolithic.cpp.

◆ mergeBCHandlers()

void mergeBCHandlers ( )
inline

Merges the flux boundary conditions into the fluid BCHandler.

two separate BCHandlers are initially created for the flux-type boundary conditions, these are later merged with the fluid BCHandler automatically, using this method

Definition at line 222 of file FSIMonolithic.hpp.

◆ computeFluidNormals()

void computeFluidNormals ( vector_Type normals)

Computes the normals to the fluid domain.

Computes the normals to the fluid domain in the nodes. It is an example of how to use the boundary conditions methods to compute the normal field on a surface.

Definition at line 297 of file FSIMonolithic.cpp.

◆ evalResidual() [1/2]

virtual void evalResidual ( vector_Type res,
const vector_Type sol,
const UInt  iter 
)
pure virtual

Evaluates the nonlinear residual.

This class is pure virtual, it depends on which type of monolithic solver is used

Parameters
resoutput
_solmonolithic solution
itercurrent NonLinearRichardson (Newton) iteration

Implements FSIOperator.

Implemented in FSIMonolithicGE, and FSIMonolithicGI.

◆ solveJac()

void solveJac ( vector_Type muk,
const vector_Type res,
const Real  linearRelTol 
)
virtual

solves the Jacobian system

Parameters
mukoutput, solution at the current Newton step
resnonlinear residual
linearRelTolnot used

The preconditioner type is usually an algebraic additive Schwarz. The following values assigned to the field DDBlockPrec in the data file correspond to different variants:

Only for the FSIMonolithic Geometry Explicit:

Only for the Geometry Implicit:

  • DDBlockPrec = AdditiveSchwarzGI is AAS on the whole matrix.
  • DDBlockPrec = MonolithicBlockComposedDNDGI is AAS on the quasi-newton matrix obtained with the ComposedOperator strategy. Split in 3 factors.
  • DDBlockPrec = ComposedDND2GI is AAS on the quasi-newton matrix obtained with the ComposedOperator strategy. Split in 3 factors.
  • DDBlockPrec = MonolithicBlockComposedDNGI is AAS on the full Jacobian matrix obtained with the ComposedOperator strategy by neglecting part of the fluid–structure coupling, split in 3 factors
  • DDBlockPrec = MonolithicBlockComposedDN2GI is AAS on an alternative matrix obtained with the previous strategy

Implements FSIOperator.

Definition at line 309 of file FSIMonolithic.cpp.

◆ updateSystem()

void updateSystem ( )
virtual

updates the meshmotion, advances of a time step

Parameters
_solsolution

Reimplemented from FSIOperator.

Reimplemented in FSIMonolithicGE.

Definition at line 329 of file FSIMonolithic.cpp.

◆ enableStressComputation()

void enableStressComputation ( UInt  flag)

activates the computation of the wall stress on the boundary with a specified flag.

Notice that the specified flag must be in the coupling fluid-structure interface

Definition at line 817 of file FSIMonolithic.cpp.

◆ computeStress()

FSIMonolithic::vectorPtr_Type computeStress ( )

Computes the stress on the coupling boundary (the traction vector)

Definition at line 827 of file FSIMonolithic.cpp.

◆ precPtrView()

precPtr_Type& precPtrView ( )
inline

returns a non-const pointer to the preconditioner. Can be used either as a setter or a getter.

Definition at line 317 of file FSIMonolithic.hpp.

◆ operatorPtrView()

blockMatrixPtr_Type& operatorPtrView ( )
inline

returns a non-const pointer to the preconditioner. Can be used either as a setter or a getter.

Definition at line 323 of file FSIMonolithic.hpp.

◆ setSolidBC()

virtual void setSolidBC ( const fluidBchandlerPtr_Type bc_solid)
inlinevirtual

sets the solid BCHandle

Definition at line 331 of file FSIMonolithic.hpp.

◆ setFluidBC()

void setFluidBC ( const fluidBchandlerPtr_Type bc_fluid)
inlinevirtual

initializes the solution by reference (through a shared_ptr)

Parameters
solinput pointer

Reimplemented from FSIOperator.

Definition at line 342 of file FSIMonolithic.hpp.

◆ dimInterface()

UInt dimInterface ( ) const
inline

get the total dimension of the FS interface

Definition at line 366 of file FSIMonolithic.hpp.

◆ offset()

UInt offset ( ) const
inline

Returns true if CE of FI methods are used, false otherwise (GCE)

Returns the offset assigned to the solid block

Definition at line 375 of file FSIMonolithic.hpp.

◆ exportSolidDisplacement()

void exportSolidDisplacement ( vector_Type solidDisplacement)
inlinevirtual

Get the solid displacement from the solution.

Parameters
solidDisplacementinput vector

Reimplemented from FSIOperator.

Definition at line 384 of file FSIMonolithic.hpp.

◆ exportSolidVelocity()

void exportSolidVelocity ( vector_Type solidVelocity)
inlinevirtual

Get the solid velocity.

fills an input vector with the solid displacement from the solution.

Parameters
solidVelocityinput vector (output solid velocity)

Reimplemented from FSIOperator.

Definition at line 395 of file FSIMonolithic.hpp.

◆ exportSolidAcceleration()

void exportSolidAcceleration ( vector_Type solidAcceleration)
inlinevirtual

Get the solid accelration.

fills an input vector with the solid displacement from the solution.

Parameters
solidVelocityinput vector (output solid acceleration)

Reimplemented from FSIOperator.

Definition at line 406 of file FSIMonolithic.hpp.

◆ exportFluidVelocity()

void exportFluidVelocity ( vector_Type fluidVelocity)
inlinevirtual

Export the fluid velocity by copying it to an external vector.

Parameters
fluidVelocityvector to be filled with the fluid velocity

Reimplemented from FSIOperator.

Definition at line 416 of file FSIMonolithic.hpp.

◆ exportFluidPressure()

void exportFluidPressure ( vector_Type fluidPressure)
inlinevirtual

Export the fluid pressure by copying it to an external vector.

Parameters
fluidPressurevector to be filled with the fluid pressure

Reimplemented from FSIOperator.

Definition at line 425 of file FSIMonolithic.hpp.

◆ exportFluidVelocityAndPressure()

void exportFluidVelocityAndPressure ( vector_Type fluidVelocityAndPressure)
inlinevirtual

Gets the fluid and pressure.

fills an input vector with the fluid and pressure from the solution M_un. It performs a trilinos import. Thus it works also for the velocity, depending on the map of the input vector

Parameters
fluidVelocityandPressureinput vector

Reimplemented from FSIOperator.

Definition at line 436 of file FSIMonolithic.hpp.

◆ couplingVariableMap()

virtual std::shared_ptr<MapEpetra>& couplingVariableMap ( )
inlinevirtual

Returns the monolithic map.

Reimplemented from FSIOperator.

Definition at line 442 of file FSIMonolithic.hpp.

◆ solution()

virtual const vector_Type& solution ( ) const
pure virtual

get the solution vector

Reimplemented from FSIOperator.

◆ updateSolution()

virtual void updateSolution ( const vector_Type solution)
inlinevirtual

Update the solution after NonLinearRichardson is called.

Here it is used also to update the velocity for the post-processing.

Reimplemented from FSIOperator.

Reimplemented in FSIMonolithicGE, and FSIMonolithicGI.

Definition at line 454 of file FSIMonolithic.hpp.

◆ updateRHS()

void updateRHS ( )
virtual

Updates the right hand side.

Adds to the rhs the fluid time discretization terms

Todo:
this should be handled externally

Reimplemented from FSIOperator.

Definition at line 791 of file FSIMonolithic.cpp.

◆ setVectorInStencils()

void setVectorInStencils ( const vectorPtr_Type vel,
const vectorPtr_Type pressure,
const vectorPtr_Type solidDisp,
const UInt  iter 
)
virtual

Set vectors for restart.

Set vectors for restart

Reimplemented from FSIOperator.

Definition at line 482 of file FSIMonolithic.cpp.

◆ setFluidVectorInStencil()

void setFluidVectorInStencil ( const vectorPtr_Type vel,
const vectorPtr_Type pressure,
const UInt  iter 
)
virtual

Reimplemented from FSIOperator.

Definition at line 494 of file FSIMonolithic.cpp.

◆ setSolidVectorInStencil()

void setSolidVectorInStencil ( const vectorPtr_Type solidDisp,
const UInt  iter 
)
virtual

Reimplemented from FSIOperator.

Definition at line 519 of file FSIMonolithic.cpp.

◆ setALEVectorInStencil()

virtual void setALEVectorInStencil ( const vectorPtr_Type fluidDisp,
const UInt  iter,
const bool  lastVector 
)
pure virtual

Reimplemented from FSIOperator.

Implemented in FSIMonolithicGI, and FSIMonolithicGE.

◆ finalizeRestart()

void finalizeRestart ( )
virtual

Reimplemented from FSIOperator.

Definition at line 541 of file FSIMonolithic.cpp.

◆ initializeMonolithicOperator()

void initializeMonolithicOperator ( std::vector< vectorPtr_Type u0,
std::vector< vectorPtr_Type ds0,
std::vector< vectorPtr_Type df0 
)
virtual

Reimplemented from FSIOperator.

Definition at line 561 of file FSIMonolithic.cpp.

◆ createOperator()

virtual void createOperator ( std::string &  operType)
protectedpure virtual

pure virtual: creates the operator (either of type FSIMonolithicGI or FSIMonolithicGE)

Implemented in FSIMonolithicGI, and FSIMonolithicGE.

◆ iterateMonolithic()

void iterateMonolithic ( const vector_Type rhs,
vector_Type step 
)
protected

solves the monolithic system, once a solver, a preconditioner and a rhs have been defined.

Definition at line 341 of file FSIMonolithic.cpp.

◆ couplingRhs()

void couplingRhs ( vectorPtr_Type  rhs)
protected

adds the part due to coupling to the rhs

Parameters
rhsright hand side
uncurrent solution

Definition at line 372 of file FSIMonolithic.cpp.

◆ evalResidual() [2/2]

void evalResidual ( const vector_Type sol,
const vectorPtr_Type rhs,
vector_Type res,
bool  diagonalScaling = false 
)
protected

evaluates the linear residual

Parameters
solsolution vector
rhsright-hand side
resthe output residual
diagonalScalingflag stating wether to perform diagonal scaling

Definition at line 403 of file FSIMonolithic.cpp.

◆ recomputePrec()

bool recomputePrec ( )
inlineprotected

says if the preconditioner will be recomputed

Definition at line 525 of file FSIMonolithic.hpp.

◆ updateSolidSystem()

void updateSolidSystem ( vectorPtr_Type rhsFluidCoupling)
protected

updates the rhs of the solid block.

Definition at line 455 of file FSIMonolithic.cpp.

◆ diagonalScale()

void diagonalScale ( vector_Type rhs,
matrixPtr_Type  matrFull 
)
protected

scales matrix and rhs

Parameters
rhsthe output rhs
matrFullthe output matrix

Definition at line 601 of file FSIMonolithic.cpp.

◆ solidInit()

void solidInit ( std::string const &  dOrder)
protected

Constructs the solid FESpace.

Creates the solid FESpace with an unpartitioned mesh, necessary step to create the dof interconnections at the interface. The solid FESpace will be reset in variablesInit using the partitioned mesh.export If the interface map is created offline this method is never called.

Parameters
dOrderdiscretization order

◆ variablesInit()

void variablesInit ( std::string const &  dOrder)
protectedvirtual

Constructs the solid FESpace and initializes the coupling variables at the interface.

If the mesh is partitioned online the previous FESpace constructed with the unpartitioned mesh is discarded and replaced with one using a partitioned mesh.

Reimplemented from FSIOperator.

Definition at line 613 of file FSIMonolithic.cpp.

◆ setupBlockPrec()

void setupBlockPrec ( )
protectedvirtual

Reimplemented in FSIMonolithicGI.

Definition at line 631 of file FSIMonolithic.cpp.

◆ assembleSolidBlock()

void assembleSolidBlock ( UInt  iter,
const vector_Type solution 
)
protected

assembles the solid problem (the matrix and the rhs due to the time derivative)

Definition at line 675 of file FSIMonolithic.cpp.

◆ assembleFluidBlock()

void assembleFluidBlock ( UInt  iter,
const vector_Type solution 
)
protected

assembles the fluid problem (the matrix and the rhs due to the time derivative)

Definition at line 754 of file FSIMonolithic.cpp.

◆ checkIfChangedFluxBC()

void checkIfChangedFluxBC ( precPtr_Type  oper)
protected

Checks if the flux bcs changed during the simulation, e.g.

if a flux b.c. has been changed to Natural (this can be useful when modeling valves) When the fluxes bcs changed a '1' is added in the line corresponding to the Lagrange multiplier. This method must be called for both operator and preconditioner

Definition at line 858 of file FSIMonolithic.cpp.

Field Documentation

◆ M_monolithicMap

std::shared_ptr<MapEpetra> M_monolithicMap
protected

Definition at line 587 of file FSIMonolithic.hpp.

◆ M_interfaceMap

std::shared_ptr< MapEpetra > M_interfaceMap
protected

Definition at line 588 of file FSIMonolithic.hpp.

◆ M_beta

std::shared_ptr<vector_Type> M_beta
protected

the solid interface map

Definition at line 589 of file FSIMonolithic.hpp.

◆ M_monolithicMatrix

std::shared_ptr<MonolithicBlockMatrix > M_monolithicMatrix
protected

Definition at line 590 of file FSIMonolithic.hpp.

◆ M_precPtr

precPtr_Type M_precPtr
protected

Definition at line 591 of file FSIMonolithic.hpp.

◆ M_rhsFull

std::shared_ptr<vector_Type> M_rhsFull
protected

Definition at line 592 of file FSIMonolithic.hpp.

◆ M_BCh_flux

fluidBchandlerPtr_Type M_BCh_flux
protected

Definition at line 594 of file FSIMonolithic.hpp.

◆ M_BChWS

solidBchandlerPtr_Type M_BChWS
protected

Definition at line 595 of file FSIMonolithic.hpp.

◆ M_bcfWs

BCFunctionRobin M_bcfWs
protected

Definition at line 596 of file FSIMonolithic.hpp.

◆ M_offset

UInt M_offset
protected

Definition at line 597 of file FSIMonolithic.hpp.

◆ M_solidAndFluidDim

UInt M_solidAndFluidDim
protected

Definition at line 598 of file FSIMonolithic.hpp.

◆ M_fluidBlock

Definition at line 599 of file FSIMonolithic.hpp.

◆ M_solidBlockPrec

matrixPtr_Type M_solidBlockPrec
protected

Definition at line 600 of file FSIMonolithic.hpp.

◆ M_robinCoupling

matrixPtr_Type M_robinCoupling
protected

Definition at line 601 of file FSIMonolithic.hpp.

◆ M_boundaryMass

matrixPtr_Type M_boundaryMass
protected

Definition at line 602 of file FSIMonolithic.hpp.

◆ M_linearSolver

std::shared_ptr<solver_Type> M_linearSolver
protected

Definition at line 603 of file FSIMonolithic.hpp.

◆ M_numerationInterface

std::shared_ptr<vector_Type> M_numerationInterface
protected

Definition at line 604 of file FSIMonolithic.hpp.

◆ M_BChs

std::vector<fluidBchandlerPtr_Type> M_BChs
protected

Definition at line 605 of file FSIMonolithic.hpp.

◆ M_FESpaces

std::vector<std::shared_ptr<FESpace<mesh_Type, MapEpetra> > > M_FESpaces
protected

Definition at line 606 of file FSIMonolithic.hpp.

◆ M_diagonalScale

bool M_diagonalScale
protected

Definition at line 607 of file FSIMonolithic.hpp.

◆ M_reusePrec

bool M_reusePrec
protected

Definition at line 608 of file FSIMonolithic.hpp.

◆ M_resetPrec

bool M_resetPrec
protected
Todo:
to move to private

Definition at line 609 of file FSIMonolithic.hpp.

◆ M_maxIterSolver

Int M_maxIterSolver
protected
Todo:
to move to private

Definition at line 610 of file FSIMonolithic.hpp.

◆ M_restarts

bool M_restarts
protected
Todo:
to move to private

Definition at line 611 of file FSIMonolithic.hpp.

◆ M_preconditionedSymmetrizedMatrix

std::shared_ptr<ComposedOperator<Epetra_Operator> > M_preconditionedSymmetrizedMatrix
private

Definition at line 618 of file FSIMonolithic.hpp.

◆ M_stress

std::shared_ptr<vector_Type> M_stress
private

Definition at line 619 of file FSIMonolithic.hpp.

◆ M_fluxes

UInt M_fluxes
private

Definition at line 620 of file FSIMonolithic.hpp.

◆ M_BCFluxNames

std::vector<bcName_Type> M_BCFluxNames
private

Definition at line 621 of file FSIMonolithic.hpp.

◆ M_fluxOffset

std::vector<UInt> M_fluxOffset
private

Definition at line 622 of file FSIMonolithic.hpp.


The documentation for this class was generated from the following files: