Public Member Functions | List of all members
SegregatedFSICollapsibleChannelProblem< ELEMENT > Class Template Reference
Inheritance diagram for SegregatedFSICollapsibleChannelProblem< ELEMENT >:
FSICollapsibleChannelProblem< ELEMENT >

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...
 
- 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
 
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...
 

Detailed Description

template<class ELEMENT>
class SegregatedFSICollapsibleChannelProblem< ELEMENT >

Problem class – add segregated solver capability to an existing problem.

Definition at line 90 of file simple_segregated_driver.cc.

Constructor & Destructor Documentation

◆ SegregatedFSICollapsibleChannelProblem()

template<class ELEMENT >
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().

◆ ~SegregatedFSICollapsibleChannelProblem()

template<class ELEMENT >
SegregatedFSICollapsibleChannelProblem< ELEMENT >::~SegregatedFSICollapsibleChannelProblem ( )
inline

Empty Destructor.

Definition at line 112 of file simple_segregated_driver.cc.

Member Function Documentation

◆ actions_before_newton_convergence_check()

template<class ELEMENT >
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::actions_before_newton_convergence_check ( )
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.

◆ actions_before_segregated_convergence_check()

template<class ELEMENT >
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::actions_before_segregated_convergence_check ( )
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().

◆ doc_solution()

template<class ELEMENT >
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::doc_solution ( DocInfo &  doc_info)

◆ identify_fluid_and_solid_dofs()

template<class ELEMENT >
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().

◆ steady_run()

template<class ELEMENT >
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::steady_run ( )
virtual

The documentation for this class was generated from the following file: