//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// More...
Public Member Functions | |
SegregatedFSICollapsibleChannelProblem (const unsigned &nup, const unsigned &ncollapsible, const unsigned &ndown, const unsigned &ny, const double &lup, const double &lcollapsible, const double &ldown, const double &ly, const bool &displ_control, const bool &steady_flag) | |
Constructor: The arguments are the same as the original (non-segregated) problem, namely, numbers of elements and lengths of different sections of the domain. More... | |
~SegregatedFSICollapsibleChannelProblem () | |
Empty Destructor. More... | |
void | identify_fluid_and_solid_dofs (Vector< Data * > &fluid_data_pt, Vector< Data * > &solid_data_pt, Mesh *&fluid_mesh_pt, Mesh *&solid_mesh_pt) |
Identify the fluid and solid Data and meshes that contain only elements involved in the respective sub-problems. This is a specific implementation of a pure virtual function in the SegregatableFSIProblem base class. More... | |
void | actions_before_newton_convergence_check () |
Update nodal positions in the fluid mesh in response to changes in the wall displacement field after every Newton step in a monolithic or segregated solid solve. Note the use of the (protected) flag Solve_type, which can take the values Full_solve, Fluid_solve or Solid_solve. This flag is used to allow specification of different actions depending on the precise solve taking place. More... | |
void | actions_before_segregated_convergence_check () |
Update nodal positions in the fluid mesh in response to any changes in the wall displacement field after every segregated solve. This is not strictly necessary because we do the solid solve last, which performs its own node update before the convergence check of the sub problem. It remains here because if we were solving in a completely segregated fashion a node update would be required for the fluid mesh in the final converged solution to be consistent with the solid positions. More... | |
void | doc_solution (DocInfo &doc_info) |
Document the solution. More... | |
void | steady_run () |
Perform a steady run. More... | |
Public Member Functions inherited from FSICollapsibleChannelProblem< ELEMENT > | |
FSICollapsibleChannelProblem (const unsigned &nup, const unsigned &ncollapsible, const unsigned &ndown, const unsigned &ny, const double &lup, const double &lcollapsible, const double &ldown, const double &ly, const bool &displ_control, const bool &steady_flag) | |
Constructor: The arguments are the number of elements and the lengths of the domain. More... | |
~FSICollapsibleChannelProblem () | |
Destructor. More... | |
virtual void | unsteady_run (const double &dt=0.1) |
Unsteady run; virtual so it can be overloaded in derived problem classes. Specify timestep or use default of 0.1. More... | |
AlgebraicCollapsibleChannelMesh< ELEMENT > * | bulk_mesh_pt () |
Access function for the specific bulk (fluid) mesh. More... | |
OneDLagrangianMesh< FSIHermiteBeamElement > * | wall_mesh_pt () |
Access function for the wall mesh. More... | |
void | actions_before_newton_solve () |
Actions before solve. Reset counter for number of Newton iterations. More... | |
void | actions_after_newton_solve () |
Update the problem after solve (empty) More... | |
void | actions_before_newton_convergence_check () |
Update before checking Newton convergence: Update the nodal positions in the fluid mesh in response to possible changes in the wall shape. More... | |
virtual void | doc_solution_steady (DocInfo &doc_info, ofstream &trace_file, const double &cpu, const unsigned &niter) |
Doc the steady solution. More... | |
virtual void | doc_solution_unsteady (DocInfo &doc_info, ofstream &trace_file, const double &cpu, const unsigned &niter) |
Doc the unsteady solution. More... | |
void | set_initial_condition () |
Apply initial conditions. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from FSICollapsibleChannelProblem< ELEMENT > | |
void | dump_it (ofstream &dump_file) |
Dump problem to disk to allow for restart. More... | |
void | restart (ifstream &restart_file) |
Read problem for restart from specified restart file. More... | |
Protected Attributes inherited from FSICollapsibleChannelProblem< ELEMENT > | |
unsigned | Nup |
Number of elements in the x direction in the upstream part of the channel. More... | |
unsigned | Ncollapsible |
Number of elements in the x direction in the collapsible part of the channel. More... | |
unsigned | Ndown |
Number of elements in the x direction in the downstream part of the channel. More... | |
unsigned | Ny |
Number of elements across the channel. More... | |
double | Lup |
x-length in the upstream part of the channel More... | |
double | Lcollapsible |
x-length in the collapsible part of the channel More... | |
double | Ldown |
x-length in the downstream part of the channel More... | |
double | Ly |
Transverse length. More... | |
AlgebraicCollapsibleChannelMesh< ELEMENT > * | Bulk_mesh_pt |
Pointer to the "bulk" mesh. More... | |
Mesh * | Displ_control_mesh_pt |
Pointer to the mesh that contains the displacement control element. More... | |
bool | Displ_control |
Use displacement control? More... | |
OneDLagrangianMesh< FSIHermiteBeamElement > * | Wall_mesh_pt |
Pointer to the "wall" mesh. More... | |
Node * | Left_node_pt |
Pointer to the left control node. More... | |
Node * | Right_node_pt |
Pointer to right control node. More... | |
Node * | Wall_node_pt |
Pointer to control node on the wall. More... | |
bool | Steady_flag |
Flag for steady run. More... | |
GeomObject * | Ctrl_geom_obj_pt |
Pointer to GeomObject at which displacement control is applied (or at which wall displacement is monitored in unsteady runs) More... | |
Vector< double > | S_displ_ctrl |
Vector of local coordinates of displacement control point in Ctrl_geom_obj_pt. More... | |
MeshAsGeomObject * | Wall_geom_object_pt |
Pointer to geometric object (one Lagrangian, two Eulerian coordinates) that will be built from the wall mesh. More... | |
unsigned | Newton_iter |
Counter for Newton iterations. More... | |
DocInfo | Doc_info |
DocInfo object. More... | |
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
Problem class – add segregated solver capability to an existing problem.
Definition at line 86 of file simple_segregated_driver.cc.
SegregatedFSICollapsibleChannelProblem< ELEMENT >::SegregatedFSICollapsibleChannelProblem | ( | const unsigned & | nup, |
const unsigned & | ncollapsible, | ||
const unsigned & | ndown, | ||
const unsigned & | ny, | ||
const double & | lup, | ||
const double & | lcollapsible, | ||
const double & | ldown, | ||
const double & | ly, | ||
const bool & | displ_control, | ||
const bool & | steady_flag | ||
) |
Constructor: The arguments are the same as the original (non-segregated) problem, namely, numbers of elements and lengths of different sections of the domain.
Constructor for the collapsible channel problem.
Definition at line 167 of file simple_segregated_driver.cc.
References Flags::Convergence_criterion, Flags::Convergence_tolerance, Flags::Omega_under_relax, Flags::Use_irons_and_tuck_extrapolation, and Flags::Use_pointwise_aitken.
|
inline |
Empty Destructor.
Definition at line 108 of file simple_segregated_driver.cc.
|
inline |
Update nodal positions in the fluid mesh in response to changes in the wall displacement field after every Newton step in a monolithic or segregated solid solve. Note the use of the (protected) flag Solve_type, which can take the values Full_solve, Fluid_solve or Solid_solve. This flag is used to allow specification of different actions depending on the precise solve taking place.
Definition at line 129 of file simple_segregated_driver.cc.
|
inline |
Update nodal positions in the fluid mesh in response to any changes in the wall displacement field after every segregated solve. This is not strictly necessary because we do the solid solve last, which performs its own node update before the convergence check of the sub problem. It remains here because if we were solving in a completely segregated fashion a node update would be required for the fluid mesh in the final converged solution to be consistent with the solid positions.
Definition at line 147 of file simple_segregated_driver.cc.
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::doc_solution | ( | DocInfo & | doc_info | ) |
Document the solution.
Definition at line 326 of file simple_segregated_driver.cc.
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::identify_fluid_and_solid_dofs | ( | Vector< Data * > & | fluid_data_pt, |
Vector< Data * > & | solid_data_pt, | ||
Mesh *& | fluid_mesh_pt, | ||
Mesh *& | solid_mesh_pt | ||
) |
Identify the fluid and solid Data and meshes that contain only elements involved in the respective sub-problems. This is a specific implementation of a pure virtual function in the SegregatableFSIProblem base class.
Identify the fluid and solid Data and the meshes that contain only elements that are involved in the respective sub-problems. This implements a pure virtual function in the SegregatableFSIProblem base class.
Definition at line 243 of file simple_segregated_driver.cc.
References Global_Physical_Variables::P_ext_data_pt.
|
virtual |
Perform a steady run.
Perform a steady run in which the external pressure (or presribed displacement) is varied causing the channel to collapse.
Reimplemented from FSICollapsibleChannelProblem< ELEMENT >.
Definition at line 359 of file simple_segregated_driver.cc.
References Flags::Nsteps, Global_Physical_Variables::P_ext_data_pt, Global_Physical_Variables::Pmax, Global_Physical_Variables::Pmin, Flags::Use_segregated_solver, and Global_Physical_Variables::Yprescr.