![]() |
|
Entry flow problem in quarter tube domain. More...
Public Member Functions | |
NavierStokesProblem (DocInfo &doc_info, const string &node_file_name, const string &element_file_name, const string &face_file_name) | |
Constructor: Pass DocInfo object and file names. More... | |
~NavierStokesProblem () | |
Destructor (empty) More... | |
void | actions_after_newton_solve () |
Doc the solution after solve. More... | |
void | actions_before_newton_solve () |
Update the problem specs before solve. More... | |
void | doc_solution () |
Doc the solution. More... | |
TetgenMesh< ELEMENT > * | mesh_pt () |
NavierStokesProblem () | |
Constructor. More... | |
~NavierStokesProblem () | |
Destructor. More... | |
void | actions_before_newton_solve () |
Update the problem specs before solve (empty) More... | |
void | actions_after_newton_solve () |
Update the problem specs before solve (empty) More... | |
void | actions_after_parameter_increase (double *const ¶meter_pt) |
Update the problem specs after an increase in a parameter. More... | |
void | create_spacetime_mesh () |
void | apply_boundary_conditions () |
void | pin_redundant_temporal_nodes () |
void | assign_time_slice_id () |
Assign the time slice number to each element. More... | |
void | set_up_spacetime_solver () |
Set up the solver for this Problem. More... | |
void | complete_problem_setup () |
Complete problem setup: pass pointers to physical variables. More... | |
void | run_natural_continuation (double ¶meter, const double ¶meter_target, const unsigned &max_n_parameter_step) |
void | doc_solution (const bool &doc_spacetime_soln=false) |
Doc the solution. 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 () |
virtual void | actions_after_adapt () |
Actions that are to be performed after a mesh adaptation. More... | |
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 | |
enum | { Diagonal_preconditioner =0 , Lower_triangular_preconditioner =1 } |
enum | { Lower_wall_boundary_id =0 , Outflow_boundary_id =1 , Upper_wall_boundary_id =2 , Inflow_boundary_id =3 , Cylinder_surface_boundary_id =4 , Initial_time_boundary_id =5 , Final_time_boundary_id =6 } |
Private Attributes | |
DocInfo | Doc_info |
Doc info object. More... | |
IterativeLinearSolver * | Solver_pt |
Oomph-lib iterative linear solver. More... | |
Preconditioner * | Prec_pt |
Preconditioner. More... | |
ExtrudedCubeMeshFromQuadMesh< ELEMENT > * | Bulk_mesh_pt |
Pointer to the space-time mesh. More... | |
RefineableQuadMeshWithMovingCylinder< MyRefineableQTaylorHoodElement > * | Spatial_mesh_pt |
bool | Periodicity_has_been_enforced |
Entry flow problem in quarter tube domain.
NavierStokes problem.
|
private |
|
private |
NavierStokesProblem< ELEMENT >::NavierStokesProblem | ( | DocInfo & | doc_info, |
const string & | node_file_name, | ||
const string & | element_file_name, | ||
const string & | face_file_name | ||
) |
Constructor: Pass DocInfo object and file names.
Constructor: Pass DocInfo object mesh files.
References oomph::Problem::assign_eqn_numbers(), MergeRestartFiles::filename, i, NavierStokesProblem< ELEMENT >::mesh_pt(), and Global_Physical_Variables::Re.
|
inline |
NavierStokesProblem< ELEMENT >::NavierStokesProblem |
Constructor.
Constructor for NavierStokes problem in cubic domain.
References NavierStokesProblem< ELEMENT >::apply_boundary_conditions(), oomph::Problem::assign_eqn_numbers(), NavierStokesProblem< ELEMENT >::assign_time_slice_id(), NavierStokesProblem< ELEMENT >::complete_problem_setup(), NavierStokesProblem< ELEMENT >::create_spacetime_mesh(), NavierStokesProblem< ELEMENT >::Lower_triangular_preconditioner, oomph::oomph_info, GlobalParameters::Preconditioner, NavierStokesProblem< ELEMENT >::set_up_spacetime_solver(), GlobalParameters::update_mesh_parameters(), and GlobalParameters::update_physical_parameters().
NavierStokesProblem< ELEMENT >::~NavierStokesProblem | ( | ) |
Destructor.
|
inlinevirtual |
Doc the solution after solve.
Reimplemented from oomph::Problem.
References GlobalParameters::Doc_info, and oomph::DocInfo::number().
|
inlinevirtual |
|
virtual |
Update the problem specs after an increase in a parameter.
Reimplemented from oomph::Problem.
References GlobalParameters::Amplitude, oomph::oomph_info, GlobalParameters::Period_ratio, GlobalParameters::Re, and GlobalParameters::update_physical_parameters().
|
virtual |
Update the problem specs before solve.
Set the inflow boundary conditions.
Reimplemented from oomph::Problem.
|
inlinevirtual |
void NavierStokesProblem< ELEMENT >::apply_boundary_conditions |
Assign the appropriate boundary conditions and enforce periodicity in the time direction
Assign the appropriate boundary conditions, i.e. periodicity in the t-direction. In the x and y-direction apply Dirichlet boundary conditions. In summary: Boundary 0 (t=0) – Periodic in time (with boundary 5) Boundary 1 (y=0) – Dirichlet Boundary 2 (x=1) – Dirichlet Boundary 3 (y=1) – Dirichlet Boundary 4 (x=0) – Dirichlet Boundary 5 (t=1) – Periodic in time (with boundary 0)
References b, GlobalParameters::Cylinder_pt, boost::multiprecision::fabs(), i, j, k, oomph::Node::make_periodic(), n, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, output(), oomph::Data::pin(), Eigen::ArrayBase< Derived >::pow(), oomph::Data::set_value(), sqrt(), GlobalParameters::St, OscillatingCylinder::velocity(), and oomph::Node::x().
Referenced by NavierStokesProblem< ELEMENT >::NavierStokesProblem().
void NavierStokesProblem< ELEMENT >::assign_time_slice_id |
Assign the time slice number to each element.
Set up the map which maps a given element e to it's (i,j,k) coordinates in the mesh where i,j and k are integers (such that 0<=i<N_x, 0<=j<N_y, 0<=k<N_t).
References i, GlobalParameters::L_t, GlobalParameters::N_dof_type, GlobalParameters::N_t, GlobalParameters::round(), s, and plotPSD::t.
Referenced by NavierStokesProblem< ELEMENT >::NavierStokesProblem().
void NavierStokesProblem< ELEMENT >::complete_problem_setup |
Complete problem setup: pass pointers to physical variables.
Complete problem setup: do anything else that's needed to make the elements fully functional (e.g. pass pointers to problem parameters)
References e(), GlobalParameters::Re, and GlobalParameters::ReSt.
Referenced by NavierStokesProblem< ELEMENT >::NavierStokesProblem().
void NavierStokesProblem< ELEMENT >::create_spacetime_mesh |
Create the space-time mesh with the chosen number of elements in the time direction and the chosen spatial resolution
Helper function to create the space-time mesh (to be assigned to Bulk_mesh_pt) with the chosen number of elements in the time direction and an appropriate spatial resolution (to capture the time-periodic solution properly).
References GlobalParameters::Amplitude, GlobalParameters::Annular_region_radius, GlobalParameters::Cylinder_pt, GlobalParameters::doc_maximum_central_box_deformation(), oomph::MeshExtrusionHelpers::ExtrusionHelper::enable_doc_mesh_setup_time(), GlobalParameters::Height, i, GlobalParameters::L_t, GlobalParameters::Length_of_central_box, oomph::MeshExtrusionHelpers::Mesh_extrusion_helper, GlobalParameters::N_t, GlobalParameters::N_uniform_refinement_before_solve, oomph::oomph_info, GlobalParameters::Radius, NodeReordering::reorder_nodes(), GlobalParameters::X_left, and GlobalParameters::X_right.
Referenced by NavierStokesProblem< ELEMENT >::NavierStokesProblem().
void NavierStokesProblem< ELEMENT >::doc_solution |
Doc the solution.
References oomph::DocInfo::directory(), GlobalParameters::Doc_info, MergeRestartFiles::filename, and oomph::DocInfo::number().
void NavierStokesProblem< ELEMENT >::doc_solution | ( | const bool & | doc_spacetime_soln = false | ) |
Doc the solution.
Document the solution.
References GlobalParameters::Doc_info, MergeRestartFiles::filename, oomph::DocInfo::number(), oomph::oomph_info, and oomph::Global_string_for_annotation::string().
|
inline |
Referenced by NavierStokesProblem< ELEMENT >::NavierStokesProblem().
void NavierStokesProblem< ELEMENT >::pin_redundant_temporal_nodes |
The mixed order elements use linear interpolation in time so the only nodes which contribute to the unknowns in the system are those that lie on the temporal boundaries of the elements. Thus, all nodes that do not lie on these boundaries need to be pinned (otherwise we'd get zero rows in the system matrix making it singular...).
References i, j, k, oomph::Data::nvalue(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::Data::pin(), and Eigen::bfloat16_impl::pow().
void NavierStokesProblem< ELEMENT >::run_natural_continuation | ( | double & | parameter, |
const double & | parameter_target, | ||
const unsigned & | max_n_parameter_step | ||
) |
Use continuation in a particular parameter. This should make things sufficiently generic so natural continuation can be used interchangeably with ease for any given input parameter. NOTE: It's important that the function:
actions_after_parameter_increase(...)
be overloaded so that anything that needs to be updated after a change in the input parameter is indeed updated.
Use continuation in a particular parameter. This should make things sufficiently generic so natural/arc-length continuation can be used interchangeably with ease for any given input parameter. NOTE: It's important that the function:
actions_after_parameter_increase(...)
be overloaded so that anything that needs to be updated after a change in the input parameter is indeed updated.
(1) The parameter that we're running continuation in; (2) The target parameter value; (4) The max. number of steps used to reach parameter_target; (5) (Optional) Whether or not to document the solution at each step.
References calibrate::error, boost::multiprecision::fabs(), i, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, GlobalParameters::parameter_to_string(), oomph::ANSIEscapeCode::Red, oomph::ANSIEscapeCode::Reset, and oomph::Global_string_for_annotation::string().
void NavierStokesProblem< ELEMENT >::set_up_spacetime_solver |
Set up the solver for this Problem.
Assign the chosen solver to this Problem (and preconditioner if so desired)
References oomph::GeneralPurposeBlockPreconditioner< MATRIX >::add_mesh(), oomph::Preconditioner::enable_silent_preconditioner_setup(), SubsidiaryPreconditionerHelper::get_new_preconditioner(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, GlobalParameters::Preconditioner, oomph::GeneralPurposeBlockPreconditioner< MATRIX >::set_dof_to_block_map(), oomph::GeneralPurposeBlockPreconditioner< MATRIX >::set_subsidiary_preconditioner_function(), and GlobalParameters::set_up_dof_to_block_mapping().
Referenced by NavierStokesProblem< ELEMENT >::NavierStokesProblem().
|
private |
Pointer to the space-time mesh.
|
private |
Doc info object.
|
private |
|
private |
Preconditioner.
|
private |
Oomph-lib iterative linear solver.
|
private |
Pointer to the spatial mesh. NOTE: We keep this so that we retain a pointer to the Domain which will tell the ExtrudedDomain how to move the nodes when we want to do a parameter sweep in the cylinder oscillation amplitude...