![]() |
|
Public Member Functions | |
FSIRingProblem (const unsigned &nelement_wall, const double &eps_ampl, const double &pcos_initial, const double &pcos_duration) | |
void | actions_after_newton_solve () |
Update after solve (empty) More... | |
void | actions_before_newton_solve () |
Update before solve (empty) More... | |
void | actions_before_newton_convergence_check () |
void | actions_after_adapt () |
Update the problem specs after adaptation: More... | |
void | doc_solution (const unsigned &i, DocInfo &doc_info, ofstream &trace_file) |
void | dynamic_run () |
Do dynamic run. More... | |
FSIRingProblem (const unsigned &nelement_wall, const double &eps_ampl, const double &pcos_initial, const double &pcos_duration, const unsigned &i_case) | |
void | actions_after_newton_solve () |
Update after solve (empty) More... | |
void | actions_before_newton_solve () |
Update before solve (empty) More... | |
void | actions_before_newton_convergence_check () |
void | actions_after_adapt () |
Update the problem specs after adaptation: More... | |
void | doc_solution (const unsigned &i, DocInfo &doc_info, ofstream &trace_file, const unsigned &i_case) |
void | dynamic_run (const unsigned &i_case) |
Do dynamic run. More... | |
FSIRingProblem (const unsigned &nelement_wall, const double &eps_ampl, const double &pcos_initial, const double &pcos_duration) | |
~FSIRingProblem () | |
void | actions_after_newton_solve () |
Update after solve (empty) More... | |
void | actions_before_newton_solve () |
Update before solve (empty) More... | |
void | actions_before_newton_convergence_check () |
void | actions_after_adapt () |
Update the problem specs after adaptation: More... | |
void | actions_after_distribute () |
Update the problem specs after distribution: More... | |
void | doc_solution (const unsigned &i, DocInfo &doc_info, ofstream &trace_file) |
void | dynamic_run () |
Do dynamic run. 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 |
virtual void | actions_before_adapt () |
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 Types | |
typedef AlgebraicElement< RefineableQCrouzeixRaviartElement< 2 > > | FLUID_ELEMENT |
typedef FSIHermiteBeamElement | SOLID_ELEMENT |
Typedef to specify the solid element used. More... | |
typedef AlgebraicElement< RefineableQCrouzeixRaviartElement< 2 > > | FLUID_ELEMENT |
typedef FSIHermiteBeamElement | SOLID_ELEMENT |
Typedef to specify the solid element used. More... | |
typedef AlgebraicElement< RefineableQCrouzeixRaviartElement< 2 > > | FLUID_ELEMENT |
typedef FSIHermiteBeamElement | SOLID_ELEMENT |
Typedef to specify the solid element used. More... | |
Private Member Functions | |
void | set_initial_condition () |
Setup initial condition for both domains. More... | |
void | set_wall_initial_condition () |
Setup initial condition for wall. More... | |
void | set_fluid_initial_condition () |
Setup initial condition for fluid. More... | |
void | set_initial_condition () |
Setup initial condition for both domains. More... | |
void | set_wall_initial_condition () |
Setup initial condition for wall. More... | |
void | set_fluid_initial_condition () |
Setup initial condition for fluid. More... | |
void | set_initial_condition () |
Setup initial condition for both domains. More... | |
void | set_wall_initial_condition () |
Setup initial condition for wall. More... | |
void | set_fluid_initial_condition () |
Setup initial condition for fluid. More... | |
Private Attributes | |
SOLID_ELEMENT * | Doc_displacement_elem_pt |
Element used for documenting displacement. More... | |
OneDLagrangianMesh< SOLID_ELEMENT > * | Wall_mesh_pt |
Pointer to wall mesh. More... | |
AlgebraicRefineableQuarterCircleSectorMesh< FLUID_ELEMENT > * | Fluid_mesh_pt |
Pointer to fluid mesh. More... | |
GeomObject * | Undef_geom_pt |
Pointer to geometric object that represents the undeformed wall shape. More... | |
Newmark< 2 > * | Wall_time_stepper_pt |
Pointer to wall timestepper. More... | |
BDF< 2 > * | Fluid_time_stepper_pt |
Pointer to fluid timestepper. More... | |
Node * | Veloc_trace_node_pt |
Pointer to node on coarsest mesh on which velocity is traced. More... | |
double | Eps_ampl |
Amplitude of initial deformation. More... | |
double | Pcos_initial |
Initial pcos. More... | |
double | Pcos_duration |
Duration of initial pcos. More... | |
FSI Ring problem: a fluid-structure interaction problem in which a viscous fluid bounded by an initially circular beam is set into motion by a small sinusoidal perturbation of the beam (the domain boundary).
|
private |
There are very few element types that will work for this problem. Rather than passing the element type as a template parameter to the problem, we choose instead to use a typedef to specify the particular element fluid used.
|
private |
There are very few element types that will work for this problem. Rather than passing the element type as a template parameter to the problem, we choose instead to use a typedef to specify the particular element fluid used.
|
private |
There are very few element types that will work for this problem. Rather than passing the element type as a template parameter to the problem, we choose instead to use a typedef to specify the particular element fluid used.
|
private |
Typedef to specify the solid element used.
|
private |
Typedef to specify the solid element used.
|
private |
Typedef to specify the solid element used.
FSIRingProblem::FSIRingProblem | ( | const unsigned & | N, |
const double & | eps_ampl, | ||
const double & | pcos_initial, | ||
const double & | pcos_duration | ||
) |
Constructor: Number of elements in wall mesh, amplitude of the initial wall deformation, amplitude of pcos perturbation and its duration.
Constructor for FSI ring problem. Pass number of wall elements and length of wall (in Lagrangian coordinates) amplitude of initial deformation, pcos perturbation and duration.
References oomph::Problem::add_sub_mesh(), oomph::Problem::add_time_stepper_pt(), oomph::FSI_functions::apply_no_slip_on_moving_wall(), oomph::Problem::assign_eqn_numbers(), Eigen::bfloat16_impl::atan(), oomph::Mesh::boundary_node_pt(), oomph::Problem::build_global_mesh(), Doc_displacement_elem_pt, e(), oomph::Mesh::element_pt(), MeshRefinement::error_estimator_pt, oomph::ElementWithMovingNodes::evaluate_shape_derivs_by_direct_fd(), oomph::Mesh::finite_element_pt(), Fluid_mesh_pt, Fluid_time_stepper_pt, Global_Physical_Variables::H, oomph::KirchhoffLoveBeamEquations::h_pt(), i, L, Global_Physical_Variables::Lambda_sq, oomph::KirchhoffLoveBeamEquations::lambda_sq_pt(), oomph::KirchhoffLoveBeamEquations::load_vector_fct_pt, n, N, oomph::Mesh::nboundary_node(), oomph::Mesh::nelement(), oomph::FiniteElement::nnode(), oomph::FiniteElement::node_pt(), Global_Physical_Variables::pcos_load(), oomph::Data::pin(), Global_Physical_Variables::Q, oomph::FSIWallElement::q_pt(), Global_Physical_Variables::Re, Global_Physical_Variables::ReSt, oomph::Node::set_auxiliary_node_update_fct_pt(), oomph::RefineableMeshBase::spatial_error_estimator_pt(), Undef_geom_pt, oomph::KirchhoffLoveBeamEquations::undeformed_beam_pt(), Veloc_trace_node_pt, Wall_mesh_pt, and Wall_time_stepper_pt.
Referenced by main().
FSIRingProblem::FSIRingProblem | ( | const unsigned & | N, |
const double & | eps_ampl, | ||
const double & | pcos_initial, | ||
const double & | pcos_duration, | ||
const unsigned & | i_case | ||
) |
Constructor: Number of elements in wall mesh, amplitude of the initial wall deformation, amplitude of pcos perturbation and its duration.
Constructor for FSI ring problem. Pass number of wall elements and length of wall (in Lagrangian coordinates) amplitude of initial deformation, pcos perturbation and duration.
References oomph::Problem::add_sub_mesh(), oomph::Problem::add_time_stepper_pt(), oomph::FSI_functions::apply_no_slip_on_moving_wall(), oomph::Problem::assign_eqn_numbers(), Eigen::bfloat16_impl::atan(), oomph::Mesh::boundary_node_pt(), oomph::Problem::build_global_mesh(), oomph::ElementWithMovingNodes::disable_always_evaluate_dresidual_dnodal_coordinates_by_fd(), Doc_displacement_elem_pt, e(), oomph::Mesh::element_pt(), oomph::ElementWithMovingNodes::enable_always_evaluate_dresidual_dnodal_coordinates_by_fd(), MeshRefinement::error_estimator_pt, oomph::ElementWithMovingNodes::evaluate_shape_derivs_by_chain_rule(), oomph::ElementWithMovingNodes::evaluate_shape_derivs_by_direct_fd(), oomph::ElementWithMovingNodes::evaluate_shape_derivs_by_fastest_method(), oomph::Mesh::finite_element_pt(), Fluid_mesh_pt, Fluid_time_stepper_pt, Global_Physical_Variables::H, oomph::KirchhoffLoveBeamEquations::h_pt(), i, L, Global_Physical_Variables::Lambda_sq, oomph::KirchhoffLoveBeamEquations::lambda_sq_pt(), oomph::KirchhoffLoveBeamEquations::load_vector_fct_pt, n, N, oomph::Mesh::nboundary_node(), oomph::Mesh::nelement(), oomph::FiniteElement::nnode(), oomph::FiniteElement::node_pt(), Global_Physical_Variables::pcos_load(), oomph::Data::pin(), Global_Physical_Variables::Q, oomph::FSIWallElement::q_pt(), Global_Physical_Variables::Re, oomph::TreeBasedRefineableMeshBase::refine_selected_elements(), Global_Physical_Variables::ReSt, oomph::Node::set_auxiliary_node_update_fct_pt(), oomph::RefineableMeshBase::spatial_error_estimator_pt(), Undef_geom_pt, oomph::KirchhoffLoveBeamEquations::undeformed_beam_pt(), Veloc_trace_node_pt, Wall_mesh_pt, and Wall_time_stepper_pt.
FSIRingProblem::FSIRingProblem | ( | const unsigned & | nelement_wall, |
const double & | eps_ampl, | ||
const double & | pcos_initial, | ||
const double & | pcos_duration | ||
) |
Constructor: Number of elements in wall mesh, amplitude of the initial wall deformation, amplitude of pcos perturbation and its duration.
|
inlinevirtual |
Update the problem specs after adaptation:
Reimplemented from oomph::Problem.
References oomph::FSI_functions::apply_no_slip_on_moving_wall(), and n.
|
inlinevirtual |
Update the problem specs after adaptation:
Reimplemented from oomph::Problem.
References oomph::FSI_functions::apply_no_slip_on_moving_wall(), and n.
|
inlinevirtual |
Update the problem specs after adaptation:
Reimplemented from oomph::Problem.
References oomph::FSI_functions::apply_no_slip_on_moving_wall(), and n.
|
inline |
Update the problem specs after distribution:
References oomph::FSI_functions::apply_no_slip_on_moving_wall(), and n.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
Update the problem specs before checking Newton convergence
Reimplemented from oomph::Problem.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
Doc solution: Pass number of timestep, i (we append to tracefile after every timestep but do a full doc only at certain intervals), DocInfo object and tracefile
Document solution: Pass number of timestep, i; we append to trace file at every timestep and do a full doc only after a certain number of steps.
Output the solution using 5x5 plot points
References oomph::DocInfo::directory(), oomph::DocInfo::disable_doc(), oomph::DocInfo::enable_doc(), MergeRestartFiles::filename, i, oomph::DocInfo::is_doc_enabled(), oomph::DocInfo::number(), and s.
Referenced by dynamic_run().
Doc solution: Pass number of timestep, i (we append to tracefile after every timestep but do a full doc only at certain intervals), DocInfo object and tracefile
void FSIRingProblem::doc_solution | ( | const unsigned & | i, |
DocInfo & | doc_info, | ||
ofstream & | trace_file, | ||
const unsigned & | i_case | ||
) |
Doc solution: Pass number of timestep, i (we append to tracefile after every timestep but do a full doc only at certain intervals), DocInfo object and tracefile
Document solution: Pass number of timestep, i; we append to trace file at every timestep and do a full doc only after a certain number of steps.
Output the solution using 5x5 plot points
References oomph::DocInfo::directory(), oomph::DocInfo::disable_doc(), oomph::DocInfo::enable_doc(), MergeRestartFiles::filename, i, oomph::DocInfo::is_doc_enabled(), oomph::DocInfo::number(), and s.
void FSIRingProblem::dynamic_run | ( | ) |
Do dynamic run.
Solver loop to perform unsteady run.
Label for output
Perturbation pressure
Switch off perturbation pressure
References Global_Physical_Variables::Alpha_sq, oomph::CommandLineArgs::Argc, Global_Physical_Variables::Density_ratio, oomph::DocInfo::disable_doc(), oomph::TreeBasedRefineableMeshBase::doc_adaptivity_targets(), doc_solution(), Fluid_mesh_pt, H, i, oomph::Problem::initialise_dt(), oomph::RefineableMeshBase::max_keep_unrefined(), oomph::RefineableMeshBase::max_permitted_error(), oomph::TreeBasedRefineableMeshBase::max_refinement_level(), oomph::RefineableMeshBase::min_permitted_error(), oomph::TreeBasedRefineableMeshBase::min_refinement_level(), oomph::DocInfo::number(), Global_Physical_Variables::Pcos, Pcos_duration, Pcos_initial, Global_Physical_Variables::Pext, oomph::Problem::refine_uniformly(), oomph::DocInfo::set_directory(), set_initial_condition(), Global_Physical_Variables::set_params(), oomph::Problem::time(), oomph::Problem::time_pt(), and oomph::Problem::unsteady_newton_solve().
Referenced by main().
void FSIRingProblem::dynamic_run | ( | ) |
Do dynamic run.
void FSIRingProblem::dynamic_run | ( | const unsigned & | i_case | ) |
Do dynamic run.
Solver loop to perform unsteady run.
Label for output
Perturbation pressure
Switch off perturbation pressure
References Global_Physical_Variables::Alpha_sq, oomph::CommandLineArgs::Argc, ProblemParameters::Density_ratio, oomph::DocInfo::disable_doc(), oomph::TreeBasedRefineableMeshBase::doc_adaptivity_targets(), doc_solution(), Fluid_mesh_pt, H, i, oomph::Problem::initialise_dt(), oomph::RefineableMeshBase::max_keep_unrefined(), oomph::RefineableMeshBase::max_permitted_error(), oomph::TreeBasedRefineableMeshBase::max_refinement_level(), oomph::RefineableMeshBase::min_permitted_error(), oomph::TreeBasedRefineableMeshBase::min_refinement_level(), oomph::DocInfo::number(), Global_Physical_Variables::Pcos, Pcos_duration, Pcos_initial, Global_Physical_Variables::Pext, oomph::DocInfo::set_directory(), set_initial_condition(), Global_Physical_Variables::set_params(), oomph::Problem::time(), oomph::Problem::time_pt(), and oomph::Problem::unsteady_newton_solve().
|
private |
Setup initial condition for fluid.
Setup initial condition for fluid: Impulsive start.
|
private |
Setup initial condition for fluid.
|
private |
Setup initial condition for fluid.
|
privatevirtual |
Setup initial condition for both domains.
Setup initial condition: When we're done here, all variables represent the state at the initial time.
Reimplemented from oomph::Problem.
Referenced by dynamic_run().
|
privatevirtual |
Setup initial condition for both domains.
Reimplemented from oomph::Problem.
|
privatevirtual |
Setup initial condition for both domains.
Reimplemented from oomph::Problem.
|
private |
Setup initial condition for wall.
Setup initial condition: Impulsive start either from deformed or undeformed wall shape.
References Global_Physical_Variables::H.
|
private |
Setup initial condition for wall.
|
private |
Setup initial condition for wall.
|
private |
Element used for documenting displacement.
Referenced by FSIRingProblem().
|
private |
Amplitude of initial deformation.
|
private |
Pointer to fluid mesh.
Referenced by dynamic_run(), and FSIRingProblem().
|
private |
Pointer to fluid timestepper.
Referenced by FSIRingProblem().
|
private |
Duration of initial pcos.
Referenced by dynamic_run().
|
private |
Initial pcos.
Referenced by dynamic_run().
|
private |
Pointer to geometric object that represents the undeformed wall shape.
Referenced by FSIRingProblem().
|
private |
Pointer to node on coarsest mesh on which velocity is traced.
Referenced by FSIRingProblem().
|
private |
Pointer to wall mesh.
Referenced by FSIRingProblem().
|
private |
Pointer to wall timestepper.
Referenced by FSIRingProblem().