![]() |
|
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 for the collapsible channel problem. 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) |
void | write_convergence_history_header (std::ofstream &convergence_file, const bool &doc_max_global_residual) |
Write header for convergence history file. More... | |
void | write_convergence_history (const unsigned &iter, const double &rms_change, const double &max_change, const double &rms_norm, const double &max_res, std::ofstream &convergence_file, const bool &doc_max_global_residual) |
Write to convergence history file. More... | |
void | write_zone_info_for_convergence_history (ofstream &convergence_file) |
void | actions_before_newton_solve () |
void | actions_before_segregated_solve () |
void | actions_before_newton_step () |
void | actions_before_newton_convergence_check () |
void | actions_before_segregated_convergence_check () |
for documentation purposes More... | |
void | solid_output_during_picard (const unsigned &iter, DocInfo &doc_info) |
void | fluid_output_during_picard (const unsigned &iter, DocInfo &doc_info) |
void | doc_solution_steady (DocInfo &doc_info, ofstream &trace_file, const double &cpu, const unsigned &niter) |
Doc the steady solution. More... | |
void | doc_solution_unsteady (DocInfo &doc_info, ofstream &trace_file, const double &cpu, const unsigned &niter) |
Doc the unsteady solution. More... | |
void | steady_run () |
Steady run. More... | |
void | unsteady_run (const double &dummy_dt=0.1) |
Unsteady run. More... | |
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) | |
~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) |
void | actions_before_newton_convergence_check () |
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 for the collapsible channel problem. More... | |
~FSICollapsibleChannelProblem () | |
Destructor. 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_after_newton_solve () |
Update the problem after solve (empty) 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... | |
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) | |
Constructor for the collapsible channel problem. More... | |
~FSICollapsibleChannelProblem () | |
Destructor (empty) 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 () |
Update the problem specs before solve (empty) More... | |
void | actions_after_newton_solve () |
Update the problem after solve (empty) More... | |
void | actions_before_newton_convergence_check () |
void | doc_solution (DocInfo &doc_info, ofstream &trace_file) |
Doc the solution. More... | |
void | set_initial_condition () |
Apply initial conditions. 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) | |
~FSICollapsibleChannelProblem () | |
Destructor (empty) More... | |
RefineableAlgebraicCollapsibleChannelMesh< 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_adapt () |
Actions before adapt: Wipe the mesh of prescribed traction elements. More... | |
void | actions_after_adapt () |
Actions after adapt: Rebuild the mesh of prescribed traction elements. More... | |
void | actions_before_newton_solve () |
Update the problem specs before solve (empty) More... | |
void | actions_after_newton_solve () |
Update the problem after solve (empty) More... | |
void | actions_before_newton_convergence_check () |
void | doc_solution (DocInfo &doc_info, ofstream &trace_file) |
Doc the solution. More... | |
void | set_initial_condition () |
Apply initial conditions. 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) | |
~FSICollapsibleChannelProblem () | |
Destructor (empty) More... | |
ElasticCollapsibleChannelMesh< 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 () |
Update the problem specs before solve (empty) More... | |
void | actions_after_newton_solve () |
Update the problem after solve (empty) More... | |
void | actions_before_newton_convergence_check () |
Update no slip before Newton convergence check. More... | |
void | doc_solution (DocInfo &doc_info, ofstream &trace_file) |
Doc the solution. More... | |
void | set_initial_condition () |
Apply initial conditions. 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) | |
~FSICollapsibleChannelProblem () | |
Destructor (empty) More... | |
ElasticRefineableCollapsibleChannelMesh< 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_adapt () |
Actions before adapt: Wipe the mesh of prescribed traction elements. More... | |
void | actions_after_adapt () |
void | actions_before_newton_solve () |
Update the problem specs before solve (empty) More... | |
void | actions_after_newton_solve () |
Update the problem after solve (empty) More... | |
void | actions_before_newton_convergence_check () |
Update no slip before Newton convergence check. More... | |
void | doc_solution (DocInfo &doc_info, ofstream &trace_file) |
Doc the solution. More... | |
void | set_initial_condition () |
Apply initial conditions. 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) | |
~FSICollapsibleChannelProblem () | |
Destructor (empty) More... | |
RefineableAlgebraicCollapsibleChannelMesh< 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_adapt () |
Actions before adapt: Wipe the mesh of prescribed traction elements. More... | |
void | actions_after_adapt () |
void | actions_before_distribute () |
Actions before distribute: wipe the mesh of prescribed traction elements. More... | |
void | actions_after_distribute () |
Actions after distribute: create traction elements and reset FSI. More... | |
void | actions_before_newton_solve () |
Update the problem specs before solve (empty) More... | |
void | actions_after_newton_solve () |
Update the problem after solve (empty) More... | |
void | actions_before_newton_convergence_check () |
void | doc_solution (DocInfo &doc_info, ofstream &trace_file) |
Doc the solution. More... | |
void | set_initial_condition () |
Apply initial conditions. 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 &wall_jacobian_ignores_fluid_shear_stress_data, const bool &wall_jacobian_ignores_geometric_data, const bool &fluid_jacobian_ignores_geometric_data) | |
Constructor for the collapsible channel problem. More... | |
~FSICollapsibleChannelProblem () | |
Destructor (empty) 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 () |
Update the problem specs before solve (empty) More... | |
void | actions_after_newton_solve () |
Update the problem after solve (empty) More... | |
void | actions_before_newton_convergence_check () |
void | doc_solution (DocInfo &doc_info, ofstream &trace_file) |
Doc the solution. More... | |
void | set_initial_condition () |
Apply initial conditions. More... | |
![]() | |
virtual void | debug_hook_fct (const unsigned &i) |
void | set_analytic_dparameter (double *const ¶meter_pt) |
void | unset_analytic_dparameter (double *const ¶meter_pt) |
bool | is_dparameter_calculated_analytically (double *const ¶meter_pt) |
void | set_analytic_hessian_products () |
void | unset_analytic_hessian_products () |
bool | are_hessian_products_calculated_analytically () |
void | set_pinned_values_to_zero () |
bool | distributed () const |
OomphCommunicator * | communicator_pt () |
access function to the oomph-lib communicator More... | |
const OomphCommunicator * | communicator_pt () const |
access function to the oomph-lib communicator, const version More... | |
Problem () | |
Problem (const Problem &dummy)=delete | |
Broken copy constructor. More... | |
void | operator= (const Problem &)=delete |
Broken assignment operator. More... | |
virtual | ~Problem () |
Virtual destructor to clean up memory. More... | |
Mesh *& | mesh_pt () |
Return a pointer to the global mesh. More... | |
Mesh *const & | mesh_pt () const |
Return a pointer to the global mesh (const version) More... | |
Mesh *& | mesh_pt (const unsigned &imesh) |
Mesh *const & | mesh_pt (const unsigned &imesh) const |
Return a pointer to the i-th submesh (const version) More... | |
unsigned | nsub_mesh () const |
Return number of submeshes. More... | |
unsigned | add_sub_mesh (Mesh *const &mesh_pt) |
void | flush_sub_meshes () |
void | build_global_mesh () |
void | rebuild_global_mesh () |
LinearSolver *& | linear_solver_pt () |
Return a pointer to the linear solver object. More... | |
LinearSolver *const & | linear_solver_pt () const |
Return a pointer to the linear solver object (const version) More... | |
LinearSolver *& | mass_matrix_solver_for_explicit_timestepper_pt () |
LinearSolver * | mass_matrix_solver_for_explicit_timestepper_pt () const |
EigenSolver *& | eigen_solver_pt () |
Return a pointer to the eigen solver object. More... | |
EigenSolver *const & | eigen_solver_pt () const |
Return a pointer to the eigen solver object (const version) More... | |
Time *& | time_pt () |
Return a pointer to the global time object. More... | |
Time * | time_pt () const |
Return a pointer to the global time object (const version). More... | |
double & | time () |
Return the current value of continuous time. More... | |
double | time () const |
Return the current value of continuous time (const version) More... | |
TimeStepper *& | time_stepper_pt () |
const TimeStepper * | time_stepper_pt () const |
TimeStepper *& | time_stepper_pt (const unsigned &i) |
Return a pointer to the i-th timestepper. More... | |
ExplicitTimeStepper *& | explicit_time_stepper_pt () |
Return a pointer to the explicit timestepper. More... | |
unsigned long | set_timestepper_for_all_data (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data=false) |
virtual void | shift_time_values () |
Shift all values along to prepare for next timestep. More... | |
AssemblyHandler *& | assembly_handler_pt () |
Return a pointer to the assembly handler object. More... | |
AssemblyHandler *const & | assembly_handler_pt () const |
Return a pointer to the assembly handler object (const version) More... | |
double & | minimum_dt () |
Access function to min timestep in adaptive timestepping. More... | |
double & | maximum_dt () |
Access function to max timestep in adaptive timestepping. More... | |
unsigned & | max_newton_iterations () |
Access function to max Newton iterations before giving up. More... | |
void | problem_is_nonlinear (const bool &prob_lin) |
Access function to Problem_is_nonlinear. More... | |
double & | max_residuals () |
bool & | time_adaptive_newton_crash_on_solve_fail () |
Access function for Time_adaptive_newton_crash_on_solve_fail. More... | |
double & | newton_solver_tolerance () |
void | add_time_stepper_pt (TimeStepper *const &time_stepper_pt) |
void | set_explicit_time_stepper_pt (ExplicitTimeStepper *const &explicit_time_stepper_pt) |
void | initialise_dt (const double &dt) |
void | initialise_dt (const Vector< double > &dt) |
Data *& | global_data_pt (const unsigned &i) |
Return a pointer to the the i-th global data object. More... | |
void | add_global_data (Data *const &global_data_pt) |
void | flush_global_data () |
LinearAlgebraDistribution *const & | dof_distribution_pt () const |
Return the pointer to the dof distribution (read-only) More... | |
unsigned long | ndof () const |
Return the number of dofs. More... | |
unsigned | ntime_stepper () const |
Return the number of time steppers. More... | |
unsigned | nglobal_data () const |
Return the number of global data values. More... | |
unsigned | self_test () |
Self-test: Check meshes and global data. Return 0 for OK. More... | |
void | enable_store_local_dof_pt_in_elements () |
void | disable_store_local_dof_pt_in_elements () |
unsigned long | assign_eqn_numbers (const bool &assign_local_eqn_numbers=true) |
void | describe_dofs (std::ostream &out= *(oomph_info.stream_pt())) const |
void | enable_discontinuous_formulation () |
void | disable_discontinuous_formulation () |
void | get_dofs (DoubleVector &dofs) const |
void | get_dofs (const unsigned &t, DoubleVector &dofs) const |
Return vector of the t'th history value of all dofs. More... | |
void | set_dofs (const DoubleVector &dofs) |
Set the values of the dofs. More... | |
void | set_dofs (const unsigned &t, DoubleVector &dofs) |
Set the history values of the dofs. More... | |
void | set_dofs (const unsigned &t, Vector< double * > &dof_pt) |
void | add_to_dofs (const double &lambda, const DoubleVector &increment_dofs) |
Add lambda x incremenet_dofs[l] to the l-th dof. More... | |
double * | global_dof_pt (const unsigned &i) |
double & | dof (const unsigned &i) |
i-th dof in the problem More... | |
double | dof (const unsigned &i) const |
i-th dof in the problem (const version) More... | |
double *& | dof_pt (const unsigned &i) |
Pointer to i-th dof in the problem. More... | |
double * | dof_pt (const unsigned &i) const |
Pointer to i-th dof in the problem (const version) More... | |
virtual void | get_inverse_mass_matrix_times_residuals (DoubleVector &Mres) |
virtual void | get_dvaluesdt (DoubleVector &f) |
virtual void | get_residuals (DoubleVector &residuals) |
Get the total residuals Vector for the problem. More... | |
virtual void | get_jacobian (DoubleVector &residuals, DenseDoubleMatrix &jacobian) |
virtual void | get_jacobian (DoubleVector &residuals, CRDoubleMatrix &jacobian) |
virtual void | get_jacobian (DoubleVector &residuals, CCDoubleMatrix &jacobian) |
virtual void | get_jacobian (DoubleVector &residuals, SumOfMatrices &jacobian) |
void | get_fd_jacobian (DoubleVector &residuals, DenseMatrix< double > &jacobian) |
Get the full Jacobian by finite differencing. More... | |
void | get_derivative_wrt_global_parameter (double *const ¶meter_pt, DoubleVector &result) |
void | get_hessian_vector_products (DoubleVectorWithHaloEntries const &Y, Vector< DoubleVectorWithHaloEntries > const &C, Vector< DoubleVectorWithHaloEntries > &product) |
void | solve_eigenproblem (const unsigned &n_eval, Vector< std::complex< double >> &eigenvalue, Vector< DoubleVector > &eigenvector, const bool &steady=true) |
Solve the eigenproblem. More... | |
void | solve_eigenproblem (const unsigned &n_eval, Vector< std::complex< double >> &eigenvalue, const bool &steady=true) |
virtual void | get_eigenproblem_matrices (CRDoubleMatrix &mass_matrix, CRDoubleMatrix &main_matrix, const double &shift=0.0) |
void | assign_eigenvector_to_dofs (DoubleVector &eigenvector) |
Assign the eigenvector passed to the function to the dofs. More... | |
void | add_eigenvector_to_dofs (const double &epsilon, const DoubleVector &eigenvector) |
void | store_current_dof_values () |
Store the current values of the degrees of freedom. More... | |
void | restore_dof_values () |
Restore the stored values of the degrees of freedom. More... | |
void | enable_jacobian_reuse () |
void | disable_jacobian_reuse () |
Disable recycling of Jacobian in Newton iteration. More... | |
bool | jacobian_reuse_is_enabled () |
Is recycling of Jacobian in Newton iteration enabled? More... | |
bool & | use_predictor_values_as_initial_guess () |
void | newton_solve () |
Use Newton method to solve the problem. More... | |
void | enable_globally_convergent_newton_method () |
enable globally convergent Newton method More... | |
void | disable_globally_convergent_newton_method () |
disable globally convergent Newton method More... | |
void | newton_solve (unsigned const &max_adapt) |
void | steady_newton_solve (unsigned const &max_adapt=0) |
void | copy (Problem *orig_problem_pt) |
virtual Problem * | make_copy () |
virtual void | read (std::ifstream &restart_file, bool &unsteady_restart) |
virtual void | read (std::ifstream &restart_file) |
virtual void | dump (std::ofstream &dump_file) const |
void | dump (const std::string &dump_file_name) const |
void | delete_all_external_storage () |
virtual void | symmetrise_eigenfunction_for_adaptive_pitchfork_tracking () |
double * | bifurcation_parameter_pt () const |
void | get_bifurcation_eigenfunction (Vector< DoubleVector > &eigenfunction) |
void | activate_fold_tracking (double *const ¶meter_pt, const bool &block_solve=true) |
void | activate_bifurcation_tracking (double *const ¶meter_pt, const DoubleVector &eigenvector, const bool &block_solve=true) |
void | activate_bifurcation_tracking (double *const ¶meter_pt, const DoubleVector &eigenvector, const DoubleVector &normalisation, const bool &block_solve=true) |
void | activate_pitchfork_tracking (double *const ¶meter_pt, const DoubleVector &symmetry_vector, const bool &block_solve=true) |
void | activate_hopf_tracking (double *const ¶meter_pt, const bool &block_solve=true) |
void | activate_hopf_tracking (double *const ¶meter_pt, const double &omega, const DoubleVector &null_real, const DoubleVector &null_imag, const bool &block_solve=true) |
void | deactivate_bifurcation_tracking () |
void | reset_assembly_handler_to_default () |
Reset the system to the standard non-augemented state. More... | |
double | arc_length_step_solve (double *const ¶meter_pt, const double &ds, const unsigned &max_adapt=0) |
double | arc_length_step_solve (Data *const &data_pt, const unsigned &data_index, const double &ds, const unsigned &max_adapt=0) |
void | reset_arc_length_parameters () |
int & | sign_of_jacobian () |
void | explicit_timestep (const double &dt, const bool &shift_values=true) |
Take an explicit timestep of size dt. More... | |
void | unsteady_newton_solve (const double &dt) |
void | unsteady_newton_solve (const double &dt, const bool &shift_values) |
void | unsteady_newton_solve (const double &dt, const unsigned &max_adapt, const bool &first, const bool &shift=true) |
double | doubly_adaptive_unsteady_newton_solve (const double &dt, const double &epsilon, const unsigned &max_adapt, const bool &first, const bool &shift=true) |
double | doubly_adaptive_unsteady_newton_solve (const double &dt, const double &epsilon, const unsigned &max_adapt, const unsigned &suppress_resolve_after_spatial_adapt_flag, const bool &first, const bool &shift=true) |
double | adaptive_unsteady_newton_solve (const double &dt_desired, const double &epsilon) |
double | adaptive_unsteady_newton_solve (const double &dt_desired, const double &epsilon, const bool &shift_values) |
void | assign_initial_values_impulsive () |
void | assign_initial_values_impulsive (const double &dt) |
void | calculate_predictions () |
Calculate predictions. More... | |
void | enable_mass_matrix_reuse () |
void | disable_mass_matrix_reuse () |
bool | mass_matrix_reuse_is_enabled () |
Return whether the mass matrix is being reused. More... | |
void | refine_uniformly (const Vector< unsigned > &nrefine_for_mesh) |
void | refine_uniformly (const Vector< unsigned > &nrefine_for_mesh, DocInfo &doc_info) |
void | refine_uniformly_and_prune (const Vector< unsigned > &nrefine_for_mesh) |
void | refine_uniformly_and_prune (const Vector< unsigned > &nrefine_for_mesh, DocInfo &doc_info) |
void | refine_uniformly (DocInfo &doc_info) |
void | refine_uniformly_and_prune (DocInfo &doc_info) |
void | refine_uniformly () |
void | refine_uniformly (const unsigned &i_mesh, DocInfo &doc_info) |
Do uniform refinement for submesh i_mesh with documentation. More... | |
void | refine_uniformly (const unsigned &i_mesh) |
Do uniform refinement for submesh i_mesh without documentation. More... | |
void | p_refine_uniformly (const Vector< unsigned > &nrefine_for_mesh) |
void | p_refine_uniformly (const Vector< unsigned > &nrefine_for_mesh, DocInfo &doc_info) |
void | p_refine_uniformly_and_prune (const Vector< unsigned > &nrefine_for_mesh) |
void | p_refine_uniformly_and_prune (const Vector< unsigned > &nrefine_for_mesh, DocInfo &doc_info) |
void | p_refine_uniformly (DocInfo &doc_info) |
void | p_refine_uniformly_and_prune (DocInfo &doc_info) |
void | p_refine_uniformly () |
void | p_refine_uniformly (const unsigned &i_mesh, DocInfo &doc_info) |
Do uniform p-refinement for submesh i_mesh with documentation. More... | |
void | p_refine_uniformly (const unsigned &i_mesh) |
Do uniform p-refinement for submesh i_mesh without documentation. More... | |
void | refine_selected_elements (const Vector< unsigned > &elements_to_be_refined) |
void | refine_selected_elements (const Vector< RefineableElement * > &elements_to_be_refined_pt) |
void | refine_selected_elements (const unsigned &i_mesh, const Vector< unsigned > &elements_to_be_refined) |
void | refine_selected_elements (const unsigned &i_mesh, const Vector< RefineableElement * > &elements_to_be_refined_pt) |
void | refine_selected_elements (const Vector< Vector< unsigned >> &elements_to_be_refined) |
void | refine_selected_elements (const Vector< Vector< RefineableElement * >> &elements_to_be_refined_pt) |
void | p_refine_selected_elements (const Vector< unsigned > &elements_to_be_refined) |
void | p_refine_selected_elements (const Vector< PRefineableElement * > &elements_to_be_refined_pt) |
void | p_refine_selected_elements (const unsigned &i_mesh, const Vector< unsigned > &elements_to_be_refined) |
void | p_refine_selected_elements (const unsigned &i_mesh, const Vector< PRefineableElement * > &elements_to_be_refined_pt) |
void | p_refine_selected_elements (const Vector< Vector< unsigned >> &elements_to_be_refined) |
void | p_refine_selected_elements (const Vector< Vector< PRefineableElement * >> &elements_to_be_refined_pt) |
unsigned | unrefine_uniformly () |
unsigned | unrefine_uniformly (const unsigned &i_mesh) |
void | p_unrefine_uniformly (DocInfo &doc_info) |
void | p_unrefine_uniformly (const unsigned &i_mesh, DocInfo &doc_info) |
Do uniform p-unrefinement for submesh i_mesh without documentation. More... | |
void | adapt (unsigned &n_refined, unsigned &n_unrefined) |
void | adapt () |
void | p_adapt (unsigned &n_refined, unsigned &n_unrefined) |
void | p_adapt () |
void | adapt_based_on_error_estimates (unsigned &n_refined, unsigned &n_unrefined, Vector< Vector< double >> &elemental_error) |
void | adapt_based_on_error_estimates (Vector< Vector< double >> &elemental_error) |
void | get_all_error_estimates (Vector< Vector< double >> &elemental_error) |
void | doc_errors (DocInfo &doc_info) |
Get max and min error for all elements in submeshes. More... | |
void | doc_errors () |
Get max and min error for all elements in submeshes. More... | |
void | enable_info_in_newton_solve () |
void | disable_info_in_newton_solve () |
Disable the output of information when in the newton solver. More... | |
![]() | |
ExplicitTimeSteppableObject () | |
Empty constructor. More... | |
ExplicitTimeSteppableObject (const ExplicitTimeSteppableObject &)=delete | |
Broken copy constructor. More... | |
void | operator= (const ExplicitTimeSteppableObject &)=delete |
Broken assignment operator. More... | |
virtual | ~ExplicitTimeSteppableObject () |
Empty destructor. More... | |
virtual void | actions_before_explicit_stage () |
virtual void | actions_after_explicit_stage () |
![]() | |
SegregatableFSIProblem () | |
virtual | ~SegregatableFSIProblem () |
Empty virtual destructor. More... | |
void | setup_segregated_solver (const bool &full_setup_of_fluid_and_solid_dofs=true) |
PicardConvergenceData | segregated_solve () |
PicardConvergenceData | steady_segregated_solve () |
PicardConvergenceData | unsteady_segregated_solve (const double &dt) |
PicardConvergenceData | unsteady_segregated_solve (const double &dt, const bool &shift_values) |
void | assess_convergence_based_on_max_global_residual (const double &tol) |
void | assess_convergence_based_on_max_global_residual () |
void | assess_convergence_based_on_absolute_solid_change (const double &tol) |
void | assess_convergence_based_on_absolute_solid_change () |
void | assess_convergence_based_on_relative_solid_change (const double &tol) |
void | assess_convergence_based_on_relative_solid_change () |
void | enable_pointwise_aitken (const unsigned &pointwise_aitken_start) |
void | enable_pointwise_aitken () |
void | disable_pointwise_aitken () |
Disable the use of pointwise Aitken extrapolation. More... | |
void | enable_under_relaxation (const double &omega=1.0) |
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) |
void | store_solid_dofs () |
void | reset_timer () |
Reset timer. More... | |
void | restart_timer () |
void | halt_timer () |
double | t_spent_on_actual_solve () |
Total elapsed time since start of solve. More... | |
Private Attributes | |
int | Picard_iter |
Vector< std::pair< GeomObject *, Vector< double > > > | Control_point_pair |
ofstream | Convergence_file |
Output stream to document the convergence history. More... | |
//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// Problem class – add segregated solver capability to existing problem.
//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// Problem class – add segregated solver capability to an existing problem.
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 for the collapsible channel problem.
Constructor: The arguments are the same as the original (non-segregated) problem, namely, numbers of elements and lengths of different sections of the domain.
References oomph::SegregatableFSIProblem::assess_convergence_based_on_absolute_solid_change(), oomph::SegregatableFSIProblem::assess_convergence_based_on_max_global_residual(), oomph::SegregatableFSIProblem::assess_convergence_based_on_relative_solid_change(), SegregatedFSICollapsibleChannelProblem< ELEMENT >::Control_point_pair, Flags::Convergence_criterion, Flags::Convergence_tolerance, oomph::SegregatableFSIProblem::disable_irons_and_tuck_extrapolation(), oomph::SegregatableFSIProblem::disable_pointwise_aitken(), oomph::SegregatableFSIProblem::Doc_max_global_residual, oomph::SegregatableFSIProblem::enable_irons_and_tuck_extrapolation(), oomph::SegregatableFSIProblem::enable_pointwise_aitken(), oomph::SegregatableFSIProblem::enable_under_relaxation(), i, FSICollapsibleChannelProblem< ELEMENT >::Lcollapsible, oomph::MeshAsGeomObject::locate_zeta(), Flags::Omega_under_relax, SegregatedFSICollapsibleChannelProblem< ELEMENT >::Picard_iter, Flags::Use_irons_and_tuck_extrapolation, Flags::Use_pointwise_aitken, and FSICollapsibleChannelProblem< ELEMENT >::Wall_geom_object_pt.
|
inline |
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.
|
inline |
|
virtual |
Overload actions after Newton step: Update nodal positions in the fluid mesh in response to any changes in the wall displacement field. If monolithic Newton solver is used, doc progress of Newton iteration, using the same output as during Picard iteration.
Actions after Newton step: Update nodal positions in the fluid mesh in response to any changes in the wall displacement field. If monolithic Newton solver is used, doc progress of Newton iteration, using the same output as during Picard iteration.
Reimplemented from FSICollapsibleChannelProblem< ELEMENT >.
References GlobalFct::get_residuals(), oomph::DoubleVector::max(), and Flags::Use_segregated_solver.
|
inlinevirtual |
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.
Reimplemented from FSICollapsibleChannelProblem< ELEMENT >.
|
inlinevirtual |
Initialise timer and reset counter for Newton iterations if monolithic solver is used.
Reimplemented from FSICollapsibleChannelProblem< ELEMENT >.
References Flags::Use_segregated_solver.
|
inlinevirtual |
Overload actions before Newton step: Update nodal positions in the fluid mesh in response to any changes in the wall displacement field if segregated solver is used.
Reimplemented from oomph::Problem.
|
virtual |
for documentation purposes
Overload actions before the segregated_convergence_check
Actions after Segregated step: Update nodal positions in the fluid mesh in response to any changes in the wall displacement field. If monolithic Newton solver is used, doc progress of Newton iteration, using the same output as during Picard iteration.
Reimplemented from oomph::SegregatableFSIProblem.
References GlobalFct::get_residuals(), and oomph::DoubleVector::max().
|
inlinevirtual |
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.
Reimplemented from oomph::SegregatableFSIProblem.
|
inlinevirtual |
This function is called once at the start of each segregated solve.
Reimplemented from oomph::SegregatableFSIProblem.
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::doc_solution | ( | DocInfo & | doc_info | ) |
Document the solution.
References oomph::DocInfo::directory(), MergeRestartFiles::filename, and oomph::DocInfo::number().
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::doc_solution_steady | ( | DocInfo & | doc_info, |
ofstream & | trace_file, | ||
const double & | cpu, | ||
const unsigned & | niter | ||
) |
Doc the steady solution.
Doc the solution for a steady run.
References oomph::DocInfo::directory(), MergeRestartFiles::filename, i, oomph::DocInfo::number(), Flags::Omega_under_relax, Global_Physical_Variables::P_ext_data_pt, Flags::Use_irons_and_tuck_extrapolation, Flags::Use_pointwise_aitken, Flags::Use_segregated_solver, oomph::Data::value(), and Global_Physical_Variables::Yprescr.
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::doc_solution_unsteady | ( | DocInfo & | doc_info, |
ofstream & | trace_file, | ||
const double & | cpu, | ||
const unsigned & | niter | ||
) |
Doc the unsteady solution.
Doc the solution for an unstady run.
References oomph::DocInfo::directory(), MergeRestartFiles::filename, i, oomph::DocInfo::number(), Flags::Omega_under_relax, UniformPSDSelfTest::r, Flags::Use_irons_and_tuck_extrapolation, Flags::Use_pointwise_aitken, and Flags::Use_segregated_solver.
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::fluid_output_during_picard | ( | const unsigned & | iter, |
DocInfo & | doc_info | ||
) |
Perform output of fluid flow during after the iter-th Picard iteration. This re-implements an empty virtual fct in the SegregatableFSIproblem base class.
|
virtual |
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 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.
Implements oomph::SegregatableFSIProblem.
References e(), i, oomph::GeneralisedElement::internal_data_pt(), n, oomph::GeneralisedElement::ninternal_data(), and Global_Physical_Variables::P_ext_data_pt.
|
virtual |
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.
Implements oomph::SegregatableFSIProblem.
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::solid_output_during_picard | ( | const unsigned & | iter, |
DocInfo & | doc_info | ||
) |
Perform output of wall shape during after the iter-th Picard iteration. This re-implements an empty virtual fct in the SegregatableFSIproblem base class.
|
virtual |
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 >.
References Flags::Convergence_tolerance, oomph::PicardConvergenceData::cpu_for_global_residual(), oomph::PicardConvergenceData::cpu_total(), oomph::DocInfo::directory(), oomph::PicardConvergenceData::essential_cpu_total(), MergeRestartFiles::filename, i, oomph::DocInfo::is_doc_enabled(), oomph::PicardConvergenceData::niter(), Flags::Nsteps, oomph::DocInfo::number(), Flags::Omega_under_relax, Global_Physical_Variables::P_ext_data_pt, Global_Physical_Variables::Pmax, Global_Physical_Variables::Pmin, Global_Physical_Variables::Q, Global_Physical_Variables::Re, Flags::Resolution_factor, oomph::DocInfo::set_directory(), oomph::Data::set_value(), Flags::Use_irons_and_tuck_extrapolation, Flags::Use_segregated_solver, oomph::Data::value(), and Global_Physical_Variables::Yprescr.
|
virtual |
Perform a steady run.
Reimplemented from FSICollapsibleChannelProblem< ELEMENT >.
|
virtual |
Unsteady run.
Unsteady run, dummy argument to be consistent with definition in FSICollapsibleChannelProblem
Reimplemented from FSICollapsibleChannelProblem< ELEMENT >.
References Flags::Convergence_tolerance, oomph::PicardConvergenceData::cpu_for_global_residual(), oomph::PicardConvergenceData::cpu_total(), oomph::DocInfo::directory(), Flags::Dt, oomph::PicardConvergenceData::essential_cpu_total(), MergeRestartFiles::filename, i, oomph::DocInfo::is_doc_enabled(), oomph::PicardConvergenceData::niter(), Flags::Nsteps, oomph::DocInfo::number(), Flags::Omega_under_relax, Global_Physical_Variables::P_ext_data_pt, Global_Physical_Variables::Pmax, Global_Physical_Variables::Q, Global_Physical_Variables::Re, Flags::Resolution_factor, oomph::DocInfo::set_directory(), Flags::Use_irons_and_tuck_extrapolation, Flags::Use_segregated_solver, and oomph::Data::value().
|
inline |
Write to convergence history file.
References i.
|
inline |
Write header for convergence history file.
References i.
void SegregatedFSICollapsibleChannelProblem< ELEMENT >::write_zone_info_for_convergence_history | ( | ofstream & | convergence_file | ) |
Overload empty virtual function that is called before header for convergence history is written. This can be overloaded to insert zone information that can be used to identify the problem parameters for this solve.
Overload empty virtual function that is called before header for convergence history is written. Overloaded to insert zone information that can be used to identify the problem parameters for this solve.
References Flags::Convergence_tolerance, Flags::Omega_under_relax, Global_Physical_Variables::Q, Global_Physical_Variables::Re, Flags::Resolution_factor, Flags::Use_irons_and_tuck_extrapolation, and Flags::Use_segregated_solver.
|
private |
Vector of pairs of pointers to wall elements (in their incarnation as GeomObjects) that contains the control points and the local coordinate in those objects
Referenced by SegregatedFSICollapsibleChannelProblem< ELEMENT >::SegregatedFSICollapsibleChannelProblem().
|
private |
Output stream to document the convergence history.
|
private |