Class where it is implemented a reduced problem for the unsteady Navier-stokes problem. More...
#include <ReducedUnsteadyNSTurbIntrusive.H>
Public Member Functions | |
ReducedUnsteadyNSTurbIntrusive () | |
Construct Null. | |
ReducedUnsteadyNSTurbIntrusive (UnsteadyNSTurbIntrusive &problem) | |
Construct Null. | |
~ReducedUnsteadyNSTurbIntrusive () | |
void | solveOnline (Eigen::MatrixXd vel) |
Method to perform an online solve using an intrusive approach. | |
void | solveOnlinePPE (Eigen::MatrixXd vel) |
Method to perform an online solve using an intrusive approach with the usage of PPE. | |
void | reconstruct (bool exportFields=false, fileName folder="./online_rec") |
Method to reconstruct the solutions from an online solve with a fully uniform approach. | |
void | reconstructPPE (bool exportFields=false, fileName folder="./online_rec") |
Method to reconstruct the solutions from an online solve with a PPE semi-uniform approach. | |
Eigen::MatrixXd | setOnlineVelocity (Eigen::MatrixXd vel) |
Sets the online velocity. | |
void | reconstructLiftAndDrag (UnsteadyNSTurbIntrusive &problem, fileName folder) |
Method to compute the reduced order forces for same number of modes of velocity and pressure. | |
Public Member Functions inherited from reducedUnsteadyNS | |
reducedUnsteadyNS () | |
Construct Null. | |
reducedUnsteadyNS (unsteadyNS &problem) | |
Construct Null. | |
~reducedUnsteadyNS () | |
Eigen::MatrixXd | penalty_PPE (Eigen::MatrixXd &vel_now, Eigen::MatrixXd &tauIter, int startSnap=0) |
Method to determine the penalty factors iteratively. | |
Eigen::MatrixXd | penalty_sup (Eigen::MatrixXd &vel_now, Eigen::MatrixXd &tauIter, int startSnap=0) |
Method to determine the penalty factors iteratively. | |
void | solveOnline_PPE (Eigen::MatrixXd vel_now, int startSnap=0) |
Method to perform an online solve using a PPE stabilisation method. | |
void | solveOnline_sup (Eigen::MatrixXd vel_now, int startSnap=0) |
Method to perform an online solve using a supremizer stabilisation method. | |
void | reconstruct (bool exportFields=false, fileName folder="./online_rec") |
Method to reconstruct the solutions from an online solve with a supremizer stabilisation technique. | |
Eigen::MatrixXd | setOnlineVelocity (Eigen::MatrixXd vel) |
Sets the online velocity. | |
Public Member Functions inherited from reducedSteadyNS | |
reducedSteadyNS () | |
Construct Null. | |
reducedSteadyNS (steadyNS &problem) | |
Construct Null. | |
~reducedSteadyNS () | |
void | solveOnline_PPE (Eigen::MatrixXd vel_now) |
Method to perform an online solve using a PPE stabilisation method. | |
void | solveOnline_sup (Eigen::MatrixXd vel_now) |
Method to perform an online solve using a supremizer stabilisation method. | |
void | reconstruct_PPE (fileName folder="./ITHACAoutput/online_rec", int printevery=1) |
Method to reconstruct a solution from an online solve with a PPE stabilisation technique. | |
void | reconstruct (bool exportFields=false, fileName folder="./ITHACAoutput/online_rec", int printevery=1) |
Method to reconstruct the solutions from an online solve. | |
void | reconstructLiftAndDrag (steadyNS &problem, fileName folder) |
Method to compute the reduced order forces. | |
double | inf_sup_constant () |
Method to evaluate the online inf-sup constant. | |
Eigen::MatrixXd | setOnlineVelocity (Eigen::MatrixXd vel) |
Sets the online velocity. | |
Public Member Functions inherited from reducedProblem | |
reducedProblem () | |
Construct Null. | |
virtual | ~reducedProblem () |
reducedProblem (reductionProblem &problem) | |
Construct with reduced Problem. | |
virtual void | solveOnline () |
Virtual Method to perform and online Solve. | |
Public Attributes | |
UnsteadyNSTurbIntrusive * | problem |
Pointer to the FOM problem. | |
PtrList< volScalarField > | nutModes |
List of pointers to store the modes for the eddy viscosity. | |
newtonUnsteadyNSTurbIntrusive | newtonObject |
Function object to call the non linear solver sup approach. | |
newtonUnsteadyNSTurbIntrusivePPE | newtonObjectPPE |
Function object to call the non linear solver sup approach. | |
Eigen::MatrixXd | initCond |
Tha matrix containing the initial conditions for the reduced variables, in case of PPE approach it must be one column with the head being the degrees of freedom of velocity adn the tail the ones of pressure. | |
PtrList< volScalarField > | nutRecFields |
Reconstructed eddy viscosity fields list. | |
Public Attributes inherited from reducedUnsteadyNS | |
newton_unsteadyNS_sup | newton_object_sup |
Function object to call the non linear solver sup approach. | |
newton_unsteadyNS_PPE | newton_object_PPE |
Function object to call the non linear solver PPE approach. | |
scalar | time |
Scalar to store the current time. | |
double | dt |
Scalar to store the time increment. | |
scalar | finalTime |
Scalar to store the final time if the online simulation. | |
scalar | tstart |
Scalar to store the initial time if the online simulation. | |
double | storeEvery |
A variable for storing the reduced coefficients. | |
double | exportEvery |
A variable for exporting the fields. | |
bool | startFromZero = false |
A variable for starting solving the reduced system from zero or not. | |
int | timeStepPenalty = 1 |
Number of timesteps calculated for the iterative penalty method. | |
Eigen::MatrixXd | tauIter |
Penalty Factor determined with iterative solver. | |
scalar | maxIterPenalty |
Maximum number of iterations to be done for the computation of the penalty factor. | |
scalar | tolerancePenalty |
Tolerance for the residual of the boundary values, there is the same tolerance for velocity and temperature. | |
unsteadyNS * | problem |
Pointer to the FOM problem. | |
Public Attributes inherited from reducedSteadyNS | |
ITHACAparameters * | para |
parameters to be read from the ITHACAdict file | |
Eigen::MatrixXd | vel_now |
Online inlet velocity vector. | |
Eigen::MatrixXd | fTau |
Reduced matrix for tangent forces. | |
Eigen::MatrixXd | fN |
Reduced matrix for normal forces. | |
Eigen::VectorXd | y_old |
Vector to store the previous solution during the Newton procedure. | |
Eigen::VectorXd | y |
Vector to store the solution during the Newton procedure. | |
scalar | nu |
Reduced viscosity in case of parametrized viscosity. | |
List< Eigen::MatrixXd > | online_solution |
List of Eigen matrices to store the online solution. | |
PtrList< volVectorField > | Umodes |
List of pointers to store the modes for velocity. | |
PtrList< volScalarField > | Pmodes |
List of pointers to store the modes for pressure. | |
PtrList< volVectorField > | Usnapshots |
List of pointers to store the snapshots for velocity. | |
PtrList< volScalarField > | Psnapshots |
List of pointers to store the snapshots for pressure. | |
PtrList< volScalarField > | PREC |
Reconstructed pressure field. | |
PtrList< volVectorField > | UREC |
Recontructed velocity field. | |
PtrList< volScalarField > | pRecFields |
Reconstructed pressure fields list. | |
PtrList< volVectorField > | uRecFields |
Recontructed velocity fields list. | |
newton_steadyNS | newton_object |
Newton object used to solve the non linear problem. | |
steadyNS * | problem |
Pointer to the FOM problem. | |
int | Nphi_u |
Number of velocity modes. | |
int | Nphi_p |
Number of pressure modes. | |
int | Nphi_sup |
Number of supremizer modes. | |
int | N_BC |
Number of parametrized boundary conditions. | |
int | count_online_solve = 1 |
Counter to count the online solutions. | |
Eigen::MatrixXd | tauU |
Penalty Factor. | |
Public Attributes inherited from reducedProblem | |
scalar | nu |
Viscosity. | |
reductionProblem * | problem |
Pointer to FOAM problem. | |
Additional Inherited Members | |
Static Public Member Functions inherited from reducedProblem | |
static Eigen::MatrixXd | solveLinearSys (List< Eigen::MatrixXd > LinSys, Eigen::MatrixXd x, Eigen::VectorXd &residual, const Eigen::MatrixXd &bc=Eigen::MatrixXd::Zero(0, 0), const std::string solverType="fullPivLu") |
Linear system solver for the online problem. | |
static Eigen::MatrixXd | solveLinearSys (List< Eigen::MatrixXd > LinSys, Eigen::MatrixXd x, Eigen::VectorXd &residual, const std::string solverType) |
Linear system solver for the online problem. | |
Class where it is implemented a reduced problem for the unsteady Navier-stokes problem.
In this class are implemented the methods to solve a reduced version of the stationary Navier-stokes equations. This class must be used together with the steadyNS class
Definition at line 109 of file ReducedUnsteadyNSTurbIntrusive.H.
ReducedUnsteadyNSTurbIntrusive::ReducedUnsteadyNSTurbIntrusive | ( | ) |
Construct Null.
Definition at line 41 of file ReducedUnsteadyNSTurbIntrusive.C.
|
explicit |
Construct Null.
problem | a full order UnsteadyNSTurbIntrusive problem |
Definition at line 45 of file ReducedUnsteadyNSTurbIntrusive.C.
|
inline |
Definition at line 123 of file ReducedUnsteadyNSTurbIntrusive.H.
void ReducedUnsteadyNSTurbIntrusive::reconstruct | ( | bool | exportFields = false, |
fileName | folder = "./online_rec" ) |
Method to reconstruct the solutions from an online solve with a fully uniform approach.
[in] | exportFields | A boolean variable which determines whether to export fields or not |
[in] | folder | The folder where to output the solutions in case on wants to |
Definition at line 548 of file ReducedUnsteadyNSTurbIntrusive.C.
void ReducedUnsteadyNSTurbIntrusive::reconstructLiftAndDrag | ( | UnsteadyNSTurbIntrusive & | problem, |
fileName | folder ) |
Method to compute the reduced order forces for same number of modes of velocity and pressure.
problem | A UnsteadyNSTurbIntrusive full order problem. | |
[in] | folder | The folder where to output the forces matrices |
Definition at line 685 of file ReducedUnsteadyNSTurbIntrusive.C.
void ReducedUnsteadyNSTurbIntrusive::reconstructPPE | ( | bool | exportFields = false, |
fileName | folder = "./online_rec" ) |
Method to reconstruct the solutions from an online solve with a PPE semi-uniform approach.
[in] | exportFields | A boolean variable which determines whether to export fields or not |
[in] | folder | The folder where to output the solutions in case on wants to |
Definition at line 606 of file ReducedUnsteadyNSTurbIntrusive.C.
Eigen::MatrixXd ReducedUnsteadyNSTurbIntrusive::setOnlineVelocity | ( | Eigen::MatrixXd | vel | ) |
Sets the online velocity.
[in] | vel | The velocity |
Definition at line 664 of file ReducedUnsteadyNSTurbIntrusive.C.
void ReducedUnsteadyNSTurbIntrusive::solveOnline | ( | Eigen::MatrixXd | vel | ) |
Method to perform an online solve using an intrusive approach.
[in] | vel | The velocity |
Definition at line 253 of file ReducedUnsteadyNSTurbIntrusive.C.
void ReducedUnsteadyNSTurbIntrusive::solveOnlinePPE | ( | Eigen::MatrixXd | vel | ) |
Method to perform an online solve using an intrusive approach with the usage of PPE.
[in] | velNow | The vector of online velocity. It is defined in with an Eigen::MatrixXd and must have one col and as many rows as the number of parametrized boundary conditions. |
Definition at line 400 of file ReducedUnsteadyNSTurbIntrusive.C.
Eigen::MatrixXd ReducedUnsteadyNSTurbIntrusive::initCond |
Tha matrix containing the initial conditions for the reduced variables, in case of PPE approach it must be one column with the head being the degrees of freedom of velocity adn the tail the ones of pressure.
Definition at line 140 of file ReducedUnsteadyNSTurbIntrusive.H.
newtonUnsteadyNSTurbIntrusive ReducedUnsteadyNSTurbIntrusive::newtonObject |
Function object to call the non linear solver sup approach.
Definition at line 132 of file ReducedUnsteadyNSTurbIntrusive.H.
newtonUnsteadyNSTurbIntrusivePPE ReducedUnsteadyNSTurbIntrusive::newtonObjectPPE |
Function object to call the non linear solver sup approach.
Definition at line 135 of file ReducedUnsteadyNSTurbIntrusive.H.
PtrList<volScalarField> ReducedUnsteadyNSTurbIntrusive::nutModes |
List of pointers to store the modes for the eddy viscosity.
Definition at line 129 of file ReducedUnsteadyNSTurbIntrusive.H.
PtrList<volScalarField> ReducedUnsteadyNSTurbIntrusive::nutRecFields |
Reconstructed eddy viscosity fields list.
Definition at line 143 of file ReducedUnsteadyNSTurbIntrusive.H.
UnsteadyNSTurbIntrusive* ReducedUnsteadyNSTurbIntrusive::problem |
Pointer to the FOM problem.
Definition at line 126 of file ReducedUnsteadyNSTurbIntrusive.H.