67 #include <lifev/core/LifeV.hpp> 70 #include <lifev/core/filter/GetPot.hpp> 73 #include <lifev/core/array/MatrixEpetra.hpp> 74 #include <lifev/core/array/VectorEpetra.hpp> 77 #include <lifev/core/mesh/MeshData.hpp> 78 #include <lifev/core/mesh/MeshPartitioner.hpp> 81 #include <lifev/navier_stokes_blocks/solver/NavierStokesSolverBlocks.hpp> 82 #include <lifev/fsi_blocks/solver/LinearElasticity.hpp> 84 #include <lifev/fsi_blocks/solver/ALESolver.hpp> 87 #include <lifev/eta/fem/ETFESpace.hpp> 89 #include <lifev/core/fem/TimeAndExtrapolationHandler.hpp> 90 #include <lifev/core/fem/Newmark.hpp> 91 #include <lifev/core/fem/BDFSecondOrderDerivative.hpp> 93 #include <lifev/core/fem/DOFInterface3Dto3D.hpp> 95 #include <lifev/fsi_blocks/solver/FSIcouplingCE.hpp> 96 #include <lifev/fsi_blocks/solver/FSIApplyOperator.hpp> 98 #include <lifev/core/filter/ExporterEnsight.hpp> 99 #include <lifev/core/filter/ExporterHDF5.hpp> 100 #include <lifev/core/filter/ExporterVTK.hpp> 102 #include <Teuchos_ParameterList.hpp> 103 #include <Teuchos_XMLParameterListHelpers.hpp> 105 #include <lifev/fsi_blocks/solver/BlockJacobiPreconditioner.hpp> 107 #include <lifev/core/filter/PartitionIO.hpp> 108 #include <lifev/fsi_blocks/filter/DOFInterfaceIO.hpp> 110 #include <Teuchos_ParameterList.hpp> 111 #include <Teuchos_XMLParameterListHelpers.hpp> 112 #include <Teuchos_RCP.hpp> 113 #include <lifev/core/interpolation/Interpolation.hpp> 115 #include <lifev/core/algorithm/LinearSolver.hpp> 117 #include <lifev/fsi_blocks/solver/FSIApplyOperatorNonConforming.hpp> 119 #include <lifev/fsi_blocks/solver/NeoHookean.hpp> 310 void moveMesh (
const VectorEpetra& displacement );
341 const std::string& outputFileName );
367 void applyBCresidual(VectorEpetra& r_u, VectorEpetra& r_ds, VectorEpetra& r_df);
Real getTime()
Get the current time.
void setupStructure()
Setup solid sub-problem.
void setFluidInterfaceBoundaryConditions(const bcPtr_Type &interfaceFluidBC)
Set the boundary conditions.
FESpacePtr_Type M_displacementFESpaceScalar
vectorPtr_Type M_rhsCouplingVelocities
bcPtr_Type M_structureBC_residual_essential
commPtr_Type M_comm
communicator
void setTime(const Real &time)
Set the current time.
std::shared_ptr< Operators::InvertibleOperator > M_invOper
void applyBCsolution(vectorPtr_Type &M_solution)
Apply BCs solution FSI problem.
void initializeExtrapolation()
Initialize extrapolation for initial guess Newton.
Real M_relativeTolerance
Variables for the time advancing.
std::shared_ptr< TimeAndExtrapolationHandler > M_aleTimeAdvance
meshPartitionerPtr_Type M_structurePartitioner
std::shared_ptr< Exporter< mesh_Type > > M_exporterStructure
meshPtr_Type M_structureLocalMesh
solidETFESpacePtr_Type M_displacementETFESpace
std::shared_ptr< basePrec_Type > basePrecPtr_Type
FESpace - Short description here please!
std::shared_ptr< GetPot > datafilePtr_Type
std::ofstream M_outputTimeStep
vectorPtr_Type M_rhsStructure
matrixPtr_Type M_interface_mass_structure_robin
matrixPtr_Type M_interface_mass_structure
LifeV::Preconditioner basePrec_Type
bool M_prescribeInflowFlowrate
std::shared_ptr< comm_Type > commPtr_Type
vectorPtr_Type M_LagrangeRestart
std::shared_ptr< BDFSecondOrderDerivative > M_structureTimeAdvanceBDF
void instantiateExporter(std::shared_ptr< Exporter< mesh_Type > > &exporter, const meshPtr_Type &localMesh, const std::string &outputFileName)
Instantiate exporter.
void importFromHDF5(std::string const &fileName, std::string const &matrixName="matrix")
Read a matrix from a HDF5 (.h5) file.
std::shared_ptr< MeshData > meshDataPtr_Type
std::shared_ptr< vector_Type > vectorPtr_Type
bool M_usePartitionedMeshes
std::shared_ptr< BCHandler > bcPtr_Type
void assembleCoupling()
Assemble the coupling blocks.
std::shared_ptr< NavierStokesSolverBlocks > M_fluid
vectorPtr_Type M_fluidPressure
FESpacePtr_Type M_displacementFESpaceSerial
bool M_extrapolateInitialGuess
std::shared_ptr< LinearElasticity > M_structure
void getMatrixStructure()
Get Jacobian matrix structure problem.
FESpacePtr_Type M_aleFESpace
vectorPtr_Type M_structureVelocity
FESpacePtr_Type M_pressureFESpace
void moveMesh(const VectorEpetra &displacement)
Moves the fluid mesh.
int32_type Int
Generic integer data.
std::shared_ptr< FESpace_Type > FESpacePtr_Type
void intializeTimeLoop()
Method to be used before solveTimeStep. If one does not use.
std::shared_ptr< map_Type > M_lagrangeMap
void evalResidual(vector_Type &residual, const vector_Type &solution, const UInt iter_newton)
Form the residual of the FSI problem.
vectorPtr_Type M_numerationInterfaceStructure
meshPtr_Type M_fluidLocalMesh
matrixPtr_Type M_matrixStructure
std::shared_ptr< map_Type > M_monolithicMap
vectorPtr_Type getFluidVelocity()
Get the fluid velocity.
void setup()
Setup the solver.
std::shared_ptr< LifeV::Operators::FSIApplyOperator > M_applyOperatorResidual
meshPartitionerPtr_Type M_fluidPartitioner
vectorPtr_Type M_structureDisplacement
void buildInterfaceMaps()
Build the interface map.
bool M_lambda_num_structure
vectorPtr_Type M_rhsStructureVelocity
void structureToInterface(vector_Type &VectorOnGamma, const vector_Type &VectorOnStructure)
Extract interface dofs from vector defined on the whole domain.
void setupExporters()
Setup the exporters of fluid and solid.
std::shared_ptr< prec_Type > precPtr_Type
void setDatafile(const GetPot &dataFile)
Set the datafile.
Epetra_Import const & importer()
Getter for the Epetra_Import.
std::shared_ptr< map_Type > M_fluidInterfaceMap
vectorPtr_Type M_Lagrange
Real getEndTime()
Get the end time.
void partitionMeshes()
Partitioning the fluid and solid meshes.
Teuchos::ParameterList parameterList_Type
std::shared_ptr< TimeAndExtrapolationHandler > M_extrapolationSolution
vectorPtr_Type M_structureAcceleration
vectorPtr_Type M_numerationInterfaceFluid
std::shared_ptr< MeshPartitioner< mesh_Type > > meshPartitionerPtr_Type
Real getStartTime()
Get initial time.
void setParameterLists()
Set the parameter list of the problem.
std::shared_ptr< mesh_Type > meshPtr_Type
std::shared_ptr< Newmark > M_structureTimeAdvance
void createInterfaceMaps(std::map< ID, ID > const &locDofMap)
Build std map with local to global indexes dofs interface.
bcPtr_Type M_structureBC_residual_natural
FESpacePtr_Type M_velocityFESpace
void updateRhsCouplingVelocities()
Update coupling velocity vector in the conforming case.
meshDataPtr_Type M_meshDataStructure
MatrixEpetra< Real > matrix_Type
Teuchos::RCP< Teuchos::ParameterList > parameterListRCP_Type
Displayer M_displayer
Displayer to print in parallel (only PID 0 will print)
void readPartitionedMeshes()
Read fluid and solid meshes that have been already partitioned offline.
void updateRhsCouplingVelocities_nonconforming()
Update coupling velocity vector in the nonconforming case.
void applyInverseFluidMassOnGamma(const vectorPtr_Type &lambda, vectorPtr_Type &strongLambda)
Apply inverse of interface mass matrix fluid.
void initializeApplyOperatorJacobian()
Operator apply for the Jacobian in the onforming case.
void finalizeExporters()
Close the exporters.
void updateBoundaryConditions()
Update all the bc handlers.
void applyBCstructure()
Apply BCs solid problem.
bcPtr_Type M_aleBC_residual_natural
std::shared_ptr< parameterList_Type > parameterListPtr_Type
std::shared_ptr< map_Type > mapPtr_Type
vectorPtr_Type M_fluidVelocity
std::shared_ptr< interpolation_Type > interpolationPtr_Type
vectorPtr_Type M_rhs_velocity
Interpolation interpolation_Type
RegionMesh< LinearTetra > mesh_Type
vectorPtr_Type M_numerationInterface
bcPtr_Type M_interfaceFluidBC
meshPtr_Type M_structureMesh
double Real
Generic real data.
void assembleStructureInterfaceMass()
Assemble interface mass structure at the interface.
std::shared_ptr< LifeV::Operators::BlockJacobiPreconditioner > M_prec
std::shared_ptr< ALESolver > M_ale
void readMeshes()
Read the fluid and solid meshes.
meshDataPtr_Type M_meshDataFluid
vectorPtr_Type getFSIsolution()
Get the FSI solution.
void solveJac(vector_Type &increment, const vector_Type &residual, const Real linearRelTol)
Solves J_{FSI} = - R.
std::shared_ptr< map_Type > M_structureInterfaceMap
FESpace< mesh_Type, map_Type > FESpace_Type
void solveTimeStep()
Solve one time step.
ETFESpace< mesh_Type, map_Type, 3, 3 > solidETFESpace_Type
vectorPtr_Type M_solution
void setSolversOptions(const Teuchos::ParameterList &solversOptions)
Set options linear solver.
void updateSystem()
Updates term due to coupling of velocities.
void get_structure_coupling_velocities()
Get vector coupling velocities at interface.
bool M_subiterateFluidDirichlet
std::ofstream M_outputTimeLinearSolver
std::shared_ptr< NavierStokesSolverBlocks > getFluid()
Get the fluid solver.
UInt M_orderExtrapolationInitialGuess
bcPtr_Type M_fluidBC_residual_natural
std::shared_ptr< ExporterHDF5< mesh_Type > > M_importerStructure
LifeV::PreconditionerIfpack prec_Type
FSIHandler(const commPtr_Type &communicator)
Constructor.
basePrecPtr_Type M_precPtr
std::shared_ptr< solidETFESpace_Type > solidETFESpacePtr_Type
GetPot M_datafile
datafile
std::shared_ptr< FSIcouplingCE > M_coupling
Real getTimeStep()
Get the time step size.
vectorPtr_Type getFluidPressure()
Get the fluid pressure.
bcPtr_Type M_aleBC_residual_essential
std::ofstream M_outputResiduals
void createAleFESpace()
Create ALE FE spaces.
std::shared_ptr< LifeV::Operators::FSIApplyOperator > M_applyOperatorJacobian
void initializeTimeAdvance()
Update the time advancing schemes.
std::shared_ptr< DOFInterface3Dto3D > M_dofStructureToFluid
std::shared_ptr< matrix_Type > matrixPtr_Type
std::shared_ptr< LifeV::Operators::FSIApplyOperatorNonConforming > M_applyOperatorJacobianNonConforming
void constructInterfaceMap(const std::map< ID, ID > &locDofMap, const UInt subdomainMaxId)
Build epetra map dofs at the interface.
std::shared_ptr< Exporter< mesh_Type > > M_exporterFluid
void updateBCHandler(bcPtr_Type &bc)
Update the bc handler.
vectorPtr_Type M_fluidDisplacement
interpolationPtr_Type M_StructureToFluidInterpolant
void buildMonolithicMap()
Build the monolithic map.
interpolationPtr_Type M_FluidToStructureInterpolant
Real M_dt
Variables for the time advancing.
std::shared_ptr< TimeAndExtrapolationHandler > M_fluidTimeAdvance
void applyBCresidual(VectorEpetra &r_u, VectorEpetra &r_ds, VectorEpetra &r_df)
Apply BCs residual FSI problem.
std::shared_ptr< NeoHookean > M_structureNeoHookean
Int M_nonLinearLineSearch
class ETFESpace A light, templated version of the FESpace
bool M_useShapeDerivatives
std::ofstream M_outputLinearIterations
void setGravity(const Real &gravity, const Real &gravity_direction)
Set gravity, if considered.
std::ofstream M_outputSteps
vectorPtr_Type M_rhsFluid
FESpacePtr_Type M_displacementFESpace
void solveFSIproblem()
Solves the time loop of the FSI problem.
uint32_type UInt
generic unsigned integer (used mainly for addressing)
matrixPtr_Type M_interface_mass_fluid
matrixPtr_Type M_matrixStructure_noBc
void postprocessResults(const int &time_step_count)
Save the results for post-processing.
void setBoundaryConditions(const bcPtr_Type &fluidBC, const bcPtr_Type &structureBC, const bcPtr_Type &aleBC)
Set the boundary conditions.
mapPtr_Type M_lagrangeMapScalar
parameterListPtr_Type M_pListLinSolver
std::ofstream M_outputPreconditionerComputation
bcPtr_Type M_fluidBC_residual_essential