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 () |
void | doc_solution (DocInfo &doc_info) |
Document the solution. More... | |
void | steady_run () |
Perform a steady run. More... | |
![]() | |
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 | |
![]() | |
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... | |
![]() | |
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 |
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 90 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 172 of file simple_segregated_driver.cc.
References Flags::Convergence_criterion, Flags::Convergence_tolerance, SegregatedFSICollapsibleChannelProblem< ELEMENT >::identify_fluid_and_solid_dofs(), Flags::Omega_under_relax, Flags::Use_irons_and_tuck_extrapolation, and Flags::Use_pointwise_aitken.
Referenced by SegregatedFSICollapsibleChannelProblem< ELEMENT >::actions_before_segregated_convergence_check().
|
inline |
Empty Destructor.
Definition at line 112 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 133 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 151 of file simple_segregated_driver.cc.
References SegregatedFSICollapsibleChannelProblem< ELEMENT >::SegregatedFSICollapsibleChannelProblem().
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::doc_solution | ( | DocInfo & | doc_info | ) |
Document the solution.
Definition at line 330 of file simple_segregated_driver.cc.
References FSICollapsibleChannelProblem< ELEMENT >::bulk_mesh_pt(), and FSICollapsibleChannelProblem< ELEMENT >::wall_mesh_pt().
Referenced by SegregatedFSICollapsibleChannelProblem< ELEMENT >::steady_run().
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 248 of file simple_segregated_driver.cc.
References FSICollapsibleChannelProblem< ELEMENT >::bulk_mesh_pt(), FSICollapsibleChannelProblem< ELEMENT >::Displ_control, FSICollapsibleChannelProblem< ELEMENT >::Displ_control_mesh_pt, Global_Physical_Variables::P_ext_data_pt, and FSICollapsibleChannelProblem< ELEMENT >::wall_mesh_pt().
Referenced by SegregatedFSICollapsibleChannelProblem< ELEMENT >::SegregatedFSICollapsibleChannelProblem().
|
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 363 of file simple_segregated_driver.cc.
References FSICollapsibleChannelProblem< ELEMENT >::Displ_control, SegregatedFSICollapsibleChannelProblem< ELEMENT >::doc_solution(), Flags::Nsteps, Global_Physical_Variables::P_ext_data_pt, Global_Physical_Variables::Pmax, Global_Physical_Variables::Pmin, FSICollapsibleChannelProblem< ELEMENT >::set_initial_condition(), Flags::Use_segregated_solver, and Global_Physical_Variables::Yprescr.