LifeV
FSIExactJacobian Class Reference

FSIModelExactJacobian - Implementation of an FSI (Operator) with Newton algorithm. More...

#include <FSIExactJacobian.hpp>

+ Inheritance diagram for FSIExactJacobian:
+ Collaboration diagram for FSIExactJacobian:

Data Structures

class  Epetra_ExactJacobian
 Epetra_ExactJacobian This class implements an Epetra_Operator to be passed to AztecOO. More...
 

Private Attributes

vectorPtr_Type M_rhsNew
 
vectorPtr_Type M_beta
 
NonLinearAitken< vector_TypeM_aitkFS
 
SolverAztecOO M_linearSolver
 
Epetra_ExactJacobian M_epetraOper
 
matrixPtr_Type M_matrShapeDer
 
bool M_recomputeShapeDer
 

Public Types

typedef FSIOperator super
 
typedef super::vector_Type vector_Type
 
typedef super::vectorPtr_Type vectorPtr_type
 
typedef fluid_Type::matrix_Type matrix_Type
 
typedef fluid_Type::matrixPtr_Type matrixPtr_Type
 
typedef super::solid_Type solid_Type
 

Constructor & Destructor

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

Methods

void solveJac (vector_Type &_muk, const vector_Type &_res, const Real _linearRelTol)
 solves the Jacobian system More...
 
void evalResidual (vector_Type &_res, const vector_Type &_disp, const UInt _iter)
 Evaluates the nonlinear residual of the FSI system. More...
 
void solveLinearFluid ()
 Solves the linear fluid problem. More...
 
void solveLinearSolid ()
 Solves the linear structure problem. More...
 
void setupFEspace ()
 sets the space discretization parameters More...
 
void setupFluidSolid ()
 setup of the fluid and solid solver classes More...
 
void setDataFile (GetPot const &data)
 initializes the GetPot data file More...
 
void bcManageVec (super::fluidBchandler_Type &, vector_Type &)
 should call bcManage for a vector, but the implementation is empty More...
 
void registerMyProducts ()
 register the product for the factory More...
 

Private Methods

UInt imposeFlux ()
 
void eval (const vector_Type &_res, UInt status)
 

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 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...
 
virtual void setupDOF ()
 sets up the correspondences between the fluid and structure degrees of freedom across the interface. More...
 
virtual void setupDOF (meshFilter_Type &)
 reads from HDF5 file the correspondences between the fluid and structure degrees of freedom across the interface. More...
 
virtual void setupFluidSolid (UInt const fluxes)
 setup of the fluid and solid solver classes More...
 
virtual void setupSystem ()
 Setup method. More...
 
virtual void buildSystem ()
 Builds the local matrices. More...
 
virtual void updateSystem ()
 Updates the FSI system. More...
 
void couplingVariableExtrap ()
 Extrapolates an approximation of the solution. More...
 
virtual void updateSolution (const vector_Type &solution)
 Update the solution after NonLinearRichardson is called. More...
 
virtual void setVectorInStencils (const vectorPtr_Type &, const vectorPtr_Type &, const vectorPtr_Type &, const UInt)
 Set vectors for restart. More...
 
virtual void setFluidVectorInStencil (const vectorPtr_Type &, const vectorPtr_Type &, const UInt)
 
virtual void setSolidVectorInStencil (const vectorPtr_Type &, const UInt)
 
virtual void setALEVectorInStencil (const vectorPtr_Type &, const UInt, const bool)
 
virtual void finalizeRestart ()
 
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 updateRHS ()
 
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...
 
virtual void initializeMonolithicOperator (std::vector< vectorPtr_Type >, std::vector< vectorPtr_Type >, std::vector< vectorPtr_Type >)
 
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 ()
 
virtual std::shared_ptr< MapEpetra > & couplingVariableMap ()
 Getter for the map of the variable used for the coupling. More...
 
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 const vector_Typesolution () const
 gets the solution vector by reference More...
 
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 exportSolidDisplacement (vector_Type &solidDisplacement)
 Export the solid displacement by copying it to an external vector. More...
 
virtual void exportSolidVelocity (vector_Type &solidVelocity)
 Export the solid velocity by copying it to an external vector. More...
 
virtual void exportSolidAcceleration (vector_Type &solidAcc)
 Export the solid acceleration by copying it to an external vector. More...
 
virtual void exportFluidVelocity (vector_Type &fluidVelocity)
 Export the fluid velocity by copying it to an external vector. More...
 
virtual void exportFluidPressure (vector_Type &fluidPressure)
 Export the fluid pressure by copying it to an external vector. More...
 
virtual void exportFluidVelocityAndPressure (vector_Type &fluidVelocityAndPressure)
 Export the fluid velocity and pressure by copying it to an external vector. 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)
 
virtual void setFluidBC (const fluidBchandlerPtr_Type &bc_fluid)
 Setter for the fluid BCHandler. More...
 
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
virtual void variablesInit (const std::string &dOrder)
 initailize the variables More...
 
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

FSIModelExactJacobian - Implementation of an FSI (Operator) with Newton algorithm.

Author
Miguel Fernandez
Gilles Fourestey
Paolo Crosetto paolo.nosp@m..cro.nosp@m.setto.nosp@m.@epf.nosp@m.l.ch
See also
[6] FSIOperator

This class implements an FSIOperator whose Jacobian is computed exacly, i.e., using shape dericatives.

Definition at line 62 of file FSIExactJacobian.hpp.

Member Typedef Documentation

◆ super

typedef FSIOperator super

Definition at line 68 of file FSIExactJacobian.hpp.

◆ vector_Type

Definition at line 70 of file FSIExactJacobian.hpp.

◆ vectorPtr_type

Definition at line 71 of file FSIExactJacobian.hpp.

◆ matrix_Type

Definition at line 73 of file FSIExactJacobian.hpp.

◆ matrixPtr_Type

◆ solid_Type

Definition at line 77 of file FSIExactJacobian.hpp.

Constructor & Destructor Documentation

◆ FSIExactJacobian()

Empty Constructor.

Definition at line 35 of file FSIExactJacobian.cpp.

+ Here is the caller graph for this function:

◆ ~FSIExactJacobian()

Destructor.

Definition at line 50 of file FSIExactJacobian.cpp.

Member Function Documentation

◆ solveJac()

void solveJac ( vector_Type _muk,
const vector_Type _res,
const Real  _linearRelTol 
)
virtual

solves the Jacobian system

The implementation of this method distinguish the various FSI formulations which derive from this class. For this reason it must be pure virtual, snd implemented in the child classes.

Parameters
mukunknown solution at the k-th nonlinear iteration
resresidual vector (the right hand side of the Jacobian system)
linearRelToltolerance for the nonlinear solver
Todo:
{replace Real with Real& }

Implements FSIOperator.

Definition at line 56 of file FSIExactJacobian.cpp.

◆ evalResidual()

void evalResidual ( vector_Type _res,
const vector_Type _disp,
const UInt  _iter 
)
virtual

Evaluates the nonlinear residual of the FSI system.

The implementation of this method also depends on the child classes, though it does not characterize them.

Parameters
resresidual vector to be computed
dispcurrent unknown solution
iternonlinear iteration counter. The part of th rhs related to the time discretization is computed only for iter=0

Implements FSIOperator.

Definition at line 87 of file FSIExactJacobian.cpp.

◆ solveLinearFluid()

void solveLinearFluid ( )

Solves the linear fluid problem.

this method is called only by the class Epetra_ExactJacobian

Definition at line 118 of file FSIExactJacobian.cpp.

+ Here is the caller graph for this function:

◆ solveLinearSolid()

void solveLinearSolid ( )

Solves the linear structure problem.

this method is called only by the class Epetra_ExactJacobian

Definition at line 199 of file FSIExactJacobian.cpp.

+ Here is the caller graph for this function:

◆ setupFEspace()

void setupFEspace ( )
virtual

sets the space discretization parameters

The FE discretization is set accordingly to what specified in the FSIdata member (order of accuracy for the fluid pressure, velocity and for the structure).

Reimplemented from FSIOperator.

Definition at line 205 of file FSIExactJacobian.cpp.

◆ setupFluidSolid()

void setupFluidSolid ( void  )
virtual

setup of the fluid and solid solver classes

This method computes the number of fluxes assigned at the boundaries and calls setupFluidSolid(UInt fluxes)

Reimplemented from FSIOperator.

Definition at line 214 of file FSIExactJacobian.cpp.

◆ setDataFile()

void setDataFile ( GetPot const &  data)
virtual

initializes the GetPot data file

Reimplemented from FSIOperator.

Definition at line 229 of file FSIExactJacobian.cpp.

◆ bcManageVec()

void bcManageVec ( super::fluidBchandler_Type ,
vector_Type  
)
inline

should call bcManage for a vector, but the implementation is empty

Definition at line 146 of file FSIExactJacobian.hpp.

◆ registerMyProducts()

void registerMyProducts ( )

register the product for the factory

Definition at line 242 of file FSIExactJacobian.cpp.

◆ imposeFlux()

UInt imposeFlux ( void  )
private

Definition at line 256 of file FSIExactJacobian.cpp.

◆ eval()

void eval ( const vector_Type _res,
UInt  status 
)
private

Definition at line 288 of file FSIExactJacobian.cpp.

+ Here is the caller graph for this function:

Field Documentation

◆ M_rhsNew

vectorPtr_Type M_rhsNew
private

Definition at line 264 of file FSIExactJacobian.hpp.

◆ M_beta

vectorPtr_Type M_beta
private

Definition at line 265 of file FSIExactJacobian.hpp.

◆ M_aitkFS

NonLinearAitken<vector_Type> M_aitkFS
private

Definition at line 267 of file FSIExactJacobian.hpp.

◆ M_linearSolver

SolverAztecOO M_linearSolver
private

Definition at line 269 of file FSIExactJacobian.hpp.

◆ M_epetraOper

Epetra_ExactJacobian M_epetraOper
private

Definition at line 270 of file FSIExactJacobian.hpp.

◆ M_matrShapeDer

matrixPtr_Type M_matrShapeDer
private

Definition at line 272 of file FSIExactJacobian.hpp.

◆ M_recomputeShapeDer

bool M_recomputeShapeDer
private

Definition at line 273 of file FSIExactJacobian.hpp.


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