![]() |
|
Problem class. More...
#include <fsi_chan_problem.h>
Public Member Functions | |
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... | |
virtual void | steady_run () |
Steady run. More... | |
virtual void | unsteady_run (const double &dt=0.1) |
Unsteady run. 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 () |
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 () |
Private Member Functions | |
void | create_traction_elements (const unsigned &b, Mesh *const &bulk_mesh_pt, Mesh *const &traction_mesh_pt) |
Create the prescribed traction elements on boundary b. More... | |
void | create_traction_elements (const unsigned &b, Mesh *const &bulk_mesh_pt, Mesh *const &traction_mesh_pt) |
Create the prescribed traction elements on boundary b. More... | |
void | delete_traction_elements (Mesh *const &traction_mesh_pt) |
Delete prescribed traction elements from the surface mesh. More... | |
void | create_traction_elements (const unsigned &b, Mesh *const &bulk_mesh_pt, Mesh *const &traction_mesh_pt) |
Create the prescribed traction elements on boundary b. More... | |
void | delete_traction_elements (Mesh *const &traction_mesh_pt) |
Delete prescribed traction elements from the surface mesh. More... | |
void | create_lagrange_multiplier_elements () |
Create elements that impose the prescribed boundary displacement. More... | |
void | delete_lagrange_multiplier_elements () |
void | create_traction_elements (const unsigned &b, Mesh *const &bulk_mesh_pt, Mesh *const &traction_mesh_pt) |
Create the prescribed traction elements on boundary b. More... | |
void | delete_traction_elements (Mesh *const &traction_mesh_pt) |
Delete prescribed traction elements from the surface mesh. More... | |
void | create_lagrange_multiplier_elements () |
void | delete_lagrange_multiplier_elements () |
void | create_traction_elements (const unsigned &b, Mesh *const &bulk_mesh_pt, Mesh *const &traction_mesh_pt) |
Create the prescribed traction elements on boundary b. More... | |
void | delete_traction_elements (Mesh *const &traction_mesh_pt) |
Delete prescribed traction elements from the surface mesh. More... | |
void | create_traction_elements (const unsigned &b, Mesh *const &bulk_mesh_pt, Mesh *const &traction_mesh_pt) |
Create the prescribed traction elements on boundary b. More... | |
Private Attributes | |
Mesh * | Applied_fluid_traction_mesh_pt |
RefineableAlgebraicCollapsibleChannelMesh< ELEMENT > * | Bulk_mesh_pt |
Pointer to the "bulk" mesh. More... | |
ElasticCollapsibleChannelMesh< ELEMENT > * | Bulk_mesh_pt |
Pointer to the "bulk" mesh. More... | |
SolidMesh * | Lagrange_multiplier_mesh_pt |
Pointers to mesh of Lagrange multiplier elements. More... | |
ConstitutiveLaw * | Constitutive_law_pt |
Constitutive law used to determine the mesh deformation. More... | |
ElasticRefineableCollapsibleChannelMesh< ELEMENT > * | Bulk_mesh_pt |
Pointer to the "bulk" mesh. More... | |
Mesh * | Displacement_control_mesh_pt |
Pointer to mesh containing the displacement control element (only!) More... | |
bool | Fluid_jacobian_ignores_geometric_data |
bool | Wall_jacobian_ignores_geometric_data |
bool | Wall_jacobian_ignores_fluid_shear_stress_data |
Additional Inherited Members | |
![]() | |
typedef void(* | SpatialErrorEstimatorFctPt) (Mesh *&mesh_pt, Vector< double > &elemental_error) |
Function pointer for spatial error estimator. More... | |
typedef void(* | SpatialErrorEstimatorWithDocFctPt) (Mesh *&mesh_pt, Vector< double > &elemental_error, DocInfo &doc_info) |
Function pointer for spatial error estimator with doc. More... | |
![]() | |
bool | Shut_up_in_newton_solve |
![]() | |
static bool | Suppress_warning_about_actions_before_read_unstructured_meshes |
![]() | |
enum | Assembly_method { Perform_assembly_using_vectors_of_pairs , Perform_assembly_using_two_vectors , Perform_assembly_using_maps , Perform_assembly_using_lists , Perform_assembly_using_two_arrays } |
Enumerated flags to determine which sparse assembly method is used. More... | |
![]() | |
static ContinuationStorageScheme | Continuation_time_stepper |
Storage for the single static continuation timestorage object. More... | |
Problem class.
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 for the collapsible channel problem.
Constructor: The arguments are the number of elements and the lengths of the domain.
References abs(), oomph::FSI_functions::apply_no_slip_on_moving_wall(), b, e(), Global_Physical_Variables::H, i, j, Global_Parameters::Ldown, Global_Physical_Variables::load(), Global_Parameters::Lup, Mesh_Parameters::ly, Global_Parameters::Ly, Mesh_Parameters::ny, GlobalParameters::Ny, Global_Physical_Variables::P_ext_data_pt, Global_Physical_Variables::Q, Global_Physical_Variables::Re, Global_Physical_Variables::ReSt, Global_Physical_Variables::Sigma0, Flags::Steady_flag, plotDoE::x, and Global_Physical_Variables::Yprescr.
|
inline |
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 | ||
) |
Constructor for the collapsible channel problem.
Constructor: The arguments are the number of elements and the lengths of the domain.
References oomph::FSI_functions::apply_no_slip_on_moving_wall(), b, e(), Global_Physical_Variables::H, oomph::KirchhoffLoveBeamEquations::h_pt(), i, Global_Parameters::Ldown, Global_Physical_Variables::load(), oomph::KirchhoffLoveBeamEquations::load_vector_fct_pt, Global_Parameters::Lup, Mesh_Parameters::ly, Global_Parameters::Ly, Mesh_Parameters::ny, GlobalParameters::Ny, Global_Physical_Variables::prescribed_traction(), Global_Physical_Variables::Q, oomph::FSIWallElement::q_pt(), Global_Physical_Variables::Re, Global_Physical_Variables::ReSt, oomph::FSIHermiteBeamElement::set_normal_pointing_out_of_fluid(), Global_Physical_Variables::Sigma0, oomph::KirchhoffLoveBeamEquations::sigma0_pt(), BL_Squash::squash_fct(), oomph::NavierStokesTractionElement< ELEMENT >::traction_fct_pt, and oomph::KirchhoffLoveBeamEquations::undeformed_beam_pt().
|
inline |
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 | ||
) |
Constructor: The arguments are the number of elements and the lengths of the domain.
|
inline |
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 | ||
) |
Constructor: The arguments are the number of elements and the lengths of the domain.
|
inline |
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 | ||
) |
Constructor: The arguments are the number of elements and the lengths of the domain.
|
inline |
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 | ||
) |
Constructor: The arguments are the number of elements and the lengths of the domain.
|
inline |
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 & | 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.
Constructor: The arguments are the number of elements and the lengths of the domain.
References oomph::Mesh::add_element_pt(), oomph::GeneralisedElement::add_external_data(), oomph::FSI_functions::apply_no_slip_on_moving_wall(), b, oomph::FSIWallElement::disable_shear_stress_in_jacobian(), oomph::DisplacementControlElement::displacement_control_load_pt(), e(), oomph::FSIWallElement::enable_shear_stress_in_jacobian(), Global_Physical_Variables::external_pressure(), Global_Physical_Variables::H, oomph::KirchhoffLoveBeamEquations::h_pt(), i, oomph::FiniteElement::interpolated_x(), oomph::SolidFiniteElement::interpolated_xi(), Global_Parameters::Ldown, Global_Physical_Variables::load(), oomph::KirchhoffLoveBeamEquations::load_vector_fct_pt, Global_Parameters::Lup, Mesh_Parameters::ly, Global_Parameters::Ly, oomph::Locate_zeta_helpers::Max_newton_iterations, Mesh_Parameters::ny, GlobalParameters::Ny, oomph::oomph_info, Global_Physical_Variables::Pext_data_pt, oomph::Data::pin(), Global_Physical_Variables::prescribed_traction(), Global_Physical_Variables::Prescribed_y, Global_Physical_Variables::Q, oomph::FSIWallElement::q_pt(), Global_Physical_Variables::Re, Global_Physical_Variables::ReSt, oomph::FSIHermiteBeamElement::set_normal_pointing_out_of_fluid(), Global_Physical_Variables::Sigma0, oomph::KirchhoffLoveBeamEquations::sigma0_pt(), BL_Squash::squash_fct(), Control_Flags::Steady_run, oomph::NavierStokesTractionElement< ELEMENT >::traction_fct_pt, oomph::KirchhoffLoveBeamEquations::undeformed_beam_pt(), and plotDoE::x.
|
inline |
|
virtual |
Actions after adapt: Rebuild the mesh of prescribed traction elements.
Actions after adapt: Rebuild the mesh of prescribed traction elements and reset FSI
Reimplemented from oomph::Problem.
References oomph::FSI_functions::apply_no_slip_on_moving_wall(), oomph::Mesh::boundary_node_pt(), e(), oomph::Mesh::nboundary_node(), Global_Physical_Variables::prescribed_traction(), and oomph::NavierStokesTractionElement< ELEMENT >::traction_fct_pt.
|
virtual |
Actions after adapt: Rebuild the mesh of prescribed traction elements and reset FSI
Reimplemented from oomph::Problem.
|
virtual |
Actions after adapt: Rebuild the mesh of prescribed traction elements and reset FSI
Reimplemented from oomph::Problem.
|
inline |
Actions after distribute: create traction elements and reset FSI.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
Actions before adapt: Wipe the mesh of prescribed traction elements.
Reimplemented from oomph::Problem.
|
virtual |
Actions before adapt: Wipe the mesh of prescribed traction elements.
Reimplemented from oomph::Problem.
|
virtual |
Actions before adapt: Wipe the mesh of prescribed traction elements.
Reimplemented from oomph::Problem.
|
inline |
Actions before distribute: wipe the mesh of prescribed traction elements.
|
inlinevirtual |
Update before checking Newton convergence: Update the nodal positions in the fluid mesh in response to possible changes in the wall shape.
Reimplemented from oomph::Problem.
Reimplemented in SegregatedFSICollapsibleChannelProblem< ELEMENT >, and SegregatedFSICollapsibleChannelProblem< ELEMENT >.
References FSICollapsibleChannelProblem< ELEMENT >::Bulk_mesh_pt, and FSICollapsibleChannelProblem< ELEMENT >::Newton_iter.
|
inlinevirtual |
Update before checking Newton convergence: Update the nodal positions in the fluid mesh in response to possible changes in the wall shape
Reimplemented from oomph::Problem.
|
inlinevirtual |
Update before checking Newton convergence: Update the nodal positions in the fluid mesh in response to possible changes in the wall shape
Reimplemented from oomph::Problem.
|
inlinevirtual |
Update no slip before Newton convergence check.
Reimplemented from oomph::Problem.
References oomph::FSI_functions::apply_no_slip_on_moving_wall().
|
inlinevirtual |
Update no slip before Newton convergence check.
Reimplemented from oomph::Problem.
References oomph::FSI_functions::apply_no_slip_on_moving_wall().
|
inlinevirtual |
Update before checking Newton convergence: Update the nodal positions in the fluid mesh in response to possible changes in the wall shape
Reimplemented from oomph::Problem.
|
inlinevirtual |
Update before checking Newton convergence: Update the nodal positions in the fluid mesh in response to possible changes in the wall shape
Reimplemented from oomph::Problem.
|
inlinevirtual |
Actions before solve. Reset counter for number of Newton iterations.
Reimplemented from oomph::Problem.
Reimplemented in SegregatedFSICollapsibleChannelProblem< ELEMENT >.
References FSICollapsibleChannelProblem< ELEMENT >::Newton_iter.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inline |
Access function for the specific bulk (fluid) mesh.
References FSICollapsibleChannelProblem< ELEMENT >::Bulk_mesh_pt.
|
inline |
Access function for the specific bulk (fluid) mesh.
|
inline |
Access function for the specific bulk (fluid) mesh.
|
inline |
Access function for the specific bulk (fluid) mesh.
|
inline |
Access function for the specific bulk (fluid) mesh.
|
inline |
Access function for the specific bulk (fluid) mesh.
|
inline |
Access function for the specific bulk (fluid) mesh.
|
private |
Create elements that impose the prescribed boundary displacement.
Create elements that enforce prescribed boundary motion by Lagrange multipliers
References b, oomph::Mesh::boundary_element_pt(), e(), oomph::Mesh::face_index_at_boundary(), i, oomph::Node::is_on_boundary(), j, oomph::Mesh::nboundary_element(), oomph::FaceElement::nbulk_value(), oomph::FiniteElement::nnode(), oomph::FiniteElement::node_pt(), oomph::Data::nvalue(), oomph::Data::pin(), and oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::set_boundary_shape_geom_object_pt().
|
private |
Create elements that enforce prescribed boundary motion by Lagrange multiplilers
|
private |
Create the prescribed traction elements on boundary b.
Create the traction elements.
References oomph::Mesh::add_element_pt(), b, oomph::Mesh::boundary_element_pt(), e(), oomph::Mesh::face_index_at_boundary(), and oomph::Mesh::nboundary_element().
|
private |
Create the prescribed traction elements on boundary b.
|
private |
Create the prescribed traction elements on boundary b.
|
private |
Create the prescribed traction elements on boundary b.
|
private |
Create the prescribed traction elements on boundary b.
|
private |
Create the prescribed traction elements on boundary b.
|
private |
Delete elements that enforce prescribed boundary motion by Lagrange multipliers
Delete elements that impose the prescribed boundary displacement and wipe the associated mesh
References e().
|
private |
Delete elements that enforce prescribed boundary motion by Lagrange multiplilers
|
private |
Delete prescribed traction elements from the surface mesh.
Delete traction elements and wipe the surface mesh.
References e(), oomph::Mesh::element_pt(), oomph::Mesh::flush_element_and_node_storage(), and oomph::Mesh::nelement().
|
private |
Delete prescribed traction elements from the surface mesh.
|
private |
Delete prescribed traction elements from the surface mesh.
|
private |
Delete prescribed traction elements from the surface mesh.
void FSICollapsibleChannelProblem< ELEMENT >::doc_solution | ( | DocInfo & | doc_info, |
ofstream & | trace_file | ||
) |
Doc the solution.
References oomph::CommandLineArgs::Argc, oomph::DocInfo::directory(), MergeRestartFiles::filename, oomph::DocInfo::number(), and Global_Physical_Variables::P_ext.
void FSICollapsibleChannelProblem< ELEMENT >::doc_solution | ( | DocInfo & | doc_info, |
ofstream & | trace_file | ||
) |
Doc the solution.
void FSICollapsibleChannelProblem< ELEMENT >::doc_solution | ( | DocInfo & | doc_info, |
ofstream & | trace_file | ||
) |
Doc the solution.
void FSICollapsibleChannelProblem< ELEMENT >::doc_solution | ( | DocInfo & | doc_info, |
ofstream & | trace_file | ||
) |
Doc the solution.
void FSICollapsibleChannelProblem< ELEMENT >::doc_solution | ( | DocInfo & | doc_info, |
ofstream & | trace_file | ||
) |
Doc the solution.
void FSICollapsibleChannelProblem< ELEMENT >::doc_solution | ( | DocInfo & | doc_info, |
ofstream & | trace_file | ||
) |
Doc the solution.
|
virtual |
Doc the steady solution.
Doc the solution for a steady run.
References GlobalParameters::Doc_info, MergeRestartFiles::filename, Global_Physical_Variables::P_ext_data_pt, and Global_Physical_Variables::Yprescr.
|
virtual |
Doc the unsteady solution.
Doc the solution for an unstady run.
References GlobalParameters::Doc_info, MergeRestartFiles::filename, and UniformPSDSelfTest::r.
|
protected |
Dump problem to disk to allow for restart.
Dump the solution to disk to allow for restart.
References Global_Physical_Variables::P_ext_data_pt.
|
protected |
Read problem for restart from specified restart file.
Read solution from disk for restart.
References Global_Physical_Variables::P_ext_data_pt, Global_Physical_Variables::P_step, and Eigen::TensorSycl::internal::read().
|
virtual |
Apply initial conditions.
Reimplemented from oomph::Problem.
References Global_Parameters::Ly, n, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, Flags::Restart_file_name, Flags::Steady_flag, compute_granudrum_aor::type, and plotDoE::x.
|
virtual |
Apply initial conditions.
Reimplemented from oomph::Problem.
|
virtual |
Apply initial conditions.
Reimplemented from oomph::Problem.
|
virtual |
Apply initial conditions.
Reimplemented from oomph::Problem.
|
virtual |
Apply initial conditions.
Reimplemented from oomph::Problem.
|
virtual |
Apply initial conditions.
Reimplemented from oomph::Problem.
|
virtual |
Apply initial conditions.
Reimplemented from oomph::Problem.
|
virtual |
Steady run.
Steady run; virtual so it can be overloaded in derived problem classes
Reimplemented in SegregatedFSICollapsibleChannelProblem< ELEMENT >, and SegregatedFSICollapsibleChannelProblem< ELEMENT >.
References GlobalParameters::Doc_info, MergeRestartFiles::filename, Flags::Nsteps, 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, Flags::Run_identifier_string, Global_Physical_Variables::Yprescr, and Global_Physical_Variables::Yprescr_min.
|
virtual |
Unsteady run. Specify timestep or use default of 0.1.
Unsteady run; virtual so it can be overloaded in derived problem classes. Specify timestep or use default of 0.1
Reimplemented in SegregatedFSICollapsibleChannelProblem< ELEMENT >.
References GlobalParameters::Doc_info, MergeRestartFiles::filename, Flags::Nsteps, Global_Physical_Variables::P_ext_data_pt, Global_Physical_Variables::Pmax, Global_Physical_Variables::Q, Global_Physical_Variables::Re, Flags::Resolution_factor, and Flags::Run_identifier_string.
|
inline |
Access function for the wall mesh.
References FSICollapsibleChannelProblem< ELEMENT >::Wall_mesh_pt.
|
inline |
Access function for the wall mesh.
|
inline |
Access function for the wall mesh.
|
inline |
Access function for the wall mesh.
|
inline |
Access function for the wall mesh.
|
inline |
Access function for the wall mesh.
|
inline |
Access function for the wall mesh.
|
private |
Pointer to the "surface" mesh that applies the traction at the inflow
|
protected |
Pointer to the "bulk" mesh.
Referenced by FSICollapsibleChannelProblem< ELEMENT >::actions_before_newton_convergence_check(), and FSICollapsibleChannelProblem< ELEMENT >::bulk_mesh_pt().
|
private |
Pointer to the "bulk" mesh.
|
private |
Pointer to the "bulk" mesh.
|
private |
Pointer to the "bulk" mesh.
|
private |
Constitutive law used to determine the mesh deformation.
|
protected |
Pointer to GeomObject at which displacement control is applied (or at which wall displacement is monitored in unsteady runs)
|
protected |
Use displacement control?
|
protected |
Pointer to the mesh that contains the displacement control element.
|
private |
Pointer to mesh containing the displacement control element (only!)
|
protected |
DocInfo object.
|
private |
Flag controlling whether geometric data is ignored when the fluid elements calculate their Jacobian contribution
|
private |
Pointers to mesh of Lagrange multiplier elements.
Pointers to meshes of Lagrange multiplier elements.
|
protected |
x-length in the collapsible part of the channel
Referenced by SegregatedFSICollapsibleChannelProblem< ELEMENT >::SegregatedFSICollapsibleChannelProblem().
|
protected |
x-length in the downstream part of the channel
|
protected |
Pointer to the left control node.
|
protected |
x-length in the upstream part of the channel
|
protected |
Transverse length.
|
protected |
Number of elements in the x direction in the collapsible part of the channel
|
protected |
Number of elements in the x direction in the downstream part of the channel.
|
protected |
Counter for Newton iterations.
Referenced by FSICollapsibleChannelProblem< ELEMENT >::actions_before_newton_convergence_check(), and FSICollapsibleChannelProblem< ELEMENT >::actions_before_newton_solve().
|
protected |
Number of elements in the x direction in the upstream part of the channel.
|
protected |
Number of elements across the channel.
|
protected |
Pointer to right control node.
|
protected |
Vector of local coordinates of displacement control point in Ctrl_geom_obj_pt
|
protected |
Flag for steady run.
|
protected |
Geometric object incarnation of the wall mesh.
Pointer to geometric object (one Lagrangian, two Eulerian coordinates) that will be built from the wall mesh
Referenced by SegregatedFSICollapsibleChannelProblem< ELEMENT >::SegregatedFSICollapsibleChannelProblem().
|
private |
Flag controlling whether fluid shear stress is ignored when wall elements calculate their Jacobian contribition
|
private |
Flag controlling whether geometric data is ignored when the wall elements calculate their Jacobian contribution
|
protected |
Pointer to the "wall" mesh.
Referenced by FSICollapsibleChannelProblem< ELEMENT >::wall_mesh_pt().
|
protected |
Pointer to control node on the wall.