38 #ifndef MultiscaleModelFluid3D_H 39 #define MultiscaleModelFluid3D_H 1
41 #include <lifev/core/mesh/MeshPartitioner.hpp> 42 #include <lifev/core/mesh/RegionMesh.hpp> 43 #include <lifev/navier_stokes/solver/OseenData.hpp> 44 #include <lifev/core/mesh/MeshData.hpp> 46 #include <lifev/bc_interface/3D/function/fluid/BCInterfaceFunctionParserFluid3D.hpp> 47 #include <lifev/bc_interface/3D/function/fluid/BCInterfaceFunctionParserSolverFluid3D.hpp> 48 #include <lifev/bc_interface/3D/function/fluid/BCInterfaceFunctionUserDefinedFluid3D.hpp> 51 #include <lifev/bc_interface/3D/bc/BCInterface3D.hpp> 52 #include <lifev/core/algorithm/NonLinearAitken.hpp> 53 #include <lifev/core/fem/FESpace.hpp> 54 #include <lifev/core/filter/ExporterEnsight.hpp> 56 #include <lifev/core/filter/ExporterHDF5.hpp> 58 #include <lifev/navier_stokes/fem/TimeAdvanceBDFNavierStokes.hpp> 59 #include <lifev/navier_stokes/solver/OseenSolverShapeDerivative.hpp> 61 #include <lifev/multiscale/models/MultiscaleModel.hpp> 62 #include <lifev/multiscale/framework/MultiscaleInterface.hpp> 81 public virtual MultiscaleInterface
138 void setupData (
const std::string& fileName );
197 multiscaleErrorCheck ( ModelInterface,
"Invalid interface [MeanTotalNormalStress] for model type [" + enum2String ( M_type, multiscaleModelsMap ) +
"]", M_comm->MyPID() == 0 );
209 multiscaleErrorCheck ( ModelInterface,
"Invalid interface [Area] for model type [" + enum2String ( M_type, multiscaleModelsMap ) +
"]", M_comm->MyPID() == 0 );
219 return M_fluid->flux ( boundaryFlag ( boundaryID ) );
229 return M_fluid->meanNormalStress ( boundaryFlag ( boundaryID ), *M_bc->handler() );
239 return M_fluid->meanTotalNormalStress ( boundaryFlag ( boundaryID ), *M_bc->handler() );
249 return M_fluid->area ( boundaryFlag ( boundaryID ) );
322 return M_data->density();
331 return M_data->viscosity();
341 return M_fluid->pressure ( boundaryFlag ( boundaryID ) );
351 return M_fluid->pressure ( boundaryFlag ( boundaryID ) ) + M_fluid->kineticNormalStress ( boundaryFlag ( boundaryID ) );
485 return new MultiscaleModelFluid3D();
void solveModel()
Solve the model.
Real boundaryDeltaMeanTotalNormalStress(const multiscaleID_Type &boundaryID, bool &solveLinearSystem)
Get the variation of the integral of the mean total normal stress (on a specific boundary interface) ...
Real boundaryPressure(const multiscaleID_Type &boundaryID) const
Get the integral of the pressure (on a specific boundary face)
MultiscaleModelFluid3D & operator=(const MultiscaleModelFluid3D &model)
OseenSolverShapeDerivative< mesh_Type > fluid_Type
void setupDOF()
Setup the DOF of the model.
void solveLinearModel(bool &solveLinearSystem)
Solve the linear problem.
ExporterEnsight data exporter.
std::shared_ptr< bcInterface_Type > bcInterfacePtr_Type
const fluidVector_Type & solution() const
Get the solution vector.
FESpace - Short description here please!
Real boundaryViscosity() const
Get the viscosity on a specific boundary face of the model.
std::shared_ptr< bc_Type > bcPtr_Type
UInt M_subiterationsMaximumNumber
virtual ~MultiscaleModelFluid3D()
Destructor.
bcInterface_Type & bcInterface()
Get the BCInterface container of the boundary conditions of the model.
std::shared_ptr< IOFile_Type > IOFilePtr_Type
Real bcFunctionDeltaOne(const Real &, const Real &, const Real &, const Real &, const UInt &)
multiscaleModel_Type * createMultiscaleModelFluid3D()
Factory create function.
Real boundaryDeltaMeanNormalStress(const multiscaleID_Type &boundaryID, bool &solveLinearSystem)
Get the variation of the integral of the mean normal stress (on a specific boundary interface) using ...
void buildModel()
Build the initial model.
void setupBCOffset(const bcPtr_Type &BC)
Setup the offset for fluxes boundary conditions.
Real boundaryMeanTotalNormalStress(const multiscaleID_Type &boundaryID) const
Get the integral of the mean total normal stress on a specific boundary interface of the model...
Real checkSolution() const
Return a specific scalar quantity to be used for a comparison with a reference value.
void initializeSolution()
Initialize the solution.
Real boundaryDeltaFlowRate(const multiscaleID_Type &boundaryID, bool &solveLinearSystem)
Get the variation of the flow rate (on a specific boundary interface) using the linear model...
FESpacePtr_Type M_pFESpace
void updateSolution()
Update the solution.
Real bcFunctionDeltaZero(const Real &, const Real &, const Real &, const Real &, const UInt &)
void setupGlobalData(const std::string &fileName)
Setup the global data of the model.
fluidVectorPtr_Type M_beta
MultiscaleModelFluid3D()
Constructor.
fluid_Type::vector_Type fluidVector_Type
void setupFEspace()
Setup the FE space for pressure and velocity.
void setSolution(const fluidVectorPtr_Type &solution)
Set the solution vector.
NonLinearAitken< fluidVector_Type > M_generalizedAitken
Real boundaryTotalPressure(const multiscaleID_Type &boundaryID) const
Get the integral of the total pressure (on a specific boundary face)
Epetra_Import const & importer()
Getter for the Epetra_Import.
std::shared_ptr< MapEpetra > M_map
fluidVectorPtr_Type M_solution
TimeAdvanceBDFNavierStokes< fluidVector_Type > bdf_Type
FESpace< mesh_Type, MapEpetra > FESpace_Type
ExporterData< mesh_Type > IOData_Type
Real boundaryMeanNormalStress(const multiscaleID_Type &boundaryID) const
Get the integral of the mean normal stress on a specific boundary interface of the model...
ExporterEnsight< mesh_Type > ensightIOFile_Type
void saveSolution()
Save the solution.
NonLinearAitken - LifeV class for the non-linear generalized Aitken algorithm.
Exporter< mesh_Type > IOFile_Type
MeshPartitioner< mesh_Type > MeshPartitioner_Type
void imposePerturbation()
Impose the coupling perturbation on the correct BC inside the BCHandler.
void setupModel()
Setup the model.
void imposeBoundaryMeanNormalStress(const multiscaleID_Type &boundaryID, const function_Type &function)
Impose the integral of the mean normal stress on a specific boundary interface of the model...
Real boundaryDeltaArea(const multiscaleID_Type &, bool &)
Get the variation of the integral of the area (on a specific boundary interface) using the linear mod...
std::shared_ptr< FESpace_Type > FESpacePtr_Type
void setupMesh()
Setup the mesh for the fluid problem.
double Real
Generic real data.
Real boundaryArea(const multiscaleID_Type &boundaryID) const
Get the area on a specific boundary interface of the model.
const data_Type & data() const
Get the data container.
IOFilePtr_Type M_exporter
void imposeBoundaryMeanTotalNormalStress(const multiscaleID_Type &, const function_Type &)
Impose the integral of the mean total normal stress on a specific boundary interface of the model...
Real boundaryDensity() const
Get the density on a specific boundary face of the model.
MultiscaleModelFluid3D(const MultiscaleModelFluid3D &model)
void updateModel()
Update the model.
FESpacePtr_Type M_uFESpace
std::shared_ptr< fluid_Type > M_fluid
fluidVectorPtr_Type M_rhs
Real boundaryFlowRate(const multiscaleID_Type &boundaryID) const
Get the flow rate on a specific boundary interface of the model.
void resetPerturbation()
Reset all the coupling perturbations imposed on the BCHandler.
void imposeBoundaryArea(const multiscaleID_Type &, const function_Type &)
Impose the area on a specific boundary interface of the model.
RegionMesh< LinearTetra > mesh_Type
void setupExporterImporter(const std::string &fileName)
Setup the exporter and the importer.
std::shared_ptr< MeshPartitioner_Type > M_mesh
void updateLinearModel()
Update the linear system matrix and vectors.
ExporterHDF5< mesh_Type > hdf5IOFile_Type
BCInterface3D< bc_Type, fluid_Type > bcInterface_Type
void setupLinearModel()
Setup the linear model.
std::shared_ptr< data_Type > M_data
IOFilePtr_Type M_importer
uint32_type UInt
generic unsigned integer (used mainly for addressing)
std::shared_ptr< MeshData > M_meshData
void showMe()
Display some information about the model.
void imposeBoundaryFlowRate(const multiscaleID_Type &boundaryID, const function_Type &function)
Impose the flow rate on a specific interface of the model.
std::shared_ptr< fluidVector_Type > fluidVectorPtr_Type
std::shared_ptr< bdf_Type > M_bdf
void setupData(const std::string &fileName)
Setup the data of the model.