#include <segregated_fsi_solver.h>
Public Types | |
enum | convergence_criteria { Assess_convergence_based_on_absolute_solid_change, Assess_convergence_based_on_relative_solid_change, Assess_convergence_based_on_max_global_residual } |
Enumerated flags for convergence criteria. More... | |
enum | solve_type { Full_solve, Fluid_solve, Solid_solve } |
Enumerated flags to indicate which solve is taking place. More... | |
Public Member Functions | |
SegregatableFSIProblem () | |
Constructor. Set default values for solver parameters: More... | |
virtual | ~SegregatableFSIProblem () |
Empty virtual destructor. More... | |
virtual void | identify_fluid_and_solid_dofs (Vector< Data *> &fluid_data_pt, Vector< Data *> &solid_data_pt, Mesh *&fluid_mesh_pt, Mesh *&solid_mesh_pt)=0 |
Identify the fluid and solid Data. This is a pure virtual function that MUST be implemented for every specific problem that is to be solved by the segregated solver. The two mesh pointers identify meshes that contain elements and nodes used during the fluid or solid solves respectively. Elements that feature during both phases of the segretated solution must be included in both. These pointers may be set to NULL. In this case, all elements in the global mesh (set up during the monolithic discretisation of the problem) contribute to the global Jacobian matrix and the residual vector, even if their contributions only contain zero entries. This can be costly, though the code will still compute the correct results. More... | |
void | setup_segregated_solver (const bool &full_setup_of_fluid_and_solid_dofs=true) |
Setup the segregated solver: Backup the pinned status of the fluid and solid dofs and allocate the internal storage based on the input provided by identify_fluid_and_solid_dofs(...) In addition, reset storage associated with convergence acceleration techniques. If the problem and degrees of freedom has not changed between calls to the solver then it is wasteful to call identify_fluid_and_solid_dofs(...) again and again. If the optional boolean flag is set to false then the storage for convergence acceleration techniques is reset, but the fluid and solid dofs are not altered. More... | |
PicardConvergenceData | segregated_solve () |
Segregated solver. Peform a segregated step from the present state of the system. Returns PicardConvergenceData object that contains the vital stats of the iteration. More... | |
PicardConvergenceData | steady_segregated_solve () |
Steady version of segregated solver. Makes all timesteppers steady before solving. Returns PicardConvergenceData object that contains the vital stats of the iteration. More... | |
PicardConvergenceData | unsteady_segregated_solve (const double &dt) |
Unsteady segregated solver, advance time by dt and solve by the segregated solver. The time values are always shifted by this function. Returns PicardConvergenceData object that contains the vital stats of the iteration. More... | |
PicardConvergenceData | unsteady_segregated_solve (const double &dt, const bool &shift_values) |
Unsteady segregated solver. Advance time by dt and solve the system by a segregated method. The boolean flag is used to control whether the time values should be shifted. If it is true the current data values will be shifted (stored as previous timesteps) before the solution step. Returns PicardConvergenceData object that contains the vital stats of the iteration. More... | |
void | assess_convergence_based_on_max_global_residual (const double &tol) |
Assess convergence based on max. residual of coupled system of eqns. The argument specifies the convergence tolerance. More... | |
void | assess_convergence_based_on_max_global_residual () |
Assess convergence based on max. residuals of coupled system of eqns. This interface has no argument and the default convergence tolerance for the Newton solver, Problem::Newton_solver_tolerance is used. More... | |
void | assess_convergence_based_on_absolute_solid_change (const double &tol) |
Assess convergence based on max. absolute change of solid dofs. The argument specifies the convergence tolerance. More... | |
void | assess_convergence_based_on_absolute_solid_change () |
Assess convergence based on max. absolute change of solid dofs. This interface has no argument and the default convergence tolerance for the Newton solver, Problem::Newton_solver_tolerance is used. More... | |
void | assess_convergence_based_on_relative_solid_change (const double &tol) |
Assess convergence based on max. relative change of solid dofs. The argument specifies the convergence tolerance. More... | |
void | assess_convergence_based_on_relative_solid_change () |
Assess convergence based on max. relative change of solid dofs. This interface has no argument and the default convergence tolerance for the Newton solver, Problem::Newton_solver_tolerance is used. More... | |
void | enable_pointwise_aitken (const unsigned &pointwise_aitken_start) |
Use pointwise Aitken extrapolation. The argument is used to specify the Picard iteration after which pointwise Aitken extrapolation is to be used for the first time. More... | |
void | enable_pointwise_aitken () |
Use pointwise Aitken extrapolation. This interface has no argument and the current value of Pointwise_aitken_start will be used. The default is zero, extrapolation starts immediately. More... | |
void | disable_pointwise_aitken () |
Disable the use of pointwise Aitken extrapolation. More... | |
void | enable_under_relaxation (const double &omega=1.0) |
Use under-relaxation and (optionally) specify under-relaxation parameter. Default: omega=1.0 (i.e. no actual under-relaxation; Other extreme: omega=0.0 (freeze wall shape). Under-relaxation parameter can also be computed dynamically by setting use_irons_and_tuck_extrapolation() More... | |
void | enable_irons_and_tuck_extrapolation () |
Use Irons and Tuck extrapolation for solid dofs. More... | |
void | disable_irons_and_tuck_extrapolation () |
Do not use Irons and Tuck extrapolation for solid dofs. More... | |
void | get_solid_change (double &rms_change, double &max_change, double &rms_norm) |
Get rms of change in the solid dofs; the max. change of the solid dofs and the rms norm of the solid dofs themselves. Change is computed relative to the reference values stored when store_solid_dofs() was last called. More... | |
void | store_solid_dofs () |
Store the current solid values as reference values for future convergence check. Also add another entry to pointwise Aitken history if required. More... | |
void | reset_timer () |
Reset timer. More... | |
void | restart_timer () |
(Re-)start timer (e.g. after completing non-essential parts of the code such as documentation of the iteration's progress) More... | |
void | halt_timer () |
Halt timer (e.g. before performing non-essential parts of the code such as documentation of the iteration's progress) More... | |
double | t_spent_on_actual_solve () |
Total elapsed time since start of solve. More... | |
Protected Member Functions | |
virtual void | actions_before_segregated_solve () |
This function is called once at the start of each segregated solve. More... | |
virtual void | actions_after_segregated_solve () |
This function is called once at the end of each segregated solve. More... | |
virtual void | actions_before_segregated_convergence_check () |
This function is to be filled with actions that take place before the check for convergence of the entire segregated solve. More... | |
void | rebuild_monolithic_mesh () |
Rebuild global mesh for monolithic discretisation. More... | |
void | restore_fluid_dofs () |
Restore pinned status of fluid dofs. More... | |
void | pin_solid_dofs () |
Pin solid dofs. More... | |
void | restore_solid_dofs () |
Restore pinned status of solid dofs. More... | |
void | pointwise_aitken_extrapolate () |
Do pointwise Aitken extrapolation for solid. More... | |
Protected Attributes | |
int | Pointwise_aitken_counter |
Number of Aitken histories available (int because after extrapolation it's re-initialised to -1 to force the computation of three new genuine iterates). More... | |
bool | Use_pointwise_aitken |
Use pointwise Aitken extrapolation? More... | |
unsigned | Pointwise_aitken_start |
Start pointwise Aitken extrpolation after specified number of Picard iterations. More... | |
int | Solve_type |
Solve that is taking place (enumerated flag) More... | |
double | Convergence_tolerance |
Convergence tolerance for Picard iteration. More... | |
unsigned | Max_picard |
Max. number of Picard iterations. More... | |
bool | Doc_max_global_residual |
Doc maximum global residual during iteration? (default: false) More... | |
Vector< Data * > | Fluid_data_pt |
Vector storing the Data objects associated with the fluid problem: Tyically the nodal and internal data of the elements in the fluid bulk mesh. More... | |
Vector< std::vector< bool > > | Fluid_value_is_pinned |
Vector of vectors that store the pinned status of fluid Data values. More... | |
Vector< Data * > | Solid_data_pt |
Vector storing the Data objects associated with the solid problem: Typically the positional data of solid nodes and any quantities associated with displacement control, say. More... | |
Vector< std::vector< bool > > | Solid_value_is_pinned |
Vector of vectors that store the pinned status of solid Data values. More... | |
Vector< double > | Previous_solid_value |
Vector storing the previous solid values – used for convergence check. More... | |
Mesh * | Fluid_mesh_pt |
Mesh containing only fluid elements – the elements in this Mesh will be excluded from the assembly process when the solid problem is solved. More... | |
Mesh * | Solid_mesh_pt |
Mesh containing only solid elements – the elements in this mesh will be excluded from the assembly process when the fluid problem is solved. More... | |
Vector< Mesh * > | Orig_sub_mesh_pt |
Backup for the pointers to the submeshes in the original problem. More... | |
Vector< double > | Del_irons_and_tuck |
Vector of changes in Irons and Tuck under-relaxation. More... | |
double | R_irons_and_tuck |
Irons and Tuck relaxation factor. More... | |
Vector< Vector< double > > | Pointwise_aitken_solid_value |
Vector of Vectors containing up to three previous iterates for the solid dofs; used for pointwise Aitken extrapolation. More... | |
bool | Recheck_convergence_after_pointwise_aitken |
Have we just done a pointwise Aitken step. More... | |
Private Member Functions | |
void | extrapolate_solid_data () |
Extrapolate solid data and update fluid mesh during unsteady run. More... | |
void | under_relax_solid () |
Under-relax the most recently computed solid variables, either by classical relaxation or by Irons & Tuck. More... | |
void | use_only_fluid_elements () |
Only include fluid elements in the Problem's mesh. This is called before the segregated fluid solve. The fluid elements are identified by the user via the fluid_mesh_pt argument in the pure virtual function identify_fluid_and_solid_dofs(...). If a NULL pointer is returned by this function (i.e. if the user hasn't bothered to identify the fluids elements in a submesh, then no stripping of non-fluid elements is performed. The result of the computation will be correct but it won't be very efficient. More... | |
void | use_only_solid_elements () |
Only include solid elements in the Problem's mesh. This is called before the segregated solid solve. The solid elements are identified by the user via the solid_mesh_pt argument in the pure virtual function identify_fluid_and_solid_dofs(...). If a NULL pointer is returned by this function (i.e. if the user hasn't bothered to identify the solid elements in a submesh, then no stripping of non-solid elements is performed. The result of the computation will be correct but it won't be very efficient. More... | |
void | pin_fluid_dofs () |
Pin fluid dofs. More... | |
Private Attributes | |
double | Omega_relax |
Under-relaxation parameter. (1.0: no under-relaxation; 0.0: Freeze wall shape) More... | |
bool | Use_irons_and_tuck_extrapolation |
Boolean flag to indicate use of Irons and Tuck's extrapolation for solid values. More... | |
int | Convergence_criterion |
Convergence criterion (enumerated flag) More... | |
clock_t | T_ref |
Reference time for segregated solve. Can be re-initialised whenever total elapsed time has been stored (before entering non-essential doc sections of the code) More... | |
double | T_spent_on_actual_solve |
Total elapsed time since start of solve, can be accumulated by adding bits of time spent in relevant parts of code (bypassing sections that only document the progress) More... | |
bool | Timer_has_been_halted |
boolean flag to indicate if timer has been halted More... | |
Base class for problems that can be solved by segregated FSI solver
Definition at line 153 of file segregated_fsi_solver.h.
Enumerated flags for convergence criteria.
Enumerator | |
---|---|
Assess_convergence_based_on_absolute_solid_change | |
Assess_convergence_based_on_relative_solid_change | |
Assess_convergence_based_on_max_global_residual |
Definition at line 389 of file segregated_fsi_solver.h.
Enumerated flags to indicate which solve is taking place.
Enumerator | |
---|---|
Full_solve | |
Fluid_solve | |
Solid_solve |
Definition at line 395 of file segregated_fsi_solver.h.
|
inline |
Constructor. Set default values for solver parameters:
boolean flag to indicate if timer has been halted
Definition at line 179 of file segregated_fsi_solver.h.
|
inlinevirtual |
Empty virtual destructor.
Definition at line 230 of file segregated_fsi_solver.h.
|
inlineprotectedvirtual |
This function is called once at the end of each segregated solve.
Definition at line 163 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
inlineprotectedvirtual |
This function is to be filled with actions that take place before the check for convergence of the entire segregated solve.
Definition at line 167 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
inlineprotectedvirtual |
This function is called once at the start of each segregated solve.
Definition at line 159 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
inline |
Assess convergence based on max. absolute change of solid dofs. The argument specifies the convergence tolerance.
Definition at line 318 of file segregated_fsi_solver.h.
|
inline |
Assess convergence based on max. absolute change of solid dofs. This interface has no argument and the default convergence tolerance for the Newton solver, Problem::Newton_solver_tolerance is used.
Definition at line 329 of file segregated_fsi_solver.h.
|
inline |
Assess convergence based on max. residual of coupled system of eqns. The argument specifies the convergence tolerance.
Definition at line 299 of file segregated_fsi_solver.h.
|
inline |
Assess convergence based on max. residuals of coupled system of eqns. This interface has no argument and the default convergence tolerance for the Newton solver, Problem::Newton_solver_tolerance is used.
Definition at line 310 of file segregated_fsi_solver.h.
|
inline |
Assess convergence based on max. relative change of solid dofs. The argument specifies the convergence tolerance.
Definition at line 337 of file segregated_fsi_solver.h.
|
inline |
Assess convergence based on max. relative change of solid dofs. This interface has no argument and the default convergence tolerance for the Newton solver, Problem::Newton_solver_tolerance is used.
Definition at line 348 of file segregated_fsi_solver.h.
|
inline |
Do not use Irons and Tuck extrapolation for solid dofs.
Definition at line 385 of file segregated_fsi_solver.h.
|
inline |
Disable the use of pointwise Aitken extrapolation.
Definition at line 370 of file segregated_fsi_solver.h.
|
inline |
Use Irons and Tuck extrapolation for solid dofs.
Definition at line 381 of file segregated_fsi_solver.h.
|
inline |
Use pointwise Aitken extrapolation. The argument is used to specify the Picard iteration after which pointwise Aitken extrapolation is to be used for the first time.
Definition at line 358 of file segregated_fsi_solver.h.
|
inline |
Use pointwise Aitken extrapolation. This interface has no argument and the current value of Pointwise_aitken_start will be used. The default is zero, extrapolation starts immediately.
Definition at line 367 of file segregated_fsi_solver.h.
|
inline |
Use under-relaxation and (optionally) specify under-relaxation parameter. Default: omega=1.0 (i.e. no actual under-relaxation; Other extreme: omega=0.0 (freeze wall shape). Under-relaxation parameter can also be computed dynamically by setting use_irons_and_tuck_extrapolation()
Definition at line 377 of file segregated_fsi_solver.h.
|
private |
Extrapolate solid data and update fluid mesh during unsteady run.
Extrapolate solid data and update fluid mesh. Extrapolation is based on previous history values and is therefore only called in time-dependent runs.
Definition at line 44 of file segregated_fsi_solver.cc.
References Fluid_mesh_pt, and Solid_data_pt.
Referenced by unsteady_segregated_solve().
void oomph::SegregatableFSIProblem::get_solid_change | ( | double & | rms_change, |
double & | max_change, | ||
double & | rms_norm | ||
) |
Get rms of change in the solid dofs; the max. change of the solid dofs and the rms norm of the solid dofs themselves. Change is computed relative to the reference values stored when store_solid_dofs() was last called.
Get rms of change in the solid dofs; the max. change of the solid dofs and the rms norm of the solid dofs themselves. Change is computed relative to the reference values stored when store_solid_dofs() was last called.
Definition at line 331 of file segregated_fsi_solver.cc.
References Previous_solid_value, and Solid_data_pt.
Referenced by segregated_solve().
|
inline |
Halt timer (e.g. before performing non-essential parts of the code such as documentation of the iteration's progress)
Definition at line 432 of file segregated_fsi_solver.h.
|
pure virtual |
Identify the fluid and solid Data. This is a pure virtual function that MUST be implemented for every specific problem that is to be solved by the segregated solver. The two mesh pointers identify meshes that contain elements and nodes used during the fluid or solid solves respectively. Elements that feature during both phases of the segretated solution must be included in both. These pointers may be set to NULL. In this case, all elements in the global mesh (set up during the monolithic discretisation of the problem) contribute to the global Jacobian matrix and the residual vector, even if their contributions only contain zero entries. This can be costly, though the code will still compute the correct results.
Referenced by setup_segregated_solver().
|
private |
Pin fluid dofs.
Pin all fluid dofs.
Definition at line 165 of file segregated_fsi_solver.cc.
References Fluid_data_pt.
Referenced by segregated_solve().
|
protected |
Pin solid dofs.
Pin all solid dofs.
Definition at line 223 of file segregated_fsi_solver.cc.
References Solid_data_pt.
Referenced by segregated_solve().
|
protected |
Do pointwise Aitken extrapolation for solid.
Pointwise Aitken extrapolation for solid variables.
Definition at line 524 of file segregated_fsi_solver.cc.
References Pointwise_aitken_counter, Pointwise_aitken_solid_value, and Solid_data_pt.
Referenced by segregated_solve().
|
protected |
Rebuild global mesh for monolithic discretisation.
Rebuild global mesh for monolithic problem.
Definition at line 93 of file segregated_fsi_solver.cc.
References Orig_sub_mesh_pt.
Referenced by segregated_solve().
|
inline |
Reset timer.
Definition at line 411 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
inline |
(Re-)start timer (e.g. after completing non-essential parts of the code such as documentation of the iteration's progress)
Definition at line 422 of file segregated_fsi_solver.h.
|
protected |
Restore pinned status of fluid dofs.
Restore the pinned status of all fluid dofs.
Definition at line 190 of file segregated_fsi_solver.cc.
References Fluid_data_pt, and Fluid_value_is_pinned.
Referenced by segregated_solve().
|
protected |
Restore pinned status of solid dofs.
Restore the pinned status of all solid dofs.
Definition at line 249 of file segregated_fsi_solver.cc.
References Solid_data_pt, and Solid_value_is_pinned.
Referenced by segregated_solve().
PicardConvergenceData oomph::SegregatableFSIProblem::segregated_solve | ( | ) |
Segregated solver. Peform a segregated step from the present state of the system. Returns PicardConvergenceData object that contains the vital stats of the iteration.
Segregated fixed point solver with optional pointwise Aitken acceleration on selected solid dofs. Returns PicardConvergenceData object that contains the vital stats of the iteration.
Definition at line 574 of file segregated_fsi_solver.cc.
References actions_after_segregated_solve(), actions_before_segregated_convergence_check(), actions_before_segregated_solve(), Assess_convergence_based_on_absolute_solid_change, Assess_convergence_based_on_max_global_residual, Assess_convergence_based_on_relative_solid_change, Convergence_criterion, Convergence_tolerance, oomph::PicardConvergenceData::cpu_for_global_residual(), oomph::PicardConvergenceData::cpu_total(), Doc_max_global_residual, oomph::PicardConvergenceData::essential_cpu_total(), Fluid_solve, Full_solve, get_solid_change(), Max_picard, oomph::PicardConvergenceData::niter(), pin_fluid_dofs(), pin_solid_dofs(), Pointwise_aitken_counter, pointwise_aitken_extrapolate(), Pointwise_aitken_start, rebuild_monolithic_mesh(), Recheck_convergence_after_pointwise_aitken, reset_timer(), restore_fluid_dofs(), restore_solid_dofs(), oomph::PicardConvergenceData::set_solver_converged(), Solid_solve, Solve_type, store_solid_dofs(), t_spent_on_actual_solve(), oomph::PicardConvergenceData::tol_achieved(), under_relax_solid(), use_only_fluid_elements(), use_only_solid_elements(), and Use_pointwise_aitken.
Referenced by steady_segregated_solve(), and unsteady_segregated_solve().
void oomph::SegregatableFSIProblem::setup_segregated_solver | ( | const bool & | full_setup_of_fluid_and_solid_dofs = true | ) |
Setup the segregated solver: Backup the pinned status of the fluid and solid dofs and allocate the internal storage based on the input provided by identify_fluid_and_solid_dofs(...) In addition, reset storage associated with convergence acceleration techniques. If the problem and degrees of freedom has not changed between calls to the solver then it is wasteful to call identify_fluid_and_solid_dofs(...) again and again. If the optional boolean flag is set to false then the storage for convergence acceleration techniques is reset, but the fluid and solid dofs are not altered.
Setup segregated solver, using the information provided by the user in his/her implementation of the pure virtual function identify_fluid_and_solid_dofs(...).
Definition at line 1151 of file segregated_fsi_solver.cc.
References Del_irons_and_tuck, Fluid_data_pt, Fluid_mesh_pt, Fluid_value_is_pinned, identify_fluid_and_solid_dofs(), Omega_relax, Orig_sub_mesh_pt, Pointwise_aitken_counter, Pointwise_aitken_solid_value, Previous_solid_value, R_irons_and_tuck, Solid_data_pt, Solid_mesh_pt, Solid_value_is_pinned, Use_irons_and_tuck_extrapolation, and Use_pointwise_aitken.
PicardConvergenceData oomph::SegregatableFSIProblem::steady_segregated_solve | ( | ) |
Steady version of segregated solver. Makes all timesteppers steady before solving. Returns PicardConvergenceData object that contains the vital stats of the iteration.
Segregated fixed point solver with optional pointwise Aitken acceleration on selected solid dofs. Returns PicardConvergenceData object that contains the vital stats of the iteration.
Definition at line 1003 of file segregated_fsi_solver.cc.
References oomph::SegregatedSolverError::Ran_out_of_iterations, and segregated_solve().
void oomph::SegregatableFSIProblem::store_solid_dofs | ( | ) |
Store the current solid values as reference values for future convergence check. Also add another entry to pointwise Aitken history if required.
Store the current solid values as reference values for future convergence check. Also add another entry to pointwise Aitken history.
Definition at line 284 of file segregated_fsi_solver.cc.
References Pointwise_aitken_counter, Pointwise_aitken_solid_value, Previous_solid_value, Solid_data_pt, and Use_pointwise_aitken.
Referenced by segregated_solve().
|
inline |
Total elapsed time since start of solve.
Definition at line 443 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
private |
Under-relax the most recently computed solid variables, either by classical relaxation or by Irons & Tuck.
Under-relax solid, either by classical relaxation or by Irons & Tuck.
Definition at line 385 of file segregated_fsi_solver.cc.
References Del_irons_and_tuck, Omega_relax, Previous_solid_value, R_irons_and_tuck, Solid_data_pt, and Use_irons_and_tuck_extrapolation.
Referenced by segregated_solve().
PicardConvergenceData oomph::SegregatableFSIProblem::unsteady_segregated_solve | ( | const double & | dt | ) |
Unsteady segregated solver, advance time by dt and solve by the segregated solver. The time values are always shifted by this function. Returns PicardConvergenceData object that contains the vital stats of the iteration.
Segregated fixed point solver with optional pointwise Aitken acceleration on selected solid dofs. Returns PicardConvergenceData object that contains the vital stats of the iteration.
Definition at line 1074 of file segregated_fsi_solver.cc.
PicardConvergenceData oomph::SegregatableFSIProblem::unsteady_segregated_solve | ( | const double & | dt, |
const bool & | shift_values | ||
) |
Unsteady segregated solver. Advance time by dt and solve the system by a segregated method. The boolean flag is used to control whether the time values should be shifted. If it is true the current data values will be shifted (stored as previous timesteps) before the solution step. Returns PicardConvergenceData object that contains the vital stats of the iteration.
Segregated fixed point solver with optional pointwise Aitken acceleration on selected solid dofs. Returns PicardConvergenceData object that contains the vital stats of the iteration.
Definition at line 1086 of file segregated_fsi_solver.cc.
References extrapolate_solid_data(), oomph::SegregatedSolverError::Ran_out_of_iterations, and segregated_solve().
|
private |
Only include fluid elements in the Problem's mesh. This is called before the segregated fluid solve. The fluid elements are identified by the user via the fluid_mesh_pt argument in the pure virtual function identify_fluid_and_solid_dofs(...). If a NULL pointer is returned by this function (i.e. if the user hasn't bothered to identify the fluids elements in a submesh, then no stripping of non-fluid elements is performed. The result of the computation will be correct but it won't be very efficient.
Only include fluid elements in the Problem's mesh. This is called before the segregated fluid solve. The fluid elements are identified by the user via the fluid_mesh_pt argument in the pure virtual function identify_fluid_and_solid_dofs(...). If a NULL pointer is returned by this function (i.e. if the user hasn't bothered to identify the fluids elements in a submesh, then no stripping of non-fluid elements is performed. The result of the computation will be correct but it won't be very efficient.
Definition at line 148 of file segregated_fsi_solver.cc.
References Fluid_mesh_pt.
Referenced by segregated_solve().
|
private |
Only include solid elements in the Problem's mesh. This is called before the segregated solid solve. The solid elements are identified by the user via the solid_mesh_pt argument in the pure virtual function identify_fluid_and_solid_dofs(...). If a NULL pointer is returned by this function (i.e. if the user hasn't bothered to identify the solid elements in a submesh, then no stripping of non-solid elements is performed. The result of the computation will be correct but it won't be very efficient.
Only include solid elements in the Problem's mesh. This is called before the segregated solid solve. The solid elements are identified by the user via the solid_mesh_pt argument in the pure virtual function identify_fluid_and_solid_dofs(...). If a NULL pointer is returned by this function (i.e. if the user hasn't bothered to identify the solids elements in a submesh, then no stripping of non-solid elements is performed. The result of the computation will be correct but it won't be very efficient.
Definition at line 122 of file segregated_fsi_solver.cc.
References Solid_mesh_pt.
Referenced by segregated_solve().
|
private |
Convergence criterion (enumerated flag)
Definition at line 585 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
protected |
Convergence tolerance for Picard iteration.
Definition at line 473 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
protected |
Vector of changes in Irons and Tuck under-relaxation.
Definition at line 530 of file segregated_fsi_solver.h.
Referenced by setup_segregated_solver(), and under_relax_solid().
|
protected |
Doc maximum global residual during iteration? (default: false)
Definition at line 479 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
protected |
Vector storing the Data objects associated with the fluid problem: Tyically the nodal and internal data of the elements in the fluid bulk mesh.
Definition at line 497 of file segregated_fsi_solver.h.
Referenced by pin_fluid_dofs(), restore_fluid_dofs(), and setup_segregated_solver().
|
protected |
Mesh containing only fluid elements – the elements in this Mesh will be excluded from the assembly process when the solid problem is solved.
Definition at line 519 of file segregated_fsi_solver.h.
Referenced by extrapolate_solid_data(), setup_segregated_solver(), and use_only_fluid_elements().
|
protected |
Vector of vectors that store the pinned status of fluid Data values.
Definition at line 501 of file segregated_fsi_solver.h.
Referenced by restore_fluid_dofs(), and setup_segregated_solver().
|
protected |
Max. number of Picard iterations.
Definition at line 476 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
private |
Under-relaxation parameter. (1.0: no under-relaxation; 0.0: Freeze wall shape)
Definition at line 578 of file segregated_fsi_solver.h.
Referenced by setup_segregated_solver(), and under_relax_solid().
|
protected |
Backup for the pointers to the submeshes in the original problem.
Definition at line 527 of file segregated_fsi_solver.h.
Referenced by rebuild_monolithic_mesh(), and setup_segregated_solver().
|
protected |
Number of Aitken histories available (int because after extrapolation it's re-initialised to -1 to force the computation of three new genuine iterates).
Definition at line 460 of file segregated_fsi_solver.h.
Referenced by pointwise_aitken_extrapolate(), segregated_solve(), setup_segregated_solver(), and store_solid_dofs().
|
protected |
Vector of Vectors containing up to three previous iterates for the solid dofs; used for pointwise Aitken extrapolation.
Definition at line 537 of file segregated_fsi_solver.h.
Referenced by pointwise_aitken_extrapolate(), setup_segregated_solver(), and store_solid_dofs().
|
protected |
Start pointwise Aitken extrpolation after specified number of Picard iterations.
Definition at line 467 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
protected |
Vector storing the previous solid values – used for convergence check.
Definition at line 514 of file segregated_fsi_solver.h.
Referenced by get_solid_change(), setup_segregated_solver(), store_solid_dofs(), and under_relax_solid().
|
protected |
Irons and Tuck relaxation factor.
Definition at line 533 of file segregated_fsi_solver.h.
Referenced by setup_segregated_solver(), and under_relax_solid().
|
protected |
Have we just done a pointwise Aitken step.
Definition at line 540 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
protected |
Vector storing the Data objects associated with the solid problem: Typically the positional data of solid nodes and any quantities associated with displacement control, say.
Definition at line 506 of file segregated_fsi_solver.h.
Referenced by extrapolate_solid_data(), get_solid_change(), pin_solid_dofs(), pointwise_aitken_extrapolate(), restore_solid_dofs(), setup_segregated_solver(), store_solid_dofs(), and under_relax_solid().
|
protected |
Mesh containing only solid elements – the elements in this mesh will be excluded from the assembly process when the fluid problem is solved.
Definition at line 524 of file segregated_fsi_solver.h.
Referenced by setup_segregated_solver(), and use_only_solid_elements().
|
protected |
Vector of vectors that store the pinned status of solid Data values.
Definition at line 510 of file segregated_fsi_solver.h.
Referenced by restore_solid_dofs(), and setup_segregated_solver().
|
protected |
Solve that is taking place (enumerated flag)
Definition at line 470 of file segregated_fsi_solver.h.
Referenced by segregated_solve().
|
private |
Reference time for segregated solve. Can be re-initialised whenever total elapsed time has been stored (before entering non-essential doc sections of the code)
Definition at line 590 of file segregated_fsi_solver.h.
|
private |
Total elapsed time since start of solve, can be accumulated by adding bits of time spent in relevant parts of code (bypassing sections that only document the progress)
Definition at line 595 of file segregated_fsi_solver.h.
|
private |
boolean flag to indicate if timer has been halted
Definition at line 598 of file segregated_fsi_solver.h.
|
private |
Boolean flag to indicate use of Irons and Tuck's extrapolation for solid values.
Definition at line 582 of file segregated_fsi_solver.h.
Referenced by setup_segregated_solver(), and under_relax_solid().
|
protected |
Use pointwise Aitken extrapolation?
Definition at line 463 of file segregated_fsi_solver.h.
Referenced by segregated_solve(), setup_segregated_solver(), and store_solid_dofs().