LifeV
FSIMonolithicGE Class Reference

#include <FSIMonolithicGE.hpp>

+ Inheritance diagram for FSIMonolithicGE:
+ Collaboration diagram for FSIMonolithicGE:

Public Types

typedef FSIMonolithic super_Type
 
- Public Types inherited from FSIMonolithic
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
 
- 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
 

Static Public Member Functions

static FSIOperatorinstantiate ()
 Gets the solution. 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 ()
 

Static Public Attributes

static bool S_register
 Products registration. More...
 

Constructor & Destructor

 FSIMonolithicGE ()
 Empty Constructor. More...
 
 ~FSIMonolithicGE ()
 Destructor. More...
 

Public Methods

void setupFluidSolid (UInt const fluxes)
 Setup method for the subfroblem. More...
 
void setupDOF ()
 setup of the dofs More...
 
void setupSystem ()
 setUp from data file More...
 
void updateSystem ()
 Updates the system for the next time step. More...
 
void setALEVectorInStencil (const vectorPtr_Type &fluidDisp, const UInt iter, const bool)
 Set vectors for restart. More...
 
void evalResidual (vector_Type &res, const vector_Type &sol, const UInt iter)
 evaluates the residual Ax-b More...
 
void iterateMesh (const vector_Type &disp)
 iterates the mesh More...
 
void applyBoundaryConditions ()
 Applies the bounsary conditions to the matrix. More...
 
void updateSolution (const vector_Type &solution)
 Update the solution after NonLinearRichardson is called. More...
 

Private Methods

void createOperator (std::string &operType)
 pure virtual: creates the operator (either of type FSIMonolithicGI or FSIMonolithicGE) More...
 

Additional Inherited Members

- Public Member Functions inherited from FSIMonolithic
 FSIMonolithic ()
 
 ~FSIMonolithic ()
 
void setupFEspace ()
 create FEspace More...
 
void setupDOF (meshFilter_Type &filterMesh)
 reads the interface map between the fluid and solid meshes from 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...
 
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 solveJac (vector_Type &muk, const vector_Type &res, const Real linearRelTol)
 solves the Jacobian system 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...
 
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...
 
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)
 
void finalizeRestart ()
 
void initializeMonolithicOperator (std::vector< vectorPtr_Type > u0, std::vector< vectorPtr_Type > ds0, std::vector< vectorPtr_Type > df0)
 
- 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 setupBDF (const vector_Type &)
 
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...
 
- Protected Member Functions inherited from FSIMonolithic
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 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 FSIMonolithic
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
 
- 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

Definition at line 76 of file FSIMonolithicGE.hpp.

Member Typedef Documentation

◆ super_Type

Definition at line 80 of file FSIMonolithicGE.hpp.

Constructor & Destructor Documentation

◆ FSIMonolithicGE()

FSIMonolithicGE ( )
inline

Empty Constructor.

Definition at line 86 of file FSIMonolithicGE.hpp.

◆ ~FSIMonolithicGE()

~FSIMonolithicGE ( )
inline

Destructor.

Definition at line 91 of file FSIMonolithicGE.hpp.

Member Function Documentation

◆ setupFluidSolid()

void setupFluidSolid ( UInt const  fluxes)
virtual

Setup method for the subfroblem.

Sets up the fluid, solid and harmonic extension finite element spaces and initializes most of the variables used in the solver

Reimplemented from FSIMonolithic.

Definition at line 50 of file FSIMonolithicGE.cpp.

◆ setupDOF()

void setupDOF ( void  )
virtual

setup of the dofs

calls super_Type::setupDof and instantiate the boundary condition vector needed to couple fluid–structure and harmonic extention

Reimplemented from FSIMonolithic.

Definition at line 82 of file FSIMonolithicGE.cpp.

◆ setupSystem()

void setupSystem ( void  )
virtual

setUp from data file

calls the setup for the fluid, solid and mesh motion problems

Reimplemented from FSIMonolithic.

Definition at line 89 of file FSIMonolithicGE.cpp.

◆ updateSystem()

void updateSystem ( )
virtual

Updates the system for the next time step.

Calls the updateSystem of the mother class and updates the solid displacement in the solid problem

Reimplemented from FSIMonolithic.

Definition at line 96 of file FSIMonolithicGE.cpp.

◆ setALEVectorInStencil()

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

Set vectors for restart.

Set vectors for restart

Implements FSIMonolithic.

Definition at line 202 of file FSIMonolithicGE.cpp.

◆ evalResidual()

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

evaluates the residual Ax-b

Parameters
resoutput
_solmonolithic solution
itercurrent NonLinearRichardson (Newton) iteration

Implements FSIMonolithic.

Definition at line 103 of file FSIMonolithicGE.cpp.

◆ iterateMesh()

void iterateMesh ( const vector_Type disp)
virtual

iterates the mesh

Parameters
dispmonolithic solution

Reimplemented from FSIOperator.

Definition at line 143 of file FSIMonolithicGE.cpp.

◆ applyBoundaryConditions()

void applyBoundaryConditions ( )
virtual

Applies the bounsary conditions to the matrix.

Reimplemented from FSIOperator.

Definition at line 157 of file FSIMonolithicGE.cpp.

◆ updateSolution()

void updateSolution ( const vector_Type solution)
virtual

Update the solution after NonLinearRichardson is called.

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

Reimplemented from FSIMonolithic.

Definition at line 213 of file FSIMonolithicGE.cpp.

◆ instantiate()

static FSIOperator* instantiate ( )
inlinestatic

Gets the solution.

Factory method

Definition at line 171 of file FSIMonolithicGE.hpp.

◆ createOperator()

void createOperator ( std::string &  operType)
inlineprivatevirtual

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

Implements FSIMonolithic.

Definition at line 181 of file FSIMonolithicGE.hpp.

Field Documentation

◆ S_register

bool S_register
static
Initial value:
= FSIFactory_Type::instance().registerProduct ( "monolithicGE", &FSIMonolithicGE::instantiate ) &&
BlockPrecFactory::instance().registerProduct ("ComposedDNND" , &MonolithicBlockComposedDNND::createComposedDNND) &&

Products registration.

Definition at line 191 of file FSIMonolithicGE.hpp.


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